DOS/V Extension テキスト密度の設定――日本語テキストモード 03h, 73h での縦長拡張モード、70h, 71h でのデフォルト拡張モードを設定します。
設定戻り値
- AL
- 拡張モードのインデクス値(00h〜FEh)
FFh の時は設定を解除する。- BH
- ビデオモード番号(AL = FFh の時)
- AL
- 機能がサポートされている場合、12h が返されます。
インデクス値は、Int 10h, ax=1131h で取得できる DOS/V Extension モードテーブルの番号です。 先頭のテーブルのインデクス値は 0 です。
拡張モードの設定が成功した場合、次のビデオモード切りかえでビデオモードを 70h, 71h(拡張モードを設定した方)に切りかえた時点で、設定した拡張モードに実際に切りかわります。 したがって、現在のビデオモードのインデクス値を変更した場合は Int 10h, ah=00h をただちに発行して、実際の画面状態とディスプレイドライバ内部の状態を一致させておく必要があるでしょう。 拡張モードの設定を解除した場合は 03h などの標準的なビデオモードに切りかえてしまうのがいちばん無難なように思います。
モードテーブル中のビデオモードが 03h, 73h の場合は縦長拡張モードの設定になります。 縦長モードの設定は Int 10h, ah=00h を実行しただけでは有効にならず(この時点では Int 10h, ah=12h, bl=38h の設定が使われる)、その直後に Int 10h, ax=1118h を発行した時点ではじめて、実際の画面が設定した縦長モードに切りかわります。
任意のビデオモードのテキスト密度設定を解除したい場合は、元に戻したいビデオモードの番号を BH に入れ、AH に FFh を設定します。 ビデオモードが 70h, 71h の場合、ビデオモードそのものが無効になり、03h, 73h の場合は縦長モードが無効になります。
Int 10h, ah=00h
Int 10h, ax=1118h
Int 10h, ax=1131h
Int 10h, ah=12h, bl=38h
Int 10h, ah=12h, bl=3Ah
DOS/V Extension モードテーブル