Posts Issued on August 10, 2019

Arduino Mega 2560 Proの入手

posted by sakurai on August 10, 2019 #145

FM-7のROMデータ抜き出し法は各種ありますが、RS232Cやフロッピードライブ、カセットテープ等、いずれもFM-7のI/Oを用いています。例えばRS232Cの場合は、FM-7上にプログラムを配置し、シリアルデータとして抜き出す方法。この場合はそのプログラム配置ができないため、手で入力するしかありません。別の方法としてはフロッピーディスクを接続し、そこからプログラムをロードし、それを実行してフロッピーに書きこむ方式。

フロッピーディスクドライブは高価で場所も取るため、別の手段を考えます。条件はFM-7側に一切プログラムを置かない方法です。カセットテープというわけにもいかず、FM-7のメディアが無い以上、FM-7側のプログラムを一切使わない方法として、Z80インタフェースを使用することを考えます。

Z80カードは、FM-7の内部バスに対して、別のバスマスタを使用可能にするものであり、メインCPUである6809から\$FD05のLSBを1にすれば、メインCPUにHALTがかかり、外部バスマスタであるZ80による内部バスアクセスが可能になるものです。

手持ちのBeagleBoneでROM抜きボードを作成しようと思っていました。これだと外形的に厚みが出てしまい、それを避けるためにはZ80コネクタとBeagleBoneをイクステンションボードで接続する等、ボードが無駄に大きくなりそうでした。別の方法を検討したところ、Arduino Mega 2560 Proという薄型のボードを見つけました。原理としては同じで、シリアル通信でボード上のCPUと通信し、そこからZ80インタフェースを通してFM-7のバスマスタとして内部をアクセスする方式です。

図%%.1
図145.1 Arduino Mega 2560 Proボード

図145.2にボード接続図を示します。Arduino MegaはI/Oが非常に多いため、このような30本近くあるI/Oも楽に制御可能です。

図%%.2
図145.2 ボード接続図

アクセス法は図145.3にあるように、アドレスをセットし、制御信号(RWB/EB/QB)を制御して、1バイトずつ読み出しを行います。EB、QBの順番は6809と逆なことに注意。リードに関してはQB、EBの順でも動作しますが、ライト時にQBの立ち上がりでデータ確定していることが必要です。これを繰り返すことで全ROMの読み出しを行います。サブシステムのROMは直接読み出せないため、メンテナンスコマンドによりサブCPUにプログラムを実行させ、読み出します。

図%%.3
図145.3 アクセス方法

左矢前のブログ 次のブログ右矢