OKEIさんにNextorBIOSのSDカードドライバの逆アセンブルリストをいただいた。
とても分かりやすく纏められていて感動!
で、とてもいいサンプルがあるわけなので、さっそくIPLROMの改変に着手。
着手部分はSDカード初期化部分。
元のIPLROMではSDカードコマンドを
1・CMD0→CMD55→CMD41(CMD55とCMD41の組み合わせでACMD41)
もしくは
2・CMD0→CMD55→CMD1
と発行する。
どちらが実行されるかはCMD55の返値で判断されている。
おそらく、1がSDカード、2がMMC用と思われる。
で、ACMD41やCMD1は初期化処理なので初期化終了まで繰り返し発行される。
SDHCに対応するには
CMD0→CMD8→ACMD41→CMD58
と発行する必要があるみたい。
既存の初期化ルーチンにCMD8を組み込んでみたところ、動作は変わらずSDカードは起動するけどSDHCは起動途中でアクセスランプがつきっぱなしでハングした。
アクセスランプがつきっぱなしでハングということはループ抜けていないんだろうとCMD1を発行するか判断するルーチンをつぶして強制的にCMD0→CMD8→ACMD41→CMD58と発行されるように書き換えたところ、SDHCを刺したままでも1ChipMSXがブートするようにはなった。
この状態ではSDカードからのBIOSロードは機能する。しかし、SDHCからのBIOSロード機能が動かない…
どこか見落としあるのかな?
セコメントをする