DOS reference chapter 2 of 9
** Programmer's Technical Reference for MSDOS and the IBM PC **
USA copyright TXG 392-616 ALL RIGHTS RESERVED
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ DOSREF (tm) ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
ISBN 1-878830-02-3 (disk-based text)
Copyright (c) 1987, 1991 Dave Williams
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Shareware Version, 12/20/91 ³
³ Please Register Your Copy ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
C H A P T E R T W O
CPU Port Assignments, System Memory Map, BIOS Data Area, Interrupts 00h to 09h
C O N T E N T S
Introduction .......................................................... 2**1
System Memory Map ..................................................... 2**2
A Brief Guide to Current Memory Terminology ........................... 2**3
PC Port Assignment .................................................... 2**4
Reserved Memory Locations ............................................. 2**5
Absolute Addresses .................................................... 2**6
The IBM PC System Interrupts (Overview) ............................... 2**7
Quick Chart of Interrupts 00h-0FFh .................................... 2**8
The IBM-PC System Interrupts 00h-0Fh (in detail) ...................... 2**9
Introduction .......................................................... 2**1
For consistency in this reference, all locations and offsets are in
hexadecimal unless otherwise specified. All hex numbers are prefaced with a
leading zero if they begin with an alphabetic character, and are terminated
with a lowercase H (h). The formats vary according to common usage.
System Memory Map ..................................................... 2**2
The IBM PC handles its address space in 64k segments, divided into 16k
fractions and then further as necessary.
ÚÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³start ³start³end ³ ³
³addr. ³addr.³addr.³ usage ³
³(dec) ³ (hex) ³ ³
ÃÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ *640k RAM Area* ³
ÃÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 0k ³ ³ start of RAM, first K is interrupt vector table ³
³ 16k ³00000-03FFF³ PC-0 system board RAM ends ³
³ 32k ³04000-07FFF³ ³
³ 48k ³08000-0BFFF³ ³
ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 64k ³10000-13FFF³ PC-1 system board RAM ends ³
³ 80k ³14000-17FFF³ ³
³ 96k ³18000-1BFFF³ ³
³ 112k ³1C000-1FFFF³ ³
ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 128k ³20000-23FFF³ ³
³ 144k ³24000-27FFF³ ³
³ 160k ³28000-2BFFF³ ³
³ 176k ³2C000-2FFFF³ ³
ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 192k ³30000-33FFF³ ³
³ 208k ³34000-37FFF³ ³
³ 224k ³38000-3BFFF³ ³
³ 240k ³3C000-3FFFF³ ³
ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 256k ³40000-43FFF³ PC-2 system board RAM ends ³
³ 272k ³44000-47FFF³ ³
³ 288k ³48000-4BFFF³ ³
³ 304k ³4C000-4FFFF³ ³
ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 320k ³50000-53FFF³ ³
³ 336k ³54000-57FFF³ ³
³ 352k ³58000-5BFFF³ ³
³ 368k ³5C000-5FFFF³ ³
ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 384k ³60000-63FFF³ ³
³ 400k ³64000-67FFF³ ³
³ 416k ³68000-6BFFF³ ³
³ 432k ³6C000-6FFFF³ ³
ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 448k ³70000-73FFF³ ³
³ 464k ³74000-77FFF³ ³
³ 480k ³78000-7BFFF³ ³
³ 496k ³7C000-7FFFF³ ³
ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 512k ³80000-83FFF³ ³
³ 528k ³84000-87FFF³ ³
³ 544k ³88000-8BFFF³ the original IBM PC-1 BIOS limited memory to 544k ³
³ 560k ³8C000-8FFFF³ ³
ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 576k ³90000-93FFF³ ³
³ 592k ³94000-97FFF³ ³
³ 609k ³98000-9BFFF³ ³
³ 624k ³9C000-9FFFF³ to 640k (top of RAM address space) ³
ÃÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³A0000 ***** 64k ***** EGA/VGA starting address ³
³A0000 ***** 64k ***** Toshiba 1000 DOS ROM (MS-DOS 2.11V) ³
ÃÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 640k ³A0000-A95B0³ MCGA 320x200 256 color video buffer ³
³ ³ -AF8C0³ MCGA 640x480 2 color video buffer ³
³ ³ -A3FFF³ ³
³ 656k ³A4000-A7FFF³ ³
³ 672k ³A8000-ABFFF³ this 64k segment may be used for contiguous DOS ³
³ 688k ³AC000-AFFFF³ RAM with appropriate hardware and software ³
ÃÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³B0000 ***** 64k ***** mono and CGA address ³
ÃÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 704k ³B0000-B3FFF³ 4k monochrome display | The PCjr and early Tandy 1000³
³ 720k ³B4000-B7FFF³ | BIOS revector direct write to³
³ 736k ³B8000-BBFFF³ 16k CGA uses | the B8 area to the Video Gate³
³ 756k ³BC000-BFFFF³ | Array and reserved system RAM³
ÃÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³C0000 ***** 64k *************** expansion ROM ³
ÃÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 768k ³C0000-C3FFF³ 16k EGA BIOS C000:001E EGA BIOS signature (letters IBM ³
³ 784k ³C4000-C5FFF³ ³
³ ³C6000-C63FF³ 256 bytes Professional Graphics Display comm. area ³
³ ³C6400-C7FFF³ ³
³ 800k ³C8000-CBFFF³ 16k hard disk controller BIOS, drive 0 default ³
³ ³CA000 ³ some 2nd floppy (high density) controller BIOS ³
³ 816k ³CC000-CDFFF³ 8k IBM PC Network NETBIOS ³
³ ³CE000-CFFFF³ ³
ÃÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³D0000 ***** 64k ***** expansion ROM ³
ÃÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 832k ³D0000-D7FFF³ 32k IBM Cluster Adapter | PCjr first ROM cartridge ³
³ ³ DA000³ voice communications | address area. ³
³ 848k ³D4000-D7FFF³ | Common expanded memory board ³
³ 864k ³D8000-DBFFF³ | paging area. ³
³ 880k ³DC000-DFFFF³ | ³
³ ³DE000 ³ TI Pro default video buffer, 4k in length ³
ÃÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³E0000 ***** 64k ***** expansion ROM ³
ÃÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 896k ³E0000-E3FFF³ | PCjr second ROM cartridge ³
³ 912k ³E4000-E7FFF³ | address area ³
³ 928k ³E8000-EBFFF³ | ³
³ 944k ³EC000-EFFFF³ | spare ROM sockets on AT ³
ÃÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³F0000 ***** 64k ***** system ³
ÃÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 960k ³F0000-F3FFF³ reserved by IBM | cartridge address ³
³ 976k ³F4000- ³ | area (PCjr cartridge ³
³ ³F6000 ³ ROM BASIC Begins | BASIC) ³
³ 992k ³F8000-FB000³ | ³
³ 1008k³FC000-FFFFF³ ROM BASIC and original | ³
³ ³ ³ BIOS (Compatibility BIOS | ³
³ ³ ³ in PS/2) | ³
³ 1024k³ FFFFF³ end of memory (1024k) for 8088 machines ³
ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÁÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 384k ³100000-15FFFF³ 80286/AT extended memory area, 1Mb motherboard ³
³ 15Mb ³100000-FFFFFF³ 80286/AT extended memory address space ³
³ 15Mb ³160000-FDFFFF³ Micro Channel RAM expansion (15Mb extended memory) ³
³ 128k ³FE0000-FFFFFF³ system board ROM (PS/2 Advanced BIOS) ³
ÃÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 64k ³C0000000-C000FFFF³ Weitek "Abacus" math coprocessor memory-mapped I/O ³
ÀÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Note that the ROM BIOS has a duplicated address space which causes it to
"appear" both at the end of the 1 megabyte real mode space and at the end of
the 16 megabyte protected mode space. The addresses from 0E0000 to 0FFFFF are
equal to 0FE0000 to 0FFFFFF. This is necessary due to differences in the memory
addressing between Real and Protected Modes.
A Brief Guide to Current Memory Terminology ........................... 2**3
LOW MEMORY - 0000h to around 0:5(something), comprising the 80x8x interrupt
vector table, the BIOS Data Area, DOS Data Area, etc.
CONVENTIONAL MEMORY - from the end of low memory to the beginning of the
"reserved by IBM" A000 segment (640k).
HIGH MEMORY - originally noncontiguous RAM stuffed into the "reserved for
ROM expansion" areas, typically segments D000 and E000. DOS
normally can't access this memory without a driver of some
sort, but it's easy to put RAMdisks and stuff in there.
CONVENTIONAL MEMORY - extra RAM stuck at A000, assuming the machine already
has 640k, appears as conventional memory accessible to DOS
and applications. IBM clones can typically add 64k before
bumping into a mono card or 96k before hitting a color card.
This address is part of the EGA/VGA video RAM area and most
EGA cards don't like system memory at A000.
EXPANDED MEMORY - LIM 3.2, LIM 4.0, or EEMS 3.2 bank switched memory. A
RAM "window" allows an app to save a block of RAM to an expansion
board. The window size and location varies according to the
EMS standard being used.
EXTENDED MEMORY - this is the "native mode" address space of the 80286 and
later chips. The "real mode", or 8088 addressing scheme,
sees RAM as a collection of segments and offsets with a limit
on segment size. "Protected mode" addressing uses a flat linear
addressing scheme. 8088 and 80188 chips do not have extended
memory.
HIGH MEMORY - by fiddling a bit with the segment/offset stuff, you can
get an extra block of addressable 8088-mode memory just over
the 1 meg address space. Microsoft issued their "HMA" (High
Memory Area) standard to try to standardize use of this block.
Though it really is "high" memory, "high" had for many years
referred to memory between 640k and 1mb. This creates more
confusion for new programmers.
EMS - this is expanded memory as described above
XMS - Microsoft is pushing an "Extended Memory Standard" which defines
a page-switching scheme much like EMS. The only real difference is
that XMS uses protected-mode RAM instead of a special paged RAM board.
XMS - some severely brain-damaged jerk at IBM issued documentation for some
IBM *EMS* boards referring to the boards as *XMS*. This was a classic
blunder, and now some IBM-followers are picking up the aberrant
terminology. This is guaranteed to confuse some people. To make it
simple, if it needs an expansion board, it is EMS no matter what the
vendor calls it.
PC Port Assignment .................................................... 2**4
These are functions common across the IBM range. The PCjr, PC-AT, PC
Convertible and PS/2 (both buses) have enhancements. In some cases, the
AT and PS/2 series ignore, duplicate, or reassign ports arbitrarily. If
your code incorporates specific port addresses for video or system board
control it would be wise to have your application determine the machine
type and video adapter and address the ports as required.
hex address Function Models
PCjr|PC|XT|AT|CVT|M30|PS2
0000-000F 8237 DMA controller PC
0010-001F 8237 DMA controller AT PS2
0020-0027 8259A interrupt controller
0020-002F IOSGA interrupt function PS2
0020-003F 8259A interrupt controller (AT)
0020-0021 interrupt controller 1, 8259A PC AT PS2
0040-0043 programmable timer 8253 PC
0040-0047 programmable timers PS2
0040-005F 8253-5 programmable timers AT
note 1) 0041 was memory refresh in PCs. Not used in PS/2.
2) A few early 80386 machines used static RAM and did
not use refresh at all. The PCjr refreshes by the
video vertical retrace signal.
0060-0063 keyboard controller 8255A PC
0060-006F 8042 keyboard controller AT
0060 IOSGA keyboard input port PS2
0061 speaker PCjr PC XT AT CVT
0061 IOSGA speaker control M30 PS2
0061 On some clones, setting or clearing bit 2 controls Turbo mode
0061 Toshiba 1000 - system command
0062 IOSGA configuration control M30 PS2
0062 Toshiba 1000 - System Status, port C
0063 SSGA, undocumented PS2
0063 Toshiba 1000 - mode set
0064 keyboard auxiliary device PS2
0065-006A SSGA, undocumented PS2
006B SSGA, RAM enable/remap PS2
006C-006F SSGA, undocumented PS2
0070 AT CMOS write internal register
0071 AT CMOS read internal register
0070-0071 CMOS real-time clock, NMI mask PS2
0070-007F CMOS real-time clock, NMI mask AT
0074-0076 reserved PS2
0800-008F SSGA DMA page registers PS2
0080-009F DMA page registers, 74LS612 AT
0090 central arbitration control port (Micro Channel)
0091 card selected feedback (Micro Channel)
0092 system control port A (Micro Channel)
0093 reserved (Micro Channel)
0094 system board setup (Micro Channel)
0096 POS "CD SETUP" selector (Micro Channel)
00A0-00A1 Interrupt controller 2, 8259A AT PS2
00A0-00AF IOSGA NMI mask register PS2
00B0-00BF realtime clock/calendar, (undocumented) PS2
00C0-00DF reserved PCjr PC XT AT CVT M30
00C0-00CF DOS ROM register, Toshiba 1000
00D0-00EF "special" register, Toshiba 1000
00C0 0C1 key register, Toshiba 1000
00C1 keyboard transfer register, Toshiba 1000
00C2 keyboard receive register, Toshiba 1000
00C3 keyboard status register, Toshiba 1000
00C8 DOS ROM page register, Toshiba 1000
00E0 CPU speed control, Toshiba 1000
00E1 keyboard status/0E2 key register, Toshiba 1000
00E2 work register, Toshiba 1000
00E3 0E4 key register, Toshiba 1000
00E4 system control register 0, Toshiba 1000
00E4 Weitek ABACUS NDP - bit 0=1, ABACUS is present
00E5 0E6 key register, Toshiba 1000
00E6 system control register 1, Toshiba 1000
00EE EMS unit index, Toshiba 1000
00EF EMS unit data, Toshiba 1000
00C0-00DF DMA controller 2, 8237A-5 AT PS2
00E0-00EF realtime clock/calendar (undocumented) M30 PS2
00F0-00FF PS/2 math coprocessor I/O (Model 50+) (diskette IO on PCjr)
0100-0101 PS/2 POS adapter ID response (Micro Channel)
0102-0107 PS/2 POS adapter configuration response (Micro Channel)
01F0-01F8 hard disk AT PS2
0200-0201 game-control adapter (joystick)
0200-020F game controller PC AT
0208-0209 Chips & Technology CS8221 chipset default EMS ports
alternate addresses: 218h, 258h, 268h, 2A8h, 2B8h, 2E8h
0208-020F Toshiba 1000 - EMS unit I/O #1
020C-020D reserved by IBM
0210-0217 expansion box (PC, XT)
0218-021F Toshiba 1000 - EMS unit I/O #2
021F reserved by IBM
0258-025F Toshiba 1000 - EMS unit I/O #3
0258-0259 LIM EMS 3.1 (not defined in 3.2+)
0268-026F Toshiba 1000 - EMS unit I/O #4
0278-027F parallel printer port 2 AT
0278-027B parallel printer port 3 PS2
02A2 clock chip in early Sperry PCs
02A8-02AF Toshiba 1000 - EMS unit I/O #5
02B8-02BF Toshiba 1000 - EMS unit I/O #6
02B0-02DF EGA (alternate) PC AT
02C0-02DF Toshiba 1000 - realtime clock
02E1 GPIB (adapter 0) AT
02E2-02E3 data acquisition (adapter 0) AT
02E8 "industry standard" COM4
02E8-02EF Toshiba 1000 - EMS unit I/O #7
02F8-02FF serial communications (COM2) PC AT PS2
0300-031F prototype card PC AT
0300-031F Leading Edge Model D clock -------------------
0320-032F hard disk controller PC
0320 Perstor HD controller, primary -------------------
0324 Perstor HD controller, secondary -------------------
0340 Sony CD-ROM -------------------
0348-0357 DCA 3278
0360-0367 PC Network (low address)
0368-036F PC Network (high address) AT
0370 Colorado Memory external tape backup control port -------
some "second controller" floppy cards -------------------
0378-037F parallel printer port PC AT
0378-037B parallel printer port PS2
0380-038F Eicon Technology Network Adapter (X.25) board (default)
0380-038F SDLC, bi-synchronous 2 PC AT
0380-0389 BSC communications (alternate) PC
0390-039F Eicon Technology Network Adapter (X.25) board (alternate)
0390-0393 cluster (adapter 0) PC AT
03A0-03A9 BSC communications (primary) PC AT
03B0-03BF monochrome/parallel printer adapter PC AT
03B4-03B5 video subsystem PS2
03BA video subsystem PS2
03BC-03BF parallel printer port 1 PS2
03C0-03CF Enhanced Graphics Adapter
03C0-03DA video subsystem and DAC PS2
03DA video status register AT&T 6300, Olivetti PC
03D0-03DF CGA, MCGA, VGA adapter control
03DE video mode selector register AT&T 6300, Olivetti PC
03E8h "industry standard" COM3
03F0-03F7 floppy disk controller PC AT PS2
03F0 Colorado Memory internal tape backup control port -------
03F2 DTK high-density XT floppy controller (output only)
03F5 DTK high-density XT floppy controller
03F8-03FF serial communications (COM1) PC AT PS2
06E2-06E3 data acquisition (adapter 1) AT
0790-0793 cluster (adapter 1) PC AT
0878 Compaq 386SX VGA BIOS relocation AT
0AE2-0AE3 data acquisition (adapter 2) AT
0B90-0B93 cluster (adapter 2) PC AT
0EE2-0EE3 data acquisition (adapter 3) AT
1390-1393 cluster (adapter 3) PC AT
22E1 GPIB (adapter 1)
2390-2393 cluster (adapter 4) PC AT
4258 LIM EMS 3.1 (not defined in 3.2+) -------------------
42E1 GPIB (adapter 2) AT
62E1 GPIB (adapter 3) AT
8258 LIM EMS 3.1 (not defined in 3.2+) -------------------
82E1 GPIB (adapter 4) AT
A2E1 GPIB (adapter 5) AT
C258 LIM EMS 3.1 (not defined in 3.2+) -------------------
C2E1 GPIB (adapter 6) AT
E2E1 GPIB (adapter 7) AT
note 1) IOSGA = I/O Support Gate Array
SSGA = System Support Gate Array
2) I/O Addresses, hex 000 to 0FF, are reserved for the system board I/O.
Hex 100 to 3FF are available on the I/O channel.
3) These are the addresses decoded by the current set of adapter cards.
IBM may use any of the unlisted addresses for future use.
4) SDLC Communication and Secondary Binary Synchronous Communications
cannot be used together because their port addresses overlap.
Reserved Memory Locations ............................................. 2**5
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ 000-3FF - 1k DOS interrupt vector table, 4 byte vectors for ints 00h-0FFh.
³ 30:00 - used as a stack area during POST and bootstrap routines. This
³to 3F:FF stack area may be revectored by an application program.
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ ** The BIOS Data Area ** addresses from 400h to 4FFh
ÃÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³addr.³ size ³ description
ÃÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³40:00³ word ³ COM1 port address | These addresses are zeroed out in the
³40:02³ word ³ COM2 port address | OS/2 DOS Compatibility Box if any of
³40:04³ word ³ COM3 port address | the OS/2 COMxx.SYS drivers are loaded.
³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 (not valid in PS/2 machines)
³40:0E³ word ³ PS/2 pointer to 1k extended BIOS Data Area at top of RAM
³40:10³ word ³ equipment flag (see int 11h)
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ bits:
³ 0 0 no floppy drive present
³ 1 if floppy drive present (see bits 6&7)
³ 1 0 no math coprocessor installed
³ 1 if 80x87 installed (not valid in PCjr)
³ 2,3 system board RAM (not used on AT or PS/2)
³ 0,0 16k 0,1 32k
³ 1,0 48k 1,1 64k
³ 4,5 initial video mode
³ 0,0 no video adapter
³ 0,1 40 column color (PCjr default)
³ 1,0 80 column color
³ 1,1 MDA
³ 6,7 number of diskette drives
³ 0,0 1 drive 0,1 2 drives
³ 1,0 3 drives 1,1 4 drives
³ 8 0 DMA present
³ 1 DMA not present (PCjr, Tandy 1400, Sanyo 55x)
³ 9,A,B number of RS232 serial ports
³ C game adapter (joystick)
³ 0 no game adapter
³ 1 if game adapter
³ D serial printer (PCjr only)
³ 0 no printer
³ 1 serial printer present
ÚÄÄÄÄÄÄÙ E,F number of parallel printers installed
³note 1) The IBM PC and AT store the settings of the system board
ÀÄÄÄ¿ switches or CMOS RAM setup information (as obtained by the BIOS
³ in the Power-On Self Test (POST)) at addresses 40:10h and
³ 40:13h. 00000001b indicates "on", 00000000b is "off".
ÚÄÄÄÄÄÂÄÄÄÄÁÄÄ¿
³40:12³ byte ³ reserved (PC, AT)
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ number of errors detected by infrared keyboard link (PCjr)
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ POST status (Convertible)
³40:13³ word ³ availible memory size in Kbytes (less display RAM in PCjr)
ÃÄÄÄÄÄÅÄÄÄÄÄÄÄ´ this is the value returned by int 12h
³40:15³ word ³ reserved
³40:17³ byte ³ keyboard flag byte 0 (see int 9h)
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ bit 7 insert mode on 3 alt pressed
³ 6 capslock on 2 ctrl pressed
³ 5 numlock on 1 left shift pressed
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 4 scrollock on 0 right shift pressed
³40:18³ byte ³ keyboard flag byte 1 (see int 9h)
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ bit 7 insert pressed 3 ctrl-numlock (pause) toggled
³ 6 capslock pressed 2 PCjr keyboard click active
³ 5 numlock pressed 1 PCjr ctrl-alt-capslock held
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 4 scrollock pressed 0
³40:19³ byte ³ storage for alternate keypad entry (not normally used)
³40:1A³ word ³ pointer to keyboard buffer head character
³40:1C³ word ³ pointer to keyboard buffer tail character
³40:1E³32bytes³ 16 2-byte entries for keyboard circular buffer, read by int 16h
³40:3E³ byte ³ drive seek status - if bit=0, next seek will recalibrate by
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ repositioning to Track 0.
³ bit 3 drive D bit 2 drive C
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 1 drive B 0 drive A
³40:3F³ byte ³ diskette motor status (bit set to indicate condition)
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ bit 7 write in progress 3 motor on (floppy 3)
³ 6 2 motor on (floppy 2)
³ 5 1 B: motor on (floppy 1)
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 4 0 A: motor on (floppy 0)
³40:40³ byte ³ motor off counter
³ ³ ³ starts at 37 and is decremented 1 by each system clock tick.
³ ³ ³ motor is shut off when count = 0.
³40:41³ byte ³ status of last diskette operation where:
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ bit 7 timeout failure 3 DMA overrun
³ 6 seek failure 2 sector not found
³ 5 controller failure 1 address not found
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 4 CRC failure 0 bad command
³40:42³7 bytes³ NEC floppy controller chip status
³40:49³ byte ³ Video Control Data Area 1 from 0040:0049 through 0040:0066
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ current CRT mode (hex value)
³ 00h 40x25 BW (CGA) 01h 40x25 color (CGA)
³ 02h 80x25 BW (CGA) 03h 80x25 color (CGA)
³ 04h 320x200 color (CGA) 05h 320x200 BW (CGA)
³ 06h 640x200 BW (CGA) 07h monochrome (MDA)
³extended video modes (EGA/MCGA/VGA or other)
³ 08h lores,16 color 09h med res,16 color
³ 0Ah hires,4 color 0Bh n/a
³ 0Ch med res,16 color 0Dh hires,16 color
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 0Eh hires,4 color 0Fh hires,64 color
³40:4A³ word ³ number of columns on screen, coded as hex number of columns
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ 20 col = 14h (video mode 8, low res 160x200 CGA graphics)
³ 40 col = 28h
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 80 col = 46h
³40:4C³ word ³ screen buffer length in bytes
ÃÄÄÄÄÄÅÄÄÄÄÄÄÄ´(number of bytes used per screen page, varies with video mode)
³40:4E³ word ³ current screen buffer starting offset (active page)
³40:50³8 words³ cursor position pages 1-8
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ the first byte of each word gives the column (0-19, 39, or 79)
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ the second byte gives the row (0-24)
³40:60³ byte ³ end line for cursor (normally 1)
³40:61³ byte ³ start line for cursor (normally 0)
³40:62³ byte ³ current video page being displayed (0-7)
³40:63³ word ³ base port address of 6845 CRT controller or equivalent
ÃÄÄÄÄÄÅÄÄÄÄÄÄÄ´ for active display 3B4h=mono, 3D4h=color
³40:65³ byte ³ current setting of the CRT mode register
³40:66³ byte ³ current palette mask setting (CGA)
³40:67³5 bytes³ temporary storage for SS:SP during shutdown (cassette interface)
³40:6C³ word ³ timer counter low word
³40:6E³ word ³ timer counter high word
³40:69³ byte ³ HD_INSTALL (Columbia PCs) (not valid on most clone computers)
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ bit 0 0 8 inch external floppy drives
³ 1 5-1/4 external floppy drives
³ 1,2 highest drive address which int 13 will accept
³ (since the floppy drives are assigned 0-3,subtract
³ 3 to obtain the number of hard disks installed)
³ 4,5 # of hard disks connected to expansion controller
³ 6,7 # of hard disks on motherboard controller
³ (if bit 6 or 7 = 1, no A: floppy is present and
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ the maximum number of floppies from int 11 is 3)
³40:70³ byte ³ 24 hour timer overflow 1 if timer went past midnight
ÃÄÄÄÄÄÅÄÄÄÄÄÄÄ´ it is reset to 0 each time it is read by int 1Ah
³40:71³ byte ³ BIOS break flag (bit 7 = 1 means break key hit)
³40:72³ word ³ reset flag
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ PCjr keeps 1234h here for softboot when a cartridge is installed
³ bits 1234h = soft reset, memory check will be bypassed
³ 4321h = preserve memory (PS/2 only)
³ 5678h = system suspended (Convertible)
³ 9ABCh = manufacturing test mode (Convertible)
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ ABCDh = system POST loop mode (Convertible)
³40:74³ byte ³ status of last hard disk operation ; PCjr special disk control
³40:75³ byte ³ # of hard disks attached (0-2) ; PCjr special disk control
³40:76³ byte ³ HD control byte; temp holding area for 6th param table entry
³40:77³ byte ³ port offset to current hd adapter ; PCjr special disk control
³40:78³4 bytes³ timeout value for LPT1,LPT2,LPT3,LPT4
³40:7C³4 bytes³ timeout value for COM1,COM2,COM3,COM4 (0-0FFh secs, default 1)
³40:80³ word ³ pointer to start of circular keyboard buffer, default 03:1E
³40:82³ word ³ pointer to end of circular keyboard buffer, default 03:3E
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ note: early Zenith Z183 BIOS set these pointers to zero and
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ ignored them.
³40:84³ .... ³ Video Control Data Area 2, 0040:0084 through 0040:008A
³40:84³ byte ³ rows on the screen minus 1 (EGA only)
³40:84³ byte ³ PCjr interrupt flag; timer channel 0 (used by POST)
³40:85³ word ³ bytes per character (EGA only)
³40:85³2 bytes³ (PCjr only) typamatic character to repeat
³40:86³2 bytes³ (PCjr only) typamatic initial delay
³40:87³ byte ³ mode options (EGA only)
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ bit 0 0 cursor emulation in effect
³ 1 no cursor emulation
³ 1 0 EGA is connected to a color display
³ 1 EGA is connected to monochrome TTL display
³ 2 0 wait for vertical retrace (CGA active)
³ 1 don't wait for vertical retrace (EGA or MDA active)
³ 3 0 EGA is the active display,
³ 1 "other" display is active.
³ 4 reserved
³ 5,6 EGA memory size
³ 0,0 64k
³ 0,1 128k
³ 1,0 192k
³ 1,1 256k
³ 7 0 don't clear screen on mode changes
³ 1 if the last "set mode" specified not to clear the
³ video buffer
³ mode combinations:
³ bit3 bit1 Meaning
³ 0 0 EGA is active display and is color
³ 0 1 EGA is active display and is monochrome
³ 1 0 EGA is not active, a mono card is active
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 1 1 EGA is not active, a CGA is active
³40:87³ byte ³ (PCjr only) current Fn key code
ÃÄÄÄÄÄÅÄÄÄÄÄÄÄ´ 80h bit indicates make/break key code?
³40:88³ byte ³ feature bits and switches (EGA only) 0=on, 1=off
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ bit 0 switch 1
³ 1 switch 2
³ 2 switch 3
³ 3 switch 4
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 4-7 feature bits
³40:88³ byte ³ (PCjr only) special keyboard status byte
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ bit 7 function flag 3 typamatic (0=enable,1=disable)
³ 6 Fn-B break 2 typamatic speed (0=slow,1=fast)
³ 5 Fn pressed 1 extra delay bef.typamatic (0=enable)
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 4 Fn lock 0 write char, typamatic delay elapsed
³40:89³ byte ³ (PCjr) current value of 6845 reg 2 (horizontal synch) used by
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ ctrl-alt-cursor screen positioning routine in ROM
³ (VGA)
³ bit 0 reserved
³ 1 video summing enabled
³ 2 0 for color monitor attached
³ 1 for mono monitor
³ 3 0 for default palette loading enabled
³ 4 0 for 8x8 text font
³ 1 for 8x16 text font
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 5-7 reserved
³40:8A³ byte ³ (PCjr) CRT/CPU Page Register Image, default 3Fh
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ (VGA) Display Combination Code Index. This is the value
³ set/returned by function 1Ah of the Video BIOS. This byte
³ contains an index into the ROM BIOS Display Combination Code
³ table, which is a list of byte pairs that specify valid
³ combinations of one or two video subsystems. Video subsystems
³ are designated by the following values:
³ 00h no display
³ 01h MDA with monochrome display
³ 02h CGA with color display
³ 03h reserved
³ 04h EGA with color display
³ 05h EGA with monochrome display
³ 06h Professional Graphics Adapter
³ 07h VGA with analog monochrome display
³ 08h VGA with analog color display
³ 09h reserved
³ 0Ah MCGA with digital color display
³ 0Bh MCGA with analog monochrome display
³ 0Ch MCGA with analog color display
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 0FFh unrecognized video subsystem
³40:8B³ byte ³ last diskette data rate selected
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ bit 7,6 starting data transfer rate to use
³ 0,0 500 kb/sec
³ 0,1 300 kb/sec
³ 1,0 250 kb/sec
³ 1,1 reserved
³ 5,4 last step rate selected
³ 3 ending data transfer rate to use
³ 2 reserved
³ 1 reserved
³ 0 1 combination floppy/fixed disk controller detected
³ 0 XT floppy only controller (for 360kb drive) detected
³ Data Transfer Rates
³ Kbits/sec Media Drive Sectors/Track
³ 250 360k 360k 9
³ 300 360k 1.2M 9
³ 500 1.2M 1.2M 15
³ 250 720k 720k 9
³ 250 720k 1.4M 9
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 500 1.4M 1.4M 18
³40:8C³ byte ³ hard disk status returned by controller
³40:8D³ byte ³ hard disk error returned by controller
³40:8E³ byte ³ hard disk interrupt (bit 7=working interrupt)
³40:8F³ byte ³ combo_card - status of drives 0 and 1
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ bit 7 reserved
³ 6 drive type determined for drive 1
³ 5 drive multiple data rate capability for drive 1
³ 0 no multiple data rate
³ 1 multiple data rate
³ 4 1 then drive 1 has 80 tracks
³ 0 then drive 1 has 40 tracks
³ 3 reserved
³ 2 drive type determined for drive 0
³ 1 drive multiple data rate capability for drive 0
³ 0 no multiple data rate
³ 1 multiple data rate
³ 0 1 the drive 0 has 80 tracks
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 0 the drive 0 has 40 tracks
³40:90³4 bytes³ media state drive 0, 1, 2, 3
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ floppy_media_state
³ bit 7,6 Data transfer rate
³ 00 - 500 K/sec
³ 01 - 300 K/sec
³ 10 - 250 K/sec
³ 11 - reserved
³ 5 double stepping required
³ 4 media/drive determined
³ 3 reserved
³ 2-0 present state
³ 000 360k in 360k unestablished
³ 001 360k in 1.2M unestablished
³ 010 1.2M in 1.2M unestablished
³ 011 360k in 360k established
³ 100 360k in 1.2M established
³ 101 1.2M in 1.2M established
³ 110 reserved
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 111 none of the above
³40:94³2 bytes³ track currently seeked to drive 0, 1
³40:96³ byte ³ keyboard flag byte 3 (see int 9h)
³40:97³ byte ³ keyboard flag byte 2 (see int 9h)
³40:98³ dword ³ segment:offset pointer to users wait flag
³40:9C³ dword ³ users timeout value in microseconds
³40:A0³ byte ³ real time clock wait function in use
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ bits 7 wait time elapsed and posted flag
³ 6-1 reserved
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 0 int 15h, function 86h (WAIT) has occurred
³40:A1³ byte ³ LAN A DMA channel flags
³40:A2³2 bytes³ status LAN A 0,1
³40:A4³ dword ³ saved hard disk interrupt vector
³40:A8³ dword ³ SAVE_PTR: EGA pointer to table of 7 parameters in segment:
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ offset format. Format of table:
³ D_1 dword pointer to 1472 byte table of 64 video parameters
³ D_2 dword reserved
³ D_3 dword reserved
³ D_4 dword reserved
³ D_5 dword reserved for future use
³ D_6 dword reserved for future use
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ D_7 dword reserved for future use
³40:B0³2 words³ international support (Tandy 1000 TX)
³40:B4³ byte ³ keyboard NMI control flags (Convertible)
³40:B4³ byte ³ monochrome monitor hookup detect (Tandy 1000 TX)
³ ³ ³ 00h not present 0FFh present
³40:B5³ dword ³ keyboard break pending flags (Convertible)
³40:B5³ byte ³ extended equipment detect (5 bits) (Tandy 1000 TX)
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ bit 0 = 0 drive A is 5¬
³ 1 drive A is 3«
³ 1 = 0 drive A is 5¬
³ 1 drive A is 3«
³ 2 = 0 Tandy 1000 keyboard layout
³ 1 IBM keyboard layout
³ 3 = 0 CPU slow mode
³ 1 CPU fast mode
³ 4 = 0 internal color video support enabled
³ 1 internal color video support disabled, external
³ video enabled (chg from mb'd to expansion card)
³ 5 = 0 no external monochrome video installed
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 1 external monochrome video installed
³40:B6³ byte ³ extended equipment detect (1 bit) (Tandy 1000 TX)
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ bit 0 = 0 drive C is 5¬
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 1 drive C is 3«
³40:B9³ byte ³ port 60 single byte queue (Convertible)
³40:BA³ byte ³ scan code of last key (Convertible)
³40:BB³ byte ³ pointer to NMI buffer head (Convertible)
³40:BC³ byte ³ pointer to NMI buffer tail (Convertible)
³40:BD³16bytes³ NMI scan code buffer (Convertible)
³40:CE³ word ³ day counter (Convertible and after)
³ to ³ -04:8F³ end of BIOS Data Area
ÃÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³ ** End of BIOS Data Area **
ÃÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
³40:90³-40:EF ³ reserved by IBM
³40:F0³16bytes³ Inter-Application Communications Area (for use by applications
³40:FF³ ³ to transfer data or parameters to each other)
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ 1) Used by Turbo Power's FMARK (mark memory for TSRs).
³ 2) Used by Norton Utilities' TimeMark to store the time.
³ 3) Used by BRIEF editor.
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´
³50:00³ byte ³ DOS print screen status flag
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ 00h not active or successful completion
³ 01h print screen in progress
ÚÄÄÄÄÄÂÄÄÄÄÄÄÄ´ 0FFh error during print screen operation
³50:01³ ³ Used by BASIC
³50:02-03 ³ PCjr POST and diagnostics work area
³50:04³ byte ³ Single drive mode status byte - not used by AT&T DOS 2.11!
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ 00 logical drive A was last active
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ´ 01 logical drive B was last active
³50:05-0E ³ PCjr POST and diagnostics work area
³50:0F³ ³ BASIC: SHELL flag (set to 02h if there is a current SHELL)
³50:10³ word ³ BASIC: segment address storage (set with DEF SEG)
³50:12³4 bytes³ BASIC: int 1Ch clock interrupt vector segment:offset storage
³50:16³4 bytes³ BASIC: int 23h ctrl-break interrupt segment:offset storage
³50:1A³4 bytes³ BASIC: int 24h disk error int vector segment:offset storage
³50:1B-1F ³ Used by BASIC for dynamic storage
³50:20-21 ³ Used by DOS for dynamic storage
³50:22-2C ³ Used by DOS for diskette parameter table. See int 1Eh for values
ÀÄÄÄÄÄÁÄÄÄÄÄÄÄ´ In DOS 1.0 this is located in the ROM BIOS, but in DOS 1.1 and
³ subsequent it is a part of DOS located at 05:22. The first byte
³ (out of eleven) of the Disk Parameter contains the hexadecimal
³ value CF in DOS 1.0 and DF in DOS 1.1 and later.
³ DOS 1.0 24ms
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ´ DOS 1.1 26ms
³50:30-33 ³ Used by MODE command
³50:81³ ³ number of floppies installed in the system?
³50:82³ ³ first hard disk drive?
³50:83³ ³ last hard disk drive?
³50:34-FF ³ Unknown - Reserved for DOS
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Absolute Addresses .................................................... 2**6
0008:0047 IO.SYS or IBMBIO.COM IRET instruction. This is the dummy routine that
interrupts 01h, 03h, and 0Fh are initialized to during POST.
C000:001E EGA BIOS signature (the letters IBM)
F000:FA6E table of characters 00h-7Fh used by int 10h video BIOS
The first 128 characters are stored here and each occupies 8 bytes.
The high bit ones are somewhere on the video adapter card.
F000:FFF5 BIOS release date
F000:FFFE PC model identification
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ ROM BIOS Ú model byte ³
³ copyright ³ Ú submodel byte machine ³
³ date ³ ³ Ú revision ³
ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ ³ 00 ³ 00 ³ 00 ³ AT&T 6300, Olivetti PC ³
³ 09/02/86 ³ FA ³ 00 ³ 00 ³ PS/2 Model 30 ³
³ 01/10/86 ³ FB ³ 00 ³ 00 ³ XT-2 (early) ³
³ 01/10/86 ³ FB ³ 00 ³ 01 ³ XT Model 089 ³
³ 05/09/86 ³ FB ³ 01 ³ 02 ³ XT-2 (revised) ³
³ 01/10/84 ³ FC ³ -- ³ -- ³ AT Model 099 (original) ³
³ 06/10/85 ³ FC ³ 00 ³ 01 ³ AT Model 239 6mHz (6.6 max governor) ³
³ 11/15/85 ³ FC ³ 01 ³ 00 ³ AT Model 339, 339 8mHz (8.6 max governor) ³
³ ³ FC ³ 01 ³ 00 ³ Compaq 386/16 ³
³ ³ FC ³ 01 ³ 03 ³ some Phoenix 386 BIOS ³
³ ³ FC ³ 01 ³ 81 ³ some Phoenix 386 BIOS ³
³ 04/21/86 ³ FC ³ 02 ³ 00 ³ XT/286 ³
³ 02/13/87 ³ FC ³ 04 ³ 00 ³ PS/2 Model 50 ³
³ 02/13/87 ³ FC ³ 05 ³ 00 ³ PS/2 Model 60 ³
³ ³ FC ³ 00 ³ ³ 7531/2 Industrial AT ³
³ ³ FC ³ 06 ³ ³ 7552 "Gearbox" ³
³ 04/18/88 ³ FC ³ 04 ³ 03 ³ PS/2 50Z ³
³ 01/24/90 ³ FC ³ 01 ³ 00 ³ Compaq Deskpro 80386/25e ³
³ 10/02/89 ³ FC ³ 02 ³ 00 ³ Compaq Deskpro 386s, 386SX, 16mHz ³
³ 06/01/83 ³ FD ³ -- ³ -- ³ PCjr ³
³ 11/08/82 ³ FE ³ -- ³ -- ³ XT, Portable PC, XT/370, 3270PC ³
³ 04/24/81 ³ FF ³ -- ³ -- ³ PC-0 (16k motherboard) ³
³ 10/19/81 ³ FF ³ -- ³ -- ³ PC-1 (64k motherboard) ³
³ 08/16/82 ³ FF ³ -- ³ -- ³ PC, XT, XT/370 (256k motherboard) ³
³ 10/27/82 ³ FF ³ -- ³ -- ³ PC, XT, XT/370 (256k motherboard) ³
³ ? 1987 ³ F8 ³ 00 ³ 00 ³ PS/2 Model 80 ³
³ 3/30/87 ³ F8 ³ 00 ³ 00 ³ PS/2 Model 80-041 16mHz ³
³ 08/28/87 ³ F8 ³ ?? ³ ?? ³ PS/2 Model 80-071 16mHz ³
³ ? 1987 ³ F8 ³ 01 ³ 00 ³ PS/2 Model 80 20mHz ³
³ 09/17/87 ³ F8 ³ 01 ³ 01 ³ PS/2 Model 80-111 20mHz ³
³ ? ³ F8 ³ 04 ³ ? ³ PS/2 Model 70-121 ³
³ 01/18/89 ³ F8 ³ 0B ³ 00 ³ PS/2 Model 70 Portable ³
³ 04/11/88 ³ F8 ³ 09 ³ 02 ³ PS/2 Model 70 desktop ³
³ 02/20/89 ³ F8 ³ 0D ³ ³ PS/2 Model 70-A21 ³
³ 09/13/85 ³ F9 ³ 00 ³ 00 ³ Convertible ³
³ ³ 2D ³ -- ³ -- ³ Compaq PC (4.77mHz original) ³
³ ³ 9A ³ -- ³ -- ³ Compaq Plus (XT compatible) ³
ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
The IBM PC System Interrupts (Overview) ............................... 2**7
The interrupt table is stored in the very lowest location in memory, starting
at 0000:0000h. The locations are offset from segment 0, i.e. location 0000h has
the address for int 0, etc. The table is 1024 bytes in length and contains 256
four byte vectors from 00h to 0FFh. Each address' location in memory can be
found by multiplying the interrupt number by 4. For example, int 7 could be
found by (7x4=28) or 1Bh (0000:001Bh).
These interrupt vectors normally point to ROM tables or are taken over by DOS
when an application is run. Some applications revector these interrupts to
their own code to change the way the system responds to the user. DOS provides
int 21h function 25h to change interrupts from a high level; altering the
interrupt vector table directly is not recommended, nor would it really get
you anywhere.
Quick Chart of Interrupts 00h-0FFh .................................... 2**8
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Interrupt Address ³ ³
ÃÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÙ Function ³
³ Number³ (Hex) ³ Type ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 0 ³ 00-03 ³ CPU ³ Divide by Zero ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 1 ³ 04-07 ³ CPU ³ Single Step ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 2 ³ 08-0B ³ CPU ³ Nonmaskable ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 3 ³ 0C-0F ³ CPU ³ Breakpoint ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 4 ³ 10-13 ³ CPU ³ Overflow ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 5 ³ 14-17 ³ BIOS³ Print Screen ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 6 ³ 18-1B ³ hdw ³ Reserved ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 7 ³ 1C-1F ³ hdw ³ Reserved ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 8 ³ 20-23 ³ hdw ³ Time of Day ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 9 ³ 24-27 ³ hdw ³ Keyboard ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ A ³ 28-2B ³ hdw ³ Reserved ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ B ³ 2C-2F ³ hdw ³ Communications (8259) ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ C ³ 30-33 ³ hdw ³ Communications ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ D ³ 34-37 ³ hdw ³ Disk ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ E ³ 38-3B ³ hdw ³ Diskette ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ F ³ 3C-3F ³ hdw ³ Printer ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 10 ³ 40-43 ³ BIOS³ Video ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 11 ³ 44-47 ³ BIOS³ Equipment Check ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 12 ³ 48-4B ³ BIOS³ Memory ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 13 ³ 4C-4F ³ BIOS³ Diskette/Disk ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 14 ³ 50-53 ³ BIOS³ Serial Communications ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 15 ³ 54-57 ³ BIOS³ Cassette, System Services ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 16 ³ 58-5B ³ BIOS³ Keyboard ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 17 ³ 5C-5F ³ BIOS³ Parallel Printer ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 18 ³ 60-63 ³ BIOS³ ROM BASIC Loader ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 19 ³ 64-67 ³ BIOS³ Bootstrap Loader ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 1A ³ 68-6B ³ BIOS³ Time of Day ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 1B ³ 6C-6F ³ BIOS³ Keyboard Break ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 1C ³ 70-73 ³ BIOS³ Timer Tick ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 1D ³ 74-77 ³ BIOS³ Video Initialization ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 1E ³ 78-7B ³ BIOS³ Diskette Parameters ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 1F ³ 7C-7F ³ BIOS³ Video Graphics Characters, second set ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 20 ³ 80-83 ³ DOS ³ General Program Termination ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 21 ³ 84-87 ³ DOS ³ DOS Services Function Request ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 22 ³ 88-8B ³ DOS ³ Called Program Termination Address ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 23 ³ 8C-8F ³ DOS ³ Control Break Termination Address ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 24 ³ 90-93 ³ DOS ³ Critical Error Handler ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 25 ³ 94-97 ³ DOS ³ Absolute Disk Read ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 26 ³ 98-9B ³ DOS ³ Absolute Disk Write ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 27 ³ 9C-9F ³ DOS ³ Terminate and Stay Resident ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 28-3F ³ A0-FF ³ DOS ³ Reserved for DOS ³
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ *29h Fast Screen Write ³
³ *2Ah Microsoft Networks - Session Layer Interrupt ³
³ 2Fh Multiplex Interrupt ³
³ *30h Far jump instruction for CP/M-style calls ³
³ 33h Used by Microsoft Mouse Driver ³
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 40-43 ³100-115³ BIOS³ Reserved for BIOS ³
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 40h Hard Disk BIOS ³
³ 41h Hard Disk Parameters (except PC1) ³
³ 42h Pointer to screen BIOS entry (EGA, VGA, PS/2) ³
³ 43h Pointer to EGA initialization parameter table ³
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 44 ³116-119³ BIOS³ First 128 Graphics Characters ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 45-47 ³120-131³ BIOS³ Reserved for BIOS ³
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 45h Reserved by IBM (not initialized) ³
³ 46h Pointer to hard disk 2 params (AT, PS/2) ³
³ 47h Reserved by IBM (not initialized) ³
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 48 ³132-135³ BIOS³ PCjr Cordless Keyboard Translation ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 49 ³136-139³ BIOS³ PCjr Non-Keyboard Scancode Translation Table ³
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 4Ah Real-Time Clock Alarm (Convertible, PS/2) ³
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 50-5F ³140-17F³ BIOS³ Reserved for BIOS ³
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 5Ah Cluster Adapter BIOS entry address ³
³ *5Bh IBM (cluster adapter?) ³
³ 5Ch NETBIOS interface entry port ³
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 60-67 ³180-19F³ User Program Interrupts (availible for general use) ³
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 60h 10-Net Network ³
³ 67h Used by LIM & AQA EMS, EEMS ³
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 68-7F ³1A0-1FF³ Reserved by IBM ³
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 6Ch System Resume Vector (Convertible) ³
³ 6Fh some Novell and 10-Net API functions ³
³ 70h IRQ 8, Real Time Clock Interrupt (AT, PS/2) ³
³ 71h IRQ 9, LAN Adapter 1 ³
³ 72h IRQ 10 (AT, XT/286, PS/2) Reserved ³
³ 73h IRQ 11 (AT, XT/286, PS/2) Reserved ³
³ 74h IRQ 12 Mouse Interrupt (PS/2) ³
³ 75h IRQ 13, Coprocessor Error ³
³ 76h IRQ 14, Hard Disk Controller (AT, PS/2) ³
³ 77h IRQ 15 (AT, XT/286, PS/2) Reserved ³
³ 7Ch IBM REXX88PC command language ³
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 80-85 ³200-217³ ROM BASIC ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ 86-F0 ³218-3C3³ Used by BASIC Interpreter When BASIC is running ³
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ F1-FF ³3C4-3FF³ Reserved by IBM ³
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ *0F8h Set Shell Interrupt (OEM) ³
³ *0F9h OEM SHELL service codes ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
The IBM-PC System Interrupts (in detail) .............................. 2**9
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 00h Divide by Zero ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:0000h) (processor error). Automatically called at end of DIV or IDIV
operation that results in error. Normally set by DOS to display an
error message and abort the program.
note On an 8086/8088, the return address points to the following instruction
On an 80286/80386, the return address points to the divide instruction
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 01h Single step ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:0004h) Taken after every instruction when CPU Trap Flag indicates
single-step mode (bit 8 of FLAGS is 1). This is what makes the "T"
command of DEBUG work for single stepping. Is not generated after MOV
to segment register or POP of segment register. (unless you have a
very early 8088 with the microcode bug).
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 02h Non-maskable interrupt ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:0008h) Vector not disabled via CLI. Generated by NMI signal in
hardware. This function is called in the event of a memory
parity error or may occur in the event of other hardware
problems or failures depending on the specific manufacturer's
hardware. Displays the appropriate error message and halts the
processor.
Some AT chip sets apparently use int 02h to signal I/O errors
as well as parity errors.
This signal has various uses:
POST parity error: all except PCjr and Convertible
80x87 coprocessor interrupt: all except PCjr and Convertible
Keyboard interrupt: PCjr, Convertible
I/O channel check: Convertible, PS/2 50+
Disk controller power-on request: Convertible
System suspend: Convertible
Realtime clock: Convertible
System watchdog timer: PS/2 50+
Timeout interrupt: PS/2 50+
DMA timer time-out interrupt: PS/2 50+
Infrared keyboard link: PCjr
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 03h Breakpoint ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:000Ch) Taken when CPU executes the 1-byte int 3 (0CCh). Similar to 8080's
(internal) RST instruction. Generally used to set breakpoints for DEBUG.
note 1) Also used by Turbo Pascal versions 1,2,3 when {$U+} specified.
2) Int 3s are sometimes inserted by the Microsoft Linker in response to
an unresolved symbol.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 04h Divide overflow ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:0010h) Generated by INTO instruction if OF flag is set. If flag is not set,
(internal) INTO is effectively a NOP. Used to trap any arithmetic errors when
program is ready to handle them rather than immediately when they
occur.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 05h Print Screen ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:0014h) Service dumps the screen to the printer. Invoked by int 9 for shifted
key 55 (PrtSc). Automatically called by keyboard scan when PrtSc key
is pressed. Normally executes a routine to print the screen, but may
call any routine that can safely be executed from inside the keyboard
handler. Status and result byte are at address 0050:0000.
(internal) BOUND Check Failed (80286+)
Generated by BOUND instruction when the value to be tested is less
than the indicated lower bound or greater than the indicated upper
bound.
entry AH 05h
return absolute address 50:0
00h print screen has not been called, or upon return from a call
there were no errors
01h print screen is already in progress
0FFh error encountered during printing
note 1) Uses BIOS services to read the screen.
2) Output is directed to LPT1.
3) Revectored into GRAPHICS.COM if GRAPHICS.COM is loaded.
4) On the Tandy 1000TX this interrupt can be enabled or disabled across
the expansion slots via a DIP switch.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 06h Reserved by IBM ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:0018h)
On the Tandy 1000TX this interrupt can be enabled or disabled across
the expansion slots via a DIP switch.
(internal) Undefined Opcode (80286+)
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 07h Reserved by IBM ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:00C0h)
On the Tandy 1000TX this interrupt can be enabled or disabled across
the expansion slots via a DIP switch.
(internal) No Math Unit Available (80286+)
note The 80286 and later can be programmed to generate an int 7 whenever
an ESC instruction is encountered. This could be used to emulate an
80x87 series coprocessor in software and be transparent to the
application software. It could also be used to make a non-Intel
floating point processor emulate an 80x87.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 08h Timer ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:0020h) 55ms timer "tick" issued 18.2 times per second.
(IRQ0) 8259-1 Interrupt Controller
Updates the system time at [0040:006C] (low word) and [0040:006E]
(high word) and issues an int 1Ch (timer). (int 1Ch points to an
IRET instruction unless changed by a resident program). The timer
interrupt is given the highest maskable interrupt priority upon
power up.
(internal) Double Fault (80286+ protected mode) Called when multiple exceptions
occur on one instruction, or an exception occurs in an exception
handler. If an exception occurs in the double fault handler, the CPU
goes into SHUTDOWN mode (which circuitry in the PC/AT converts to a
reset).
entry AH 08h
return absolute addresses:
40:6C number of interrupts since power on (4 bytes)
40:70 number of days since power on (1 byte)
40:67 day counter on all products after AT
40:40 motor control count - gets decremented and shuts off diskette
motor if zero
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 09h Keyboard ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:0024h) Taken whenever a key is pressed or released. This is normally a scan
(IRQ1) code, but may also be an ACK or NAK of a command on AT-type
keyboards. The hardware provides the key pressed in a non-ASCII scan
code format read at I/O port 60h. The servicer acknowledges receipt
of the key by toggling bit 7 of port 61h. (Port 61h should be read
first, then bit 7 ORed on, output to port 61h, then ANDed off, and
resent to port 61h).
The read key is decoded to yield an ASCII character, special
function key (such as F1) or a control function like Left Shift Key.
The converted ASCII character is placed into the next available
position in the circular queue keyboard. It is put in the position
indicated by queue tail when it will not cause the loss of earlier
entered data. The queue head points to the oldest key pressed in the
buffer which has not been removed from the queue (the normal process
uses int 16h to remove keys from the queue and return the key value
to the int 16h caller).
The 16 word queue holds up to 16 keys. If the queue head equals the
queue tail, the queue is empty. Valid keys in the queue comprise
the upper byte scan code and the lower byte ASCII character. If the
key pressed has no ASCII equivalent (i.e F1 to F12), the lower byte
is zero.
Toggle and shift keys are not placed in the buffer, but appear in
the two status bytes at absolute addr. [0040:0017,18].
Special key combinations will cause other events to occur:
a) Ctrl-Alt_Del - Reset computer by jumping to power_on_reset
b) Print screen - Call int_5_prn_scrn to print the current screen
c) Ctrl-Break - Call int_1Bh control break key processor (DOS)
d) Pause - Wait until an ASCII key is pressed, without
placing the key in the queue
(internal) Math Unit Protection Fault (80286+ protected mode)
entry AH 09h
return at absolute memory addresses:
40:17 bit
0 right shift key depressed
1 left shift key depressed
2 control key depressed
3 alt key depressed
4 ScrollLock state has been toggled
5 NumLock state has been toggled
6 CapsLock state has been toggled
7 insert state is active
40:18 bit
0 left control key depressed
1 left alt key depressed
2 SysReq key depressed
3 Pause key has been toggled
4 ScrollLock key is depressed
5 NumLock key is depressed
6 CapsLock key is depressed
7 Insert key is depressed
40:96 bit
0 last code was the E1h hidden code
1 last code was the E0h hidden code
2 right control key down
3 right alt key down
4 101 key Enhanced keyboard installed
5 force NumLock if rd ID & kbx
6 last character was first ID character
7 doing a read ID (must be bit 0)
40:97 bit
0 ScrollLock indicator
1 NumLock indicator
2 CapsLock indicator
3 circus system indicator
4 ACK received
5 resend received flag
6 mode indicator update
7 keyboard transmit error flag
40:1E keyboard buffer (20h bytes)
40:1C buffer tail pointer
40:72 1234h if ctrl-alt-del pressed on keyboard
AL scan code
note 1) Int 05h invoked if PrtSc key pressed.
2) Int 1Bh invoked if Ctrl-Break key sequence pressed.
3) Int 15h, AH=85h invoked on AT and after if SysReq key is pressed.
4) Int 15h, AH=4Fh invoked on machines after AT.
5) Int 16h, BIOS keyboard functions, uses this interrupt.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 0Ah EGA Vertical Retrace ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:0028h) used by EGA vertical retrace
(IRQ2) 8259-1 Interrupt Controller
note 1) The TOPS and PCnet adapters use this IRQ line by default.
2) On systems equipped with 2 interrupt controller chips (8259), IRQ 2
is used to support the second interrupt controller. In this case,
int 71h (IRQ 9) is used to replace IRQ 2. Hardware calls to int 71h
are redirected to this interrupt to maintain compatibility.
3) Many VGA boards to not use this interrupt.
(internal) Invalid Task State Segment (80286+ protected mode)
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 0Bh Communications Controller (serial port) hdw. entry ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:002Ch) Serial Port 2 (COM2) 8259-1
(IRQ3)
note 1) IRQ 3 may be used by SDLC (synchronous data-link control) or
bisynchronous communications cards instead of a serial port.
2) The TOPS and PCnet adapters use this interrupt request line as an
alternate.
3) On PS/2s, COM2 through COM8 share this IRQ.
4) For most serial boards, COM4 shares this IRQ.
5) On the Commodore Amiga 2000 with the PC Bridge Board, this interrupt
is used for communication between the Amiga system board and the
Bridge Board. This was probably the lowest IRQ level they felt safe
using, but limits the A2000's use of network cards, etc.
6) This interrupt is used by part of the stack-switching code added
to DOS 3.2 for use with Local Area Network adapters.
7) The PS/2 puts COM3 through COM8 at port addresses above 3FFh (not
properly decoded by older PCs) and has all of them sharing IRQ3.
(internal) Not Present (80286+ protected mode)
Generated when loading a segment register if the segment descriptor
indicates that the segment is not currently in memory. May be used
to implement virtual memory.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 0Ch Communications Controller (serial port) Hardware Entry ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:0030h) Serial Port 1 (COM1) or internal modem in PCjr or Convertible
(IRQ4) 8259-1
note 1) IRQ 4 may be used by SDLC (synchronous data-link control) or
bisynchronous communications cards instead of a serial port.
2) On some PCs, this interrupt is shared by COM3.
3) Tandy computers use IRQ4 instead of IRQ5 for the hard disk interrupt.
4) Best performance of mice sometimes happens when they are configured
for IRQ4 instead of IRQ3, since some mouse drivers may lock system
interrupts for long periods.
(internal) Stack Fault (80286+ protected mode)
Generated on stack overflow/underflow. Note that the 80286 will shut
down in real mode if SP=1 before a push.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 0Dh Hard Disk ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:0034h) Miscelleneous uses
(IRQ5) 8259-1
note 1) Various Tandy 1000 models may use this line for the 60Hhz RAM refresh
or as "optional bus interrupt."
2) Used by hard disk on IBM XT and most compatibles.
3) LPT2 on AT, XT/286, and PS/2
4) Dummy CRT vertical retrace on PCjr
(internal) General Protection Violation (80286+)
Called in real mode when an instruction attempts to access a word
operand located at offset 0FFFFh or a PUSH MEM or POP MEM
instruction contains an invalid bit code in the second byte, or
when an instruction exceeds the maximum length allowed (10 bytes
for 80286, 15 bytes for 80386)
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 0Eh Diskette Interrupt ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:0038h) Generated by floppy controller on completion of an operation
(IRQ6) (sets bit 8 of 40:3E)
(internal) Page Fault (80386+ native mode)
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Interrupt 0Fh Reserved by IBM ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
(0:003Ch) IRQ7 used by 8259 PPI interrupt (LPT1, LPT2)
(IRQ7)
note 1) Generated by the LPT1 printer adapter when printer becomes ready. Many
printer adapters do not reliably generate this interrupt.
2) This interrupt is normally avoided. If a bad interrupt occurs, it will
vector to this spot (when caused by a misprogrammed 8259 PIC)
Comments
Post a Comment