HariboteOS @ Blog - Linux Life

30日でできる! OS自作入門 4日目:マウスを動かす、メモリ容量

2008/04/11 ( n ) < HariboteOS >

今週は仕事を普通にしながら、夕食後から夜中にかけてOS作りをしていたので、 さすがに相当疲労が溜まってしまいまして、今日はあまり進まなかった。

初めにマウスを動かす処理。
昨日マウスからのデータの読み込みまで終了していたので、今日はこのデータを解析して、マウスカーソルを実際に動かしてみた。ついでにボタンに応じてカーソルの色を変えてみたり。

それからブートローダー関連で後回しになっていたアセンブラソースの解説を読む。
GDT,IDT の簡単な初期化、OSのメモリ領域へのコピー等など。
なんか若干理解できた気分。

次に、メモリ容量の取得。
すごくシンプルだけど、こんなもんでいいんだろうか。

それからメモリ管理部分に頭を突っ込んだけど、今日はギブアップ。

今日のところの成果。

本の9日目までを4日で進んだのでいいペース。ただ、ちゃんと理解できていない部分もある。 でも、とりあえず楽しんで作って、細かいことは後でちゃんと勉強するって方針でいいと思います。

30日でできる! OS自作入門 3日目:文字の描画、割り込みの設定

2008/04/10 ( n ) < HariboteOS >

まず最初に文字の描画。32bit になってしまったのでもはやBIOSはつかえない。
ビットマップみたいなフォントデータを作成して1ドットづつ地道に描画。。。
なかなか切ない。
本に付属のフォントデータを使用してASCII文字列の描画ができるようになった。
デバッグメッセージを表示できる様になったのは喜ぶべきことのはず。

次に、マウスカーソルの表示。
とりあえず表示だけ。

で、ここからが本日のメインイベント。
GDT と IDT
IDTの方はやりたいこともやってることも(やり方は別として)なんとなく理解できる。
一方GDTの方はさっぱり。要復習。

息抜き程度にソースを分割。
複数のソースファイル(*.c,*.nas)に対してヘッダファイルが一つっていう状況に違和感を感じるのは普通なんだろうか。

で、割り込みの設定をしてキーボードとマウスの反応を得る。
ハードの制御となると途端に難しく感じる。こちらも要復習。

途中で FIFO を実装。
オブジェクトにしてメソッド呼び出したいよーと思いながらも C++ でやることのハードルの高さに(全然見当もつかないけど)しぶしぶ我慢。
やっぱり C言語はあまり好きではない。

今日の結果。

見た目はそんなに変わらないけど、マウスとキーボードを例にハードウェア回りの最初の一歩を踏み出した感じ。
今日はここまで。いいペース。

30日でできる! OS自作入門 2日目:アセンブラ初体験〜C言語でプログラム

2008/04/09 ( n ) < HariboteOS >

昨日手書きしたイメージファイル を作るためのアセンブラを、とりあえず本を見ながら打ってみる。
イメージファイルをバイナリエディタで作ってからアセンブラで作り始めるのは順番が逆では?と思いつつもこっちの順番の方が意外と理解しやすいのが不思議だ。

  • DB は 「data byte」。1バイトを書く命令。文字列も書ける。
  • RESB は 「reserve byte」。指定した分を予約(0で埋めてくれる) らしい。
  • ; はコメント
  • DW は「data word」。2バイト。
  • DD は 「data double-word」。4バイト。
  • などなど。後で説明しますよと書いてあってまだ出てきていない命令も多数。

Linux版開発セットを HariboteOS/Index から持ってきてアセンブルして実行。当然結果は昨日と同じ。

Linux/wako_memo をブックマークに追加。

......................

レジスタがたくさんあって、8ビットだ16ビットだ32ビットだと全然覚えられない。 そのうちアセンブラの教科書的なものを買ってこよう。

で、なんか調子がよくて、なんと本の四日目まで終わってしまった。
要所要所で説明が省かれて(後で説明しますとかなんとか)、 肝心なところが理解できていないような感じを残しつつ、 画面にお絵描きをするに至る。
今日はここまで。GW前に終わらないかなぁ。

30日でできる! OS自作入門 1日目:バイナリエディタでファイルイメージを作成

2008/04/08 ( n ) < HariboteOS >

いきなりバイナリエディタで直接イメージファイルを作り始めましたか。。。
バイナリエディタなんて使ったこと無いですが、名前は確か khexedit, khexedit...
KDE 4.0.2 には無いのか!? まぁ、それは置いておいて、 kde3.5 の khexedit で helloos.img の内容を作成してみる。ノートPCのキーボードだと数字を打つのが辛い。

イメージを作成し終わったけど、何をしているのかはまったく不明のままとりあえず実行へ。

本に書いてあるのは Windows でフロッピーから起動する方法ですが、 フロッピーなしのノートPCで Linux なので、、、QEMU ね。

HOWTO: Qemu - Gentoo Linux Wiki を参考に QEMU のインストールをした。
gcc は 4系では文句を言われるので一瞬 gcc-config で 3.3.6 に切り替えて

    # emerge -avt qemu

kqemu というものも必要らしい。

    # emerge -avt kqemu

kqemu をカーネルにロードして、ユーザーを qemu グループに追加して、

    $ qemu -fda helloos.img

おぉ、素晴らしい。よくわかんないけど、何かが動いて文字が表示されている。

今日はここまで。

30日でできる! OS自作入門 0日目

2008/04/07 ( n ) < HariboteOS >

今から約2年前、本当に30日でOSが出来上がるのかを試してみるBlog という Blog を見て買って以来、かれこれ2年ほど放置していた 30日でできる! OS自作入門 をとうとう読むことにしました。

C言語もアセンブラもOSもほとんど知識がないので、なんとうってつけの本かと。なにより、そういう知識がなくてもいいよーと書いてあるところが素晴らしい。

一応社会人なので30日×2くらいを目標になんとなく進めていこうと思っています。

カテゴリ

スポンサードリンク

Copyright © 2025 Linux-Life.net