久々のMotorola MC6800の投稿になりますがその11、12でSBC製作記事風に寄ってしまいましたが時制復帰という事で昔話を綴ってみる事にします。
13.1.ROMライタ
ROMライタと言っても安価に入手可能な中華製USB接続のROMライタではなくて当時は8ビットマイコンの時代でMC6800系であればMC6830の如きMikbugといったメーカ純正のROMが提供されていない場合(つまり自作マイコンの大半)は何らかの方法でRAMに書込・読出を行う必要があって当時唯一可能な手段は手動でアドレス・データを1バイト単位で入力する(それも手動で)方法でありました。
これは結構大変な作業でありまして学生の頃でもモニタプログラム(1KB程度)を入力するのは数十分掛かっていたのではないかと思います。無論、最初に入力したコードは110ボーのトーンバーストでカセットテープに記録しましたので毎回1KB手入力といった修行をした訳ではありませんが指が痛くなる程度の労働ではありました(対価として二進数は体得出来ましたが:)。
この状態から脱却する為には何らかの方法でROMにモニタプログラムを書き込む必要がある訳で当初は夢の夢の状況でしたが、1980年頃のトラ技に松本吉彦さんの2716プログラマという記事でそれが可能になった覚えがあります。
松本さんの記事は簡潔明瞭ですがソースリストがZ80(8080ニーモニックの)と6800のリストも掲載されていたのでほぼそれをそのまま流用させ頂きました。その為にはハードウェアインタフェースを記事に合わせる必要があるのでその時初めて8255Aを使いました(確か三菱のM5L8255A)。6800系で80系の周辺を使うのは然程珍しくないのですが本記事で8255を使う理由はIOポート数が24ビットとMC6821の20ビット(PA0-7,CA1,2,PB0-7,CB1,2)では2716のアドレス空間(11ビット以上)とデータ8ビット、制御線(VPP、CE/PGM、OE等)を制御する為には不足する為でした。8255AはLS00 1個で6800バスとインタフェース出来たので(それ以外方法無いし)迷わず乗っかりました:)。
そして+25VのVppは当時は一択でTIのTL497Aを使用しました。これは定番チップで今でも入手可能なのでは。まあ、現在はもっと便利なステップアップ型で50mA以上流せるシングルチップのDC/DCは複数存在するのでしょうけど。
それに加えてVppを制御する為のトランジスタによる制御回路を追加して2716プログラマのハードウェア構成となります。纏めると、
・8255A-5 PPI 12ビットROMアドレス(2716は11ビット、2732は12ビット)、データ8ビット、制御信号3〜4ビット
・TL497A +5V⇒+25V 50mAのDC/DC
・Vpp制御用のトランジスタ回路
という簡素な構成でROMの書込タイミングはソフトで作成するのが少なくなかったと思います。中にはLS123等で50msパルスをハードで生成する例もありましたが、当方のマイコンボードでは割込み使って無かった(使える筈もなく:)のでソフトタイマーで50msを担保するのは難しくはありませんでした(マシンサイクル計算するば良いので)。
ハードを組み上げてVpp制御が正常に動作するかをテスタで+25VがOn/OffするかをPPI(8255A)に直接書いて動作確認をした上で、松本さんのプログラムを移植しました。6800は相対分岐なので変更箇所はバッファアドレス程度だったと思います(うろ覚え)。
ROMは亜土電子に2716で注文して送られてきたのが富士通のホワイトセラミックのMB8516でした。当時のEPROMは紫外線消去の為の窓があってパッケージはセラミック/CERDIPで初期の頃はリードも金メッキで高級感:)があったのですが次第にCERDIPの普通のEPROMに(チップも三菱等に)変わってそして価格も下がって行きました。他には日立と三菱の2716を持ってた記憶が・・・
で、EPROMを書く訳ですが当方のマイコンボードはRAMは48KBと大容量(16Kbit DRAM x24個を根性で手配線:)でしたのでROMライタ用のバッファ2KBを確保には問題無く、デバックしたモニタプログラムをROMライタのバッファにコピーして書込ルーチンを起動・・・で50ms×2048(最大)でROM書込が終了する訳です。
確か一度でROMに書けたので有り難かった記憶も(これでトグルSWから開放されると)・・・記憶は美化されるので試行錯誤はあったと思いますが(あはは)。
後はそれを繰り返して「カイゼン」していく形で徐々にモニタプログラムを強化したり、TinyBasicやROMライタプログラムをROMしたりしておりました。これらの環境整備で当時としては大分楽になった、といってもROM化しただけですが当時は大きな一歩でありました。
その後は同じ構成で2732(アドレス12ビット迄行けたので)にもプログラム変更して対応し、CPUボードに2732x4、2716x1個搭載して常用する機能はROM化したと思います(主に開発関係)。
13.2.カセットインタフェース
その2でも書いた気がしますが、最初はトーンバーストの110bpsでカセットに保存しておりましたがモニタプログラムをROM化してから主にStarTrekのロードを早くしたかったので当時としては高速(3200bps)のサッポロシティスタンダート方式に移行しました。
これもトラ技の記事のコピーでICB93に収まるくらいの規模で頑張って手配線して使っておりました。サッポロ方式は安定性が高く、高速だったので大変重宝し、社会人になってもフロッピーが使える迄は使用しておりました。
当時の8ビットパソコンは600〜2400bpsが主流だったと思うのでサッポロ方式は案外高速だった様に記憶しております。
13.3.ROMライタその後
上記の通り8255Aだと2732が限界だったので後にPIA(MC6821)で2732以上のEPOMに対応出来る様に新たにROMライタを製作しました。これは確かマイコン手作り塾(いわゆるΛ-1ですね)の記事にあったアドレスは74LS161をカスケードで16bit迄拡張して27128迄対応した物を製作しました。無論書込プログラムは書き換えですがその頃には大分慣れてきたのでそれなりに対応した気がします(印象に残っていない程度だから苦労してないか忘れてしまいたいかのいづれか:)。
21世紀の現代ではレトロマイコンで最大のネックとなるROMについては素直に安価で使い勝手の良い中華ROMライタで使い勝手と入手性が良いEEPROM/FlashROMを使用するのが定石かと思います。立派な開発システムとしてのPCを活用して環境も無料で構築できるのですから全くもって善き時代になったものですと毎度のフレーズで〆とします。
・前のトピック:
aki-iic.hatenablog.com
・関連するトピック:
aki-iic.hatenablog.com