OSを作ってみよう day011

2013-12-06

OSを作ってみよう day011

今日こそ、IPLがエラーになる原因を突き止めるのだ! エラーとなっているのは、下記の場所なので重点的にチェック。

1
2
3
4
5
6
45         MOV     AH,0x02         ; AH=0x02 : ディスク読み込み
46         MOV     AL,1            ; 1セクタ
47         MOV     BX,0
48         MOV     DL,0x00         ; Aドライブ
49         INT     0x13            ; ディスクBIOS呼び出し
50         JC      error

つまり、INT 0x13がエラーになっているということである。 考えられるのは、「OS自作入門」ではフロッピーディスクを使っているのだが、私はUSBメモリにインストールしているということ。 おそらく、Aドライブを読みにいって、読めなくてエラーになっていると推測。 USBメモリを読みに行くように改修すれば、良いと思われる。 どうやって・・・(-_-;)?   (at)bios - OS - Wiki  [INT(0x13); ディスク関係] DLがAドライブを表す0x00を見ているのが悪いのでは?HDDを見る0x80にしてみたらどうだろう? レッツトライ! キタ━━━━(゚∀゚)━━━━!! 以下は、変更内容のdiff。USBメモリはHDD扱いなのだね。また一つお利口になったね。

1
2
3
4
5
6
7
8
48c48
< MOV DL,0x80 ; HDDドライブ
---
> MOV DL,0x00 ; Aドライブ
75c75
< RESB 356 ; 0x7dfeまでを0x00で埋める命令
---
> RESB 0x7dfe-$ ; 0x7dfeまでを0x00で埋める命令