OS自作入門 その22
OS自作入門 十七日目途中まで。
3ページぐらいしか読んでない。
OS自作入門 その21
OS自作入門 十七日目の途中まで。
十六日目のマルチタスク2は難しかった。
アイドルタスクを作ることで「すべてのレベルにタスクがない」状態を回避するのはなるほどと思った。そういえばWindowsのタスクマネージャーにもSystem Idle Processというのが出てくるがこれもアイドルするタスクなのか?
OS自作入門 その20
OS自作入門 15日目。
マルチタスク1。
タスクを切り替えるよう命令(タスクスイッチ)が出ると、CPUはレジスタの値をすべてメモリに書き込む。書き込まれる内容はTSS(Task Status Segment)と呼ばれる。これはセグメントの一種なのでGDTで設定して使用する。
タスクスイッチにはJMP命令のfarモードを使用する。
TRレジスタには「現在どのタスクが実行されているか」が記憶される。タスクスイッチするとTRレジスタの値も自動的に変わる。TRレジスタに値を代入するにはLTR命令を使う。
TRレジスタ、タスクスイッチすると勝手に変わるならわざわざ自分で代入する必要はないのではなかろうかと思ったのだけど、なぜ代入するかの詳細な説明がないな。
OS自作入門 その19
OS自作入門 十四日目まで。
キー入力とおまけ。
中身ではなく見た目の問題なのでさらっと。
クリックしたところにウィンドウが移動するってそんなOS無いだろう。
OS自作入門 その18
OS自作入門 十四日目の途中まで。
高解像度対応。VESA BIOS extension(VSE)を使用すれば320x200を超える解像度記できる。
まずVBEが存在するかどうかを調べ、存在したらVBEのバージョンを調べる。次に画面モードを指定する。指定するのは
モード属性
X解像度
Y解像度
色数
色指定方法
VRAMの番地
OSが動いている時に解像度を変更するときはどうすればいいんだ?
OS自作入門 その17
OS自作入門 十三日目。
今までのプログラムの最適化。ヤバいわからん。が、まあいいか。
流し読みなので特にメモすることもない。
OS自作入門 その16
OS自作入門 十二日目まで。
タイマ割り込み処理。タイマのコントロールレジスタに0x34を指定しているけど、これは
カウントモードがレートジェネレータ
カウンタアクセスモードが16ビットリードロード
という意味なのか?
レートジェネレータがわからない。ググってみると「入力クロックをn分周する。」という説明を見つけたがつまりどういうことだろうか。