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