home *** CD-ROM | disk | FTP | other *** search
-
- ** Programmer's Technical Reference for MSDOS and the IBM PC **
- ┌─────────────────────────────┐
- │ Shareware Version, 03/21/90 │
- │ Please Register Your Copy │
- └─────────────────────────────┘
- Copyright (c) 1987, 1990 Dave Williams
-
-
- C H A P T E R T W O
-
- CPU Port Assignments, System Memory Map, BIOS Data Area, Interrupts 00h to 09h
-
-
-
- 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 - OVERALL├───────────────────────────────────────────────────
-
- The IBM PC handles its address space in 64k segments, divided into 16k
- fractions and then further as nescessary.
-
- ┌──────┬───────────┬──────────────────────────────────────────────────────────┐
- │start │start end │ │
- │addr. │addr. addr.│ usage │
- │(dec) │ (hex) │ │
- ├──────┴───────────┴──────────────────────────────────────────────────────────┤
- │ *640k RAM Area* │
- ├──────┬───────────┬──────────────────────────────────────────────────────────┤
- │ 0k │ │ start of RAM │
- │ 16k │00000-03FFF│ PC-0 system board RAM │
- │ 32k │04000-07FFF│ │
- │ 48k │08000-0BFFF│ │
- ├──────┼───────────┼──────────────────────────────────────────────────────────┤
- │ 64k │10000-13FFF│ PC-1 system board RAM │
- │ 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 │
- │ 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 address │
- ├──────┬───────────┬──────────────────────────────────────────────────────────┤
- │ 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│ mono uses only 4k | The PCjr and early Tandy 1000│
- │ 720k │B4000-B7FFF│ | BIOS revector direct write to│
- │ 736k │B8000-BBFFF│ CGA uses entire 16k | 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 communication area│
- │ │C6400-C7FFF│ │
- │ 800k │C8000-CBFFF│ 16k hard disk controller BIOS, drive 0 default │
- │ 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│ | │
- ├──────┴───────────┴──────────────────────────────────────────────────────────┤
- │E0000 ***** 64k ***** expansion ROM │
- ├──────┬───────────┬──────────────────────────────────────────────────────────┤
- │ 896k │E0000-E3FFF│ | PCjr second ROM cartidge │
- │ 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) │
- └──────┴─────────────┴────────────────────────────────────────────────────────┘
-
- 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 FE0000 to FFFFFF. This is necessary due to differences in the memory
- addressing between Real and Protected Modes.
-
-
- PC PORT ASSIGNMENT, Intel 8088, 80C88, 8086, 80286, 80386 CPUs├────────────────
-
- hex addr. Function
-
- 0000-000F 8237 DMA controller
- 0010-001F 8237 DMA controller (AT, PS/2)
- 0020-0027 8259A interrupt controller
- 0020-003F 8259A interrupt controller (AT)
- 0040-005F 8253-5 programmable timers
- (note: 0041 was memory refresh in PCs. Not used in PS/2)
- 0060-0067 8255 peripheral interface
- 0060-006F 8042 keyboard controller (AT)
- 0200-020F game-control adapter
- 0210-0217 expansion box (PC, XT)
- 0278-027F LPT3
- 02F8-02FF COM2
- 0300-031F prototype card
- 0320-032F hard disk controller
- 0378-037F LPT2
- 03BC-03BF LPT1
- 03D0-03DF CGA, MCGA, VGA adapter control
- 03F0-03F7 floppy disk controller
- 03F8-03FF COM1
-
- note: These are functions common across the IBM range. The PCjr, 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.
-
-
-
- RESERVED MEMORY LOCATIONS IN THE IBM PC├───────────────────────────────────────
-
- ┌──────────────────────────────────────────────────────────────────────────────
- │ 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 COM??.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 1 if floppy drive present (see bits 6&7) 0 if not
- │ 1 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".
- │ 2) CMOS RAM map, PC/AT:
- │ offset contents
- │ 00h Seconds
- │ 01h Second Alarm
- │ 02h Minutes
- │ 03h Minute Alarm
- │ 04h Hours
- │ 05h Hour Alarm
- │ 06h Day of the Week
- │ 07h Day of the Month
- │ 08h Month
- │ 09h Year
- │ 0Ah Status Register A
- │ 0Bh Status Register B
- │ 0Ch Status Register C
- │ 0Dh Status Register D
- │ 0Eh Diagnostic Status Byte
- │ 0Fh Shutdown Status Byte
- │ 10h Disk Drive Type for Drives A: and B:
- │ The drive-type bytes use bits 0:3 for the first
- │ drive and 4:7 for the other
- │ Disk drive types:
- │ 00h no drive present
- │ 01h double sided 360k
- │ 02h high capacity (1.2 meg)
- │ 03h-0Fh reserved
- │ 11h (AT):Reserved (PS/2):drive type for hard disk C:
- │ 12h (PS/2):drive type for hard disk D:
- │ (AT, XT/286):hard disk type for drives C: and D:
- │ Format of drive-type entry for AT, XT/286:
- │ 0 number of cyls in drive (0-1023 allowed)
- │ 2 number of heads per drive (0-15 allowed)
- │ 3 starting reduced write compensation (not
- │ used on AT)
- │ 5 starting cylinder for write compensation
- │ 7 max. ECC data burst length, XT only
- │ 8 control byte
- │ Bit
- │ 7 disable disk-access retries
- │ 6 disable ECC retries
- │ 5-4 reserved, set to zero
- │ 3 more than 8 heads
- │ 2-0 drive option on XT (not used by AT)
- │ 9 timeout value for XT (not used by AT)
- │ 12 landing zone cylinder number
- │ 14 number of sectors per track (default 17,
- │ 0-17 allowed)
- │ 13h Reserved
- │ 14h Equipment Byte (corresponds to sw. 1 on PC and XT)
- │ 15h-16h Base Memory Size (low,high)
- │ 17h-18h Expansion Memory Size (low,high)
- │ 19h-20h Reserved
- │ (PS/2) POS information Model 50 (60 and 80 use a 2k
- │ CMOS RAM that is not accessible through software)
- │ 21h-2Dh Reserved (not checksumed)
- │ 2Eh-2Fh Checksum of Bytes 10 Through 20 (low,high)
- │ 30h-31h Exp. Memory Size as Det. by POST (low,high)
- │ 32h Date Century Byte
- │ 33h Information Flags (set during power-on)
- │ 34h-3Fh Reserved
- │ 3) The alarm function is used to drive the BIOS WAIT function
- │ (int 15h function 90h).
- │ 4) To access the configuration RAM write the byte address (00-3Fh)
- │ you need to access to I/O port 70h, then access the data via
- │ I/O port 71h.
- │ 5) CMOS RAM chip is a Motorola 146818
- │ 6) The equipment byte is used to determine the configuration for
- │ the POST power-on diagnostics.
- │ 7) Bytes 00-0Dh are defined by the chip for timing functions,
- │ bytes 0Eh-3Fh are defined by IBM.
- │ 8) Compaq 386 uses came CMOS chip as IBM AT. Extra functions:
- │ byte 45 (2Dh) store aditional info not maintained by AT
- │ bit 0 indicates is Compaq dual-mode monitor isntalled
- │ 1 indicates whether keyclick is enabled
- │ 2 not used
- ┌─────┬────┴──┐ 3 if non-Compaq graphics adapter installed
- │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 status
- │40:49│ byte │ 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 other 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
- │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 char to repeat
- │40:86│2 bytes│ (PCjr only) typamatic initial delay
- │40:87│ byte │ mode options (EGA only)
- └─────┴───────┤ bit 1 0 = EGA is connected to a color display
- │ 1 = EGA is monochrome.
- │ bit 3 0 = EGA is the active display,
- │ 1 = "other" display is active.
- │ 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
- │40:88│ byte │ feature bit switches (EGA only) 0=on, 1=off
- └─────┴───────┤ bit 3 = switch 4
- │ bit 2 = switch 3
- │ bit 1 = switch 2
- ┌─────┬───────┤ bit 0 = switch 1
- │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 (horiz.synch) used by
- ├─────┼───────┤ ctrl-alt-cursor screen positioning routine in ROM
- │40:8A│ byte │ PCjr CRT/CPU Page Register Image, default 3Fh
- │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 (bit 7=working int)
- │40:90│4 bytes│ media state drive 0, 1, 2, 3
- │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 │ EGA pointer to table of 7 parameters. Format of table:
- └─────┴───────┤ dword pointer to 1472 byte table containing 64 video parms
- │ dword reserved
- │ dword reserved
- │ dword reserved
- │ dword reserved
- │ dword reserved
- ┌─────┬───────┤ dword 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 │ 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
-
- 04:F0 16 bytes Inter-Application Communications Area (for use by applications
- 04:FF to transfer data or parameters to each other)
-
- 05:00 byte DOS print screen status flag
- 00h not active or successful completion
- 01h print screen in progress
- 0FFh error during print screen operation
- 05:01 Used by BASIC
- 05:02-03 PCjr POST and diagnostics work area
- 05:04 byte Single drive mode status byte
- 00 logical drive A
- 01 logical drive B
- 05:05-0E PCjr POST and diagnostics work area
- 05:0F BASIC: SHELL flag (set to 02h if there is a current SHELL)
- 05:10 word BASIC: segment address storage (set with DEF SEG)
- 05:12 4 bytes BASIC: int 1Ch clock interrupt vector segment:offset storage
- 05:16 4 bytes BASIC: int 23h ctrl-break interrupt segment:offset storage
- 05:1A 4 bytes BASIC: int 24h disk error interrupt vector segment:offset storage
- 05:1B-1F Used by BASIC for dynamic storage
- 05:20-21 Used by DOS for dynamic storage
- 05:22-2C Used by DOS for diskette parameter table. See int 1Eh for values
- 05:30-33 Used by MODE command
- 05:34-FF Unknown - Reserved for DOS
-
-
- AT ABSOLUTE ADDRESSES├─────────────────────────────────────────────────────────
-
- 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 10 video BIOS
- F000:FFF5 BIOS release date
- F000:FFFE PC model identification
-
- ┌─────────────────────────────────────────────────────────────────────┐
- │ ROM BIOS ┌ model byte │
- │ copyright │ ┌ submodel byte machine │
- │ date │ │ ┌ revision │
- ├──────────┼────┼────┼────┼───────────────────────────────────────────┤
- │ 09/02/86 │ FA │ 00 │ 00 │ PS/2 Model 30 │
- │ 01/10/86 │ FB │ 00 │ 01 │ XT │
- │ 01/10/86 │ FB │ 01 │ 00 │ XT-2 (early) (640k motherboard │
- │ 05/09/86 │ FB │ │ │ XT-2 (revised) (640k motherboard) │
- │ 01/10/84 │ FC │ -- │ -- │ AT │
- │ 06/10/85 │ FC │ 00 │ 01 │ AT Model 239 6mHz (6.6 max governor) │
- │ 11/15/85 │ FC │ 01 │ 00 │ AT Model 319, 339 8mHz (8.6 max governor) │
- │ 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" │
- │ 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 │
- │ 09/13/85 │ F9 │ 00 │ 00 │ Convertible │
- │ │ 2D │ -- │ -- │ Compaq PC (4.77) │
- │ │ 9A │ -- │ -- │ Compaq Plus (XT) │
- └──────────┴────┴────┴────┴───────────────────────────────────────────┘
-
-
-
-
- THE IBM PC SYSTEM INTERRUPTS (Overview)├───────────────────────────────────────
-
- The interrupt table is stored in the very lowest location in memory, starting
- at 0000:0000h. The locations are offset from segment 0, ie 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.
-
- ┌─────────────────────┬────────────────────────────────────────────────────────┐
- │ 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 │
- └───────┴───────┴──────┬───────────────────────────────────────────────────────┤
- │ 0F1h-0FFh Interprocess Communications Area │
- │ *0F8h Set Shell Interrupt (OEM) │
- │ *0F9h OEM SHELL service codes │
- │ 0FAh USART ready (RS-232C) │
- │ 0FBh USART RS ready (keyboard) │
- │ *0FEh used on '283 & '386 │
- │ *0FFh used on '283 & '386 │
- └───────────────────────────────────────────────────────┘
-
-
-
-
- THE IBM-PC SYSTEM INTERRUPTS (in detail)├──────────────────────────────────────
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │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.
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │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 signal has various uses:
- POST parity error
- Parity error: all except Jr and Convertible
- 8087 Coprocessor interrupt: all except Jr and Convertible
- Keyboard interrupt: Jr, Convertible
- I/O channel check: Convertible, PS50+
- Disk-controller power-on request: Convertible
- System suspend: Convertible
- Real-time clock: Convertible
- System watch-dog timer, time-out interrupt: PS50+
- DMA timer time-out interrupt: PS50+
- 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.
- Also used by Turbo Pascal versions 1,2,3 when {$U+} specified
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │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
- scanner. Status and result byte are at address 0050:0000.
- (internal) BOUND check failed (80186/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
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │Interrupt 06h Reserved by IBM │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0018h)
- (internal) undefined opcode (80286)
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │Interrupt 07h Reserved by IBM │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:00C0h)
- (internal) no math unit available (80286)
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │Interrupt 08h Timer │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0020h) 55ms timer "tick" taken 18.2 times per second. Updates BIOS clock and
- (IRQ0) turns off diskette drive motors after 2 seconds of inactivity.
-
- 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
- note Int 1Ch invoked by int 08h as a user interrupt.
- (internal) - DOUBLE FAULT (80286/80386 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).
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │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.
- Stores characters/scan-codes in status at [0040:0017,18]
- (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) (IRQ2) used by EGA vertical retrace, hard disk
- note 1) On the Tandy 1000, this interrupt is used by the hard disk
- 2) The TOPS and PCnet adapters use this interrupt request line by default
- (internal) invalid task state segment (80286 protected-mode)
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │Interrupt 0Bh Communications Controller (serial port) hdw. entry │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:002Ch) (IRQ3) Serial Port 2 (com2)
- 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
- (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) hdw. entry │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0030h) (IRQ4) Serial Port 1 (com1) or modem in PCjr or Convertible
- note IRQ 4 may be used by SDLC (synchronous data-link control) or
- bisynchronous communications cards instead of a serial port.
- (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 Alternate Printer, AT 80287 │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0034h) (IRQ5) used by hard disk, 60 Hz RAM refresh, LPT2 on AT, XT/286,
- and PS/2, dummy CRT vertical retrace on PCjr
- note Tandy 1000 uses this line for the 60Hhz RAM refresh
- (internal) general protection violation (80286)
- Called in real mode when an instruction attempts to access a word
- operand located at offset 0FFFFh
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │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) IRQ7 used by PPI interrupt (LPT1, LPT2)
- note Generated by the LPT1 printer adapter when printer becomes ready. Most
- printer adapters do not reliably generate this interrupt.
-
-