Outils pour utilisateurs

Outils du site


back2root:ibm-pc-ms-dos:hardware:informations:bios_data_area

Ceci est une ancienne révision du document !


BDA - BIOS Data Area - PC Memory Map - WIP

Bios Memory Maps

Address Size Description
00:00 256 dwords Interrupt vector table
30:00 256 bytes Stack area used during post and bootstrap
40:00 word COM1 port address
40:02 word COM2 port address
40:04 word COM3 port address
40:06 word COM4 port address
40:08 word LPT1 port address
40:0A word LPT2 port address
40:0C word LPT3 port address
40:0E word LPT4 port address (except PS/2)
Extended BIOS Data Area segment (PS/2, see EBDA)
40:10 2 bytes Equipment list flags (see INT 11 - below)
40:12 byte PCjr: infrared keyboard link error count
40:13 word Memory size in Kbytes (see INT 12)
40:15 byte Reserved
40:16 byte PS/2 BIOS control flags
40:17 byte Keyboard flag byte 0 (see KB FLAGS - below)
40:18 byte Keyboard flag byte 1 (see KB FLAGS - below)
40:19 byte Storage for alternate keypad entry
40:1A word Offset from 40:00 to keyboard buffer head
40:1C word Offset from 40:00 to keyboard buffer tail

Details

0040:0010 - INT 11 registers

bit 40:10 (value in INT 11 register AL)
0 IPL diskette installed
1 math coprocessor
2-3 old PC system board RAM < 256K
PS/2 bit 2: pointing device installed; bit 3 :not used
4-5 initial video mode
6-7 # of diskette drives, less 1
bit 40:11 (value in INT 11 register AH)
0 0 if DMA installed
1-3 number of serial ports
4 game adapter
5 not used, internal modem (PS/2)
6-7 number of printer ports

0040:0017 - Keyboard flag 0

bit description
0 right shift key depressed
1 left shift key depressed
2 CTRL key depressed
3 ALT key depressed
4 scroll-lock is active
5 num-lock is active
6 caps-lock is active
7 insert is active

0040:0018 - Keyboard flag 1

bit description
0 left CTRL key depressed
1 left ALT key depressed
2 system key depressed and held
3 suspend key has been toggled
4 scroll lock key is depressed
5 num-lock key is depressed
6 caps-lock key is depressed
7 insert key is depressed

Floppy/drive Information Table

Address Size Description
40:1E 32 bytes Keyboard buffer (circular queue buffer)
40:3E byte Drive recalibration status (see below)
40:3F byte Diskette motor status (see below)
40:40 byte Motor shutoff counter (decremented by INT 8)
40:41 byte Status of last diskette operation (see INT 13,1 - below)
40:42 7 bytes NEC diskette controller status (see FDC)

Details

0040:003e - Drive Recalibration status

bit description
0 1=recalibrate drive 0
1 1=recalibrate drive 1
2 1=recalibrate drive 2
3 1=recalibrate drive 3
4-6 unused
7 1=working interrupt flag

0040:003f - Floppy motor status

bit description
0 1=drive 0 motor on
1 1=drive 1 motor on
2 1=drive 2 motor on
3 1=drive 3 motor on
4-6 unused
7 1=write operation

0040:0041 - status of last diskette operation

bit description
0 invalid diskette command
1 diskette address mark not found
2 sector not found
3 diskette DMA error
4 CRC check / data error
5 diskette controller failure
6 seek to track failed
7 diskette time-out

Video Information Table

