AX メモリマップ

AX メモリマップ

システム メモリマップ

Image: AX メモリマップ

EGA/JEGA VRAM メモリマップ

JEGAに関するメモリマップ

グローバルエリア

アドレス Word 内容
0040:0049 Byte 画面モード番号
0040:004A Word 画面の1行の桁数
0040:004C Word 1画面のページサイズ(バイト)
0040:004E Word VRAMのスタートアドレス
0040:0050

0040:005E
Word ページ0-7のカーソル位置(1バイト目:桁、2バイト目:行)
0040:0060
0040:0061
Byte カーソルエンド位置
カーソルスタート位置
0040:0062 Byte 現在表示されているページ番号(0-)
0040:0063 Word CRTCのI/Oアドレス
0040:0072 Word リセットフラグ
0040:0084 Byte 1画面の行数(-1の値)
0040:0085 Byte 1文字の縦のビット数
0040:0087 Byte EGA内部ステータス
0040:0088 Byte JEGAボードディップスイッチ情報
0040:00A8 DWord ビデオパラメータテーブルのアドレスポインタ
0040:00E0 Word 日本語グラフィックモード時の仮想VRAMのセグメントアドレス
0040:00E2 Byte 日本語グラフィックモード時の漢字第一バイトの文字コード
0040:00E3 Byte 日本語グラフィックモード時の漢字第一バイトのアトリビュートコード
0040:00E4 Byte AX日本語ステータス
(※BIOS以外のプログラムが直接変更すべきでない)
D7 CRT日本語/英語 0: 英語
1: 日本語
D6 key日本語/英語 0: 英語
1: 日本語
D5 x (予約ビット)
D4
D3
D2 カラー/階調表示 0: カラー表示
1: 階調表示
D1 AX-1/2 0: AX-1
1: AX-2
D0 CRTスクロールモード 0: ダイナミックスクロール
1: ソフトウェアスクロール
0040:00E9 Byte 現在のJEGAのRMOD1の設定値
0040:00EA Byte 現在のJEGAのRMOD2の設定値

日本語テキストVRAM

テキストモードでは、偶数番地はキャラクタコード、奇数番地はアトリビュートデータとして解釈される。キャラクタコードが、シフトJISコードの第1バイトに当てはまるならば、次の1バイトをシフトJISコードの第2バイトとして解釈して全角文字を表示する。この時、モード設定で拡張アトリビュートが有効ならば、シフトJISコード第2バイトに付随するアトリビュートデータは拡張アトリビュートとして解釈される。拡張アトリビュートが無効であれば、第2アトリビュートは無視される。シフトJISコードの判断は行頭から行われる。行末の1バイトにシフトJISの第1バイトが書かれた場合、表示は半角スペースになる。そのため、行頭にシフトJISの第2バイトを書いても意図した表示にはならない。

基本アトリビュート

AX仕様のテキスト表示は、EGAのI/Oアドレス3C0hに位置するカラーパレットレジスタ16個をJEGA内部に重ねて持つことにより、64色中16色表示をサポートしている。JEGAモード時はバックグラウンドカラーはインデックス「黒」固定。スーパーインポーズモード時はいずれのモードでも、JEGAのテキスト画面が「黒」の部分にスレーブEGAの出力が表示される。

bit EGA mode JEGA mode
7 Background Intensity/Blinking Blinking
6 Background Color (Red) Reverse
5 Background Color (Green) VerticalLine
4 Background Color (Blue) UnderLine
3 Intensity/ANK Character Group Select
2 Foreground Color (Red)
1 Foreground Color (Green)
0 Foreground Color (Blue)

拡張アトリビュート

全角文字の第2バイトのアトリビュート指定はこちらの拡張アトリビュートになる。

bit JEGA mode
7 ボールド(太文字)
6 横倍角
5 縦倍角
4 U/Lセレクト(上下選択)
bit5が0の時、このビットは無効
bit5が1の時、
0: 縦倍角文字の上を表示
1: 縦倍角文字の下を表示
3 R/Lセレクト(左右選択)
bit6が0の時、このビットは無効
bit6が1の時、
0: 倍角文字の右を表示
1: 倍角文字の左を表示
2 (予約ビット)
1 (予約ビット)
0 (予約ビット)

漢字表示が行われるときはEGAチップのカーソル表示は機能していない。そこで、JEGAはEGAと同じI/Oアドレスにカーソルレジスタを持ち、その設定でカーソル表示を行っている。

シフトJISコードマップ

F0h-F3hは外字として指定できる全角文字(1024文字)。

Image: AX SJISコードマップ

文字表示フォーマットの例

縦倍角表示フォーマットの例

日本語グラフィックモード

JEGA画面モード52h, 53h時のメモリマップ

Image: JEGA画面モード52h, 53h時のメモリマップ

日本語グラフィックモード時の実VRAMの構造

VRAMは実VRAM(A000:0から始まる64KBx4プレーン)と仮想VRAM(メインメモリ中の4KB)を持つ。オフセットアドレスはInt10h/8300hをコールするとAXにVRAMの先頭アドレス、ES:BXに仮想テキストVRAMの先頭アドレスが返る。実VRAMへのアクセスはI/Oアドレス3C4h/3C5h:02hのプレーンマスクレジスタ(SR2)でプレーンを選択して行う。またI/Oアドレス3CEh/3CFh:04hの読み取りマップ選択レジスタ(GR4)で1つのプレーンを指定してデータを読むことができる。

bit プレーンマスクレジスタ(SR2) 読み取りマップ選択レジスタ(GR4)
7 0固定 0固定
6
5
4
3 プレーン3 (I)
2 プレーン2 (R) 000: プレーン0 (B)
001: プレーン1 (G)
010: プレーン2 (R)
011: プレーン3 (I)
1 プレーン1 (G)
0 プレーン0 (B)