そしていよいよIPLが読み込むプログラム本体の話が始まる。簡単なOS本体プログラムを書いて、それがフロッピーのどこに保存されるか?をディスクイメージとしてバイナリレベルで確認する、という話。
ディスクイメージってのは、HD上に置くファイルはHDのルールに従ってデータ保存されてしまうので、フロッピー特有のシリンダとかそうした情報を意識出来なくなってしまう点を解決するため、「フロッピーとして保存するならこんな感じになるよ」という事を確認できるようにするもの、とかそんな感じなんだろうか? 深く考え出すとハマりそうなので、今のところは流しておくことにしよう。。
で、「フロッピー上でファイル名を格納するスペースと、ファイル本体が格納されるスペースは別々に分かれているんだよー。ファイルが格納される場所は0x004200以降だよー」という説明が続く。ファイル自身がファイル名を保持していないのは知ってたけど、実際にどう解決してるのか?は初めて知った。相変わらずDeepだ。。
OS自身を置くとしたらドコに入るのか?が分かった後は、ブートセクタ側で実際に読み込みに行く場所を指定すれば良い。それが上手く出来ているか?を確認する為に、実際にブートセクタから何か動作するプログラムを読み、実行させてみる事に。いきなり難しいプログラムを書くのも大変なので、先ずはVRAMを制御して画面を真っ黒にしてみるところからスタート。またBIOSか。こういう情報がないところから始めていたら大変なんだろうなぁ、、、と、毎度の事ながら先人の苦労に感謝しつつ読み進める。
32ビットモード始まる。
そしていよいよ、CPUを32ビットで使おう、という話題へ。OS本体は、管理できるメモリサイズの制限等が大幅に改善される32ビットモードで使えるようにすべく、その準備の話から。OS自身は出来るだけC言語で書こう、というのが本書のテーマでもあるので、そろそろアセンブラとはお別れの気配。
32ビットモードではBIOSが使えなくなってしまうので、移行前にBIOSから欲しい情報をもらってしまえ、という事でそこまではアセンブラでガシガシやる。VRAMって言っても画面モード毎に別々のメモリが確保されている、って説明は分かりやすいな。だから、今自分がどれを使っているのか?を常に意識する必要がある、と。
C言語いよいよ登場
C言語で書いた部分を呼び出すためにアセンブラ側でどんな事をしているか?の説明はひとまず置いておいて、C言語でOS本体を記述していこう、という話題へ。うーん、アセンブラも嫌いじゃなかったから少し寂しいなぁ、などと感じつつ読み進める。
C言語の作法は基本的に理解しているので、新たな発見という意味でメモする事はないが、マシン語に変換するまでの過程をしっかり説明していたのは良かった。分かったつもりになっていた部分も、より明確になった。
覚える事を増やしすぎるとイカン、という配慮だろう。最後は、C言語がシステム機能を利用する為の関数をアセンブラで用意する、という方法と、その利用法について解説し、3日目が終了。今の状態だと画面に文字表示すら出来ないので、4日目以降からコツコツと自作関数を作る事になるものと予想。まだアセンブラとお別れする必要は無さそうだ。
ディスクイメージってのは、HD上に置くファイルはHDのルールに従ってデータ保存されてしまうので、フロッピー特有のシリンダとかそうした情報を意識出来なくなってしまう点を解決するため、「フロッピーとして保存するならこんな感じになるよ」という事を確認できるようにするもの、とかそんな感じなんだろうか? 深く考え出すとハマりそうなので、今のところは流しておくことにしよう。。
で、「フロッピー上でファイル名を格納するスペースと、ファイル本体が格納されるスペースは別々に分かれているんだよー。ファイルが格納される場所は0x004200以降だよー」という説明が続く。ファイル自身がファイル名を保持していないのは知ってたけど、実際にどう解決してるのか?は初めて知った。相変わらずDeepだ。。
OS自身を置くとしたらドコに入るのか?が分かった後は、ブートセクタ側で実際に読み込みに行く場所を指定すれば良い。それが上手く出来ているか?を確認する為に、実際にブートセクタから何か動作するプログラムを読み、実行させてみる事に。いきなり難しいプログラムを書くのも大変なので、先ずはVRAMを制御して画面を真っ黒にしてみるところからスタート。またBIOSか。こういう情報がないところから始めていたら大変なんだろうなぁ、、、と、毎度の事ながら先人の苦労に感謝しつつ読み進める。
32ビットモード始まる。
そしていよいよ、CPUを32ビットで使おう、という話題へ。OS本体は、管理できるメモリサイズの制限等が大幅に改善される32ビットモードで使えるようにすべく、その準備の話から。OS自身は出来るだけC言語で書こう、というのが本書のテーマでもあるので、そろそろアセンブラとはお別れの気配。
32ビットモードではBIOSが使えなくなってしまうので、移行前にBIOSから欲しい情報をもらってしまえ、という事でそこまではアセンブラでガシガシやる。VRAMって言っても画面モード毎に別々のメモリが確保されている、って説明は分かりやすいな。だから、今自分がどれを使っているのか?を常に意識する必要がある、と。
C言語いよいよ登場
C言語で書いた部分を呼び出すためにアセンブラ側でどんな事をしているか?の説明はひとまず置いておいて、C言語でOS本体を記述していこう、という話題へ。うーん、アセンブラも嫌いじゃなかったから少し寂しいなぁ、などと感じつつ読み進める。
C言語の作法は基本的に理解しているので、新たな発見という意味でメモする事はないが、マシン語に変換するまでの過程をしっかり説明していたのは良かった。分かったつもりになっていた部分も、より明確になった。
覚える事を増やしすぎるとイカン、という配慮だろう。最後は、C言語がシステム機能を利用する為の関数をアセンブラで用意する、という方法と、その利用法について解説し、3日目が終了。今の状態だと画面に文字表示すら出来ないので、4日目以降からコツコツと自作関数を作る事になるものと予想。まだアセンブラとお別れする必要は無さそうだ。