[PR]三井住友海上きらめき生命:医療保険のご案内と資料請求はこちらから

ディスクからの読み込み方法、FAT の構造がわかりましたので、 FAT のルートディレクトリからファイルを読み込んで実行する マスタブートローダの作成に移ります。
セクタを読み込む関数は ディスク読み込みの方法で 作りましたので、今回はそれ以外の部分を作ります。
今回は複雑な処理を省くためにカーネルファイルのサイズを 50K 以下に制限することにしました。
以下のソースで使う定数は次のとおりです。
FAT12 は最大でも 6K を超えることはありませんので、 管理テーブルを保存するバッファは6Kとします。
ブートセクタは 0000h:7C00h に読み込まれますが、 この位置では都合が悪いため起動直後に 0000h:F000h にコピーし、 F000h 以降のコードを実行することにします。


1.44MB FDD の場合、ドライブ情報は次の通りです。


自分自身を 0000h:F000h にコピーしてそれを実行するコードは 次の通りです。
コード中、call と pop は実行中のコードの オフセットを計算するものです。


後は、 FAT の構造 に従ってファイルを読み込むだけです。
今回は、ファイル 'HOVERDOS.BIN' を 0060h:0000h に 読み込み、その先頭にジャンプするコードを作成しました。
これにディスク読み込みの方法で説明した read_single_sector 関数を加えれば、 FAT用のマスタブートローダが完成します。
このローダでは、 ディレクトリエントリのファイルサイズは無視し、 FATの管理テーブルのチェーンが終わるまで、 512バイト単位で順に読み込んでいます。


2005-08-27: ChangeLog作成 (最終更新)
Copyright (C) 2005 hoverkid, all rights reserved.
[PR]ベビー用品はたまひよ♪:子育てが楽しくなる便利アイテムいっぱい