Intel GMA950 Private Byte Value in VGA Text Mode

When working on a text screen (mode 3, 80x25) as in a regular video buffer with B800h and Linear Frame Buffer (LFB) near the end of the address space, 4 GB are active. I found that for each character cell on the display, the LFB uses 8 bytes . The first byte (a) represents ASCII, and the second byte (b) represents an attribute.

On a blank screen, these 8 bytes look like this:

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

Does anyone know what the extra 6 bytes are used for? I noticed that only the first (c) and fifth (g) these secret bytes are actually updated with values ​​that seem random to me. The remaining 4 bytes remain at zero, but if I put something in them, it will survive even in video mode.

+4
source share
2 answers

... private buffer ... secret bytes ...

Nothing secretive there. If it looks like a line frame buffer, and if it functions like a line frame buffer, and if it sits where you expect a line frame buffer, then it is most likely a linear buffer buffer. In the future I will call it LFB.

To get the LFB address on the GMA950, you can use this code:

mov di, 0018h       ;Offset for GMADR
mov bx, 0010h       ;[15-8] Bus=0, [7-3] Device=2, [2-0] Function=0
mov ax, B10Ah       ;Read PCI dword
int 1Ah
and ecx, F0000000h  ; --> ECX is linear address of the LFB

In 16-color graphics modes, the LFB is organized as follows:

 --------------------------------- 1st byte of bit-plane 0
 |   ----------------------------- 1st byte of bit-plane 1
 |   |   ------------------------- 1st byte of bit-plane 2
 |   |   |   --------------------- 1st byte of bit-plane 3
 |   |   |   |   ----------------- 2nd byte of bit-plane 0
 |   |   |   |   |   ------------- 2nd byte of bit-plane 1
 |   |   |   |   |   |   --------- 2nd byte of bit-plane 2
 |   |   |   |   |   |   |   ----- 2nd byte of bit-plane 3
 |   |   |   |   |   |   |   |
00h,00h,00h,00h,00h,00h,00h,00h
(a) (b) (c) (d) (e) (f) (g) (h)

, (c) (g) 2, . - 2 !
, Intel (e) (f), Odd/Even?

, - , :

  • , IGD .
  • ( BIOS) , IGD.
+2

GMA950 , . 1- dword 0, dword 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) / , , . , (b), , .

+3

All Articles