SORD M68のDMACはZ80DMAです。このDMACはとても複雑なコマンド体系ですが、解析者にはとても素晴らしい点があり、それはコマンドチェーンの最後が多くの場合、CF 87で終わる点です。今回もそれを足掛かりに探しました。
Z80DMAのI/Oアドレス 0xA1? 0xCC←こっちが正しかったです。
ちなみに、BOOT ROMでは、まず、メモリ→メモリ間転送を設定しています。現在解析途中ですが、0x55aaから0x55aaへ1バイト転送を実行しています。その後、Z80DMAのリードレジスタのポートAアドレスをチェックしています。よくわかりませんが、Z80DMAが正常に機能しているかチェックしているようです。
次に定義しているのは、I/O→メモリ転送で、I/Oアドレス0xA3から、メモリ0x00へ256バイト転送しています。これはフロッピーディスクの1セクタをメモリに送る設定だと思われますが、Z80DMAのI/Oアドレスが0xA1で、フロッピーディスクコントローラー(FDC)のI/Oアドレスが0xA3なのは不合理なので、悩み中です。
DMAの設定は、慣れればあまり悩まないのですが、最初は異常にとっつきにくい印象でした。SORD M68のチップ構成はMC68000以外は、SHARP X1turboにそっくりなので、そちらの資料が非常に参考になりました。
以下に参考資料を挙げておきます。
- Z80ファミリ・ハンドブック
- 試験に出るX1