OS自作14日目

高解像度化します。これはアセンブラで画面モードを指定するときに、VBE(VESA Bios Extension)対応のビデオカードかどうか確認して、対応なら解像度を変化させるものです。ダメなら以前と同様に320x240で動作させます。

あとは、キー入力ができるようにします。カーソル移動も入力時にやってやればそれらしく見えますね〜。凄い。
また、マウスカーソルをウィンドウ上でドラッグして、ウィンドウ移動もできるようにします。これで見かけ的にはWindowsとほとんど同じといっても過言ではありませんね。

OS自作12日目〜13日目

タイマの実装です。

OSにおいてタイマは非常にたくさんを同時に扱う必要があるので、最初は単純に配列で管理します。が、先日のウィンドウ管理と同様、使用状態(使用中/未使用)が頻繁に変わるようなものは単純に配列でもつと、そのあとの管理が非常に非効率になります。

ちゅうことで、線形リストを使います。なんだか、「アルゴリズムとデータ構造」っていう、表紙が白・青・赤の書籍を思い出すなあ〜。B1のころに使った教科書。さらに、リストの長さが0になることを防ぐために番兵(Sentinel)を導入して、綺麗にします。番兵についてはWikipedia参照のこと。←手抜き(^^;

また、最初はバラバラだった各種デヴァイス用のタイマを1つにまとめています。

OS自作11日目

とうとうウィンドウを描画します。
今までに作ってきたz軸管理の関数を使いますが、このままだと画面にちらつきがあるので、そこを直します。ここでは、mapというvramと同サイズの領域を使って再描画する領域を限定することでちらつきを回避しています。

OS自作10日目

先日放っておいた重ね合わせ処理です。
ウィンドウズのようなz軸の処理をやって、どんどん改良していきます。マウスカーソルを動かしたり、新たに別の文字を表示したときに、再描画する部分をなるべく小さくするように工夫していきます。