非情報系インフラエンジニアの情報系お勉強

OS自作、ネットワーク、セキュリティの備忘録

OS自作入門 14日目/30日(画面の高解像度化)

OS自作入門 14日目/30日(画面の高解像度化)

1.はじめに

14日目では、画面の解像度を320×240から変更する。

2.harib11d

画面の解像度を640×480に変更する。

  1. 上記のためにasmhead.asmの修正
No. 対象ファイル 修正内容
1 asmhead.asm テキストの通りに修正

テキストの通りに実行すると、何も表示されない。小一時間ほど調べたが解決できなかったため、harib11eを実施。
※この問題については、harib11eの中で解決

3.harib11e

任意の解像度を設定する。任意の解像度が設定できない場合、320×240の解像度で起動する。

  1. harib11dと同じくasmhead.asmの修正
No. 対象ファイル 修正内容
1 asmhead.asm テキストの通りに修正

4.harib11dの問題解決

正常に動作したharib11eVRAMのアドレスをint型で画面に出力したところ-50331648を示した。これを16進数に変換する手順は下記の通り

No. 処理 結果
1 -1を掛けて正の数にする 50331648
2 16進数に変換する 0x03000000
3 基数を求める(bit反転して1を足す) 0xfd000000

3の手順については、2の補数表現で検索

上記より、VRAMのアドレスを求めることができたので、harib11eVRAM0xfd000000で実行する。

5.harib11f,g

キーボードの入力をwindowに出力する。harib11gの時点では1文字のみの出力

  1. 上記のためにbootpack.cの修正
No. 対象ファイル 修正内容
1 bootpack.c テキストの通りに修正

6.harib11h,i

キーボードの入力をwindowに出力する。harib11gから進化し、文字列として表示することができ削除もできる。

  1. 上記のためにbootpack.cの修正
No. 対象ファイル 修正内容
1 bootpack.c テキストの通りに修正