| Notes* |
Offset (hex) |
Size (dec) |
Description |
| |
0000 |
4 |
Interrupt Vector for INT 00h (division by zero) |
| |
0004 |
4 |
Interrupt Vector for INT 01h (single step) |
| |
0008 |
4 |
Interrupt Vector for INT 02h (Nonmaskable) |
| |
000C |
4 |
Interrupt Vector for INT 03h (Break point) |
| |
0010 |
4 |
Interrupt Vector for INT 04h (overflow) |
| |
0014 |
4 |
Interrupt Vector for INT 05h (print screen) |
| |
0018 |
4 |
Interrupt Vector for INT 06h (invalid opcode) |
| |
001C |
4 |
Interrupt Vector for INT 07h (processor extension not available) |
| |
0020 |
4 |
Interrupt Vector for INT 08h (clock tick (hardware)) |
| |
0024 |
4 |
Interrupt Vector for INT 09h (keyboard) |
| |
0028 |
4 |
Interrupt Vector for INT 0Ah (LPT2) |
| |
002C |
4 |
Interrupt Vector for INT 0Bh (COM2) |
| |
0030 |
4 |
Interrupt Vector for INT 0Ch (COM1) |
| |
0034 |
4 |
Interrupt Vector for INT 0Dh (IRQ5) |
| |
0038 |
4 |
Interrupt Vector for INT 0Eh (floppy disk attention) |
| |
003C |
4 |
Interrupt Vector for INT 0Fh (printer control) |
| |
0040 |
4 |
Interrupt Vector for INT 10h (video) |
| |
0044 |
4 |
Interrupt Vector for INT 11h (equipment list) |
| |
0048 |
4 |
Interrupt Vector for INT 12h (memory size) |
| |
004C |
4 |
Interrupt Vector for INT 13h (disk BIOS) |
| |
0050 |
4 |
Interrupt Vector for INT 14h (communications BIOS) |
| |
0054 |
4 |
Interrupt Vector for INT 15h (system BIOS) |
| |
0058 |
4 |
Interrupt Vector for INT 16h (keyboard BIOS) |
| |
005C |
4 |
Interrupt Vector for INT 17h (printer BIOS) |
| |
0060 |
4 |
Interrupt Vector for INT 18h (ROM Basic Language) |
| |
0064 |
4 |
Interrupt Vector for INT 19h (boot-strap) |
| |
0068 |
4 |
Interrupt Vector for INT 1Ah (Time and Date) |
| |
006C |
4 |
Interrupt Vector for INT 1Bh (Ctrl Break) |
| |
0070 |
4 |
Interrupt Vector for INT 1Ch (Clock tick) |
| |
0074 |
4 |
Holds address pointing to control parameters |
| |
0078 |
4 |
Holds address pointing to floppy disk drive parameter table |
| |
007C |
4 |
Holds address pointing to second half of character table (128 - 255) |
| |
0080 |
4 |
Interrupt Vector for INT 20h (terminate) |
| |
0084 |
4 |
Interrupt Vector for INT 21h (MS-DOS function calls) |
| |
0088 |
4 |
Holds address pointing to MS-DOS program terminate routine |
| |
008C |
4 |
Holds address pointing to MS-DOS keyboard-break handler |
| |
0090 |
4 |
Holds address pointing to MS-DOS critical-error handler |
| |
0094 |
4 |
Interrupt Vector for INT 25h (Absolute disk read) |
| |
0098 |
4 |
Interrupt Vector for INT 26h (Absolute disk write) |
| |
009C |
4 |
Interrupt Vector for INT 27h (MS-DOS TSR) |
| |
00A0 |
4 |
Interrupt Vector for INT 28h (MS-DOS IDLE) |
| |
00A4 |
4 |
Interrupt Vector for INT 29h (Fast CON output) |
| |
00A8 |
4 |
Interrupt Vector for INT 2Ah (NetBIOS) |
| |
00A8 |
12 |
Interrupt Vector for INT 2Bh-2Dh (reserved) |
| |
00B8 |
4 |
Interrupt Vector for INT 2Eh (Execute) |
| |
00BC |
4 |
Interrupt Vector for INT 2Fh (Multitask) |
| |
00C0 |
4 |
(NOT A VECTOR!) - DOS 1+ - FAR JMP instruction |
| |
00C4 |
4 |
overwritten by CP/M jump instruction in INT 30 |
| |
00C8 |
4 |
Interrupt Vector for INT 32h (user) |
| |
00CC |
4 |
Interrupt Vector for INT 33h (Mouse) |
| |
00D0 |
44 |
Interrupt Vector for INT 34h-3Eh (FLOATING POINT EMULATION) |
| |
00FC |
4 |
Interrupt Vector for INT 3Fh (Overlay manager) |
| |
0100 |
4 |
Interrupt Vector for INT 40h (Disk handler) |
| |
0104 |
4 |
Holds address pointing to Parameter table for first hard drive |
| |
0108 |
4 |
Interrupt Vector for INT 42h (video) |
| |
010C |
4 |
Holds address pointing to video graphics characters (EGA, PS/2s) |
| |
0110 |
4 |
Holds address pointing to video graphics characters (PCjr) |
| |
0114 |
4 |
Z100/Acron |
| |
0118 |
4 |
Holds address pointing to Parameter table for second hard drive |
| |
011C |
4 |
Z100/Acorn/Western Digital/SQL Base |
| |
0120 |
4 |
KEYBOARD (PCjr) |
| |
0124 |
4 |
SYSTEM DATA (PCjr) |
| |
0128 |
4 |
Interrupt Vector for INT 4Ah (USER ALARM HANDLER) |
| |
012C |
4 |
Interrupt Vector for INT 4Bh (IBM SCSI interface) |
| |
0130 |
4 |
Interrupt Vector for INT 4Ch (Z100/Acorn/TI) |
| |
0134 |
4 |
Interrupt Vector for INT 4Dh (Z100) |
| |
0138 |
4 |
Interrupt Vector for INT 4Eh (Z100/TI) |
| |
013C |
4 |
Interrupt Vector for INT 4Fh (Common Access Method SCSI) |
| |
0140 |
4 |
Interrupt Vector for INT 50h (IRQ0 relocated by software) |
| |
0144 |
4 |
Interrupt Vector for INT 51h (IRQ1 relocated by software) |
| |
0148 |
4 |
Interrupt Vector for INT 52h (IRQ2 relocated by software) |
| |
014C |
4 |
Interrupt Vector for INT 53h (IRQ3 relocated by software) |
| |
0150 |
4 |
Interrupt Vector for INT 54h (IRQ4 relocated by software) |
| |
0154 |
4 |
Interrupt Vector for INT 55h (IRQ5 relocated by software) |
| |
0158 |
4 |
Interrupt Vector for INT 56h (IRQ6 relocated by software) |
| |
015C |
4 |
Interrupt Vector for INT 57h (IRQ7 relocated by software) |
| |
0160 |
4 |
Interrupt Vector for INT 58h (IRQ8/0 relocated by software) |
| |
0164 |
4 |
Interrupt Vector for INT 59h (IRQ9/1 relocated by software) |
| |
0168 |
4 |
Interrupt Vector for INT 5Ah (IRQ10/2 relocated by software) |
| |
016C |
4 |
Interrupt Vector for INT 5Bh (IRQ11/3 relocated by software) |
| |
0170 |
4 |
Interrupt Vector for INT 5Ch (IRQ12/4 relocated by software) |
| |
0174 |
4 |
Interrupt Vector for INT 5Dh (IRQ13/5 relocated by software) |
| |
0178 |
4 |
Interrupt Vector for INT 5Eh (IRQ14/6 relocated by software) |
| |
017C |
4 |
Interrupt Vector for INT 5Fh (IRQ15/7 relocated by software) |
| |
0180 |
28 |
Interrupt Vector for INT 60h-66h (reserved for user interrupt) |
| |
019C |
4 |
Interrupt Vector for INT 67h (LIM Expanded Memory Manager) |
| |
01A0 |
16 |
Interrupt Vector for INT 68h-6Bh (reserved for user interrupt) |
| |
01B0 |
4 |
Interrupt Vector for INT 6Ch (DECnet DOS network scheduler) |
| |
01B4 |
4 |
Interrupt Vector for INT 6Dh (VGA internal) |
| |
01B8 |
4 |
Interrupt Vector for INT 6Eh (DECnet DOS) |
| |
01BC |
4 |
Interrupt Vector for INT 6Fh (Novell NetWare, MS Windows 3.0) |
| |
01C0 |
4 |
Interrupt Vector for INT 70h (CMOS real-time clock) |
| |
01C4 |
4 |
Interrupt Vector for INT 71h (redirected to int 0A) |
| |
01C8 |
8 |
Interrupt Vector for INT 72h-73h (IRQ10-11 reserved) |
| |
01D0 |
4 |
Interrupt Vector for INT 74h (IRQ12 Pointing device) |
| |
01D4 |
4 |
Interrupt Vector for INT 75h (IRQ13 math coprocessor exception) |
| |
01D8 |
4 |
Interrupt Vector for INT 76h (IRQ14 Hard disk controller) |
| |
01DC |
4 |
Interrupt Vector for INT 77h (IRQ15 reserved) |
| |
01E0 |
4 |
Interrupt Vector for INT 78h (DOS extenders?) |
| |
01E4 |
4 |
Interrupt Vector for INT 79h (reserved for user interrupt) |
| |
01E8 |
4 |
Interrupt Vector for INT 7Ah (Novell NetWare) |
| |
01E8 |
20 |
Interrupt Vector for INT 7Bh-7Fh (reserved for user interrupt) |
| |
0200 |
24 |
Interrupt Vector for INT 80h-85h (reserved for BASIC) |
| |
0218 |
420 |
Interrupt Vector for INT 86h-EEh (reserved for BASIC) |
| |
03BC |
4 |
Interrupt Vector for INT EFh (BASIC - orig. INT 09 vector) |
| |
03C0 |
4 |
Interrupt Vector for INT F0h (BASIC - orig. INT 08 vector) |
| |
03C4 |
52 |
Interrupt Vector for INT F1h-FDh (reserved for user interrupt) |
| |
03F8 |
8 |
Interrupt Vector for INT FEh-FFh (AT/XT286/PS50+) |
| Remember that 0000:0400h = 0040:0000h |
| |
0400 |
2 |
COM1 I/O base address (set to 0 if none found) |
| |
0402 |
2 |
COM2 I/O base address (set to 0 if none found) |
| |
0404 |
2 |
COM3 I/O base address (set to 0 if none found) |
| |
0406 |
2 |
COM4 I/O base address (set to 0 if none found) |
| |
0408 |
2 |
LPT1 I/O base address (set to 0 if none found) |
| |
040A |
2 |
LPT2 I/O base address (set to 0 if none found) |
| |
040C |
2 |
LPT3 I/O base address (set to 0 if none found) |
| |
040E |
2 |
LPT4 I/O base address (set to 0 if none found) |
| |
|
2 |
(if extended BIOS on system) Segment address of Extended BIOS Data Area (9FC0:0000h) |
| |
0410 |
2 |
equipment list reported by interrupt 11h (see figure 1) |
| |
0412 |
1 |
PCjr - Infrared Keyboard Link Error |
| |
0413 |
2 |
usable memory size in kilobytes (interrupt 12h) |
| |
|
|
Usually set to 0280h. If less, then denotes 640k-difference=size of Extended BIOS Data Area at (9FC0:0000h) |
| |
0415 |
2 |
(AT+) Error codes from the BIOS manufacturer |
| |
|
2 |
(PC,XT) Adapter Memory Size |
| |
0417 |
2 |
keyboard status bits (see figure 2) |
| |
0419 |
1 |
Alternate Keypad entry |
| |
041A |
2 |
points to current head of keyboard buffer at 0040:001Eh |
| |
041C |
2 |
points to current tail of keyboard buffer at 0040:001Eh |
| |
041E |
32 |
keyboard buffer - used as sixteen 2-byte entries |
| |
043E |
1 |
indicates whether a floppy drive should be re calibrated |
| |
043F |
1 |
floppy drive motor status (bites 0-3) |
| |
|
|
bit 0 = drive 0, if set - drive motor running |
| |
|
|
bit 1 = drive 1, if set - drive motor running, etc. |
| |
0440 |
1 |
floppy drive motor status. The value in this byte is |
| |
|
|
decremented with every tick of the system clock. |
| |
|
|
When the value returns 0, the BOIS turns off the motor |
| |
0441 |
1 |
floppy drive motor status. status code returned by the |
| |
|
|
ROM BIOS from the most recent disk operation |
| |
0442 |
7 |
floppy drive controller status |
| |
0449 |
1 |
current video mode |
| |
044A |
2 |
max number of chars in a row of text |
| |
044C |
2 |
number of bytes needed to display the screen (text=80x25) |
| |
044E |
2 |
offset of current display page |
| |
0450 |
16 |
8 words, each giving the cursor location of each page |
| |
0460 |
2 |
size of current cursor |
| |
0462 |
1 |
current display page |
| |
0463 |
2 |
port address of the hardware display controller chip |
| |
0465 |
1 |
current setting of the display mode-register of the MDA and CGA |
| |
0466 |
1 |
current setting of the CGA's CRT color register |
| |
0467 |
5 |
cassette tape control |
| |
046C |
4 |
master clock count (long integer) 0 = midnight and increments until a 24 hour equiv. |
| |
0470 |
1 |
not 0 = passed midnight |
| |
0471 |
1 |
if bit 7 is set, ctrl-break was pressed |
| |
0472 |
2 |
set to 1234h after initial power up telling a warm boot to skip mem check |
| |
0474 |
4 |
floppy and hard disk control |
| |
0478 |
4 |
contains a time-out value for the respective parallel ports |
| |
047C |
4 |
contains a time-out value for the respective RS-232 serial ports |
| |
0480 |
2 |
points at the start of the keyboard buffer area |
| |
0482 |
2 |
points at the end of the keyboard buffer area |
| |
0484 |
1 |
this value is one less than the number of character rows displayed on the screen |
| |
0485 |
2 |
height, in scan lines, of characters on the screen |
| |
0487 |
4 |
Amount of video RAM available |
| |
|
|
Initial setting of the EGA configuration switches, as well as other misc video status info. |
| |
048B |
11 |
control and status information regarding the floppy and hard disk drives |
| |
0496 |
2 |
data area used to support the 101-key keyboard |
| |
0498 |
9 |
real time clock control |
| |
04A1 |
1 |
LANA DMA channel flags |
| |
04A2 |
2 |
Status of LANA 0,1 |
| |
04A4 |
4 |
Saved hard disk interrupt vector |
| |
04A8 |
4 |
(EGA and VGA) contain segmented address of a table of video parameters and overrides |
| |
04AC |
8 |
(reserved) |
| |
04B4 |
1 |
Keyboard NMI control flags (convertible) |
| |
04B5 |
4 |
Keyboard Break pending flags (convertible) |
| |
04B9 |
1 |
Port 60h single byte Queue (convertible) |
| |
04BA |
1 |
Scan code for last key (convertible) |
| |
04BB |
1 |
NMI Buffer head pointer (convertible) |
| |
04BC |
1 |
NMI Buffer tail pointer (convertible) |
| |
04BD |
16 |
NMI scan code Buffer (convertible) |
| |
04CD |
1 |
unknown |
| |
04CE |
2 |
Day Counter (convertible) |
| |
04D0 |
16 |
unknown |
| |
04F0 |
16 |
intra-application communications area (ICA) |
| |
|
|
ie: known area where one app can communicate with another app. |
| |
|
|
(not used much because of its small size) |
| Remember that 0000:0500h = 0050:0000h |
| |
0500 |
1 |
status of a print-screen operation |
| |
|
|
00h - OK |
| |
|
|
01h - a print-screen operation currently in progress |
| |
|
|
FFh - error occurred during a print-screen operation |
| |
0501 |
3 |
Used by BASIC |
| |
0504 |
1 |
if only 1 floppy installed, this byte indicates which drive letter it is using (a or b) |
| |
|
|
00h - acting as drive a: |
| |
|
|
01h - acting as drive b: |
| |
0505 |
10 |
POST work area |
| |
050F |
1 |
BASIC shell flag (2 if currently in shell) |
| |
0510 |
2 |
holds ROM Basics default DS value (DO NOT CHANGE) |
| |
0512 |
4 |
segment offset address of Basic's clock-tick interrupt handler |
| |
0516 |
4 |
address for ROM Basic's Break-key-handling routine |
| |
051A |
4 |
address for ROM Basic's floppy disk error-handling routine |
| new |
0520 |
2 |
DOS Dynamic Storage ??? |
| new |
0522 |
14 |
DOS Diskette Initialization Table ??? |
| new |
0530 |
4 |
MODE command ??? |
| |
0534 |
206 |
unknown |
| Remember that 0000:0600h = 0060:0000h |
| |
0600 |
256 |
scratch space used during DOS 2+ boot up |
| Remember that 0000:0700h = 0070:0000h |
| |
DOS 2+ |
| |
0700 |
256 |
IO.SYS LOAD ADDRESS |
| |
DOS 5+ |
| |
0700 |
25 |
ORIGINAL INTERRUPT VECTORS 10h,13h,15h,19h,1Bh |
| |
|
|
Each value is stored as a BYTE for the interrupt number followed by a DWORD for the vector |
| |
0719 |
231 |
unknown |
| Remember that 0000:0800h = 0080:0000h |
| |
0800 |
102 |
80286 CPU - LOADALL WORKSPACE |
| |
|
|
On the 80286 (unlike 80386), the state buffer from which the LOADALL instruction loads all internal registers is hardwired to physical address 000800h Several versions 3.x of MS-DOS leave an empty space at offset 100h in IO.SYS (which is loaded at 0070h:0000h) so that HIMEM.SYS can use LOADALL on 80286 machines without having to save/restore the area of memory that LOADALL uses |
| |
0866 |
154 |
unknown |
| Remember that 0000:0900h = 0090:0000h |
| |
0900 |
653,056 |
DOS (COMMAND.COM, etc., User Memory) |
| 9FC0h:0000h - If your system has Extended BIOS Data Area (see 0040:000Eh and :0013h above) |
| |
0000 |
1 |
Size of Extended BIOS Data Area in 1k blocks |
| |
0002 |
21 |
unknown |
| |
0017 |
1 |
Number of POST error entries |
| |
0018 |
10 |
Error Log for above |
| |
0022 |
4 |
Mouse Driver Device Far Call |
| |
0026 |
1 |
Mouse Flags 1 |
| |
0027 |
1 |
Mouse Flags 2 |
| |
0028 |
8 |
Mouse Data |
| |
0030 |
9 |
unknown |
| |
0039 |
2 |
Watch Dog Timer |
| |
003B |
2 |
unknown |
| |
003D |
16 |
Hard Disk 0 Parameter Table |
| |
004D |
16 |
Hard Disk 1 Parameter Table |
| |
005D |
11 |
unknown |
| |
0068 |
1 |
Cache Control |
| |
0069 |
5 |
unknown |
| |
006E |
1 |
Repeat Rate of Keyboard |
| |
006F |
1 |
Delay until Keyboard repeats |
| |
0070 |
1 |
Number of Hard Drives attached |
| |
0071 |
1 |
DMA channel Hard Drive |
| |
0072 |
1 |
Hard Drive interrupt status |
| |
0073 |
1 |
Hard Drive operation flags |
| |
0074 |
4 |
Old interrupt 76h vector pointer |
| |
0078 |
1 |
Hard Drive DMA type |
| |
0079 |
1 |
(Hard Drive) status of last operation |
| |
007A |
1 |
(Hard Drive) timeout value |
| |
007B |
3 |
unknown |
| |
007E |
16 |
Hard Drive controller return status words |
| |
008E |
89 |
unknown |
| |
00E7 |
1 |
Diskette Drive type |
| |
00E8 |
4 |
unknown |
| |
00EC |
1 |
Hard Drive Parameters Loaded |
| |
00ED |
1 |
unknown |
| |
00EE |
1 |
CPU Family ID |
| |
00EF |
1 |
CPU Stepping |
| |
00F0 |
39 |
unknown |
| |
0117 |
2 |
Keyboard ID |
| |
0119 |
1 |
unknown |
| |
011A |
1 |
Non-BIOS Interrupt 18h Flag |
| |
011B |
2 |
unknown |
| |
011D |
4 |
User Interrupt 18h Far Pointer |
| |
0121 |
735 |
unknown |
| A000:0000h |
| |
0000 |
65,536 |
Graphics Video memory (EGA and above) |
| B000:0000h |
| |
0000 |
32,768 |
Graphics area for EGA and up |
| |
8000 |
4096 |
Page 0 - 80x25 16 color and mono (B800:0000) |
| |
9000 |
4096 |
Page 1 - 80x25 16 color and mono (B800:1000) |
| |
A000 |
4096 |
Page 2 - 80x25 16 color and mono (B800:2000) |
| |
B000 |
4096 |
Page 3 - 80x25 16 color and mono (B800:3000) |
| |
C000 |
4096 |
Page 4 - 80x25 16 color and mono (B800:4000) |
| |
D000 |
4096 |
Page 5 - 80x25 16 color and mono (B800:5000) |
| |
E000 |
4096 |
Page 6 - 80x25 16 color and mono (B800:6000) |
| |
F000 |
4096 |
Page 7 - 80x25 16 color and mono (B800:7000) |
| C000:0000h |
| |
0000 |
65,536 |
additional ROM-BIOS & video memory |
| D000:0000h |
| |
0000 |
65,536 |
ROM cartridges |
| E000:0000h |
| |
0000 |
65,536 |
ROM cartridges |
| F000:0000h |
| |
0000 |
32,768 |
IBM PC ROM BASIC |
| |
E000 |
8,192 |
ORIGINAL IBM PC ROM BIOS |
| |
FFF0 |
5 |
RESET JUMP |
| |
FFF5 |
8 |
ASCII BIOS DATE |
| |
FFFD |
1 |
OFTEN USED TO ENSURE CORRECT BIOS CHECKSUM |
| |
FFFE |
1 |
MACHINE TYPE CODE |
| |
FFFF |
1 |
unknown |
| Total memory |
| 0000:0000F000:FFFF |
1,048,576 |
16 x 65,536 = 1 meg |