J-3100GTSX041 2台目をメンテナンス6 OS自作入門の演習 三日目途中

J-3100GTSX041 2台目をメンテナンス6 OS自作入門の演習 三日目途中

OS自作入門をJ-3100GTSXでの三日目ですが、実は途中です。というのは恐れていたことが、J-3100とPC/ATの互換性の壁にぶち当たりました。
さて、途中まで移植していきましょう、OS自作入門でいうとDay3のharib00hです。

ここでは、02_dayまでのhelloosを発展させて、IPLを作成し、そのIPLからOS本体を呼び出すところまで実装します。

IPL10.nasをいつも通り、1.2MByte対応に改造していきます

(中略)
JMP entry
DB 0x90
DB “HARIBOTE” ; ブートセクタの名前を自由に書いてよい(8バイト)
DW 512 ; 1セクタの大きさ(512にしなければいけない)
DB 1 ; クラスタの大きさ(1セクタにしなければいけない)
DW 1 ; FATがどこから始まるか(普通は1セクタ目からにする)
DB 2 ; FATの個数(2にしなければいけない)
DW 224 ; ルートディレクトリ領域の大きさ(普通は224エントリにする)
DW 2400 ; このドライブの大きさ(2400セクタにしなければいけない)
DB 0xf9 ; メディアのタイプ(0xf9にしなければいけない)
DW 7 ; FAT領域の長さ(7セクタにしなければいけない)
DW 15 ; 1トラックにいくつのセクタがあるか(15にしなければいけない)
DW 2 ; ヘッドの数(2にしなければいけない)
DD 0 ; パーティションを使ってないのでここは必ず0
DD 0 ; ここは0で良い
DB 0,0,0×29 ; よくわからないけどこの値にしておくといいらしい
DD 0x0BFD2058 ; たぶんボリュームシリアル番号、日英互換
DB “HARIBOTEOS ” ; ディスクの名前(11バイト)
DB “FAT12 ” ; フォーマットの名前(8バイト)
(中略)
msg:
DB 0x0a, 0x0a ; 改行を2つ
DB “load error”
DB 0x0a ; 改行
DB 0

; RESB 0x7dfe-$ ; 0x7dfeまでを0x00で埋める命令
RESB 0x1dfe-$ ; 0x7dfeまでを0x00で埋める命令

DB 0x55, 0xaa

IPLがOS本体の呼び出しに失敗すると画面にload error、成功すると画面クリアされて黒画面らしい。
アセンブラにかけてharibote.imgを生成後、エミュレータにかける。今回からOS部が32bitになるので、エミュレータの設定は
CPUが286のJ-3100GTからCPUが386のJ-3100SXに変更。この変更によって、画面が白黒反転する。黒画面=白画面ということ。
で実行結果がこれ

見事に白画面!行けそうだ!んで、このharinote.imgをフロッピーに焼いて実機J-3100GTSXで実行

load error・・・、どうやらOS部が読み込めていないらしい。少し解析が必要なようだ。