OS自作入門 その22

 OS自作入門 十七日目途中まで。

3ページぐらいしか読んでない。

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

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

 

 

OS自作入門 その21

 OS自作入門 十七日目の途中まで。

十六日目のマルチタスク2は難しかった。

アイドルタスクを作ることで「すべてのレベルにタスクがない」状態を回避するのはなるほどと思った。そういえばWindowsのタスクマネージャーにもSystem Idle Processというのが出てくるがこれもアイドルするタスクなのか?

 

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

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

 

 

OS自作入門 その20

 OS自作入門 15日目。

マルチタスク1。

タスクを切り替えるよう命令(タスクスイッチ)が出ると、CPUはレジスタの値をすべてメモリに書き込む。書き込まれる内容はTSS(Task Status Segment)と呼ばれる。これはセグメントの一種なのでGDTで設定して使用する。

タスクスイッチにはJMP命令のfarモードを使用する。

TRレジスタには「現在どのタスクが実行されているか」が記憶される。タスクスイッチするとTRレジスタの値も自動的に変わる。TRレジスタに値を代入するにはLTR命令を使う。

 

TRレジスタ、タスクスイッチすると勝手に変わるならわざわざ自分で代入する必要はないのではなかろうかと思ったのだけど、なぜ代入するかの詳細な説明がないな。

 

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

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

 

 

OS自作入門 その19

 OS自作入門 十四日目まで。

キー入力とおまけ。

中身ではなく見た目の問題なのでさらっと。

クリックしたところにウィンドウが移動するってそんなOS無いだろう。

 

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

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

 

 

OS自作入門 その18

 OS自作入門 十四日目の途中まで。

高解像度対応。VESA BIOS extension(VSE)を使用すれば320x200を超える解像度記できる。

まずVBEが存在するかどうかを調べ、存在したらVBEのバージョンを調べる。次に画面モードを指定する。指定するのは

モード属性

X解像度

Y解像度

色数

色指定方法

VRAMの番地

 

OSが動いている時に解像度を変更するときはどうすればいいんだ?

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

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

 

 

OS自作入門 その17

 OS自作入門 十三日目。

今までのプログラムの最適化。ヤバいわからん。が、まあいいか。

流し読みなので特にメモすることもない。

 

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

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

 

 

OS自作入門 その16

 OS自作入門 十二日目まで。

タイマ割り込み処理。タイマのコントロールレジスタに0x34を指定しているけど、これは

カウントモードがレートジェネレータ

カウンタアクセスモードが16ビットリードロード

という意味なのか?

レートジェネレータがわからない。ググってみると「入力クロックをn分周する。」という説明を見つけたがつまりどういうことだろうか。

 

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

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