5

テキスト スクリーン (モード 3、80x25) で作業している場合、B800h にある通常のビデオ バッファと、4GB アドレス空間の終わり近くにあるリニア フレーム バッファ (LFB) の両方がアクティブになります。ディスプレイ上の文字セルごとに、LFB は8 バイトを使用することがわかりました。最初のバイト (a) は ASCII を表し、2 番目のバイト (b) は属性を表します。

空の表示ページでは、これらの 8 バイトは次のようになります。

20h,07h,00h,00h,00h,00h,00h,00h
(a) (b) (c) (d) (e) (f) (g) (h)    

余分な 6 バイトが何に使われるか知っている人はいますか? 私は、これらのミステリー バイトの最初 (c) と 5 番目 (g) のみが、ランダムに見える値で実際に更新されていることに気付きました。残りの 4 バイトはゼロのままですが、それらに何かを入れると、ビデオ モードが設定されていても存続します。

4

2 に答える 2

4

GMA950 がテキスト ビデオ モードで動作する場合、グラフィック メモリは dword のリストとして編成されます。各 dword の 1 番目のバイトはディスプレイ プレーン 0 のバイトと一致し、各 dword の 2 番目のバイトはディスプレイ プレーン 1 のバイトと一致します。

表示ページは 8 ページです。

GM + 00000000h : Display page 0
GM + 00004000h : Display page 1
GM + 00008000h : Display page 2
GM + 0000C000h : Display page 3
GM + 00010000h : Display page 4
GM + 00014000h : Display page 5
GM + 00018000h : Display page 6
GM + 0001C000h : Display page 7

8 つのフォントをロードできます。

GM + 00000000h : Font block 0
GM + 00008000h : Font block 4
GM + 00010000h : Font block 1
GM + 00018000h : Font block 5
GM + 00020000h : Font block 2
GM + 00028000h : Font block 6
GM + 00030000h : Font block 3
GM + 00038000h : Font block 7

これは、グラフィックス メモリの最初の 12 バイトがどのように使用されるかです。

 /------------------------------------------------> character code 1st cell
 |   /--------------------------------------------> attribute byte 1st cell
 |   |   /----------------------------------------> 1st bit pattern 1st ascii
 |   |   |   /------------------------------------> unused (a)
 |   |   |   |   /--------------------------------> unused (b)
 |   |   |   |   |   /----------------------------> unused (b)
 |   |   |   |   |   |   /------------------------> 2nd bit pattern 1st ascii
 |   |   |   |   |   |   |   /--------------------> unused (a)
 |   |   |   |   |   |   |   |   / ---------------> character code 2nd cell
 |   |   |   |   |   |   |   |   |   /------------> attribute byte 2nd cell
 |   |   |   |   |   |   |   |   |   |   /--------> 3rd bit pattern 1st ascii
 |   |   |   |   |   |   |   |   |   |   |   /----> unused (a)
 |   |   |   |   |   |   |   |   |   |   |   |
00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h

(a) これらのバイトは未使用のビットプレーンと一致するため使用されません 3

(b) これらのバイトを使用しないことは、ホスト メモリ内の 2 つの連続する文字コードがディスプレイ メモリ内の連続する偶数アドレスを占有するテキスト ビデオ モードで使用される奇数/偶数操作の必然的な結果です。(b) でマークされたバイトは奇数アドレスに対応するため、使用されません。

于 2016-04-10T15:14:34.617 に答える