tunozemichanの日記 / tunozemichan's diary

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

SORD M23のフロッピーディスクの制御(READ編)

SORD M23のFloppy Disk ControllerはMB8877A(FD1771)です。これはSORD M68と同一ですので、以前、CP/Mを移植したルーチンがほぼそのまま利用できます。

I/Oアドレスは以下の通りです。

FDC_COMMAND EQU 0C0H
FDC_STATUS  EQU 0C0H
FDC_TRACK   EQU 0C1H
FDC_SECTOR  EQU 0C2H
FDC_DATA    EQU 0C3H
DMA         EQU 0C4H
FDC_CONTROL EQU 0C5H
DMA_BANK_SEL    EQU 0C6H

 

M68と異なっているのは、ドライブセレクトなどFDDを外的にコントロールしていると思われるポートで、これは完全に異なっているので変更が必要です。といっても、

 

LD (FDC_CONTROL), 01H

 

と1を入れるだけで、ドライブ1、倍密度が選択されます。

DMA転送のREADコードは以下のような感じです。

 

;
; DMA setting & FDD read FOR SIDE 0
; C is Sector No.
; D is Control word.
;
GO_DMA_AND_READ0:
    LD A,C
    OUT (FDC_SECTOR),A
    LD HL,DMA_COMMANDS
    CALL DMA_ON
    AND 20H
    LD A,80H ; READ DATA COMMAND for Side 0
DO_FDC0:
    CALL FDC_OUT
    AND 0FCH
    RET
 

 

Side0とコメントにありますが、SORD M23のFDDは片面ですので、Side0しかありません。

DMAコマンドチェーンを以下に記載します。

DMA_COMMANDS:
    DB 15H,0C3H,0C3H,0C3H,0C3H,03CH,0C3H
    DB 0BBH,01H,0BFH
    DB 6DH,0C3H,0FFH,00H,02CH,010H,08DH
    DB 00H,00H
    DB 8AH
    DB 0CFH,87H

 

SORD M68のときとやや異なりますが、本質的には一緒です。