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

Popular posts from this blog

BOTTOM LIVE script

Fawlty Towers script for "A Touch of Class"