DMAの件で、手詰まりになったので、CP/M-68KのBOOT部分をディスクイメージのセクタから切り出して、逆アセンブルしました。トラック1、サイド0、セクタ1~3が当該部位で、これはZ80のコードで書かれています。
BOOT ROMに比べてものすごく読みやすいコードが出力されて、DMAのコードが見つかり、Z80DMAのI/Oアドレスが分かります。
CP/M-68K起動時のZ80DMAのI/Oアドレス:0xcc
BOOT ROMでは0xa1だったはずですが、これ以外考えられません。またこの時の初期化コードから、フロッピーディスクコントローラー(FDC)のデータレジスタが分かりました。
FDCコマンド/ステータスレジスタ:0xc8(確定)
FDCトラックレジスタ:0xc9 (モニタプログラムから直接調べた結果)
FDCセクタレジスタ:0xca(ブートローダの読込コードから矛盾しない)
FDCデータレジスタ:0xcb
SORD M68のFDCであるMB8877Aのレジスタアドレスは普通、コマンド/ステータスレジスタ→トラックレジスタ→セクタレジスタ→データレジスタの順に並ぶようですが、今回の結果はかなり違っています。
DMACのアドレスが何故かFDCのデータレジスタとトラックレジスタの間に入ってしまっています。いくら何でも汚すぎると思いますが、現時点ではこうなっているとしか言いようがありません。
幸いCP/M-68Kはまともに動くので、コマンドを直接たたいて確認したいと思います。
以上です。