tunozemichanの日記 / tunozemichan's diary

SORD社のコンピューターM68やM68MXの解析についての備忘録です。This blog is a memorandum about the analysis of SORD's computers M68 and M68MX.

SORD M23実機でCP/Mを実行するときの注意点

 

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/MBIOSでも、逆にしているところがあったので修正して無事に動いています。ヘッドが密着しっぱなしなのが気になりますが、ボチボチ直します。