8 章: マウス制御と32ビットモード切り替え

7 章で取れるようになったマウスの割込みのデータを解析しながら、ついにマウスカーソルを動かすことが出来るようになりました。でも、重ね合わせの処理がまだできてない、これは後ほど。マウスから送られるデータは 3バイトが 1 つの塊になっていてそれぞれ 「ボタンの情報+X,Y軸の動いた向き」「X 軸の変位」「Y 軸の変位」となっている。なので、マウスの制御は 3 つの状態を持つ簡単な状態遷移プログラムな感じになった。

7 章の残りはブートプログラムの処理。32 ビットモードに移行するために 1M 以上のメモリアクセスの可能にするための設定や、スタックを設定したり、IPL でロードしたフロッピーの中のデータを再度 1M 移行のアドレスにコピーしなおしたり。コピーし直す理由がよく分からないのだけど、メモリマップをきちっと隙間なく作っておきたいからということでいいのかな。

あと、今日のソースで "ALIGNB 16" というアセンブラの擬似命令がでてきました。データ定義の擬似命令が連続する場合、アライメントを 16 バイトに揃えるという擬似命令です。アセンブラで定義したデータ領域を C の構造体からも扱う場合なんかに使いますね。たとえば、

struct foo{
    unsigned char a,
    int b;
}

の時に

   sizeof( struct foo )

が、メンバ変数のサイズをそのまま足した 5 バイトではなくて、8 バイトになるというやつですね。8 になるのであれば、アセンブラ側は ALIGNB 4 を書いてやらないといけません。こういう構造体のサイズは C 言語の理解度テストなんかによく出るけど、サイズが 8 バイトになる理由は以前に少し書いたけどCPU のアーキテクチャに関るということですね。

8 章終わり。次回はメモリ管理。これまでやった画面描画とか、マウス制御って結局はデバドラだから厳密には OS なのか?という雰囲気でしたけど、いよいよ OS の機能って感じがしてきました。

トラックバック(0)

このブログ記事を参照しているブログ一覧: 30日で作る自作OS 11/30 - 32bit モードへの道

このブログ記事に対するトラックバックURL: http://tsuyuguchi.com/mt/mt-tb.cgi/193

最近の画像

Zero History - ギブスンの新作が 9 月に発売 -
虐殺器官
ドミニオンのランダマイザアプリ、dominion minion が日本語対応!
ハイペリオンの没落 ~ 完結...でもまだ続く~
ハイペリオンの没落 ~ 完結...でもまだ続く~
ハイペリオン - 長大な叙事詩 SF のスタート -
ハイペリオン - 長大な叙事詩 SF のスタート -
「都市と星」 - 10億年と言われてもよく分からない -
「星を継ぐもの」 - 良い Sci-Fi -
トールサイズのニューロマンサーを買った
虎よ、虎よ! - 主人公フォイルの執念の物語 -

私の本棚

 

自転車走行距離

自転車走行距離

Flickr Photos

FlickrPhotos

なかのひと

Y!ログール

このサイトについて

2015年2月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

アーカイブ

My Update

  • Loading...

その他

あわせて読みたいブログパーツ