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

前回までで、PIA経由のSDHC sector read、FAT32 BPB、FAT chain、8.3ファイル検索まで入りました。ただ、そこまではまだ内部APIです。ユーザーから見えるコマンドは増えていません。
今回はいよいよ、ROMモニタのコマンドとして DIR と LF filename を追加しました。これで、SDカード上の TEST.S や TEST.HEX をMC6800 ROMモニタから読めるところまで来ました。
ここも、まだ実機確認ではありません。DIR や LF 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アドレスと信号線を確定して、実カードでどこまで動くかを見ることです。