20日目「文字表示のAPIを作ったぞ!」

 ついに20日目に突入だ。残りもあと10日。さて、実はこの辺りまで読み進めてきて、ふと思うことがある。それは、「俺も1からOS作ってみたい」ってことだ。もちろん、はりぼてOSを作ってる最中なんだけど、これはあくまでも本書の付録というか題材というか、本書の内容を理解するためのもので、自分が作りたいものではないわけだ。だから、著者の川合氏が書いたソースコードを読みつつ、うーんなるほど、と唸りつつ、そのコードを少し変更しては、「なるほど、なるほど。」と理解してればOKな代物なのだ。
 が、それじゃあ、なんか物足りない。いや、物足りなくなってしまった。本書を読み始めた最初の頃はOSのだいたいの仕組みを理解するだけで満足だと思った。そもそも、自作のOSを作る時間なんて俺にはねーよ! と思ってた。だが、ここまで来て、ここまで読んで、多少なりともOSについて知ってしまったら、もはや、そうはいられない。最近では、本書を読んでるだけで「俺だったらこういう仕組みにするけどなぁ…」とか思ってしまって、読書に集中できなくなる。申し訳ないけど、マジで作りたくなってきた。


安西先生…、OSが…、作りたいです…」


 というわけで、俺は作る! もう誰がなんと言おうと、作ったる! で、ちょうど明日は土曜日、明後日は日曜日じゃないか。ふっ、ふっ、ふははははははははは…、休日が全て見えるぞ…、氷の世界!(跡部様〜)。というわけで、本書を読み終える31日目までには普通に無理かもしれないが、とりあえず作ってみることにする。それに、本書についているサンプルコード(はりぼてOS)を少し変更しただけで、30日でOSを作ったといっても、なんか説得力ない気がするし。やっぱり31日目にはどんなに低機能でも自分が作ったものがあった方が良いはずだ! というわけで、気持ちあらたに頑張ります!
 ちなみに今日はAPIを作りました(おまけ扱いかよ!!)。いやいや、今日の内容も、これが結構面白くて、新しい発見があった。例えば、DOSプログラミングのシステムコールを呼ぶときのint命令とかもこういった仕組みで実現されてたんだなぁと。つまりIDTに0x30〜0xffのどれかを使って、API呼び出し用の関数を登録するわけだ。そして、アプリケーション側は「int 30h」という風にすることでAPIを呼び出すことができ、これをいわゆる「OSのシステムコール」なんていっちゃったりするのだ。さらに、21日目はメモリ保護(?)の話っぽいんだが、ここから先は、どうやらAPIの追加と、アプリケーションの実行が主な内容となっていきそうだ。ああ、はりぼてにどんどん肉がついていく…(うまー)。
 明日も乞うご期待!