以前作ったROMリーダを応用して、ROMカートリッジのリーダ&ライタを作ってみました。前回同様、I2C用のIOエキスパンダを使って、MSXカートリッジの信号線を制御することでカートリッジを分解せずともROMを読み出せるようになりました。
Read制御だけでなく、Write制御もできるようにしたため、メガロムのゲームも吸い出すことができます。
以前ブレッドボードで作ったROMリーダの記事はこちら
MSXカートリッジの信号線
MSXカートリッジの端子部分には50本の信号線が通っています。50本の信号線のアサインは以下のサイトに載っています。
これとZ80 CPUの信号線を見比べてみます。
電源など一部を除いた信号線をまとめたものが以下の表です。これをみると、Z80 CPUのほとんどの信号線がカートエッジコネクタに接続されていることがわかります。
Z80の信号線 | カードエッジコネクタ |
A0-A15 | あり |
D0-D7 | あり |
/M1 | あり |
/MREQ | あり |
/IORQ | あり |
/RD | あり |
/WR | あり |
/RFSH | あり |
/HALT | – |
/WAIT | あり |
/INT | あり |
/NMI | – |
/BUSRQ | – |
/BUSAK | – |
/CLK | あり |
/RESET | あり |
カートエッジコネクタに出ていない Z80 信号線は、/NMI, /HALT, /BUSRQ, /BUSAK のみです。Z80で実現できることは MSX ではほとんどのものは実現できそうです。MSXの仕様策定当初から、ゲームができるだけでなく、HWの拡張性に重きをおいていたことが伺えます。
/BUSRQ, /BUSAK は Z80 からバスの制御権を取得する信号線ですが、これが使えないということはカートリッジ側からDMAでデータをメインRAMに転送するというような使い方はできないようです。バスの主導権はCPUが常に握っているということですね。
…続きを読む