Format of Extended BIOS Data Area (PhoenixBIOS 4.0)

Offset Size Description (Table M005)
00h BYTE length of XBDA in kilobytes
01h 33 BYTEs reserved
22h DWORD Pointing Device Driver entry point
26h BYTE Pointing Device Flags 1 (see #M002)
27h BYTE Pointing Device Flags 2 (see #M003)
28h 8 BYTEs Pointing Device Auxiliary Device Data

See Also: #M001,#M004
--------B-M00400010--------------------------
MEM 0040h:0010h - INSTALLED HARDWARE
Size: WORD

See Also: INT 11
Bitfields for BIOS-detected installed hardware:
Bit(s) Description (Table M006)
15-14 number of parallel devices
00 or 11 sometimes used to indicate four LPT ports
13 (Convertible, PS/2-55LS) internal modem
12 game port installed
11-9 number of serial devices
000 or 111 sometimes used to indicate eight COM ports
8 reserved
7-6 number of floppy disk drives (minus 1)
5-4 initial video mode
00 EGA,VGA,PGA, or other with on-board video BIOS
01 40x25 CGA color
10 80x25 CGA color
11 80x25 mono text
3-2 (PC only) RAM on motherboard
00 = 16K, 01 = 32K, 10 = 48K, 11 = 64K
(some XTs) RAM on motherboard
00 = 64K, 01 = 128K, 10 = 192K, 11 = 256K
2 (pre-PS/2 except PC) reserved
(PS/2, some XT clones, newer BIOSes) pointing device installed
1 math coprocessor installed
0 floppy disk drives are installed
booted from floppy
--------B-M00400012--------------------------
MEM 0040h:0012h - Convertible - POST STATUS
Size: BYTE
--------B-M00400012--------------------------
MEM 0040h:0012h U - AT - MANUFACTURING TEST INITIALIZATION FLAGS
Size: BYTE
Bitfields for AT manufacturing test initialization flags:
Bit(s) Description (Table M007)
0 start in manufacturing test mode rather than normal operation
1-7 unused
--------b-M00400012--------------------------
MEM 0040h:0012h - MCA - MANUFACTURING TEST
Size: BYTE
Bitfields for MCA manufacturing test flags :
Bit(s) Description (Table M008)
7 POST flag, ???
6-5 unused
4 POST flag, slot 4 has adapter identifier EDAFh
3 POST flag, 80x25 color video
2 POST flag, ???
1 unused
0 manufacturing test mode rather than normal operation
--------b-M00400012--------------------------
MEM 0040h:0012h - PS/2 Model 25 - POST SYSTEM FLAG
Size: BYTE
Bitfields for PS/2 Model 25 POST sytem flag :
Bit(s) Description (Table M009)
0 optional memory failed; memory remapped
1 real-time clock installed
--------B-M00400013--------------------------
MEM 0040h:0013h - BASE MEMORY SIZE IN KBYTES
Size: WORD

See Also: INT 12
--------b-M00400015--------------------------
MEM 0040h:0015h - PC, XT - ADAPTER MEMORY SIZE IN KBYTES
Size: WORD
--------b-M00400015--------------------------
MEM 0040h:0015h U - AT - MANUFACTURING TEST SCRATCH PAD
Size: BYTE
--------K-M00400015--------------------------
MEM 0040h:0015h - Compaq Deskpro 386 - PREVIOUS SCAN CODE
Size: BYTE
--------b-M00400016--------------------------
MEM 0040h:0016h U - AT - MANUFACTURING TEST SCRATCH PAD
Size: BYTE
--------b-M00400016--------------------------
MEM 0040h:0016h U - PS/2 Model 30 - BIOS CONTROL FLAGS
Size: BYTE
--------K-M00400016--------------------------
MEM 0040h:0016h - Compaq Deskpro 386 - KEYCLICK VOLUME
Size: BYTE
Range: 00h-7Fh
--------K-M00400017--------------------------
MEM 0040h:0017h - KEYBOARD - STATUS FLAGS 1
Size: BYTE

See Also: MEM 0040h:0018h,INT 16/AH=02h,MEM 0040h:0096h
Bitfields for keyboard status flags 1:
Bit(s) Description (Table M010)
7 INSert active
6 Caps Lock active
5 Num Lock active
4 Scroll Lock active
3 either Alt pressed
2 either Ctrl pressed
1 Left Shift pressed
0 Right Shift pressed

See Also: #M011,#0511
--------K-M00400018--------------------------
MEM 0040h:0018h - KEYBOARD - STATUS FLAGS 2
Size: BYTE

See Also: MEM 0040h:0017h,INT 16/AH=12h
Bitfields for keyboard status flags 2 :
Bit(s) Description (Table M011)
7 INSert pressed
6 Caps Lock pressed
5 Num Lock pressed
4 Scroll Lock pressed
3 Pause state active
2 Sys Req pressed
1 Left Alt pressed
0 Left Ctrl pressed

See Also: #M010,#0512
--------K-M00400019--------------------------
MEM 0040h:0019h - KEYBOARD - ALT-nnn KEYPAD WORKSPACE
Size: BYTE
Desc: holds the current value of an Alt-NNN keypad sequence; when Alt is
released and this byte is non-zero, the appropriate character is
placed in the keyboard buffer

See Also: INT 16/AH=00h,MEM 0040h:001Ah
--------K-M0040001A--------------------------
MEM 0040h:001Ah - KEYBOARD - POINTER TO NEXT CHARACTER IN KEYBOARD BUFFER
Size: WORD

See Also: MEM 0040h:001Ch,MEM 0040h:0080h,MEM 0040h:0082h,INT 16/AH=00h
--------K-M0040001C--------------------------
MEM 0040h:001Ch - KEYBOARD - POINTER TO FIRST FREE SLOT IN KEYBOARD BUFFER
Size: WORD

See Also: MEM 0040h:001Ah,MEM 0040h:001Eh,MEM 0040h:0080h,MEM 0040h:0082h

See Also: INT 16/AH=00h
--------K-M0040001E--------------------------
MEM 0040h:001Eh - KEYBOARD - DEFAULT KEYBOARD CIRCULAR BUFFER
Size: 16 WORDs

See Also: MEM 0040h:001Ah,MEM 0040h:001Ch,MEM 0040h:0080h,MEM 0040h:0082h

See Also: INT 16/AH=00h,INT 16/AH=05h
--------B-M0040003E--------------------------
MEM 0040h:003Eh - DISKETTE - RECALIBRATE STATUS
Size: BYTE

See Also: MEM 0040h:003Fh,MEM 0040h:0040h,INT 13/AH=00h,INT 13/AH=11h
Bitfields for diskette recalibrate status:
Bit(s) Description (Table M012)
7 diskette hardware interrupt occurred
6-4 reserved
3 recalibrate diskette 3 (PC,XT only)
2 recalibrate diskette 2 (PC,XT only)
1 recalibrate diskette 1
0 recalibrate diskette 0
--------B-M0040003F--------------------------
MEM 0040h:003Fh - DISKETTE - MOTOR STATUS
Size: BYTE

See Also: MEM 0040h:003Eh,MEM 0040h:0040h
Bitfields for diskette motor status:
Bit(s) Description (Table M013)
7 current operation is write or format, rather than read or verify
6 reserved (DMA enabled on 82077)
5-4 diskette drive number selected (0-3)
3 diskette 3 motor on (PC,XT only)
2 diskette 2 motor on (PC,XT only)
1 diskette 1 motor on
0 diskette 0 motor on
--------B-M00400040--------------------------
MEM 0040h:0040h - DISKETTE - MOTOR TURN-OFF TIMEOUT COUNT
Size: BYTE
Desc: number of clock ticks until diskette motor is turned off

Note: the typical implementation of the timeout is to have the INT 08
handler decrement this byte on every clock tick, and force the
diskette motor off if the result is equal to zero

See Also: MEM 0040h:003Eh,MEM 0040h:003Fh,MEM 0040h:0041h,INT 08"IRQ0"
--------B-M00400041--------------------------
MEM 0040h:0041h - DISKETTE - LAST OPERATION STATUS
Size: BYTE

See Also: MEM 0040h:003Eh,MEM 0040h:0042h,INT 13/AH=01h
Bitfields for diskette last operation status:
Bit(s) Description (Table M014)
7 drive not ready
6 seek error
5 general controller failure
4-0 error reason
00h no error
01h invalid request/parameter
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