4日目「おいおいおいおい、なんかグラフィックが描けたぞ〜」

 4日目マジすごいよ。すごいよマジ4日目。なんたってグラフィックが描けたぞ。とりあえず「本当に30日でOSが出来上がるのかを試してみるページの4日目」を見てくれよ。16色だよ16色。マジでやばいぞ。これはなんか思った以上にうれしいぞ。だいたいさぁ、真っ黒な画面に白い文字とかあんなんいらんのですよ。何年前の話やねんという話ですよ。これからはやっぱグラフィカルじゃないとダメなんですよ。時代の流れには逆らえんのですよ。いや、やばい、マジでこれはうれしい。素でうれしい。素でうれしいよ。著者の川合氏よ、本当にありがとう。まさか画面に絵が書けるだけでこんなに感動するとは思わなかったよ。まだ4日目だけど、早くもOS作りの感動を覚えてしまったよ。
 それで、今日やったことなんだけど、4日目の半分はC言語のポインタの話なのだ。それで、どうポインタを解説しているのかというと、アセンブラの知識をもとに解説されているのだ。これはね。正直結構分かりやすいです。というか、あんまり読まなくてもだいたい理解できたというか、要するにポインタってメモリアドレスのことでしょ。ってことが分かったらあとは別にどうってことない。つまり、メモリというものがあって、そのメモリにはアドレスがあって、そのアドレスをC言語ではポインタって言ってるだけなんだよね(多分)。つーか、ポインタとか分かりにくい言葉を使わずに、アドレスって言ってくれよ、と。つーかなんで名称がポインタなの? ポインタというのはね、マウスを動かしたときに動くあの矢印のことを言うのよ。あれがポインタなのよ。そのあれがなんでメモリアドレスやねんと。メモリアドレスがあれであれがメモリアドレスでだったらポインタっていったい何やねんという話ですよね(いや意味分からんけど)。
 それで、画面に絵を描くためには、その特定のメモリへデータを書きこまなければならないらしい。んで、それがどうやらVRAM(ビデオラム?)というらしい。それで、そのメモリ領域にデータを書き込むことで画面に絵が書けるようになったらしいのだ。それで、この辺りの詳しいことは「http://community.osdev.info/?VGA」に書いてあるらしいのだが、こんなむちゃくちゃ多いテキストなんて読む時間ないからポイントだけをゲット!

パレットのアクセスの手順
まず一連のアクセス中に割り込みなどが入らないようにする(たとえばCLI)。
0x03c8に設定したいパレット番号を書き込み、続いて、R、G、Bの順に0x03c9に
書き込む。もし次のパレットも続けて設定したいのなら、パレット番号の設定を
省略して、さらにRGBの順に0x03c9に書き込んでよい。
現在のパレット状態を読み出すときは、まず0x03c7にパレット番号を書き込ん
で、0x03c9を3回読み出す。これが順にR、G、Bになっている。これももし次のパ
レットも読み出したいときは、パレット番号の設定を省略してRGBの順に読み出
してよい。
最初にCLIした場合は、最後にSTIする。

 了解。あとはこれをもとにプログラムを書くだけだ。
 4日目までやってきて、正直いちばん壁となったのはやっぱりアセンブラC言語の知識だと思う。これらの知識がまったくない人が本書を読み始めたらやはりなかなか先に進めないと思う(読めないわけではないが、難しいということ)。だた、ある程度プログラミングの知識を持っていれば、あとは本書に書かれてあることだけで十分にやっていけるはず。本書は、C言語アセンブラというOSとはまったく関係ない部分まで包括しようとしているが、それにはやはり少し無理があるような気はする。というのも、俺自身がアセンブラの解説書とC言語の解説書をあらかじめ用意しておいて、よく分からないところがあると、それらで調べたりしながら読んでいるからだ。
 よって、読み進めるためには、少なくとも一度プログラミング言語の習得にチャレンジして挫折したくらいの経験値は持っておく必要があるんじゃないだろうか。いくら本書といえども、まったく何の知識もない人がいきなりOSを作り始めることはできないと思う。
 といってもなぁ、そもそもプログラミング言語の習得に挫折してるやつがたった30日でOS作れるようになる本なんて、世界中のどこを探してもないんじゃねーのか? とは思うんだけどね。本当に30日後(あと26日後)に俺がOS作れるようになってたらどうしよう…(汗)。
 最初はイケイケだったのに、グラフィックとかでなんか妙にリアリティ出てきてビビってる俺(笑)。なんだなんだ、まだ所詮、絵が表示されただけじゃねーかOSにはまだまだ程遠いぜ。というわけで、
 明日も乞うご期待。