FrontPage  Index  Search  Changes  RSS  wikifarm  Login

表:BIOSデータエリア

BIOS データエリア

アドレスカテゴリ説明
0040:0049hbyteBIOS現在のビデオモード。
基本的には 00〜7Fh までの値。int10h,AH=00h でビデオモードの切り替えが成功した場合、AL の最上位ビットの内容は INFO バイトの bit7 にコピーされます。
VESA VBE のビデオモード変更機能によってビデオモードが変更された場合、ここに正しいビデオモードが格納されない可能性があります。
0040:004AhwordBIOS文字単位の画面横幅(文字の桁数)。
いちおうワード単位ですが、256 桁以上のテキストサイズを考慮に入れたアプリケーションがどの程度あるのかは疑問です。ほとんどのプログラムは下位バイトだけ見て桁数を調べていると思う(たぶん BIOS 自身も)。
0040:004ChwordBIOSテキストバッファのバイト数。
ビデオモードが複数のページを持つ場合、この値にページ番号を掛けることで各ページの先頭オフセットを算出できます。
0040:004EhwordBIOSアクティブページのテキストバッファ先頭オフセット値
0040:0050h8 wordsBIOS各ページごとのカーソル位置。
下位バイトが桁(X 座標)、上位バイトが行(Y 座標)。
0040:0060hwordBIOS下位バイトが最下ライン、上位バイトが上位ライン。
上位バイトの bit5 がセットされている場合、カーソルは表示されません(int10h,AH=01h)。
0040:0062hbyteBIOSアクティブページ番号。
英語テキストモード (EGA,VGA) では 0〜7、日本語モードでは 0 のみ。
0040:0063hwordBIOSCRT コントローラの I/O ポートアドレス。
MDA 互換のモノクロモード(ビデオモード 07h)では 03B4h、そうでない時は 03D4h。CRTC を直接いじらない場合は必要ないのですが、MDA モードとカラーモードを判別するのに(ビデオモードでの判別を当てにしたくない場合は)使えるかもしれません。
0040:0084hbyteEGA-BIOS画面行数から1を引いた値。
日本語モードで int10h,AX=1D00h による最下行の予約が行われている場合、実際より少ない行数が格納されていることがあります。
(ちなみに、ここの値を変更することによって画面のスクロール範囲を制御できる BIOS が多いようです)
純粋な CGA(DCGA), MDA ではここの値は未定義です。V-TEXT 対応プログラムをそういった環境で動作させたい場合は注意が必要です。
0040:0085hbyteEGA-BIOS文字のドット単位の高さ
0040:0087hbyteEGA-BIOSINFO バイト。

INFO バイト (0040:0087h)

bit説明
bit7ビデオモード切り換えの際、AL の bit7 がセットされていた場合にセットされる。
bit6-5VRAM 容量。
00 64K
01 128K
10 192K
11 256K
この値は、SVGA の VRAM 容量については何も説明しません。
bit4予約済
bit3ビデオカードが動作中の時は 0
bit2予約済
bit1モノクロディスプレイが繋がっている時は 1
bit00 に設定すると CGA カーソルサイズエミュレーションが有効になる(デフォルト)。
}エミュレーション有効時は int10h,AH=01h において、カーソルサイズ最下ラインの最大値が 7 になり、BIOS によって実際のカーソルサイズにあわせて調整されます。
1 を設定すると実際の文字の高さにあわせたカーソルサイズ調節ができるようになります(日本語モードの場合、$DISP.SYS, JDISP.SYS でのみ有効)。