The following is the layout and contents of the first Meg of memory. As I get more information, I will update it accordingly.
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 |
-------------------------- Figures --------------------------- **************************************************************** bit FEDCBA98 76543210 Described XX...... ........ Number of printers installed ..X..... ........ (reserved) ...X.... ........ set if game adapter installed ....XXX. ........ Number of RS-232 serial ports .......X ........ (reserved) ........ XX...... +1 = number of floppy drives (see bit 0) 00 - 1 drive, 01 - 2 drives, etc. ........ ..XX.... Initial video mode 01 - 40 column color 10 - 80 column color 11 - monochrome 00 - none of the above ........ ....XX.. For PC w/64k motherboard Amount of system board RAM 00 - 16k,01 - 32k, 10 - 48k, 11 - 64k For PC/AT: not used For PS/2: Bit 3 not used Bit 2 - pointing device installed ........ ......X. set if math co processor installed ........ .......X set if any floppy drives installed if set, see bits 6 and 7 **************************************************************** FIGURE 1: equipment list word at 0000:0410h **************************************************************** bits 76543210 Described 0000:0417h X....... insert state: (1 = active, 0 = inactive) .X...... caps lock: ..X..... num lock: ...X.... scroll lock: ....X... set if alt pressed .....X.. set if ctrl pressed ......X. set if left shift pressed .......X set if right shift pressed 0000:0418h X....... set if insert pressed .X...... set if caps lock pressed ..X..... set if num lock pressed ...X.... set if scroll lock pressed ....X... hold state active (ctrl-num lock or pause pressed) .....X.. system request pressed ......X. left alt pressed .......X right alt pressed **************************************************************** FIGURE 2: Keyboard status bits at 0000:0417h, lo order bits are set only while a corresponding key is pressed
All rights reserved
Legal Notice
Copyright © 1984-2010 Forever Young Software
Forever Young Software for Hire
Return to My Home Page