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) |
Equipement |
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 |
Keyboard |
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 |
40:1E | 32 bytes | Keyboard buffer (circular queue buffer) |
Drive & Diskette |
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) |
Videos |
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 |
PS/2 - 286+ |
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 |
RTC |
| 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 |
EGA+ |
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+) |
Drives |
40:8B | byte | Last diskette data rate selected (see below) |
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 (see below) |
40:94 | byte | Track currently seeked to on drive 0 |
40:95 | byte | Track currently seeked to on drive 1 |
Keyboard |
40:96 | byte | Keyboard mode/type (see below) |
40:97 | byte | Keyboard LED flags (see below) |
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 (see below) |
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) |
Misc |
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 |