30日目、終了。高度(?)なアプリ、IPL の改良、CD-ROM 起動。
アプリはコマンドライン計算機、テキストビューア、MMLプレイヤ、画像ビューア。BMP や JPEG のコードはよそからの流用だしとりあえず軽く流し読み。
IPL の改良はセクタの読込み単位を変えて高速化。この本の著者は読込みセクタの数を気にしているけど、通常は FDD の中身を全部メモリにロードするなんてアプローチは取らないから、こんなところで1セクタ気にしてもなんだかなぁという感じ。ちなみにうちのクロスコンパイル環境だとサイズがちょっと大きくなって CD-ROM のコードでは不具合がでるので1セクタ余分に読込むようにコードを修正。
CD-ROM 起動は CD-ROM を直接ハンドリングするのではなく El Torito フォーマットで FDD をエミュレート。毎度のことながら Windows のツールしか紹介されていない。Mac OS X の場合、hdiutil コマンドの -eltorito-boot オプションでなんとかなりそうな気がするのだけれど、どういうわけか -no-emul-boot をつけないと IPL が読込めない。-no-emul-boot だと当然 FDD をエミュレートしてくれないので IPL が FDD のイメージにアクセスできない、、、ってだめじゃん。しょうがないので DarwinPort で cdrecord をインストールして、それに含まれる mkisofs を使用した。
Tags: OS自作入門