OSを作ってみよう day009
「OS自作入門」は、三日目に突入。 相変わらずアセンブラだが、ついにC言語に突入する。 昨日まで作っていたのは、IPL ( Initial Program Loader ???) というらしい。
[引用] ブートセクタ - Wikipedia
BIOSがブートデバイスを選択すると、そのデバイスの第一セクタ(後述するMBRまたはPBR)をコピーし、0x7C00 番地に配置して実行する。
0x7C00番地というのはお約束らしい。 512バイトなのも、マスターブートレコードのお約束。 IPLにエラー処理&リトライ処理を追加したりする。Makefileの変数対応とかあったので、Mac用に編集した俺のMakefileも修正してみた。
1 | MAKE = make |
ちょっぴり変数化しただけで、内容は変わってないっす。 三日目の最初のiplは、ロードに失敗した場合にLoad Errorと表示するだけのプログラム。 基本的には起こらないエラーなので、何も表示されなければOKなのだが・・・画面に輝く「Load Error」の文字・・・ 何故なんだ・・・。やはりフロッピーとUSBメモリの差か? アセンブラをあまり理解せずにただ突き進んでいたので、ここで壁に突き当たってしまった。 しょうがないので、二日目をおさらいしてiplの内容を正確に把握することにした。 座学は地味だが、ここで不十分な理解でいると痛い目に会いそうなので我慢。 続く・・・。