MC6800 ROMモニタ自作 その16 〜SDカードからDIRしてLOADする(エミュレータ上)〜

MC6800 ROMモニタMC6800 ROMモニタ自作 その16 〜SDカードからDIRしてLOADする(エミュレータ上)〜

前回までで、PIA経由のSDHC sector read、FAT32 BPB、FAT chain、8.3ファイル検索まで入りました。ただ、そこまではまだ内部APIです。ユーザーから見えるコマンドは増えていません。

今回はいよいよ、ROMモニタのコマンドとして DIRLF filename を追加しました。これで、SDカード上の TEST.STEST.HEX をMC6800 ROMモニタから読めるところまで来ました。

ここも、まだ実機確認ではありません。DIRLF TEST.S が動いた、というのはエミュレータ上のFAT32 fixtureとSDカードモデルでの確認です。SBC-IO実機、レベル変換、実SDカード、PIAの実アドレス確認は次の山です。

なので今回の話は、「実機配線の前に、ROMモニタとしてのSD/FAT読み取りロジックがエミュレータ上で一通り通った」という段階であります。

DIRコマンドを追加する

] DIR
TEST.S A 0000001E
TEST.HEX A 00000020
MULTI.BIN A 00000400
]

表示するのはroot directory上の8.3通常ファイルだけです。サイズは10進ではなく、8桁16進にしています。ROMサイズと実装の軽さを優先しました。

LF filenameは既存のLと分ける

既存の L は、シリアルからS-RecordまたはIntel HEXを受けるLOADコマンドです。これはそのまま残します。SDカードから読む方は LF filename にしました。

FAT streamを既存ローダへ流す

S-Record/Intel HEXのparserを二重実装しないために、入力元だけを切り替える形にしました。L はACIAから1 byteずつ読み、LF filename はFAT streamから1 byteずつ読みます。parserとRAM書き込み処理は共通です。

SDカード上のTEST.SをLOADする

] LF TEST.S
OK
] D0200-0202
0200 01 02 03  ...
]
] LF TEST.HEX
OK
] D0300-0302
0300 AA BB CC  ...
]

いままではPCからシリアルでS-Recordを流し込んでいましたが、これでSDカードにファイルを置いて、ROMモニタから選んでロードする線が見えてきました。

次は実機確認へ

ここまでエミュレータでは動いています。次にやるべきは、実機SBC-IO上のMC6821 PIAアドレスと信号線を確定して、実カードでどこまで動くかを見ることです。

関連リンク

MC6800 ROMモニタSBC6800