Thursday, January 7, 2010

DOS INTERRUPT

The Interrupts
INT 00 - internal - DIVIDE ERROR
Automatically called at end of DIV or IDIV operation that results in error or overflow. Normally set by DOS to display an error message and abort
the program.


INT 01 - internal - SINGLE-STEP
Generated at end of each machine instruction if TF bit in FLAGS is set. This is what makes the T command of DEBUG work for single-stepping. It
is not generated after MOV to segment register or POP of segment register (unless you have a very early 8088 with a microcode bug).



INT 02 - hardware - NMI (NON-MASKABLE INTERRUPT)
Generated by NMI signal in hardware. This signal has various uses:
Parity error: all except Jr and CONV
Coprocessor interrupt: all except Jr and CONV
Keyboard interrupt: Jr, CONV
I/O channel check: CONV, PS50+
Disk-controller power-on request: CONV
System suspend: CONV
Real-time clock: CONV
System watch-dog timer, time-out interrupt: PS50+
DMA timer time-out interrupt: PS50+



INT 03 - ONE-BYTE INTERRUPT
Generated by opcode CCh. Generally used to set breakpoints for debuggers. Also used by Turbo Pascal versions 1,2,3 when {$U+} specified




INT 04 - internal - OVERFLOW
Generated by INTO instruction if OF flag is set. If flag is not set, INTO is effectively a NOP. Used to trap any arithmetic errors before the
erroneous results propagate further through the computation.




INT 05 - PRINT-SCREEN KEY
Automatically called by keyboard scan when print-screen key is pressed. Normally executes routine to print the screen, but may call any routine that
can safely be executed from inside the keyboard scanner. Status and result byte for default handler is at address 0050:0000.




INT 05 - 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.



INT 06 - internal - UNDEFINED OPCODE (80286)




INT 07 - internal - NO MATH UNIT AVAILABLE (80286)




INT 08 - IRQ0 - TIMER INTERRUPT
Generated 18.2 times per second, this interrupt is used to keep the time-of-day clock updated.






INT 08 - 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/ATconverts to a reset).






INT 09 - IRQ1 - KEYBOARD INTERRUPT
Generated when data is received from the keyboard. This is normally a scan code, but may also be an ACK or NAK of a command on AT-class
keyboards.


INT 09 - internal - MATH UNIT PROTECTION FAULT (80286 protected mode)


INT 0A - IRQ2 - EGA VERTICAL RETRACE
Notes: on the Tandy 1000, this interrupt is used by the hard disk the TOPS and PCnet adapters use this interrupt request line by default



INT 0A - internal - INVALID TASK STATE SEGMENT (80286 protected-mode)



INT 0B - IRQ3 - COM2 INTERRUPT
Note: the TOPS and PCnet adapters use this interrupt request line as an alternate
Note: on PS/2's, COM2 through COM8 share this interrupt on many PC's, COM4 shares this interrupt



INT 0B - 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.


INT 0C - IRQ4 - COM1 INTERRUPT
Note: on many PC's, COM3 shares this interrupt



INT 0C - 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.





INT 0D - IRQ5 - FIXED DISK (PC), LPT2 (AT/PS)
Note: the Tandy 1000 uses this line for the 60Hhz RAM refresh



INT 0D - internal - GENERAL PROTECTION VIOLATION (80286)
Called in real mode when an instruction attempts to access a word operand located at offset FFFFh


INT 0E - IRQ6 - DISKETTE INTERRUPT
Generated by floppy disk controller on completion of an operation


INT 0E - internal - PAGE FAULT (80386 native mode)

INT 0F - IRQ7 - PRINTER INTERRUPT
Generated by the LPT1 printer adapter when printer becomes ready.
Note: most printer adapters do not reliably generate this interrupt.









INT 10 - internal - COPROCESSOR ERROR (80286/80386)
Generated by the CPU when the -ERROR pin is asserted by the coprocessor. AT's and clones usually wire the coprocessor to use IRQ13, but not all
get it right.




INT 10 - AH = 00h VIDEO - SET VIDEO MODE

No comments:

Post a Comment