** 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. 旼컴컴컫컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 퀂tart 퀂tart end � � 쿪ddr. 쿪ddr. 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) � 쳐컴컴컨컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿌0000 ***** 64k ***** EGA address � 쳐컴컴컫컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� � 640k 쿌0000-A95B0� MCGA 320x200 256 color video buffer � � � -AF8C0� MCGA 640x480 2 color video buffer � � � -A3FFF� � � 656k 쿌4000-A7FFF� � � 672k 쿌8000-ABFFF� this 64k segment may be used for contiguous DOS � � 688k 쿌C000-AFFFF� RAM with appropriate hardware and software � 쳐컴컴컨컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿍0000 ***** 64k ***** mono and CGA address � 쳐컴컴컫컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� � 704k 쿍0000-B3FFF� mono uses only 4k | The PCjr and early Tandy 1000� � 720k 쿍4000-B7FFF� | BIOS revector direct write to� � 736k 쿍8000-BBFFF� CGA uses entire 16k | the B8 area to the Video Gate� � 756k 쿍C000-BFFFF� | Array and reserved system RAM� 쳐컴컴컨컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿎0000 ***** 64k *************** expansion ROM � 쳐컴컴컫컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� � 768k 쿎0000-C3FFF�16k EGA BIOS C000:001E EGA BIOS signature (letters IBM) � � 784k 쿎4000-C5FFF� � � 쿎6000-C63FF�256 bytes Professional Graphics Display communication area� � 쿎6400-C7FFF� � � 800k 쿎8000-CBFFF� 16k hard disk controller BIOS, drive 0 default � � 816k 쿎C000-CDFFF� 8k IBM PC Network NETBIOS � � 쿎E000-CFFFF� � 쳐컴컴컨컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿏0000 ***** 64k ***** expansion ROM � 쳐컴컴컫컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� � 832k 쿏0000-D7FFF� 32k IBM Cluster Adapter | PCjr first ROM cartridge � � � DA000� voice communications | address area. � � 848k 쿏4000-D7FFF� | Common expanded memory board � � 864k 쿏8000-DBFFF� | paging area. � � 880k 쿏C000-DFFFF� | � 쳐컴컴컨컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿐0000 ***** 64k ***** expansion ROM � 쳐컴컴컫컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� � 896k 쿐0000-E3FFF� | PCjr second ROM cartidge � � 912k 쿐4000-E7FFF� | address area � � 928k 쿐8000-EBFFF� | � � 944k 쿐C000-EFFFF� | spare ROM sockets on AT � 쳐컴컴컨컴컴컴컴컴컨컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿑0000 ***** 64k ***** system � 쳐컴컴컫컴컴컴컴컴컫컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� � 960k 쿑0000-F3FFF� reserved by IBM | cartridge address � � 976k 쿑4000- � | area (PCjr cartridge � � 쿑6000 � ROM BASIC Begins | BASIC) � � 992k 쿑8000-FB000� | � � 1008k쿑C000-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 쿑E0000-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 퀃o 3F:FF stack area may be revectored by an application program. 쳐컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� � ** The BIOS Data Area ** addresses from 400h to 4FFh 쳐컴컴쩡컴컴컴쩡컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿪ddr.� 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 쿻ote 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) 쿮xtended 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)쳐컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 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. 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 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). 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 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 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 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 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 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. 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 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 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 06h Reserved by IBM � 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� (0:0018h) (internal) undefined opcode (80286) 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 07h Reserved by IBM � 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� (0:00C0h) (internal) no math unit available (80286) 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 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). 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 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. 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 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) 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 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. 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 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. 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 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 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 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) 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿔nterrupt 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.