Ceci est une ancienne révision du document !
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) |
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 |
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 |
bit | 40:10 (value in INT 11 register AL) |
---|---|
0 | IPL diskette installed |
1 | math coprocessor |
2-3 | old PC system board RAM < 256K PS/2 bit 2: pointing device installed; bit 3 :not used |
4-5 | initial video mode |
6-7 | # of diskette drives, less 1 |
bit | 40:11 (value in INT 11 register AH) |
---|---|
0 | 0 if DMA installed |
1-3 | number of serial ports |
4 | game adapter |
5 | not used, internal modem (PS/2) |
6-7 | number of printer ports |
bit | description |
---|---|
0 | right shift key depressed |
1 | left shift key depressed |
2 | CTRL key depressed |
3 | ALT key depressed |
4 | scroll-lock is active |
5 | num-lock is active |
6 | caps-lock is active |
7 | insert is active |
bit | description |
---|---|
0 | left CTRL key depressed |
1 | left ALT key depressed |
2 | system key depressed and held |
3 | suspend key has been toggled |
4 | scroll lock key is depressed |
5 | num-lock key is depressed |
6 | caps-lock key is depressed |
7 | insert key is depressed |
Address | Size | Description |
---|---|---|
40:1E | 32 bytes | Keyboard buffer (circular queue buffer) |
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) |
bit | description |
---|---|
0 | 1=recalibrate drive 0 |
1 | 1=recalibrate drive 1 |
2 | 1=recalibrate drive 2 |
3 | 1=recalibrate drive 3 |
4-6 | unused |
7 | 1=working interrupt flag |
bit | description |
---|---|
0 | 1=drive 0 motor on |
1 | 1=drive 1 motor on |
2 | 1=drive 2 motor on |
3 | 1=drive 3 motor on |
4-6 | unused |
7 | 1=write operation |
bit | description |
---|---|
0 | invalid diskette command |
1 | diskette address mark not found |
2 | sector not found |
3 | diskette DMA error |
4 | CRC check / data error |
5 | diskette controller failure |
6 | seek to track failed |
7 | diskette time-out |
Address | Size | Description |
---|---|---|
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 |
bit | description |
---|---|
0 | 1=alphanumeric cursor emulation enabled |
1 | 1=video subsystem attached to monochrome |
2 | reserved |
3 | 1=video subsystem is inactive |
4 | reserved |
5-6 | video RAM: 00-64Kb; 10-192Kb; 01-128Kb; 11-256Kb |
7 | video mode number passed to INT 10, function 0 |
bit | description |
---|---|
0 | EGA SW1 config (1=off) |
1 | EGA SW2 config (1=off) |
2 | EGA SW3 config (1=off) |
3 | EGA SW4 config (1=off) |
4 | Input FEAT0 (ISR0 bit 5) after output on FCR0 |
5 | Input FEAT0 (ISR0 bit 6) after output on FCR0 |
6 | Input FEAT1 (ISR0 bit 5) after output on FCR1 |
7 | Input FEAT1 (ISR0 bit 6) after output on FCR1 |
bit | description |
---|---|
0 | 1=VGA is active |
1 | 1=gray scale is enabled |
2 | 1=using monochrome monitor |
3 | 1=default palette loading is disabled |
4 | see table below |
5 | reserved |
6 | see table below |
7 | alphanumeric scan lines (see table below) |
bit 7 | bit 4 | Scan Lines |
---|---|---|
0 | 0 | 350 line mode |
0 | 1 | 400 line mode |
1 | 0 | 200 line mode |
1 | 1 | reserved |
00 | dword | Video Parameter Table pointer |
04 | dword | Dynamic Parameter Save Area pointer (EGA, VGA) |
08 | dword | Alphanumeric Character Set Override pointer |
0C | dword | Graphics Character Set Override pointer |
10 | dword | Secondary Save Pointer Table pointer (VGA) |
14 | dword | reserved, set to 0000:0000 |
18 | dword | reserved, set to 0000:0000 |
00 | byte | number of displayed character columns |
01 | byte | number of displayed screen rows minus 1 |
02 | byte | character matrix height in points |
03 | word | video buffer size in bytes |
05 | dword | contents of sequencer registers 1-4 |
09 | byte | misc. output register values |
0A | 25 bytes | contents of CRTC registers 0-18h |
23 | 20 bytes | contents of attribute controller regs 0-13h |
37 | 9 bytes | contents of graphics controller regs 0-8 |
value | description |
---|---|
1234h | Bypass memory tests & CRT initialization |
4321h | Preserve memory |
5678h | System suspend |
9ABCh | Manufacturer test |
ABCDh | Convertible POST loop |
????h | many other values are used during POST |
00 | 16 bytes | contents of graphics controller pallette regs |
10 | byte | contents of graphics controller overscan reg |
11 | 239 bytes | reserved |
Alphanumeric Character Set Override
00 | byte | length of each character definition in bytes |
01 | byte | character generator RAM bank |
02 | word | count of characters defined |
04 | word | first character code in table |
06 | dword | pointer to character font definition table |
0A | byte | number of character rows displayed |
0B | nbytes | array of applicable video modes |
0B+n | byte | FFh end of mode list marker |
00 | byte | count of displayed character rows |
01 | word | length of each character definition in bytes |
03 | dword | pointer to character font definition table |
07 | nbytes | array of applicable video modes |
07+n | byte | FFh end of mode list marker |
00 | word | length of table in bytes |
02 | dword | pointer to display combination code table |
06 | dword | pointer to secondary alphanumeric char set override |
0A | dword | pointer to user palette profile table (VGA) |
0E | dword | reserved |
12 | dword | reserved |
16 | dword | reserved |
00 | byte | number of table entries |
01 | byte | DCC table version number |
02 | byte | maximum display type code |
03 | byte | reserved |
04 | n words | array valid display combinations: |
0,0 | entry | 0 | no display |
0,1 | entry | 1 | MDPA |
0,2 | entry | 2 | CGA |
2,1 | entry | 3 | MDPA + CGA |
0,4 | entry | 4 | EGA |
4,1 | entry | 5 | EGA + MDPA |
0,5 | entry | 6 | MEGA |
2,5 | entry | 7 | MEGA + CGA |
0,6 | entry | 8 | PGC |
1,6 | entry | 9 | PGC + MDPA |
5,6 | entry | 10 | PGC + MEGA |
0,8 | entry | 11 | CVGA |
1,8 | entry | 12 | CVGA + MDPA |
0,7 | entry | 13 | MVGA |
2,7 | entry | 14 | MVGA + CGA |
2,6 | entry | 15 | MVGA + PGC |
Secondary Alpha Mode Auxillary Character Generator Table
00 | byte | bytes per character |
01 | byte | block to load |
02 | byte | reserved |
03 | dword | font table pointer |
07 | nbytes | array of mode values for this font |
07+n | byte | FFh end of mode list marker |
00 | byte | 1 - enable underlining in all alphanumeric modes 0 - enable underlining in monochrome alpha modes -1 - disable underlining in all alpha modes |
01 | byte | reserved |
02 | word | reserved |
04 | word | count of attribute controller regs in table |
06 | word | first attribute controller register number |
08 | dword | pointer to attribute controller reg table |
0C | word | count of video DAC color registers in table |
0E | word | first video DAC color register number |
10 | dword | video DAC color register table pointer |
14 | nbytes | array of applicable video modes for this font |
14+n | byte | FFh end of video mode list marker |
Address | Size | Description |
---|---|---|
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 | |
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 |
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+) |
40:8B | byte | Last diskette data rate selected |
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 |
40:94 | byte | Track currently seeked to on drive 0 |
40:95 | byte | Track currently seeked to on drive 1 |
40:96 | byte | Keyboard mode/type |
40:97 | byte | Keyboard LED flags |
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 |
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) |
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 |
40:8B | byte | Last diskette data rate selected |
|7|6|5|4|3|2|1|0| last diskette data rate selected | | | | `--------- reserved | | `------------ last floppy drive step rate selected `-------------- last floppy data rate selected
Data | Rate | Step Rate | |
---|---|---|---|
00 | 500K bps | 00 | step rate time of 0C |
01 | 300K bps | 01 | step rate time of 0D |
10 | 250K bps | 10 | step rate time of 0A |
11 | reserved | 11 | reserved |
Address | Size | Description |
---|---|---|
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 |
|7|6|5|4|3|2|1|0| drive media state (4 copies) | | | | | `------- drive/media state (see below) | | | | `------- reserved | | | `------- 1=media/drive established | | `------- double stepping required `--------- data rate: 00=500K bps 01=300K bps 10=250K bps 11=reserved
Bits 210 | Drive Media State |
---|---|
000 | 360Kb diskette/360Kb drive not established |
001 | 360Kb diskette/1.2Mb drive not established |
010 | 1.2Mb diskette/1.2Mb drive not established |
011 | 360Kb diskette/360Kb drive established |
100 | 360Kb diskette/1.2Mb drive established |
101 | 1.2Mb diskette/1.2Mb drive established |
110 | Reserved |
111 | None of the above |
Address | Size | Description |
---|---|---|
40:94 | byte | Track currently seeked to on drive 0 |
40:95 | byte | Track currently seeked to on drive 1 |
40:96 | byte | Keyboard mode/type |
|7|6|5|4|3|2|1|0| Keyboard mode/type | | | | | | | `--- last code was the E1 hidden code | | | | | | `---- last code was the E0 hidden code | | | | | `----- right CTRL key depressed | | | | `------ right ALT key depressed | | | `------- 101/102 enhanced keyboard installed | | `-------- force num-lock if Rd ID & KBX | `--------- last char was first ID char `---------- read ID in process
Address | Size | Description |
---|---|---|
40:97 | byte | Keyboard LED flags |
|7|6|5|4|3|2|1|0| Keyboard LED flags | | | | | | | `--- scroll lock indicator | | | | | | `---- num-lock indicator | | | | | `----- caps-lock indicator | | | | `------ circus system indicator | | | `------- ACK received | | `-------- re-send received flag | `--------- mode indicator update `---------- keyboard transmit error flag
Address | Size | Description |
---|---|---|
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 |
|7|6|5|4|3|2|1|0| INT 15,86 RTC wait function flag | | | | | | | `--- 1= wait pending | `-------------- not used `--------------- 1=INT 15,86 wait time elapsed
Address | Size | Description |
---|---|---|
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 | 16 bytes | NMI scan code buffer (convertible) |
40:CE | word | Day counter (convertible and after) |
40:F0 | 16 bytes | Intra-Applications Communications Area (IBM Technical Reference incorrectly locates this at 50:F0-50:FF) |
Address | Size | Description |
---|---|---|
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 | 10 bytes | 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 | 14 bytes | DOS diskette initialization table (INT 1E) |
50:30 | 4 bytes | MODE command |
70:00 | I/O drivers from IO.SYS/IBMBIO.COM |
The following map varies in size and locus
Address | Size | Description |
---|---|---|
07C0:0 | Boot code is loaded here at startup (31k mark) | |
A000:0 | EGA/VGA RAM for graphics display mode 0Dh & above | |
B000:0 | MDA RAM, Hercules graphics display RAM | |
B800:0 | CGA display RAM | |
C000:0 | EGA/VGA BIOS ROM (thru C7FF) | |
C400:0 | Video adapter ROM space | |
C600:0 | 256 bytes | PGA communication area |
C800:0 | 16 Kb | Hard disk adapter BIOS ROM |
C800:5 | XT Hard disk ROM format, AH=Drive, AL=Interleave | |
D000:0 | 32 Kb | Cluster adapter BIOS ROM |
D800:0 | PCjr conventionalsoftware cartridge address | |
E000:0 | 64 Kb | Expansion ROM space (hardwired on AT+) |
128 Kb | PS/2 System ROM (thru F000) | |
F000:0 | System monitor ROM PCjr: software cartridge override address |
|
F400:0 | System expansion ROMs | |
F600:0 | IBM ROM BASIC (AT) | |
F800:0 | PCjr software cartridge override address | |
FC00:0 | BIOS ROM | |
FF00:0 | System ROM | |
FFA6:E | ROM graphics character table | |
FFFF:0 | ROM bootstrap code | |
FFFF:5 | 8 bytes | ROM date (not applicable for all clones) |
FFFF:E | byte | ROM machine id (see MACHINE ID) |