MC6800 ROMモニタ自作 その2 〜MacからTL866II PlusでROMを書いてみる〜

前回はフェーズ1のROMモニタを実装して、SBC6800上で動作確認するところまで進めました。今回はその続きで、ROM書き込みもなるべくMac側で完結させたいなと思って、TL866II Plus を minipro で使うところを試してみました。
フェーズ1の記事はこちらです。**GitHubリポジトリ も合わせて載せておきます。
やりたかったこと
これまでは Intel HEX を Windows 側へ持っていって、ROMライタの純正ソフトで焼いていました。もちろんそれで実用上は困らないのですが、せっかくならビルドからROM書き込みまでをMacやUNIX系環境でまとめて流せるようにしたいところです。
そこで今回は、minipro を使って TL866II Plus を Mac から直接叩けるようにしてみました。Makefile 側も少し拡張して、ROM容量ごとにライタ向けバイナリを作れるようにしてあります。
27C6427C12827C25628C256UPD28C256W27C512
このあたりを意識しつつ、p2bin でROMライタ向けイメージを作って、minipro で書く流れにしてみました。
まずはMacでTL866II Plusが見えるか確認
minipro --version を叩くと、ちゃんと Found TL866II+ と出てくれました。自己診断も通るし、読み出しも通るので、「全然見えていない」という感じではなかったです。
まずは minipro –version で TL866II Plus が見えていることを確認
Mac に TL866II Plus を直結して試しているところ
ここまではいい感じだったのですが、いざ make program-w27c512 をやると、書き込み途中で LIBUSB_TRANSFER_TIMED_OUT **が出て止まってしまいました。読めるのに書けない、というちょっと嫌なパターンです。
しかも、W27C512 だけでなく 28C256 系でも似たような症状が出たので、最初は「これは minipro と macOS の相性かなぁ」と思っていました。
セルフパワーUSBハブ経由で解決
いろいろ試してみたところ、TL866II Plus を セルフパワーUSBハブ 経由でつないだら、あっさり書き込みが最後まで通りました。やったー。
結果としては、
- erase 成功
- write 成功
- read back 成功
- verification 成功
という形で、少なくとも W27C512 については、Mac からの書き込みまで完了できました。
セルフパワーUSBハブ経由にした成功時の接続
make program-w27c512 が最後まで成功したところ
なので、今回のポイントは「Mac ではだめ」ではなくて、「USBのつなぎ方にかなり影響される」ということでした。直結ではタイムアウトが出ても、セルフパワーUSBハブ経由だと安定する、ということがわかりました!
GitHub 側にも反映
今回の内容は GitHub 側にも反映してあります。ROM ライタ向けバイナリ生成や minipro の導線は Issue / PR としてまとめておきました。
手順書も追加してあって、UNIX系環境全般と WSL2 の参考手順まで含めた形にしてあります。Mac だけの話ではなく、Linux や WSL2 でも同じ考え方で使えるはずです。
今回のまとめ
- TL866II Plus は Mac から
miniproで認識できた - 読み出しや自己診断は最初から通っていた
- 書き込みは直結だと timeout することがあった
- セルフパワーUSBハブ経由にしたら
W27C512の書き込みが成功した - Makefile から ROM ライタ向けイメージ生成と書き込みの導線を追加できた
今後の予定
これで、少なくともフェーズ1のROMモニタについては、ビルドからROM書き込みまで Mac 側でかなり完結できるようになってきました。地味ですが、これはかなりうれしいです。
次は本筋に戻って、フェーズ2の対話基盤を進めたいと思います。行入力や16進入力、簡単なプロンプトあたりを実装して、もう少しモニタらしい形にしていきたいところです。