12日目「スタープラチナ・ザ・ワールド!! 時よ止まれッ」

 本書の12日目分を読み進めたのは昨日なのだが、ちょっと時間なくてBlogを更新することができなかった。よって、とりあえず昨日の分を書くことにする。
 それで、昨日やったのは、タイマ割り込み。久しぶりのハードウェア制御プログラムで、一定期間に定期的に割り込みを発生させてくれるすぐれものな仕組みだ。どうやら、タイマを使うためにはPITを利用する必要があるらしく、PITは制御方法はPICとさほど変わらないらしくて、とても簡単だ。というよりも、以前割り込みでPICを扱ったときにはやたらめったら難しく感じたものだが、いまあらためて、今度はPITを扱うプログラムを書いたら、これがさほど難しく感じない。これはやっぱり成長したってことなのか、それともただPITの方が扱うのが簡単だっただけなのか。まぁ何はともあれここは難なくクリアできた。http://community.osdev.info/?%28PIT%298254の「ものぐさなひとのために」という項目をみれば、扱い方が載っているので、これで万時解決だ!
 また、今回はアルゴリズム的に難しい部分もあまりないので、すんなり進むことができた。機能作った高速カウンタを1/100秒ごとに進めるように変更する。さらに、タイマ割り込みを扱うと、時間関連の大抵のことが可能となるので、たとえば、カーソルの点滅なんてことも朝飯前。一定期間に定期的に処理をさせるという割り込み。なかなかGOODな仕組みだと思う。これを利用すれば、例えば、時計なんてのも簡単に作れるはず。タイマは工夫しだいでいろいろと応用ができそう。うーん。面白そうだ。セイカブツは→本当に30日でOSが出来上がるのかを試してみるページだ。
 そして、実は今日読み進めるべき13日目もタイマ処理についてなのだ。というわけで、
 13日目に続く!

13日目「スタープラチナ・ザ・ワールド!! そして時は動き出す…」

 やっと少しハードウェア関連に戻ったのに、またアルゴリズムの話になっとる〜。ここ数日、ほんとにアルゴリズムばっかりやんか〜。「1週目はハードウェアの制御関連で苦労します。2週目はアルゴリズムで苦労します。」って一番最初にこの著者自身が言ってるけども、本当にその通りですよ。だって俺、ここ最近、紙と鉛筆を用意してこの本読んでますもん。紙と鉛筆ですよ、紙と鉛筆。この情報化社会において、しかもその最前線で活躍するプログラマという職業についてるこの俺が、紙と鉛筆ですよ。そして、アルゴリズムの動作原理を紙に書いて「ふむふむ」とか言ってるわけですよ(紙媒体最強!)。
 思い返せば、FIFOから始まったような気がする…。そしてメモリ管理、シートの描画&重ね合わせ、タイマ処理、ああー、もうお腹いっぱいです。しかもしかも、今日やったことといえば、タイマ処理の最適化や簡略化みたいな話(番兵とか線形リストとか)。
 実は、13日目にして、俺はこの著者のあるこだわりに気づいた…。それは、処理の最適化やプログラムサイズの軽量化について、この著者はものすごい突き詰めるというところだ。いまは21世紀ですよ。歩きながら電話ができ、ゲームができ、カメラが使えて、おまけにムービーまで送れる時代ですよ。メモリはメガだのギガだの言っており、ハードディスクにいたってはテラなんてのもあるわけですよ。テラなんて言葉、テラワロスくらいにしか使わないと思っていたのに…(ええ〜? お前の脳みそにテラワロスだよ〜)。
 そんな時代に、たった数キロバイト、数百バイトのためにあくせく思考をめぐらすこの著者さん。もうね、変人以外の何者でもないですよ(ぉぃ)。いや、これは誉め言葉です。まぁ、俺なんかに誉められてもあんまり意味ないですけどね。ただですよ、例えていうならみんなが右に向かって進んでいるときに、ひとりだけ左に突き進んでいるような人ですよね。というか、左というよりむしろ逆行してますよね。ひとりだけ高速道路を逆に走行してるような人ですよね(それは違くね?)。
 でも、やっぱり天才とはこういう人のことを言うのかもしれんです。んで、これだけの技術力を持っている方なので、さぞかしたくさん稼いでいるんだろうなーと思ったら、どうやら貧乏らしい(31日目「開発を終えた後で」より)。なんでだよ!! これだけの技術を持っていれば、普通に働いたら結構な金額を稼げそうなんだけど、どうもOS作りに専念したいので働かないらしい。「金で買えないものなんてあるわけないじゃないですか、女だって金でついてきますよ〜」と豪語する実業家が人気者になるこの時代に、あんた何やってんだよ…(でもなんかすげー好感持てるじゃねーかよー)。
 というわけで、少し話が脱線したけども、まぁ世の中いろいろな人がいるよなぁという話でした。それで、今日出来たセイカブツは→本当に30日でOSが出来上がるのかを試してみるページ(13日目)だ。起動後3秒目からcount変数の加算を開始し、起動後10秒目までの7秒間にcountをどれだけ加算できたのかを調べるものになっている。エミュレータで試すのと、実機で試すのとでは、結果が違うので、こういうプログラムはぜひ実機でやってみることをお勧め! これでタイマ関連は終了だ。これまでやってきたことは難しかったせいか、タイマ関連はさほど難しいとは感じなかった。いや、実際難しかったけども、これまでと比べるとという意味でね。
 そして、明日でついに2週間。そろそろ全体の約半分を消化することになる。長かったような短かったような、そんな感じだが、まだまだ先は長いので、一歩一歩確実に進んでいきたいと思う。
 以後、乞うご期待!