487 lines
20 KiB
Plaintext
487 lines
20 KiB
Plaintext
Format of BIOS Data Segment at segment 40h:
|
|
{items in curly braces not documented by IBM}
|
|
Offset Size Description
|
|
00h WORD Base I/O address of 1st serial I/O port, zero if none
|
|
02h WORD Base I/O address of 2nd serial I/O port, zero if none
|
|
04h WORD Base I/O address of 3rd serial I/O port, zero if none
|
|
06h WORD Base I/O address of 4th serial I/O port, zero if none
|
|
Note: Above fields filled in turn by POST as it finds serial
|
|
ports. POST never leaves gaps. DOS and BIOS serial device
|
|
numbers may be redefined by re-assigning these fields.
|
|
08h WORD Base I/O address of 1st parallel I/O port, zero if none
|
|
0Ah WORD Base I/O address of 2nd parallel I/O port, zero if none
|
|
0Ch WORD Base I/O address of 3rd parallel I/O port, zero if none
|
|
0Eh WORD [non-PS] Base I/O address of 4th parallel I/O port, zero if none
|
|
[PS] Segment of Extended BIOS Data Segment
|
|
Note: Above fields filled in turn by POST as it finds
|
|
parallel ports. POST never leaves gaps. DOS and BIOS
|
|
parallel device numbers may de redefined by re-assigning
|
|
these fields.
|
|
10h WORD Installed hardware:
|
|
bits 15-14: number of parallel devices
|
|
bit 13: [Conv] Internal modem
|
|
bit 12: reserved
|
|
bits 11- 9: number of serial devices
|
|
bit 8: reserved
|
|
bits 7- 6: number of diskette drives minus one
|
|
bits 5- 4: Initial video mode:
|
|
00b = EGA,VGA,PGA
|
|
01b = 40 x 25 color
|
|
10b = 80 x 25 color
|
|
11b = 80 x 25 mono
|
|
bit 3: reserved
|
|
bit 2: [PS] =1 if pointing device
|
|
[non-PS] reserved
|
|
bit 1: =1 if math co-processor
|
|
bit 0: =1 if diskette available for boot
|
|
12h BYTE [Conv] POST status
|
|
[AT] {Manufacturing test initialisation flags}
|
|
13h WORD Base memory size in kbytes (0-640)
|
|
15h BYTE [AT] {Manufacturing test scratch pad}
|
|
16h BYTE [AT] {Manufacturing test scratch pad}
|
|
[PS/2 Mod 30] BIOS control flags
|
|
17h BYTE Keyboard status flags 1:
|
|
bit 7 =1 INSert active
|
|
bit 6 =1 Caps Lock active
|
|
bit 5 =1 Num Lock active
|
|
bit 4 =1 Scroll Lock active
|
|
bit 3 =1 either Alt pressed
|
|
bit 2 =1 either Ctrl pressed
|
|
bit 1 =1 Left Shift pressed
|
|
bit 0 =1 Right Shift pressed
|
|
18h BYTE Keyboard status flags 2:
|
|
bit 7 =1 INSert pressed
|
|
bit 6 =1 Caps Lock pressed
|
|
bit 5 =1 Num Lock pressed
|
|
bit 4 =1 Scroll Lock pressed
|
|
bit 3 =1 Pause state active
|
|
bit 2 =1 Sys Req pressed
|
|
bit 1 =1 Left Alt pressed
|
|
bit 0 =1 Left Ctrl pressed
|
|
19h BYTE Keyboard: Alt-nnn keypad workspace
|
|
1Ah WORD Keyboard: ptr to next character in keyboard buffer
|
|
1Ch WORD Keyboard: ptr to first free slot in keyboard buffer
|
|
1Eh 16 WORDs Keyboard circular buffer (but see 80h, 82h for override)
|
|
3Eh BYTE Diskette recalibrate status:
|
|
bit 7 =1 Diskette hardware interrupt occurred
|
|
bits 6-4 reserved
|
|
bit 3 =1 Recalibrate diskette 3
|
|
bit 2 =1 Recalibrate diskette 2
|
|
bit 1 =1 Recalibrate diskette 1
|
|
bit 0 =1 Recalibrate diskette 0
|
|
3Fh BYTE Diskette motor status:
|
|
bit 7 =1 current operation is write or format
|
|
=0 current operation is read or verify
|
|
bit 6 reserved
|
|
bits 5-4 diskette drive number selected (0-3)
|
|
bit 3 =1 diskette 3 motor on
|
|
bit 2 =1 diskette 2 motor on
|
|
bit 1 =1 diskette 1 motor on
|
|
bit 0 =1 diskette 0 motor on
|
|
40h BYTE Diskette motor turn-off time-out count
|
|
41h BYTE Diskette last operation status (0 = OK)
|
|
bit 7 =1 drive not ready
|
|
bit 6 =1 seek error
|
|
bit 5 =1 general controller failure
|
|
bits 4-0:
|
|
00h no error
|
|
01h invalid request
|
|
02h address mark not found
|
|
03h write-protect error
|
|
04h sector not found
|
|
06h diskette change line active
|
|
08h DMA overrun
|
|
09h DMA across 64k boundary
|
|
0Ch media type unknown
|
|
10h CRC error on read
|
|
42h 7 BYTEs Diskette/Fixed disk status/command bytes
|
|
49h BYTE Video current mode
|
|
4Ah WORD Video columns on screen
|
|
4Ch WORD Video page (regen buffer) size in bytes
|
|
4Eh WORD Video current page start address in regen buffer
|
|
50h 16 BYTEs Video cursor position (col, row) for eight pages, 0 based
|
|
60h WORD Video cursor type, 6845 compatible, hi=startline, lo=endline
|
|
62h BYTE Video current page number
|
|
63h WORD Video CRT controller base address: color=03D4h, mono=03B4h
|
|
65h BYTE Video current setting of mode select register 03D8h/03B8h
|
|
66h BYTE Video current setting of CGA palette register 03D9h
|
|
67h DWORD POST real mode re-entry point after certain resets
|
|
6Bh BYTE POST last unexpected interrupt
|
|
6Ch DWORD Timer ticks since midnight
|
|
70h BYTE Timer overflow, non-zero if has counted past midnight
|
|
71h BYTE Ctrl-Break flag: bit 7=1
|
|
72h WORD POST reset flag:
|
|
= 1234h if to bypass memory test (warm boot)
|
|
= 4321h [PS/2 MCA only] if to preserve memory
|
|
= 5678h [Conv] system suspended
|
|
= 9ABCh [Conv] manufacturing test mode
|
|
= ABCDh [Conv] POST loop mode
|
|
= 64h Burn-in mode
|
|
74h BYTE Fixed disk last operation status: {except ESDI drives}
|
|
00h no error
|
|
01h invalid function request
|
|
02h address mark not found
|
|
03h write protect error
|
|
04h sector not found
|
|
05h reset failed
|
|
07h drive parameter activity failed
|
|
08h DMA overrun
|
|
09h DMA data boundary error
|
|
0Ah bad sector flag detected
|
|
0Bh bad track detected
|
|
0Dh invalid number of sectors for Format
|
|
0Eh control data address mark detected
|
|
0Fh DMA arbitration level out of range
|
|
10h uncorrectable ECC or CRC error
|
|
11h ECC corrected data error
|
|
20h general controller failed
|
|
40h seek failed
|
|
80h time out
|
|
AAh drive not ready
|
|
BBh undefined error
|
|
CCh write fault on selected drive
|
|
E0h status error/error register is zero
|
|
FFh sense failed
|
|
75h BYTE Fixed disk: number of fixed disk drives
|
|
76h BYTE Fixed disk: control byte {IBM document only for XT}
|
|
77h BYTE Fixed disk: I/O port offset {IBM document only for XT}
|
|
78h 3 BYTEs Parallel devices 1-3 time-out counters
|
|
7Bh BYTE parallel device 4 time-out counter [non-PS]
|
|
bit 5 set if Virtual DMA Spec supported [PS] (see INT 4B)
|
|
7Ch 4 BYTEs Serial devices 1-4 time-out counters
|
|
80h WORD Keyboard buffer start as offset from segment 40h (normally 1Eh)
|
|
82h WORD Keyboard buffer end+1 as offset from segment 40h (normally 3Eh)
|
|
[XT BIOS dated 11/08/82 ends here]
|
|
84h BYTE Video EGA/MCGA/VGA rows on screen minus one
|
|
85h WORD Video EGA/MCGA/VGA character height in scan-lines
|
|
87h BYTE Video EGA/VGA control: [MCGA: =00h]
|
|
bit 7: =1 if not to clear RAM (see INT 10h, AH=00h)
|
|
bits 6-5: RAM on adapter = (this field + 1) * 64K
|
|
bit 4: reserved
|
|
bit 3: =0 if EGA/VGA video system active, =1 if inactive
|
|
bit 2: =1 if to wait for display enable (what means this?)
|
|
bit 1: =0 for color or ECD monitor, =1 for mono monitor
|
|
bit 0: =0 alphanumeric cursor emulation enabled, =1 not.
|
|
When enabled, text mode cursor size (INT 10,AH=01h)
|
|
settings looking like CGA ones are translated to
|
|
equivalent EGA/VGA ones.
|
|
88h BYTE Video EGA/VGA switches: [MCGA: reserved]
|
|
bits 7-4: power-on state of feature connector bits 3-0
|
|
bits 3-0: configuration switches 4-1 (=0 on, =1 off)
|
|
Values as read:
|
|
0h Pri MDA, Sec EGA+old color display 40 x 25
|
|
1h Pri MDA, Sec EGA+old color display 80 x 25
|
|
2h Pri MDA, Sec EGA+ECD normal mode (CGA emul)
|
|
3h Pri MDA, Sec EGA+ECD enhanced mode
|
|
4h Pri CGA 40 x 25, Sec EGA mono display
|
|
5h Pri CGA 80 x 25, Sec EGA mono display
|
|
6h Pri EGA+old color display 40 x 25, Sec MDA
|
|
7h Pri EGA+old color display 80 x 25, Sec MDA
|
|
8h Pri EGA+ECD normal mode (CGA emul), Sec MDA
|
|
9h Pri EGA+ECD enhanced mode, Sec MDA
|
|
Ah Pri EGA mono display, Sec CGA 40 x 25
|
|
Bh Pri EGA mono display, Sec CGA 80 x 25
|
|
When bit4 of 40h:89h is 0, VGA emulates 350-line EGA if
|
|
this byte is x3h or x9h, otherwise emulates 200-line CGA in
|
|
400-line double scan. VGA resets this byte to x9h after the
|
|
mode set.
|
|
89h BYTE Video MCGA/VGA mode-set option control:
|
|
bits 7 and 4:
|
|
0 0 350-line mode requested
|
|
0 1 400-line mode at next mode set
|
|
1 0 200-line mode requested
|
|
1 1 reserved
|
|
Apparently VGA BIOS mode set disregards bit 7 and uses
|
|
byte 40h:88h to determine 200/350 selection when bit 4
|
|
is zero. Presumably bit 7 is a convenience for other
|
|
purposes. Bit 7 is reset to zero after the mode set.
|
|
bit 6: =1 if display switching enabled, =0 if disabled
|
|
bit 5: reserved
|
|
bit 4: [VGA] =1 if to use 400-line mode at next mode set
|
|
=0 if to emulate EGA at next mode set
|
|
This bit set to 1 after the mode set.
|
|
[MCGA] =1 use 400-line mode at next mode set
|
|
=0 emulate CGA, digital monitor, 200 lines,
|
|
8 x 8 text font at next mode set
|
|
Bit unchanged by mode set.
|
|
bit 3: =0 if default palette loading enabled at mode set
|
|
bit 2: =1 if mono display, =0 if color display
|
|
bit 1: =1 if gray scale summing enabled, =0 if disabled
|
|
bit 0: [VGA] =1 if VGA active, =0 if not
|
|
[MCGA] reserved, zero
|
|
8Ah BYTE Video [MCGA/VGA]: index into Display Combination Code table
|
|
8Bh BYTE Diskette media control [not XT]:
|
|
bits 7-6: Last data rate set by controller:
|
|
00=500kbps, 01=300kbps, 10=250kbps, 11=reserved
|
|
bits 5-4: Last diskette drive step rate selected
|
|
bits 3-2: {Data rate at start of operation}
|
|
bits 1-0: reserved
|
|
8Ch BYTE Fixed disk controller status [not XT]
|
|
8Dh BYTE Fixed disk controller Error Status [not XT]
|
|
8Eh BYTE Fixed disk Interrupt Control [not XT]
|
|
8Fh BYTE Diskette controller information [not XT]:
|
|
bit 7: reserved
|
|
bit 6: =1 drive 1 determined
|
|
bit 5: =1 drive 1 is multi-rate, valid if drive determined
|
|
bit 4: =1 drive 1 supports 80 tracks, always valid
|
|
bit 3: reserved
|
|
bit 2: =1 drive 0 determined
|
|
bit 1: =1 drive 0 is multi-rate, valid if drive determined
|
|
bit 0: =1 drive 0 supports 80 tracks, always valid
|
|
90h BYTE Diskette drive 0 media state
|
|
91h BYTE Diskette drive 1 media state
|
|
bits 7-6: Data rate: 00=500kbps, 01=300kbps, 10=250kbps
|
|
bit 5: =1 if double stepping reqd (e.g. 360kB in 1.2MB)
|
|
bit 4: =1 if media established
|
|
bit 3: reserved
|
|
bits 2-0: on exit from BIOS, contain:
|
|
000 trying 360kB in 360kB
|
|
001 trying 360kB in 1.2MB
|
|
010 trying 1.2MB in 1.2MB
|
|
011 360kB in 360kB established
|
|
100 360kB in 1.2MB established
|
|
101 1.2MB in 1.2MB established
|
|
110 reserved
|
|
111 all other formats/drives
|
|
92h BYTE Diskette drive 0 media state at start of operation
|
|
93h BYTE Diskette drive 1 media state at start of operation
|
|
94h BYTE Diskette drive 0 current track number
|
|
95h BYTE Diskette drive 1 current track number
|
|
96h BYTE Keyboard status byte 3
|
|
bit 7 =1 read-ID in progress
|
|
bit 6 =1 last code read was first of two ID codes
|
|
bit 5 =1 force Num Lock if read-ID and enhanced keyboard
|
|
bit 4 =1 enhanced keyboard installed
|
|
bit 3 =1 Right Alt pressed
|
|
bit 2 =1 Right Ctrl pressed
|
|
bit 1 =1 last code read was E0h
|
|
bit 1 =1 last code read was E1h
|
|
97h BYTE Keyboard status byte 2
|
|
bit 7 =1 keyboard transmit error flag
|
|
bit 6 =1 LED update in progress
|
|
bit 5 =1 RESEND received from keyboard
|
|
bit 4 =1 ACK received from keyboard
|
|
bit 3 reserved, must be zero
|
|
bit 2 Caps Lock LED
|
|
bit 1 Num Lock LED
|
|
bit 0 Scroll Lock LED
|
|
98h DWORD Timer2: [AT, PS exc Mod 30] ptr to user wait-complete flag
|
|
(see INT 15, AX=8300h)
|
|
9Ch DWORD Timer2: [AT, PS exc Mod 30] user wait count in microseconds
|
|
A0h BYTE Timer2: [AT, PS exc Mod 30] Wait active flag:
|
|
bit 7 =1 wait time elapsed
|
|
bits 6-1 reserved
|
|
bit 0 =1 INT 15h, AH=86h has occurred
|
|
A1h 7 BYTEs reserved for network adapters (oh really?)
|
|
A4h DWORD [PS/2 Mod 30] Saved Fixed Disk Interrupt Vector
|
|
A8h DWORD Video: EGA/MCGA/VGA ptr to Video Save Pointer Table (see below)
|
|
ACh-AFh reserved
|
|
B0h DWORD ptr to 3363 Optical disk driver or BIOS entry point.
|
|
When 3363 BIOS present, the signature "OPTIC ",00h occurs 3
|
|
bytes beyond this entry point.
|
|
When 3363 BIOS and 3363 File System Driver present, the
|
|
signature "FILE SYSTEM DRIVER",00h occurs 3 bytes beyond
|
|
this entry point.
|
|
B4h WORD reserved
|
|
B6h 3 BYTEs reserved for POST?
|
|
B9h 7 BYTEs ???
|
|
C0h 14 BYTEs reserved
|
|
CEh WORD count of days since last boot?
|
|
D0h-EFh reserved
|
|
F0h-FFh reserved for user
|
|
100h BYTE Print Screen Status byte
|
|
|
|
Format of Extended BIOS Data Area (see 40:0Eh for ptr) [PS only]
|
|
Offset Size Description
|
|
00h BYTE Length of EBDA in kilobytes
|
|
01h 15 BYTEs reserved
|
|
17h BYTE Number of entries in POST error log (0-5)
|
|
18h 5 WORDs POST error log (each word is a POST error number)
|
|
19h-21h reserved
|
|
22h DWORD Pointing Device Driver entry point
|
|
26h BYTE Pointing Device Flags 1
|
|
bit 7: =1 command in progress
|
|
bit 6: =1 resend
|
|
bit 5: =1 acknowledge
|
|
bit 4: =1 error
|
|
bit 3: =0 reserved
|
|
bits 2-0: index count
|
|
27h BYTE Pointing Device Flags 2
|
|
bit 7: =1 device driver far call flag
|
|
bits 6-3: reserved
|
|
bits 2-0: package size
|
|
28h 7 BYTEs Pointing Device Auxiliary Device Data
|
|
2Fh BYTE reserved
|
|
30h DWORD Vector for INT 07h stored here during 80387 interrupt
|
|
34h DWORD Vector for INT 01h stored here during INT 07h emulation
|
|
38h BYTE Scratchpad for 80287/80387 interrupt code
|
|
39h WORD Timer3: Watchdog timer initial count
|
|
3Bh BYTE ??? seen non-zero on Model 30
|
|
3Ch BYTE ???
|
|
3Dh 16 BYTEs Fixed Disk parameter table for drive 0 (oh really?)
|
|
4Dh 16 BYTEs Fixed Disk parameter table for drive 1 (oh really?)
|
|
Neither of above seen on any Model 30, 50, 60 yet.
|
|
5Dh-6Bh ???
|
|
6Ch BYTE Fixed disk: (=FFh on ESDI systems)
|
|
bits 7-4: Channel number 00-0Fh
|
|
bits 3-0: DMA arbitration level 00-0Eh
|
|
6Dh and up: ??? seen non-zero on Model 60
|
|
3F0h BYTE Fixed disk buffer (???!!!)
|
|
|
|
Format of Video Save Pointer Table [EGA/VGA/MCGA only]:
|
|
Offset Size Description
|
|
00h DWORD ptr to Video Parameter Table
|
|
04h DWORD ptr to Parameter Dynamic Save Area, else 0 [EGA/VGA only]
|
|
08h DWORD ptr to Alphanumeric Character Set Override, else 0
|
|
0Ch DWORD ptr to Graphics Character Set Override, else 0
|
|
10h DWORD [VGA only] ptr to Secondary Save Pointer Table, must be valid
|
|
14h DWORD reserved, zero
|
|
18h DWORD reserved, zero
|
|
Note: table initially in ROM, copy to RAM to alter, then update 40h:A8h.
|
|
|
|
Format of Secondary Video Save Pointer Table [VGA only]:
|
|
Offset Size Description
|
|
00h WORD Length of this table in bytes, including this word (1Ah)
|
|
02h DWORD ptr to Display Combination Code Table, must be valid
|
|
06h DWORD ptr to second Alphanumeric Character Set Override, else 0
|
|
0Ah DWORD ptr to User Palette Profile Table, else 0
|
|
0Eh DWORD reserved, zero
|
|
12h DWORD reserved, zero
|
|
16h DWORD reserved, zero
|
|
Note: table initially in ROM, copy to RAM to alter, then alter Save Ptr Table.
|
|
|
|
Format of Video Parameter Table [EGA, VGA only]:
|
|
An array of 23 [EGA] or 29 [VGA] elements, each element being 64 bytes long.
|
|
Elements appear in the order:
|
|
00h-03h Modes 00h-03h in 200-line CGA emulation mode
|
|
04h-0Eh Modes 04h-0Eh
|
|
0Fh-10h Modes 0Fh-10h when only 64kB RAM on adapter
|
|
11h-12h Modes 0Fh-10h when >64kB RAM on adapter
|
|
13h-16h Modes 00h-03h in 350-line mode
|
|
17h VGA Modes 00h or 01h in 400-line mode
|
|
18h VGA Modes 02h or 03h in 400-line mode
|
|
19h VGA Mode 07h in 400-line mode
|
|
1Ah-1Ch VGA Modes 11h-13h
|
|
|
|
Format of Video Parameter Table element [EGA, VGA only]:
|
|
Offset Size Description
|
|
00h BYTE Columns on screen (see 40h:4Ah)
|
|
01h BYTE Rows on screen minus one (see 40h:84h)
|
|
02h BYTE Height of character in scan lines (see 40h:85h)
|
|
03h WORD Size of video buffer (see 40h:4Ch)
|
|
05h 4 BYTEs Values for Sequencer Registers 1-4
|
|
09h BYTE Value for Miscellaneous Output Register
|
|
0Ah 25 BYTEs Values for CRTC Registers 00h-18h
|
|
23h 20 BYTEs Values for Attribute Controller Registers 00h-13h
|
|
37h 9 BYTEs Values for Graphics Controller Registers 00h-08h
|
|
|
|
Format of Video Parameter Table [MCGA only] {guesswork from inspection}:
|
|
- 16 triplet BYTEs of R,G,B DAC info for 16 colors;
|
|
- An array of 11 elements, each element being 32 bytes long.
|
|
Elements appear in the order:
|
|
Modes 00h,01h in 200-line mode for digital displays
|
|
Modes 00h,01h in 400-line mode for analog displays
|
|
Modes 02h,03h in 200-line mode for digital displays
|
|
Modes 02h,03h in 400-line mode for analog displays
|
|
Modes 04h,05h in 200-line mode for digital displays
|
|
Modes 04h,05h in 400-line mode for analog displays
|
|
Mode 06h in 200-line mode for digital displays
|
|
Mode 06h in 400-line mode for analog displays
|
|
Mode 11h
|
|
Mode 13h in 200-line mode for digital displays
|
|
Mode 13h in 400-line mode for analog displays
|
|
|
|
Format of Video Parameter Table element [MCGA only]:
|
|
Offset Size Description
|
|
00h BYTE Columns on screen (see 40h:4Ah)
|
|
01h BYTE Rows on screen minus one (see 40h:84h)
|
|
02h BYTE Height of character in scan lines (see 40h:85h)
|
|
03h WORD Size of video buffer (see 40h:4Ch)
|
|
05h WORD ??? always zero
|
|
07h 21 BYTEs Video data registers 00h-14h to port 3D5h indexed by 3D4h
|
|
1Ch BYTE PEL Mask to port 3C6h
|
|
1Dh BYTE CGA Mode Control to port 3D8h
|
|
1Eh BYTE CGA Border Control to port 3D9h
|
|
1Fh BYTE Extended Mode Control to port 3DDh
|
|
|
|
Format of Video Parameter Dynamic Save Area [EGA, VGA only]:
|
|
Offset Size Description
|
|
00h 16 BYTEs Last data written to Attribute Controller Palette Registers 0-15
|
|
10h BYTE Last data written to Attribute Controller Overscan Register
|
|
11h-FFh Reserved
|
|
Note: Need for table was that EGA registers were write-only.
|
|
Note: If default values (from the Video Parameter Table) are
|
|
over-ridden at a mode set by the VGA User Palette Profile
|
|
Table, then the Dynamic Save Area is updated with the
|
|
default values, not the User Profile ones.
|
|
|
|
Format of Alphanumeric Character Set Override:
|
|
Offset Size Description
|
|
00h BYTE Length in bytes of each character in font table
|
|
01h BYTE Character generator RAM bank to load, 0=normal
|
|
02h WORD Number of characters in font table, normally 256
|
|
04h WORD Code of first character in font table, normally 0
|
|
06h DWORD ptr to font table
|
|
0Ah BYTE Displayable rows (FFh=use maximum calculated value)
|
|
0Bh BYTEs Array of mode values to which this font is to pertain
|
|
BYTE FFh end of array
|
|
|
|
Format of Second Alphanumeric Character Set Override:
|
|
Authorities differ, some say same as first override above, but IBM say:
|
|
Offset Size Description
|
|
00h BYTE Length in bytes of each character in font table
|
|
01h BYTE Character generator RAM bank to load, normally non-zero
|
|
02h BYTE reserved
|
|
03h DWORD ptr to font table
|
|
07h BYTEs Array of mode values to which this font is to pertain
|
|
BYTE FFh end of array
|
|
|
|
Format of Graphics Character Set Override:
|
|
Offset Size Description
|
|
00h BYTE Number of displayable character rows
|
|
01h WORD Length in bytes of each character in font table
|
|
03h DWORD ptr to font table
|
|
07h BYTEs Array of mode values to which this font is to pertain
|
|
BYTE FFh end of array
|
|
|
|
Format of Display Combination Code Table [VGA only]:
|
|
Offset Size Description
|
|
00h BYTE Number of entries in the DCC table at offset 04h
|
|
01h BYTE Version number
|
|
02h BYTE Maximum display type code that can appear in DCC table
|
|
03h BYTE reserved
|
|
04h ARRAY OF 2 BYTEs Each pair of bytes gives a valid display combination
|
|
Meaning of each byte:
|
|
00h no display
|
|
01h MDA with mono display
|
|
02h CGA with color display
|
|
03h reserved
|
|
04h EGA with color display
|
|
05h EGA with mono display
|
|
06h Professional Graphics Controller
|
|
07h VGA with mono display
|
|
08h VGA with color display
|
|
09h reserved
|
|
0Ah MCGA with digital color display
|
|
0Bh MCGA with analog mono display
|
|
0Ch MCGA with analog color display
|
|
FFh unrecognised video system
|
|
|
|
Format of User Palette Profile Table [VGA only]:
|
|
Offset Size Description
|
|
00h BYTE Underlining: 01h=enable in all alphanumeric modes
|
|
00h=enable in monochrome alphanumeric modes only
|
|
FFh=disable in all alphanumeric modes
|
|
01h BYTE reserved
|
|
02h WORD reserved
|
|
04h WORD Number (0-17) of Attribute Controller registers in table
|
|
06h WORD Index (0-16) of first Attribute Controller register in table
|
|
08h DWORD ptr to table of Attribute Controller registers to override
|
|
Table is an array of BYTEs.
|
|
0Ch WORD Number (0-256) of video DAC Color registers in table
|
|
0Eh WORD Index (0-255) of first video DAC Color register in table
|
|
10h DWORD ptr to table of video DAC Color registers to override
|
|
Table is ??? triplets ??? of BYTEs???
|
|
14h BYTEs array of mode values to which this profile is to pertain
|
|
BYTE FFh end of array
|