| 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 |
| |
|
4 |
Reset Restart Address |
| |
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 |
1 |
Fixed disk last operation status
(except ESDI drives) |
| |
0475 |
1 |
Number of fixed disk drives |
| |
0476 |
1 |
Fixed disk control byte |
| |
0477 |
1 |
Fixed disk I/O port offset (XT
only) |
| |
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 |
| |
0520 |
2 |
DOS Dynamic Storage ??? |
| |
0522 |
14 |
DOS Diskette Initialization Table
??? |
| |
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:0000—F000:FFFF |
1,048,576 |
16 x 65,536 = 1 meg |