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ロード機能が効かないので、その辺をどうにかできるか?

とりあえず、ベータ版