OS自作入門-5日目

いや、OS自作入門とかやってる場合じゃないYO!
カブロボ!!優勝者には五億円運用させるとか言ってるんだって!!いや、ほんとに。
http://kaburobo.net/2006/05/post_5.html


。。。まぁそんなことは「ふーん」と眺めて5日目行ってみましょう。
(ちっともうらやましくないやい!!。。。ホントダヨ?)
タイトルはと。「構造体と文字表示とGDT/IDT初期化」


えーと。。。今日は実にやばいね。タイトルからして分からん。
昨日の時点ですでに余裕がなかったんだが、今日はギブアップか?!


えーと、とりあえず、毎日こまめにリファクタリングされてる”はりぼて君”だけど、
今日もリファクタリングからね。今まで、bootpack.cってのに書いてたメモリ番地を
asmhead.nas(アセンブラ)から引っ張ってくるように変更&構造体で書き直す。


あーちなみに、今日(ほんとは昨日も半分以上)からは書くコードが増えすぎるので、
全部自分で書くのはやめやめ。時間がいくらあっても足りんからね。
3分クッキングよろしく、出来合いを引っ張ってきて自分でちょこっといじる方針に変更。


で、文字!!ついにフォントだよ!ふぉ・ん・と!!

00000000
00011000
00011000
00011000
00011000
00100100
00100100
00100100
00100100
01111110
01000010
01000010
01000010
11100111
00000000
00000000

ふー疲れた。こんなんね。遠くからぁぁぁぁーーーーぼぉぉぉーーーーっと眺めれば。
あら不思議、なんと「A」に見えるじゃあ−りませんか。見えない人は見えるまで眺めるが吉。
うん。こんな理屈で作るらしい。。。地道だ。16進でせっせと書き直し。

static char font_A[16] = {
0x00, 0x18, 0x18, 0x18, 0x18, 0x24, 0x24, 0x24,
0x24, 0x7e, 0x42, 0x42, 0x42, 0xe7, 0x00, 0x00
};

。。。こりゃかなわんってことで、OSASKのフォントを用いるらしい。そりゃそうだ。
これはテキストに上の01の並びのようなものを書き込んでる。(十分大変だが)
フォント専用のコンパイラも用意してくれてる。めんどいからね。ビバ手抜き。


そういや、ここでちょっと疑問に思ったんだけど画面に描画するためにVRAMに01を書き込んで、
そのピクセルに色を表示させるわけなんだけど、OSから見ると普通のメモリもVRAMも同じように
見えてるのかな?きっとそうなんだろうけど。
。。。。。はい、読み直してみると3日目にきっちりと説明されてました。。。ははは。
「VRAMは通常のメモリのようにも使えるけど、それぞれの番地が画面上の画素に対応している」
はい。テストに出るよ!

フォントついでにマウスカーソルを作成。わぁーい。。。。って動かんやんけ!!!
んで、これを動かすのに今日の本題であるGDTとIDTに突入。。。前振りが長すぎた。。。


こっからが非常に難解。。。なので要約。

GDT:大域セグメント記述子表(セグメントの大きさ、番地、管理用属性などを記述)
IDT:割り込み記述子表(割り込み番号100が発生したら○×関数を呼び出すなどを記述)

。。。今は、これが精一杯。。。
2つとも何かに対応付けるテーブルってことだね。


えーとそろそろ、頭がメルトダウン寸前。
だって、メモリ番地を表す16進数と書き込む値の16進数ばっかりっすよ!!ソースが。
人間の読めるもんじゃねーーーーーーーと叫びたいけどがまんがまん。


っと叫んだら。今日はここまでだった。祈りが通じたのか?!(祈ってねー)