UEFIブートで遊ぼっ!(3)
UEFI BOOT
せっかく専用のWindowが上がっているのに何も出力できないのは寂しいものです。
聞けばテキストRAMの解像度は640400だったかな?
Windowサイズが1280800なので、そのまま使うと黒い大枠内の真ん中に字が出る
感じになります。なんかもったいないですよね。
画面全体を使いたいところです。
概略
画面全体を使おうとするとフレームバッファへの出力となります。
ところがフレームバッファを使うには仮想メモリでなければなりません。
UEFIサービスは最早存在しないので、自前でマッピングする必要があります。
かような流れでメモリのマッピングをします。
これによって最低限フレームバッファが使えるようになります。
とはいっても点を打つぐらいなんですが。
起動直後のメモリマップは以下のようになっているようです。
Memory map:
Usable: 0x2000 - 0xA0000 (0x9E pages)
Usable: 0x104000 - 0x800000 (0x6FC pages)
Usable: 0x808000 - 0x80B000 (0x3 pages)
Usable: 0x80C000 - 0x811000 (0x5 pages)
Usable: 0x1780000 - 0x3BB6C000 (0x3A3EC pages)
Usable: 0x3BB8C000 - 0x3E003000 (0x2477 pages)
Usable: 0x3E035000 - 0x3E041000 (0xC pages)
Usable: 0x3FE00000 - 0x3FE6F000 (0x6F pages)
Usable: 0x1780000 - 0x3BB6C000 (0x3A3EC pages)が最大の空き
Usable: 0x3BB8C000 - 0x3E003000 (0x2477 pages)次がこれ
最大の空きをメインのメモリとして使用することにしましょう。
2番目の空きをページマップ領域およびシステムで使う領域にしましょう。
所感
点を打つといってもバカにしたもんじゃありません。
ちゃんとねらって打てば文字だって表示できるのです。
公開場所
Discussion