DOS/V フォントドライバからフォントデータを読み取ります。
設定戻り値
- BL
- フォントの文字セット選択(有効な値は 0 のみ)
- BH
- 0
- CX
- 読み取る文字コード
- DH
- 文字の幅(ドット単位)
- DL
- 文字の高さ(ドット単位)
- ES:SI
- フォントデータを格納するアドレス
ES:SI から始まるポインタにフォントデータが格納される。
- AL
- 終了コード(0...正常、それ以外...エラー)
ディスプレイドライバ経由でフォントドライバを呼び出し、フォントデータを取得します。
$DISP.SYS (JDISP.SYS) の実装では、取得するフォントの全角/半角を CX の上位バイトの値によって判別しているようです。 つまり CH の値が 0 ならば半角フォントが読み出され、0 以外の場合は全角フォントが読み出されます。 ただし、DH と DL が共に 10h の場合(つまり 16x16)、CX に関わりなく 16x16 ドット全角フォントが読み出されるようです。 また、DOS/V Extension V2 で複数のフォントを使用している場合でも、インデクス値が 0 のフォントのみが読み出せます。
標準のフォントドライバ($FONT.SYS, JFONT.SYS)とディスプレイドライバの組み合わせた場合、このファンクションでほぼ間違いなく読み出すことのできるフォントは以下の通りです。
DH DL FONT 08h 10h 8x16dot 半角 08h 13h 8x19dot 半角 10h 10h 16x16dot 全角 18h 18h 24x24dot 全角24x24dot 全角フォントは、システムやフォントドライバの設定により、すべての日本語文字が読み出せないことがあります(たとえばIBM拡張漢字部分と外字部分だけ読み出せる、とか、あるいはまったく読み出せない)。フォントドライバのフォント読み出しファンクション(int 15h, ax=5000h で取得する FAR CALL アドレス)を直接呼び出したほうが、当然ながらより高速で柔軟なフォントサイズの組み合わせで呼び出すことができますので、そちらを使った方がいいと思います。
int 10h, ax=1801h
int 15h, ax=5000h
フォントドライバ終了コード