SORD M23用のCP/Mの開発はエミュレータ上では一段落したため、実機上でも動くか検証します。
ブートからハマりましたが、ブートできることですべて解決しました。結論から言うと、FDC周辺回路(C5h)に適切なパラメータが設定されていない為に、起動できない状態になっていました。以下に、ブートローダーの先頭数行を記します。
; DMA Bank Select
XOR A ; A=0
OUT (DMA_BANK_SEL), A ;DMAバンクを0に設定する。
; FDC_CONTROL_REG
LD A, 012H ; 0001 0010
; 0xC5はFDC周辺回路のI/Oアドレス
; bit0~3まではドライブのセレクト
; bit4は1=READY?アクセス時に1をセット
; bit5はディスクのサイド選択。M23は1DDなので常に0
; bit6は武田氏の解析だと、0=倍密度,1=単密度とあるが多分逆
; bit7は不明
OUT (FDC_CONTROL_REG), A
LD B,30H
SELF_LOOP: DJNZ SELF_LOOP
LOOP_1:
IN A, (FDC_STATUS_REG)
BIT 0,A
JR NZ, LOOP_1
; FDC init
; FDC_CONTROL_REG
LD A, 051H ; bit6を1にするのが大事。
OUT (FDC_CONTROL_REG), A
LD B,30H
SELF_LOOP2: DJNZ SELF_LOOP2
SORD M23の5.25インチディスク周辺回路のI/OアドレスはC5hで、各ビットの意味はコードにある通りです。bit6が実は逆だったことが、今回の最も大きな要因でした。
CP/MのBIOSでも、逆にしているところがあったので修正して無事に動いています。ヘッドが密着しっぱなしなのが気になりますが、ボチボチ直します。