30日でできる!OS自作入門パート9(14日目)

結構長くやっているつもりですが、まだ9回目の投稿なんですね。

というわけで今回のサブタイトルは『高解像度・キー入力』です。

一通りの説明は終わったらしい


ここまで色々と機能を実装してきましたが、ここまででプログラミング言語の知識やアルゴリズムのテクニックの紹介は終わりのようです。これからは今までの知識の組み合わせでOSが作れるとのこと。

なので筆者の気分は「明日から本気だす」状態のようですが、それで終わりだと読者はつまらないだろうということで高解像度とキー入力の機能を実装するようです。

画面のサイズを大きくする


高解像度にするとはなんぞや?ということですが今までの320×200の画面サイズを640×480にするようです。

具体的にはアセンブラの画面モード設定を書き換えます。

BX,0x4101

AX,0x4f02

こう設定されていると画面が大きくなります。

この値を説明すると、昔ビデオカード会社が作ったVESAという協会が共通の設定方法で専用のBIOSを作りました(VBE)。AX=0x4f02とするとVBEを使った画面モード切替となり、BXの値に画面モード番号を設定します。0x101というのが640×480×8bitカラーの設定値で、この値に0x4000を足した値をBXに入れると640×480の画面サイズになります(だから0x4101が設定されている)。

ちなみに実機で試す場合はどんなビデオカードを使っているかによります。たとえばVESAに協力していない会社のビデオカードの場合だとVBEモードに設定できないのでデフォルトの320×200で我慢するしかないようです。

 

キー入力


Aのキーを押すとAを押した時は1Eと表示されはなすと9Eと表示されます。

なんでかよくわかりませんがそれぞれのキーで決まった値が表示されるのでこれを正しく直します。

といってもちょっとこの辺はよくわかりませんでした…。なのでちょっと調べて自分なりに理解してみたいと思います。

 

最後に


ちょっと中だるみっぽくなってきてしまっています。

今回はちょっと息抜きくらいの感じでしたが結構理解が追いついていないです。

次回までにちょっと復習をしたいと思います。

soon
  • soon
  • 1986年生まれのjavaプログラマー。28歳の時に7年働いた販売士からプログラマーに転職をする。常駐先を転々としながら日々生きています。