/ «2003-10-11 (Sat) ^ 2003-10-13 (Mon)» ?
   西田 亙の本:GNU 開発ツール -- hello.c から a.out が誕生するまで --

Categories Books | Hard | Hardware | Linux | MCU | Misc | Publish | Radio | Repository | Thoughts | Time | UNIX | Writing | プロフィール


2003-10-12 (Sun)

[Writing] GCCプログラミング工房 第23回 カーソル&フォント制御

この連休は楽しい楽しい TD4 製作のはずだったのに、原稿執筆に追われる(トホホ・・)。10台分はあろうかというパーツに後ろ髪を引かれる思いで、GCCプログラミング工房・第23回の下調べを続ける。

カーソル制御、OK。ビットプレーン2への、フォントデータダウンロード、これもOK。当初は、90x60 テキストモードにも挑戦するつもりだったのだが、残念ながらページ数が尽きてしまった。もう1回延長か?それとも、いよいよ RS-232C か、どうする?

さて、テキストの正体が VGA では B800:0000 から始まる VRAM であることは、比較的良く知られている事実である。しかし、「なぜ B800:0000 なのか?」この素朴な問いに答えることが出来るプログラマーは、世界広しと言えども、それほど多くはないだろう。

この問いに答えるためには、VGA chip の最深部まで踏み込んだ知識が必要とされるのだが、困ったことにその詳細を述べた書籍が既に絶版になっているのだ。それは、Richard Wilton氏による「Programmer's guide to PC Video Systems」。日本語版は 1989年に出版された「PC&PS/2 ビデオシステム・プログラマーズガイド」だが、こちらも当然のことながら絶版。

どうしてもこの聖典を入手したければ、amazon.com の古書サービスを利用すると良いだろう。ただし、古書販売サービスを amazon.com から請け負っている業者のほとんどは、配達先をアメリカ国内に限っている。残念なことに、日本への発送は拒否されてしまうのだ。

目の前にぶら下がった人参を口にすることが出来ない、お馬さんの気分だが、この無念をはらすためには、「転送サービス」が有効である。現在、色々な転送サービスが存在するようだが、私はここ数年来 Cat Fish Club を利用している。手数料が少々高いのが玉に傷だが、サービスは丁寧で確実である。アメリカだけでなく、ヨーロッパの中小企業なども日本向けには発送していないお店が結構な頻度で存在するため、ハードウェアのパーツなど小物を取り寄せるときには、大層威力を発揮する。

ネット上で公開されている情報としては、FreeVGA Project が決定版である。詳細な VGA 全レジスターの入出力インターフェースが網羅されている。ただし、この内容を理解するためには、やはり上に紹介したようなリファレンスを通読しておく必要あるので、鶏が先か卵が先か、というジレンマに陥ることは否めない。

さて、オリジナルOS構築に取り組んだプログラマーが最初に突き当たる壁は何かと言えば、画面モードの切り替えだろう。画面モード切替をすべて自分のコードで記述することは、至難の業だからである。このため、わざわざプロテクトモードから ROM-BIOS を呼び出すOSも、少なくない。

そんな時にお手本のコードとして役立つのが、Chris Giese 氏による modes.c である。このソースを読みこなすことが出来れば、もはや ROM-BIOS など無用の長物となる。