19日目「typeコマンドよ! ファイルの内容を表示するのだ!!」

 昨日は休んでしまってすみません。まだ風邪が直ってなく、とりあえず休養をとらせていただきました。今日はもう万全完璧モードなのでモウマンタイです。熱もありません(界王拳10倍です)。というわけで、今日はtypeコマンドを作りました。
 まず、大前提として、どうやらharibote.imgには「はりぼてOS」のすべてが集約されているという事実。これ、結構重要! というのも、この本ってあまりに準備がよすぎて、著者がコンパイラからmakeファイルまですべて自前で用意してくれている。この著者の技術力の高さに驚きで胸がいっぱいだが、それはさておき、準備がよすぎるからこそ、小さなことを理解しなくても先に進めてしまうという「もろはのつるぎ」…シロウトにはお勧めでき…じゃなくて、落とし穴があるわけだ(もう、なんか言いたいことがよく分からんようになってるぞ)。
 つまり、haribote.imgには、OSとしてのデータ(プログラム)といっしょに、HARIBOTE.SYS、IPL10.NAS、MAKE.BATという3つのファイルも追加されているのだ。これって多分、分かってる人には「当たり前じゃん。お前アホ?」って感じかもしれんが、分からん人にとっては、全然わからん事実なのだ(というか俺は分からんかった)。だから最初にdirコマンドが実装されているサンプルプログラムをコンパイルして実行したとき、あれ? このHARIBOTE.SYSというファイルはWindows上にあるこのHARIBOTE.SYSファイルを参照しているのかな? という疑問を持ってしまった。いや、分かってる人には「当たり前じゃん。お前アホ?」って感じかもしれん*1。そうだよなぁ、分かってる人には「当たり前じゃん。お前アホ?」って感じだよなぁ。って、アホアホうるせーよ。何がアホだよ。アホいうほうがアホじゃ! アホはお前の方じゃ、このやろ〜。もうグレてやる、グレまくってやる。駄菓子屋の5円チョコ万引きしたる。駄菓子屋の5円チョコ万引きして、近所の子犬にあげたる。いつもは悪い不良が、たまに少し良いことをすると、必要以上に良い人に見られるという人間心理をあますことなく利用したる。へへへっ「俺は不良だが、本当はいいやつなんだぜ」というイメージをあますことなく植え付けさせたる、って、もうなんのBlogか全然分からーん
 それで、typeコマンドを作るためには、まずはharibote.imgの中に追加されているファイルを見ることになるのだが、ファイルというのは結局0と1の羅列であるため、haribote.imgのどこからがIPL10.NASなのかが分からんのだ。だって、ただ引っ付けているだけだから当たり前だ。だから、どこからがIPL10.NASなのか、どこからがHARIBOTE.SYSなのかをちゃんと書いておいて欲しいわけだ。だから、あらかじめそれが書いてある場所を決めておき、そして、それが書いてある場所のフォーマットがFILEINFO構造体で、この構造体を使って、ファイルの情報をゲットするわけなのだ。
 haribote.imgに必要なファイルを追加し、それをFILEINFOでゲットする。こういう流れではりぼてOS内でファイルの管理を行うことができるわけだが、ここでFATというふざけたやつらが登場する。お前らは俺たちを混乱させようとしているのか、まったく。たった0.2%のためにそんな複雑な仕組みを作るな、このやろ〜。
 Windowsのディスク管理方法では、512バイトよりも大きいファイルを扱うときに、次のセクタにデータの続きが書き込まれないことがあるらしい。なんじゃそりゃーー。意味わからんわ。嫌がらせか? おい? 嫌がらせか? 未来を担う子供たちにとことん苦労を背負わせようって魂胆か? と言う感じだが、だから、FAT(file allocation table)というファイル配置表をシリンダ0、ヘッド0、セクタ2〜9に置いているらしい。つまり、それを見て、適当にファイルを繋ぎ合わせてくれということらしい。もうマジめんどい。やめてほしい。
 だから、はりぼてOSで扱うファイルをFATに対応させるためには、こういう細かい苦労が必要になってくるのだ。FATに関する詳しいことは本書を読んでくれ。それで、今日のセイカブツは→本当に30日でOSが出来上がるのかを試してみるページ(19日目)だ。
 そういえば、この本にはファイル管理という章(?)がないけど、ファイル管理ってOS作るのに結構重要な知識ではないのかな? 正直こんな適当な理解でいいのかなぁという感じなのだが、一応、今日でアプリケーション的なものは実行できるようになったし、明日はAPIを作るらしいし、なんか本当にこの本は難しい理論を完全に抜きにして、プログラミング重視で突き進んでるなと思う。あんまり本書の評価を見たこと無いけど、意外と賛否両論かもしれない。個人的には、理論ばかりのOS解説本はすでに結構あるから、こういう解説本も必要だと思うんだけど。
 というわけで、明日はAPIを作っちゃうらしい。APIだよ、API。アプリケーション、プ…プログラミング、イ…、イン…テ…? イント…? イ…、イン………、乞うご期待!!

*1:こはちょっと書き方がまずいので、注釈を追加します。この文は、Windows上にあるファイルを参照しているわけでは決してない。そんなことは当たり前。という意味です。そもそもそんなことだったらWindows上でしか動作しないという変なソフトになってしまう。