たまりば

  パソコン・インターネット パソコン・インターネット  三鷹市 三鷹市

OS自作[5]_5-8日目
2008年08月12日 05:54

今日は8日目の途中まで進みました。
あー、つい調子に乗ってこんなに…。もう朝だ…。

ブログ書くのは寝てからにしよう。
さしあたって画像だけ。

-----

'08.08/12-18:08 追記

そんなわけで、解説いきます。

◆5日目分
構造体を使ってコードをちょっと書きなおしたのがまず一つ。
それからついに文字表示です。点をちまちま打って文字を表示する関数を作りました。
文字
文字が出るとやっぱり見栄えが違いますねー。
フォントはOSASK(この本の筆者らが作ったOS)のものが付属していたんですが、これがちょっと独特な文字コードになっていました。
ASCII部分は普通なのですが、ASCIIの制御文字あたりに記号が、後半に欧米の特殊文字と罫線素片が入っていました。
文字の選定は別にいいのですが、既存の文字コードと全く違う配列になっていて扱いづらいです。(Latin-1でもMacRomanでもない)
どうせ使わないならということで、代わりにカナを入れてみました。
ちなみにこのフォントファイルは
char 0x41
........
...**...
...**...
...**...
...**...
..*..*..
..*..*..
..*..*..
..*..*..
.******.
.*....*.
.*....*.
.*....*.
***..***
........
........
という形で書かれたテキスト形式のファイルで出来ています。
これをペイントとテキストエディタで書き換えたのですが、具体的なやり方はまた後ほど。

ちなみにこの時にはソースファイルに半角カナが使えることを知らなかったので、1バイトカナフォント風の複雑な文字コードにしてしまいました。
(例 : 'a'+0x80→チ、's'+0x80→ト、'Z'+0x80→ッ)

5日目分はその後、
・変数を表示(付録コンパイラのsprintfを使用)
・マウスカーソルを描画(まだ動かない)
・GDT(Grobal segment Descriptor Table),IDT(Interrupt Descriptor Table)の初期化
をします。
この最後のGDT,IDTあたりが曲者で、大分難しい話になります。
分からなかったら雰囲気だけつかんで後で戻ってくればいいと書いてあったのでそのとおりにします。
とりあえず、GDTはメモリをセグメントに分けて管理するためのもので、IDTは割り込みを処理するためのもののようです。
よし雰囲気つかんだ。

◆6日目分
まず分割コンパイルについてです。
まあなんというか、こうすると分割できるのねって感じです。
昔からよく分かりませんでしたが、やっぱりよく分かりません。

それからGDTの説明の続き。

最後に割り込みの処理。これでキーボードが押されたことが分かるようになりました。
キーボード割り込みの認識
ちなみに何のキーが押されたかはまだ分かりません。
それとマウスの割り込みはまだ認識出来ません。

つくづく先が気になる構成です。

◆7日目分
えー、この日は、
138ページの挿絵漫画のネコマタが可愛かったです。

あとはまあキーコード取得したりマウス割り込みを認識したりバッファを作ったり。

◆8日目分
なんだか7日目の最後に
明日はこのマウスデータを解読して、ついにマウスカーソルを動かしましょう! 楽しみですねえ。……あ、そこのきみ、だめだよ先を読んじゃ。今日は寝るの。続きはあした。分かった?
なんて書いてあったんですけど…、
そんなこと言われたらますますやりたくなっちゃいますよね。
マウス
あまり難しいところもなくわりとすんなり理解できました。
ちなみに下のタスクバー風の部分に触れると背景がおかしくなるのは仕様です。

8日目の残りは以前後回しにした32bitモード切替とC言語連携の説明。
眠い頭で理解できるわけもないので明日へ回す。

-----

◆今日の成果◆
文字が出せるようになった。
キーボードとマウスのデータを受け取れるようになった。

タグ :OS自作

  • Post time : 2008年08月12日 05:54│Comments(0)
    URL欄を実験的に消してる間に廃止されてしまいました。まあいいか。
     
    <ご注意>
    書き込まれた内容は公開され、ブログの持ち主だけが削除できます。
    削除
    OS自作[5]_5-8日目
      コメント(0)