Ship documentation on bios data area
This commit is contained in:
parent
f8788720f5
commit
13e32675a1
83
doc/bda.txt
Normal file
83
doc/bda.txt
Normal file
@ -0,0 +1,83 @@
|
||||
The actual layout of the BDA is specific to the actual BIOS firmware running.
|
||||
This lists is focused on what a developer can reasonably rely on.
|
||||
|
||||
0000 256 Interrupt vectors
|
||||
0300 256 bytes used as stack during POST
|
||||
0400 word: COM1 base I/O port
|
||||
0402 word: COM2
|
||||
0404 word: COM3
|
||||
0406 word: COM4
|
||||
0408 word: LPT1 base I/O port
|
||||
040A word: LPT2
|
||||
040C word: LPT3
|
||||
040E word: segment addr of the EBDA (rarely LPT4)
|
||||
0410 byte: equipment list flags (INT 11h, AL)
|
||||
bit 0: IPL diskette installed
|
||||
bit 1: math coprocessor present
|
||||
bits 4-5: default VDU mode
|
||||
bits 6-7: number of floppies minus one, 0 if none
|
||||
0411 byte: equipment list flags (INT 11h, AH)
|
||||
bit 0: dma controller present
|
||||
bits 1-3: number of serial ports
|
||||
bit 4: game adapter present
|
||||
bit 6-7: number of printer ports
|
||||
0413 word: memory size in kilobytes (INT 12h, AX)
|
||||
0417 byte: key toggle states
|
||||
bit 0: right shift
|
||||
bit 1: left shift
|
||||
bit 2: ctrl
|
||||
bit 3: alt
|
||||
bit 4: scroll lock
|
||||
bit 5: num lock
|
||||
bit 6: caps lock
|
||||
but 7: insert
|
||||
0418 byte: key pressed state (1 if currently held down)
|
||||
bit 0: left ctrl key
|
||||
bit 1: left alt key
|
||||
bit 2: system key
|
||||
bit 3: suspend key
|
||||
bit 4: scroll lock
|
||||
bit 5: num lock
|
||||
bit 6: caps lock
|
||||
bit 7: insert
|
||||
0419 byte: when typing a character by pressing the alt key and typing its code
|
||||
into the numpad, this byte holds the current numeric value
|
||||
041A word: offset into the key ringbuffer, reading end
|
||||
041B word: offset into the key ringbuffer, writing end
|
||||
041E 16 words: key ringbuffer, holds place for 16 keypresses
|
||||
043E byte: drive restore flag
|
||||
043F byte: drive motor flag
|
||||
0440 byte: drive motor timeout counter in 1/18th seconds
|
||||
0441 byte: status of last disk operation
|
||||
0442 7 bytes: status buffer for FDC
|
||||
0449 byte: current VDU mode
|
||||
044A byte: number of visible display columns
|
||||
044C word: VDU display buffer size
|
||||
044E word: offset of current VDU page in buffer
|
||||
0450 8 words: 8 cursor positions for each VDU page (MSB=row, LSB=column)
|
||||
0460 byte: bottom scan line for cursor (dont write)
|
||||
0461 byte: top scan line for cursor (dont write)
|
||||
0462 byte: active display page number
|
||||
0463 word: VDU I/O address
|
||||
0465 byte: VDU mode control register
|
||||
0466 byte: VDU color select register
|
||||
0467 dword CS:IP for 80286 return from protected mode
|
||||
046C dword: time of the day in 1/18th second ticks
|
||||
0470 byte: rollover flag if above surpassed 24h (FFh = rollover)
|
||||
0471 byte: bit 7 is set on ctrl+numlock to indicate break condition
|
||||
0472 word: soft reset flag (set and JMP 0xFFFF:0)
|
||||
1234: bypas memory tests and VDU setup
|
||||
4321: preserve memory
|
||||
5678: system suspend
|
||||
9ABC: POST loop (on IBM convertible)
|
||||
0474 dword: reserved for hard disk bios
|
||||
0478 byte: LPT1 timeout in half seconds
|
||||
0479 byte: LPT2
|
||||
047A byte: LPT3
|
||||
047C byte: COM1 timeout in half seconds
|
||||
0480 word: key ringbuffer start (from 0x400)
|
||||
0482 word: key ringbuffer
|
||||
0500 byte: status of INT 5: print screen
|
||||
00: no screen print in progress
|
||||
01: in progress
|
||||
FF: printer failure
|
Loading…
Reference in New Issue
Block a user