Address Size Description
40:49 byte Current video mode (see VIDEO MODE)
40:4A word Number of screen columns
40:4C word Size of current video regen buffer in bytes
40:4E word Offset of current video page in video regen buffer
40:50 8 words Cursor position of pages 1-8, high order byte=row low order byte=column; changing this data isn't reflected immediately on the display
40:60 byte Cursor ending (bottom) scan line (don't modify)
40:61 byte Cursor starting (top) scan line (don't modify)
40:62 byte Active display page number
40:63 word Base port address for active 6845 CRT controller 3B4h = mono, 3D4h = color
40:65 byte 6845 CRT mode control register value (port 3x8h)
EGA/VGA values emulate those of the MDA/CGA
40:66 byte CGA current color palette mask setting (port 3d9h)
EGA and VGA values emulate the CGA

Details

0040:0087 - Video mode options (EGA+)

bit description
0 1=alphanumeric cursor emulation enabled
1 1=video subsystem attached to monochrome
2 reserved
3 1=video subsystem is inactive
4 reserved
5-6 video RAM: 00-64Kb; 10-192Kb; 01-128Kb; 11-256Kb
7 video mode number passed to INT 10, function 0

0040:0088 - EGA feature bit switches (EGA+)

bit description
0 EGA SW1 config (1=off)
1 EGA SW2 config (1=off)
2 EGA SW3 config (1=off)
3 EGA SW4 config (1=off)
4 Input FEAT0 (ISR0 bit 5) after output on FCR0
5 Input FEAT0 (ISR0 bit 6) after output on FCR0
6 Input FEAT1 (ISR0 bit 5) after output on FCR1
7 Input FEAT1 (ISR0 bit 6) after output on FCR1

0040:0089 - Video display data area (MCGA and VGA)

bit description
0 1=VGA is active
1 1=gray scale is enabled
2 1=using monochrome monitor
3 1=default palette loading is disabled
4 see table below
5 reserved
6 see table below
7 alphanumeric scan lines (see table below)
bit 7 bit 4 Scan Lines
0 0 350 line mode
0 1 400 line mode
1 0 200 line mode
1 1 reserved
Video Save/Override Pointer Table (pointer at 40:A8):
00 dword Video Parameter Table pointer
04 dword Dynamic Parameter Save Area pointer (EGA, VGA)
08 dword Alphanumeric Character Set Override pointer
0C dword Graphics Character Set Override pointer
10 dword Secondary Save Pointer Table pointer (VGA)
14 dword reserved, set to 0000:0000
18 dword reserved, set to 0000:0000
Video Parameter Table
00 byte number of displayed character columns
01 byte number of displayed screen rows minus 1
02 byte character matrix height in points
03 word video buffer size in bytes
05 dword contents of sequencer registers 1-4
09 byte misc. output register values
0A 25 bytes contents of CRTC registers 0-18h
23 20 bytes contents of attribute controller regs 0-13h
37 9 bytes contents of graphics controller regs 0-8

0040:0072 - Soft reset flag

value description
1234h Bypass memory tests & CRT initialization
4321h Preserve memory
5678h System suspend
9ABCh Manufacturer test
ABCDh Convertible POST loop
????h many other values are used during POST

Dynamic Parameter Save Area

00 16 bytes contents of graphics controller pallette regs
10 byte contents of graphics controller overscan reg
11 239 bytes reserved

Alphanumeric Character Set Override

00 byte length of each character definition in bytes
01 byte character generator RAM bank
02 word count of characters defined
04 word first character code in table
06 dword pointer to character font definition table
0A byte number of character rows displayed
0B nbytes array of applicable video modes
0B+n byte FFh end of mode list marker

Graphics Character Set Override

00 byte count of displayed character rows
01 word length of each character definition in bytes
03 dword pointer to character font definition table
07 nbytes array of applicable video modes
07+n byte FFh end of mode list marker

Secondary Save Pointer Table

00 word length of table in bytes
02 dword pointer to display combination code table
06 dword pointer to secondary alphanumeric char set override
0A dword pointer to user palette profile table (VGA)
0E dword reserved
12 dword reserved
16 dword reserved

Display Combination Code Table

00 byte number of table entries
01 byte DCC table version number
02 byte maximum display type code
03 byte reserved
04 n words array valid display combinations:
0,0 entry 0 no display
0,1 entry 1 MDPA
0,2 entry 2 CGA
2,1 entry 3 MDPA + CGA
0,4 entry 4 EGA
4,1 entry 5 EGA + MDPA
0,5 entry 6 MEGA
2,5 entry 7 MEGA + CGA
0,6 entry 8 PGC
1,6 entry 9 PGC + MDPA
5,6 entry 10 PGC + MEGA
0,8 entry 11 CVGA
1,8 entry 12 CVGA + MDPA
0,7 entry 13 MVGA
2,7 entry 14 MVGA + CGA
2,6 entry 15 MVGA + PGC

Secondary Alpha Mode Auxillary Character Generator Table

00 byte bytes per character
01 byte block to load
02 byte reserved
03 dword font table pointer
07 nbytes array of mode values for this font
07+n byte FFh end of mode list marker

Palette Profile Table (VGA only)

00 byte 1 - enable underlining in all alphanumeric modes
0 - enable underlining in monochrome alpha modes
-1 - disable underlining in all alpha modes
01 byte reserved
02 word reserved
04 word count of attribute controller regs in table
06 word first attribute controller register number
08 dword pointer to attribute controller reg table
0C word count of video DAC color registers in table
0E word first video DAC color register number
10 dword video DAC color register table pointer
14 nbytes array of applicable video modes for this font
14+n byte FFh end of video mode list marker
  • see also BIOS Data Area
  • see INT 10,1B for Dynamic Video State Table and Video Static Functionality Table

Others Information Table

Address Size Description
40:67 dword CS:IP for 286 return from protected mode
dword Temp storage for SS:SP during shutdown
dword Day counter on all products after AT
dword PS/2 Pointer to reset code with memory preserved
5 bytes Cassette tape control (before AT)
40:6C dword Daily timer counter, equal to zero at midnight;
incremented by INT 8; read/set by INT 1A
40:70 byte Clock rollover flag, set when 40:6C exceeds 24hrs
40:71 byte BIOS break flag, bit 7 is set if Ctrl-Break was *ever* hit; set by INT 9
40:72 word Soft reset flag via Ctl-Alt-Del or JMP FFFF:0 (see below)
40:74 byte Status of last hard disk operation (see INT 13,1)
40:75 byte Number of hard disks attached
40:76 byte XT fixed disk drive control byte
40:77 byte Port offset to current fixed disk adapter
40:78 4 bytes Time-Out value for LPT1,LPT2,LPT3(,LPT4 except PS/2)
40:7C 4 bytes Time-Out value for COM1,COM2,COM3,COM4
40:80 word Keyboard buffer start offset (seg=40h,BIOS 10-27-82)
40:82 word Keyboard buffer end offset (seg=40h,BIOS 10-27-82)
40:84 byte Rows on the screen (less 1, EGA+)
40:85 word Point height of character matrix (EGA+)
byte PCjr: character to be repeated if the typematic repeat key takes effect
40:86 byte PCjr: initial delay before repeat key action begins
40:87 byte PCjr: current Fn function key number
Video mode options (EGA+) (see below)
40:88 byte PCjr: third keyboard status byte
EGA feature bit switches, emulated on VGA (see below)
40:89 byte Video display data area (MCGA and VGA) (see below)
40:8A byte Display Combination Code (DCC) table index (EGA+)
40:8B byte Last diskette data rate selected
40:8C byte Hard disk status returned by controller
40:8D byte Hard disk error returned by controller
40:8E byte Hard disk interrupt control flag(bit 7=working int)
40:8F byte Combination hard/floppy disk card when bit 0 set
40:90 4 bytes Drive 0,1,2,3 media state
40:94 byte Track currently seeked to on drive 0
40:95 byte Track currently seeked to on drive 1
40:96 byte Keyboard mode/type
40:97 byte Keyboard LED flags
40:98 dword Pointer to user wait complete flag
40:9C dword User wait Time-Out value in microseconds
40:A0 byte RTC wait function flag
40:A1 byte LANA DMA channel flags
40:A2 2 bytes Status of LANA 0,1
40:A4 dword Saved hard disk interrupt vector
40:A8 dword BIOS Video Save/Override Pointer Table address (see VIDEO TABLES)
40:AC 8 bytes Reserved
40:B4 byte Keyboard NMI control flags (convertible)
40:B5 dword Keyboard break pending flags (convertible)
40:B9 byte Port 60 single byte queue (convertible)
40:BA byte Scan code of last key (convertible)
40:BB byte NMI buffer head pointer (convertible)
40:BC byte NMI buffer tail pointer (convertible)
40:BD 16bytes NMI scan code buffer (convertible)
40:CE word Day counter (convertible and after)
40:F0 16bytes Intra-Applications Communications Area (IBM Technical Reference incorrectly locates this at 50:F0-50:FF)
50:00 byte Print screen status byte
00 = PrtSc not active,
01 = PrtSc in progress
FF = error
50:01 3 bytes Used by BASIC
50:04 byte DOS single diskette mode flag, 0=A:, 1=B:
50:05 10bytes POST work area
50:0F byte BASIC shell flag; set to 2 if current shell
50:10 word BASICs default DS value (DEF SEG)
50:12 dword Pointer to BASIC INT 1C interrupt handler
50:16 dword Pointer to BASIC INT 23 interrupt handler
50:1A dword Pointer to BASIC INT 24 disk error handler
50:20 word DOS dynamic storage
50:22 14bytes DOS diskette initialization table (INT 1E)
50:30 4bytes MODE command
70:00 I/O drivers from IO.SYS/IBMBIO.COM

Floppy disk controller

40:8B byte Last diskette data rate selected
|7|6|5|4|3|2|1|0| last diskette data rate selected
 | | | | `--------- reserved
 | | `------------ last floppy drive step rate selected
 `-------------- last floppy data rate selected
Data Rate Step Rate
00 500K bps 00 step rate time of 0C
01 300K bps 01 step rate time of 0D
10 250K bps 10 step rate time of 0A
11 reserved 11 reserved
Address Size Description
40:8C byte Hard disk status returned by controller
40:8D byte Hard disk error returned by controller
40:8E byte Hard disk interrupt control flag(bit 7=working int)
40:8F byte Combination hard/floppy disk card when bit 0 set
40:90 4 bytes Drive 0,1,2,3 media state
|7|6|5|4|3|2|1|0| drive media state (4 copies)
 | | | | | `------- drive/media state (see below)
 | | | | `------- reserved
 | | | `------- 1=media/drive established
 | | `------- double stepping required
 `--------- data rate:	00=500K bps    01=300K bps
			10=250K bps    11=reserved
Bits
210
Drive Media State
000 360Kb diskette/360Kb drive not established
001 360Kb diskette/1.2Mb drive not established
010 1.2Mb diskette/1.2Mb drive not established
011 360Kb diskette/360Kb drive established
100 360Kb diskette/1.2Mb drive established
101 1.2Mb diskette/1.2Mb drive established
110 Reserved
111 None of the above
Address Size Description
40:94 byte Track currently seeked to on drive 0
40:95 byte Track currently seeked to on drive 1
40:96 byte Keyboard mode/type
|7|6|5|4|3|2|1|0| Keyboard mode/type
 | | | | | | | `--- last code was the E1 hidden code
 | | | | | | `---- last code was the E0 hidden code
 | | | | | `----- right CTRL key depressed
 | | | | `------ right ALT key depressed
 | | | `------- 101/102 enhanced keyboard installed
 | | `-------- force num-lock if Rd ID & KBX
 | `--------- last char was first ID char
 `---------- read ID in process
Address Size Description
40:97 byte Keyboard LED flags
|7|6|5|4|3|2|1|0| Keyboard LED flags
 | | | | | | | `--- scroll lock indicator
 | | | | | | `---- num-lock indicator
 | | | | | `----- caps-lock indicator
 | | | | `------ circus system indicator
 | | | `------- ACK received
 | | `-------- re-send received flag
 | `--------- mode indicator update
 `---------- keyboard transmit error flag
Address Size Description
40:98 dword Pointer to user wait complete flag
40:9C dword User wait Time-Out value in microseconds
40:A0 byte RTC wait function flag
|7|6|5|4|3|2|1|0| INT 15,86 RTC wait function flag
 | | | | | | | `--- 1= wait pending
 | `-------------- not used
 `--------------- 1=INT 15,86 wait time elapsed
Address Size Description
40:A1 byte LANA DMA channel flags
40:A2 2 bytes Status of LANA 0,1
40:A4 dword Saved hard disk interrupt vector
40:A8 dword BIOS Video Save/Override Pointer Table address (see VIDEO TABLES)
40:AC 8 bytes Reserved
40:B4 byte Keyboard NMI control flags (convertible)
40:B5 dword Keyboard break pending flags (convertible)
40:B9 byte Port 60 single byte queue (convertible)
40:BA byte Scan code of last key (convertible)
40:BB byte NMI buffer head pointer (convertible)
40:BC byte NMI buffer tail pointer (convertible)
40:BD 16 bytes NMI scan code buffer (convertible)
40:CE word Day counter (convertible and after)
40:F0 16 bytes Intra-Applications Communications Area (IBM Technical Reference incorrectly locates this at 50:F0-50:FF)
Address Size Description
50:00 byte Print screen status byte
00 = PrtSc not active,
01 = PrtSc in progress
FF = error
50:01 3 bytes Used by BASIC
50:04 byte DOS single diskette mode flag, 0=A:, 1=B:
50:05 10 bytes POST work area
50:0F byte BASIC shell flag; set to 2 if current shell
50:10 word BASICs default DS value (DEF SEG)
50:12 dword Pointer to BASIC INT 1C interrupt handler
50:16 dword Pointer to BASIC INT 23 interrupt handler
50:1A dword Pointer to BASIC INT 24 disk error handler
50:20 word DOS dynamic storage
50:22 14 bytes DOS diskette initialization table (INT 1E)
50:30 4 bytes MODE command
70:00 I/O drivers from IO.SYS/IBMBIO.COM

The following map varies in size and locus

Address Size Description
07C0:0 Boot code is loaded here at startup (31k mark)
A000:0 EGA/VGA RAM for graphics display mode 0Dh & above
B000:0 MDA RAM, Hercules graphics display RAM
B800:0 CGA display RAM
C000:0 EGA/VGA BIOS ROM (thru C7FF)
C400:0 Video adapter ROM space
C600:0 256 bytes PGA communication area
C800:0 16 Kb Hard disk adapter BIOS ROM
C800:5 XT Hard disk ROM format, AH=Drive, AL=Interleave
D000:0 32 Kb Cluster adapter BIOS ROM
D800:0 PCjr conventionalsoftware cartridge address
E000:0 64 Kb Expansion ROM space (hardwired on AT+)
128 Kb PS/2 System ROM (thru F000)
F000:0 System monitor ROM
PCjr: software cartridge override address
F400:0 System expansion ROMs
F600:0 IBM ROM BASIC (AT)
F800:0 PCjr software cartridge override address
FC00:0 BIOS ROM
FF00:0 System ROM
FFA6:E ROM graphics character table
FFFF:0 ROM bootstrap code
FFFF:5 8 bytes ROM date (not applicable for all clones)
FFFF:E byte ROM machine id (see MACHINE ID)
back2root/ibm-pc-ms-dos/hardware/informations/bios_data_area.1673957673.txt.gz · Dernière modification : 2023/01/17 13:14 de frater