1ChipMSXのBIOSロード機能覚書 その42016年12月29日 20:30

SDHCでBIOSロード機能が働かなかった原因が判明。

IPLROMではSDからのデータリードをREAD_SINGLE_BLOCK(CMD17)で行っているんだけど、
このコマンドの引数はSDカードの時にはバイト指定だけどSDHCの時はブロック指定で
値の渡し方が違った。
※引数が4バイト(32ビット=アドレス範囲とすると4GB)の為、バイト指定ではSDHCの全域にアクセスできない。その為1ブロック=512バイトでブロック数を指定する。

試しに引数にセクタ数をそのまま渡したところ、テスト用の8GBのSDHCの先頭パーティションからBIOSロードに成功した。
※SDアクセスの1ブロック=512バイト、SDの1セクタも標準512バイト。本当はこのあたりもBPBから取得した値で計算するべきなんだろうけど…

でも、このままだと今度はSDカードからのBIOSロード機能が効かないので、その辺をどうにかできるか?

とりあえず、ベータ版

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
答えは「MSX」です。

コメント:

トラックバック

このエントリのトラックバックURL: http://miyako.asablo.jp/blog/2016/12/29/8298031/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。