GENWiki

Premier IT Outsourcing and Support Services within the UK

User Tools

Site Tools


archive:programming:intrupt
  1. - - Interrupt Structure - - -

Orginal work Janet Jack Jan 1985

Corrections & additions J. Weaver Jr. Jan 1985

Addition John Cooper Feb 1985

Addition Skip Gilbrech Feb 1985

Corrections & additions Jim Kyle Apr 1985

Corrections & additions Bob Jack On going


INT 0 - DIVIDE ERROR (CPU CHIP)

NOTE -	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.

———————————————————– INT 1 - SINGLE-STEP (CPU CHIP)

NOTE -	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.
	Is not generated after MOV to segment register
	or POP of segment register.

———————————————————– INT 2 - NMI (CPU CHIP)

NOTE -	Generated by NMI (Non Maskable Interrupt)
	signal in hardware.  Used for memory parity
	error trapping.

———————————————————– INT 3 - 1-BYTE INTERRUPT (CPU CHIP)

NOTE -	Generated by opcode CCH.  Generally used to
	set breakpoints for DEBUG.

———————————————————– INT 4 - OVERFLOW (CPU CHIP)

NOTE -	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
	when program is ready to handle them rather
	than immediately when they occur.

———————————————————– INT 5 - PRINT-SCREEN KEY (IBM)

NOTE -	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.

———————————————————– INT 6 - UNKNOWN


INT 7 - UNKNOWN


INT 8 thru 0FH - VECTORED HARDWARE LINES (IBM and others)

NOTE -	In IBM, these 8 interrupts are generated in
	response to IRQ 0 through IRQ 7 (if enabled
	via port 21).

———————————————————– INT 10 - VIDEO - SET VIDEO MODE (SANYO)

REG AH = 0
REG AL = 2 = 80X25 BW
	 3 = 80X25 COLOR
	 6 = MONOCHROME GRAPHICS MODE
	 7 = COLOR GRAPHICS MODE

———————————————————– INT 10 - VIDEO - SET CURSOR BLINK SPEED (SANYO)

REG AH  = 1
REG CX  = 0107H = FAST CURSOR BLINK
       <> 0107H = NORMAL CURSOR BLINK

———————————————————– INT 10 - VIDEO - SET CURSOR POSITION (SANYO)

REG AH = 2
REG DH,DL = ROW,COLUMN - 0,0 = UPPER LEFT
REG BH = PAGE NO. - 0 = GRAPHICS

———————————————————– INT 10 - VIDEO - READ CURSOR POSITION (SANYO)

REG AH = 3
REG BH = PAGE NO. - 0 = GRAPHICS
ON RETURN:
	REG DH,DL = ROW,COLUMN
	REG CH,CL = CURSOR MODE,CURRENT SET

———————————————————– INT 10 - VIDEO - SELECT DISPLAY PAGE (SANYO)

REG AH = 5
REG AL = NEW PAGE VALUE
	 0 - 7 FOR MODES 0 & 1
	 0 - 3 FOR MODES 2 & 3

———————————————————– INT 10 - VIDEO - SCROLL PAGE UP (SANYO)

REG AH = 6
REG AL = NO. OF LINES BLANKED AT BOTTOM OF PAGE
	 0 = BLANK WINDOW
REG BH = ATTRIBUTES TO BE USED ON BLANK LINE
WINDOW:
	REG CH,CL = UPPER LEFT CORNER
	REG DH,DL = LOWER RIGHT CORNER

———————————————————– INT 10 - VIDEO - SCROLL PAGE DOWN (SANYO)

REG AH = 7
REG AL = NO. OF LINES BLANKED AT TOP OF PAGE
	 0 = BLANK WINDOW
REG BH = ATTRIBUTES TO BE USED ON BLANK LINE
WINDOW:
	REG CH,CL = UPPER LEFT CORNER
	REG DH,DL = LOWER RIGHT CORNER

———————————————————– INT 10 - VIDEO - READ ATTRIBUTES/CHARACTER AT CURSOR POSITION

	 (SANYO)
REG AH = 8
REG BH = DISPLAY PAGE
ON RETURN:
	REG AL = CHAR
	REG AH = ATTRIBUTE OF CHAR - ALPHA MODE

———————————————————– INT 10 - VIDEO - WRITE ATTRIBUTES/CHARACTERS AT CURSOR POS

	 (SANYO)
REG AH = 9
REG AL = CHARACTER
REG BH = DISPLAY PAGE - ALPHA MODE
REG BL = ATTRIBUTES OF CHAR
REG CX = NO. OF CHAR TO WRITE

———————————————————– INT 10 - VIDEO - WRITE CHARACTERS ONLY AT CURSOR POS (SANYO)

REG AH = 0AH
REG AL = CHARACTER
REG BH = DISPLAY PAGE - ALPHA MODE
REG CX = NO. OF CHAR TO WRITE

———————————————————– INT 10 - TELETYPE (SCREEN) - SET DOT ON SCREEN (SANYO)

REG AH = 0CH
REG DX = ROW (0000 - 00C7)
REG CX = COLUMN (0000 - 027F)
NOTE - VIDEO MODES 6 & 7 ONLY

———————————————————– INT 10 - TELETYPE (SCREEN) - STATUS (SANYO)

REG AH = 0DH
ON RETURN:
	(VIDEO MODES 2 & 3)
		REG AH = NO. CHAR ON SCREEN
		REG AL = CURRENT MODE
		REG BH = DISPLAY PAGE
	(VIDEO MODES 6 & 7)
		REG AL = 1 = DOT SET
			 0 = DOT NOT SET

———————————————————– INT 10 - WRITE CHARACTER - ADVANCE CURSOR (SANYO)

REG AH = 0EH
REG AL = CHARACTER
REG BH = DISPLAY PAGE
REG BL = FOREGROUND COLOR (VIDEO MODES 6 & 7 ONLY)

———————————————————– INT 10 - GET CURRENT VIDEO MODE (SANYO)

REG AH = 0FH
ON RETURN:
	REG AH = # OF COLUMNS (ALWAYS 50)
	REG AL = CURRENT VIDEO MODE

———————————————————– INT 10 - GET VIDEO RAM ADDRESS (SANYO)

REG AH = 70H
ON RETURN:
	REG  AX  = SEGMENT ADDRESS OF THE FOLLOWING
	    [BX] = OFFSET ADDRESS OF GREEN PLANE
	    [CX] = SEGMENT ADDRESS OF GREEN PLANE
	    [DX] = SEGMENT ADDRESS OF RED/BLUE PLANE
		   (RED OFFSET = 0, BLUE OFFSET = 4000)

———————————————————– INT 10 - GET INCRAM ADDRESSES (SANYO)

REG AH = 71H
ON RETURN:
	REG  AX  = SEGMENT ADDRESS OF THE FOLLOWING
	    [BX] = SEGMENT ADDRESS OF INCRAM
	    [CX] = OFFSET ADDRESS OF INCRAM

———————————————————– INT 10 - SCROLL SCREEN RIGHT (SANYO)

REG AH = 72H
REG AL = NO. OF COLUMNS BLANKED AT LEFT OF PAGE
	 0 = BLANK WINDOW
REG BH = ATTRIBUTES TO BE USED ON BLANK COLUMNS
WINDOW:
	REG CH,CL = UPPER LEFT CORNER
	REG DH,DL = LOWER RIGHT CORNER

———————————————————- INT 10 - SCROLL SCREEN LEFT (SANYO)

REG AH = 73H
REG AL = NO. OF COLUMNS BLANKED AT RIGHT OF PAGE
	 0 = BLANK WINDOW
REG BH = ATTRIBUTES TO BE USED ON BLANK COLUMNS
WINDOW:
	REG CH,CL = UPPER LEFT CORNER
	REG DH,DL = LOWER RIGHT CORNER

———————————————————– INT 11 - EQUIPMENT DETERMINATION (IBM, SANYO, and others)

ON RETURN:
	REG AX = UNKNOWN RETURN
NOTE -	Not used in SANYO.  Active in IBM and other
	computers.  Returns code equvilent to
	equipment connected to computer.

———————————————————– INT 12 - MEMORY SIZE (SANYO)

ON RETURN:
	REG AX = NO. OF CONTIGUOUS 1K BLOCKS

———————————————————– INT 13 - RESET DISK SYSTEM (SANYO)

REG AH = 0

———————————————————– INT 13 - STATUS OF DISK SYSTEM (SANYO)

REG AH = 1
ON RETURN:
	REG AL = STATUS

———————————————————– INT 13 - READ SECTORS INTO MEMORY (SANYO)

REG AH = 2
REG AL = NO. OF SECTORS
REG CH = TRACK NO.
REG CL = SECTOR NO.
REG DH = HEAD NO.
REG DL = DRIVE NO.
REG ES:BX = ADDRESS OF BUFFER
ON RETURN:
	REG AH  0 = SUCCESSFUL
		  = REASON FOR FAILURE
	FLAG CF 0 = SUCCESSFUL
		1 = FAILED

———————————————————– INT 13 - WRITES SECTORS FROM MEMORY (SANYO)

REG AH = 3
REG AL = NO. OF SECTORS
REG CH = TRACK NO.
REG CL = SECTOR NO.
REG DH = HEAD NO.
REG DL = DRIVE NO.
REG ES:BX = ADDRESS OF BUFFER
ON RETURN:
	REG AH  0 = SUCCESSFUL
		  = REASON FOR FAILURE
	FLAG CF 0 = SUCCESSFUL
		1 = FAILED

———————————————————– INT 13 - VERIFIES SECTORS (SANYO)

REG AH = 4
REG AL = NO. OF SECTORS
REG CH = TRACK NO.
REG CL = SECTOR NO.
REG DH = HEAD NO.
REG DL = DRIVE NO.
ON RETURN:
	REG AH  0 = SUCCESSFUL
		  = REASON FOR FAILURE
	FLAG CF 0 = SUCCESSFUL
		1 = FAILED

———————————————————– INT 14 - SERIAL I/O - INITIALIZE USART (SANYO)

REG AH = 0
REG AL = INITIALIZING PARAMETERS
BIT	 7 - 6 - 5	4 - 3	 2    1 - 0
	-BAUD RATE-    PARITY  STOP    WORD
				BITS  LENGTH
	000  110 BD    00 NONE	0-1   10 - 7
	001  150 BD    01 ODD	1-2   11 - 8
	010  300 BD    11 EVEN
	011  600 BD
	100 1200 BD
	101 2400 BD
	110 4800 BD
	111 9600 BD

———————————————————– INT 14 - SERIAL I/O - TRANSMIT CHARACTER (SANYO)

REG AH = 1
REG AL = CHARACTER
ON RETURN:
	REG AH, BIT 7, SET IF CHAR NOT SENT

———————————————————– INT 14 - SERIAL I/O - RECEIVE CHARACTER (SANYO)

REG AH = 2
ON RETURN:
	REG AL = CHARACTER RECEIVED
	REG AH, BIT 7, SET IF TIMEOUT OCCURED

———————————————————– INT 14 - SERIAL I/O - GET USART STATUS (SANYO)

REG AH = 3
ON RETURN:
	REG AH = BIT 7 = TIMEOUT
		 BIT 5 = TXRDY
		 BIT 4 = BREAK DETECT
		 BIT 3 = FRAMING ERROR
		 BIT 2 = PARITY ERROR
		 BIT 1 = OVERRUN ERROR
		 BIT 0 = RXRDY
	REG AL = BIT 5 = DSR

———————————————————– INT 16 - KEYBOARD I/O - READ CHAR FROM BUFFER - WAIT IF EMPTY

		(SANYO)
REG AH = 0
ON RETURN:
	REG AH = SCAN CODE
	REG AL = CHARACTER

———————————————————– INT 16 - KEYBOARD I/O - CHECK BUFFER - DO NOT CLEAR (SANYO)

REG AH = 1
ON RETURN:
	FLAG ZF = 0 = CHAR IN BUFFER
	REG AH = SCAN CODE
	REG AL = CHARACTER
	FLAG ZF = 1 = NO CHAR IN BUFFER

———————————————————– INT 16 - KEYBOARD INPUT (SANYO)

REG AH = 0AH
ON RETURN:
	REG AH = SCAN CODE
	REG AL = ASCII CODE

———————————————————– INT 16 - KEYBOARD STATUS (SANYO)

REG AH = 0BH
ON RETURN:
	(ZF) = 1 = NO ENTRY
	       0 = CODE AVAILABLE - IN BUFFER
				  - IN REG AX

———————————————————– INT 17 - CHARACTER TO PRINTER (SANYO)

REG AH = 0
REG AL = CHAR
ON RETURN:
	REG AH = STATUS
		 BIT = 0 = TIME OUT
		       4 = SELECTED
		       5 = OUT OF PAPER
		       7 = BUSY

———————————————————– INT 17 - INITIALIZE PRINTER (SANYO)

REG AH = 1
ON RETURN:
	REG AH = STATUS
		 BIT = 0 = TIME OUT
		       4 = SELECTED
		       5 = OUT OF PAPER
		       7 = BUSY

———————————————————– INT 17 - STATUS OF PRINTER (SANYO)

REG AH = 2
ON RETURN:
	REG AH = STATUS
		 BIT = 0 = TIME OUT
		       4 = SELECTED
		       5 = OUT OF PAPER
		       7 = BUSY

———————————————————– INT 1A - UNKNOWN


INT 1B - BREAK KEY (IBM)

NOTE -	This interrupt is called when the keyboard
	scanner of the IBM machines detects CTRL and
	BREAK pressed at the same time. It normally
	points to a simple IRET so that it does
	nothing, but many programs change it to
	return a CTRL-C scan code and thus invoke
	INT 23.

———————————————————– INT 1C - CLOCK TICK (IBM)

NOTE -	This interrupt is called (in the IBM) at the
	end of each time-update operation by the
	real-time clock routines. It normally points to
	an IRET unless PRINT.COM has been installed.

———————————————————– INT 20 - PROGRAM TERMINATION (MSDOS generic)

NOTE -	NO PARAMETERS - RETURNS TO DOS

———————————————————– INT 21 - PROGRAM TERMINATION (MSDOS generic)

Reg AH = 0
NOTE -	Same action as INT 20; returns to DOS.

———————————————————– INT 21 - KEYBOARD INPUT (MSDOS generic)

REG AH = 1
ON RETURN:
	REG AL = CHARACTER

———————————————————– INT 21 - DISPLAY OUTPUT (MSDOS generic)

REG AH = 2
REG DL = CHAR

———————————————————– INT 21 - AUX INPUT - WAIT FOR CHARACTER (MSDOS generic)

REG AH = 3
ON RETURN:
	REG AL = CHARACTER

———————————————————– INT 21 - AUX OUTPUT (MSDOS generic)

REG AH = 4
REG DL = CHAR

———————————————————– INT 21 - PRINTER OUTPUT (MSDOS generic)

REG AH = 5
REG DL = CHAR

———————————————————– INT 21 - DIRECT CONSOLE I/O - CHARACTER OUTPUT (MSDOS generic)

REG AH = 06H
REG DL = CHAR

———————————————————– INT 21 - DIRECT CONSOLE I/O - CHARACTER INPUT (MSDOS generic)

REG AH = 06H
REG DL = 0FFH
ON RETURN:
	FLAG ZF = SET    = NO CHARACTER
		  CLEAR  = CHARACTER RECIEVED
		  REG AL = CHARACTER

———————————————————– INT 21 - STDIN INPUT - NO ECHO (MSDOS generic)

REG AH = 7
ON RETURN:
	FLAG ZF = SET    = NO CHARACTER
		  CLEAR  = CHARACTER RECIEVED
		  REG AL = CHARACTER

———————————————————– INT 21 - KEYBOARD INPUT - NO ECHO (MSDOS generic)

REG AH = 8
ON RETURN:
	REG AL = CHAR

———————————————————– INT 21 - PRINT STRING (MSDOS generic)

REG AH	   = 9
REG DS:DX  = ADDRESS OF STRING
NOTE - STRING TERMINATED WITH "$"

———————————————————– INT 21 - BUFFERED KEYBOARD INPUT (MSDOS generic)

REG AH     = 0AH
    DS:DX  = ADDRESS OF BUFFER
NOTE -	FIRST BYTE OF BUFFER MUST HAVE MAX LENGTH
ON RETURN:
	SECOND BYTE HAS ACTUAL LENGTH

———————————————————– INT 21 - CHECK STANDARD INPUT STATUS (MSDOS generic)

REG AH = 0BH
ON RETURN:
	REG AL = FFH IF CHAR TYPED
		 00H IF NOT TYPED

———————————————————– INT 21 - CLEAR KEYBOARD BUFFER (MSDOS generic)

REG AH = 0CH
REG AL = 1, 6, 7, 8, 0AH
NOTE -	Flushes all typeahead input, then executes
	function specified by AL (by moving it to AH
	and repeating the INT 21 call).

———————————————————– INT 21 - DISK RESET (MSDOS generic)

REG AH = 0DH
NOTE -	Flushes all disk buffers.

———————————————————– INT 21 - DRIVE COUNT (MSDOS generic)

REG AH = 0EH
ON RETURN:
	REG AL = NUMBER OF DRIVES
NOTE -	Minimum number is 2.

———————————————————– INT 21 - OPEN DISK FILE (MSDOS generic)

REG AH = 0FH
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB
ON RETURN:
	REG AL = 00 = FILE FOUND
		 FF = FILE NOT FOUND

———————————————————– INT 21 - CLOSE DISK FILE (MSDOS generic)

REG AH = 10H
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB

———————————————————– INT 21 - SEARCH FIRST USING FCB (MSDOS generic)

REG AH = 11H
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB
NOTE -	FCB may contain wildcard chars
ON RETURN:
	REG AL = 00 = FILE FOUND
		 FF = FILE NOT FOUND
NOTE -	If file found, FCB is created at DTA address
	and set up to OPEN or DELETE it.

———————————————————– INT 21 - SEARCH NEXT USING FCB (MSDOS generic)

REG AH = 12H
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB
NOTE -	FCB may contain wildcard chars.	 Search First
	must have been called earlier.
ON RETURN:
	REG AL = 00 = FILE FOUND
		 FF = FILE NOT FOUND
NOTE -	If file found, FCB is created at DTA address
	and set up to OPEN or DELETE it.  If not
	found, end of directory.

———————————————————– INT 21 - DELETE FILE VIA FCB (MSDOS generic)

REG AH = 13H
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB
ON RETURN:
	REG AL = 00 = FILE FOUND
		 FF = FILE NOT FOUND

———————————————————– INT 21 - SEQUENTIAL DISK FILE READ (MSDOS generic)

REG AH = 14H
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB
ON RETURN:
	REG AL = 0 = SUCCESSFUL READ
		 1 = END OF FILE
		 2 = DATA TRANSFER AREA TOO SMALL
		 3 = PARTIAL RECORD, EOF

———————————————————– INT 21 - SEQUENTIAL DISK RECORD WRITE (MSDOS generic)

REG AH = 15H
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB
ON RETURN:
	REG AL = 0 = SUCCESSFUL WRITE
		 1 = DISKETTE FULL
		 2 = DATA TRANSFER AREA TOO SMALL

———————————————————– INT 21 - CREATE A DISK FILE (MSDOS generic)

REG AH = 16H
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB
ON RETURN:
	REG AL = 00 = SUCCESSFUL CREATION
		 FF = NO ROOM IN DIRECTORY

———————————————————– INT 21 - RENAME FILE VIA FCB (MSDOS generic)

REG AH = 17H
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB
NOTE -	FCB contains new name starting at offset
	byte 17H.
ON RETURN:
	REG AL = 00 = SUCCESSFUL CREATION
		 FF = NO ROOM IN DIRECTORY

———————————————————– INT 21 - INTERNAL (MSDOS generic)

REG AH = 18H
ON RETURN:
	REG AL = 0
NOTE -	Use unknown - Does nothing.

———————————————————– INT 21 - GET DEFAULT DRIVE NUMBER (MSDOS generic)

REG AH = 19H
ON RETURN:
	REG AL = DEFAULT DRIVE NUMBER (0-3) 

———————————————————– INT 21 - SET DISK TRANSFER AREA ADDRESS (MSDOS generic)

REG AH = 1AH
REG DS = SEGMENT ADDRESS OF BUFFER
REG DX = OFFSET ADDRESS OF BUFFER

———————————————————– INT 21 - DEFAULT DRIVE DISK SIZE (MSDOS generic)

REG AH = 1BH
ON RETURN:
	REG DS:BX POINTS TO FAT ID BYTE
	REG DX = AU's ON DISK
	REG AL = SECTORS PER AU
	REG CX = BYTES PER SECTOR
NOTE -	AU = allocation unit or granules

———————————————————– INT 21 - SPECIFIC DRIVE's DISK SIZE (MSDOS generic)

REG AH = 1CH
Reg DL = DRIVE NUMBER
ON RETURN:
	REG DS:BX POINTS TO FAT ID BYTE
	REG DX = AU's ON DISK
	REG AL = SECTORS PER AU
	REG CX = BYTES PER SECTOR
NOTE -	AU = allocation unit or granules

———————————————————– INT 21 - INTERNAL (MSDOS generic)

REG AH = 1DH
ON RETURN:
	REG AL = 0
NOTE -	Use unknown - Does nothing.

———————————————————– INT 21 - INTERNAL (MSDOS generic)

REG AH = 1EH
ON RETURN:
	REG AL = 0
NOTE -	Use unknown - Does nothing.

———————————————————– INT 21 - INTERNAL (MSDOS generic)

REG AH = 1FH
NOTE -	Other registers unknown
ON RETURN:
	REG AL = 00 = No Error
		 FF = Error
	REG ES:BX = UNKNOWN VECTOR

———————————————————– INT 21 - INTERNAL (MSDOS generic)

REG AH = 20H
ON RETURN:
	REG AL = 0
NOTE -	Use unknown - Does nothing.

———————————————————– INT 21 - RANDOM DISK RECORD READ (MSDOS generic)

REG AH = 21H
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB
ON RETURN:
	REG AL = 0 = SUCCESSFUL READ
		 1 = END OF FILE
		 2 = DATA TRANSFER AREA TOO SMALL
		 3 = PARTIAL RECORD, EOF

———————————————————– INT 21 - RANDOM DISK WRITE (MSDOS generic)

REG AH = 22H
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB
ON RETURN:
	REG AL = 0 = SUCCESSFUL WRITE
		 1 = DISKETTE FULL
		 2 = DATA TRANSFER AREA TOO SMALL

———————————————————– INT 21 - FILE SIZE (MSDOS generic)

REG AH = 23H
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB
ON RETURN:
	REG AL = 00 = FILE FOUND
		 FF = FILE NOT FOUND
	FCB SET TO NO. OF RECORDS

———————————————————– INT 21 - SET RANDOM RECORD FIELD (MSDOS generic)

REG AH = 24H
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB
NOTE -	FCB must be OPEN already.  On return, Random
	Record Field of FCB is set to be same as
	Current Block and Current Record.

———————————————————– INT 21 - SET INTERRUPT VECTOR (MSDOS generic)

REG AH = 25H
REG AL = INTERRUPT NUMBER
REG DS:DX = INTERRUPT VECTOR

———————————————————– INT 21 - CREATE PSP (MSDOS generic)

REG AH = 26H
REG DX = SEGMENT
NOTE -	Current PSP is copied to specified segment

———————————————————– INT 21 - RANDOM BLOCK READ (MSDOS generic)

REG AH = 27H
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB
REG CX = NO. OF RECORDS TO BE READ
ON RETURN:
	REG AL = 0 = SUCCESSFUL READ
		 1 = END OF FILE
		 2 = DATA TRANSFER AREA TOO SMALL
		 3 = PARTIAL RECORD, EOF

———————————————————– INT 21 - RANDOM BLOCK WRITE (MSDOS generic)

REG AH = 28H
REG DS = SEGMENT ADDRESS OF FCB
REG DX = OFFSET ADDRESS OF FCB
REG CX = NO. OF RECORDS TO BE WRITTEN
ON RETURN:
	REG AL = 0 = SUCCESSFUL WRITE
		 1 = DISKETTE FULL
		 2 = DATA TRANSFER AREA TOO SMALL

———————————————————– INT 21 - PARSE FILENAME (MSDOS generic)

REG AH = 29H
NOTE -	Very complex, suggested you see:
	Tandy 2000 Programer's manual
	Stock no. 26-5403
	page 82

———————————————————– INT 21 - GET CURRENT DATE (MSDOS generic)

REG AH = 2AH
ON RETURN:
	REG DL = DAY
	REG DH = MONTH
	REG CX = YEAR

———————————————————– INT 21 - SET CURRENT DATE (MSDOS generic)

REG AH = 2BH
REG DL = DAY
REG DH = MONTH
REG CX = YEAR
ON RETURN:
	REG AL = 0  = NO ERROR
		 FF = ERROR

———————————————————– INT 21 - GET CURRENT TIME (MSDOS generic)

REG AH = 2CH
ON RETURN:
	REG CH = HOURS
	REG CL = MINUTES
	REG DH = SEC
	REG DL = SEC/100
NOTE -	TIME IS UPDATED EVERY 5/100 SECOND

———————————————————– INT 21 - SET CURRENT TIME (MSDOS generic)

REG AH = 2DH
REG CH = HOURS
REG CL = MINUTES
REG DH = SEC
REG DL = SEC/100
ON RETURN:
	REG AL = 0  = NO ERROR
		 FF = ERROR

———————————————————– INT 21 - SET VERIFY FLAG (MSDOS generic)

REG AH = 2EH
REG AL = 1 = ON
	 0 = OFF

———————————————————– INT 21 - GET DTA ADDRESS (Disk Transfer Area) - (MSDOS generic)

REG AH = 2FH
ON RETURN:
	REG ES = SEGMENT
	REG BX = OFFSET

———————————————————– INT 21 - GET DOS VERSION (MSDOS generic)

REG AH = 30H
ON RETURN:
	REG AL = MAJOR VERSION NUMBER
	REG AH = MINOR VERSION NUMBER
NOTE -	Example, DOS 2.10 returns AX = 0A02H

———————————————————– INT 21 - TERMINATE BUT STAY RESIDENT (MSDOS generic)

REG AH = 31H
REG AL = EXIT CODE
REG DX = PROGRAM SIZE, IN 16 BYTE PARAGRAPHS

———————————————————– INT 21 - INTERNAL (MSDOS generic)

REG AH = 32H
NOTE -	Other registers unknown
ON RETURN:
	REG AL = 00 = No Error
		 FF = Error
	REG ES:BX = UNKNOWN VECTOR

———————————————————– INT 21 - GET or SET BREAK KEY (MSDOS generic)

REG AH = 33H
REG AL = 0 = GET
	 1 = SET
REG DL = 0 = OFF
	 1 = ON
ON RETURN:
	REG DL = 0 = OFF
		 1 = ON

———————————————————– INT 21 - GET CRITICAL SECTION FLAG PIONTER (MSDOS generic)

REG AH = 34H
ON RETURN:
	REG ES:BX = POINTER TO FLAG WORD
NOTE -	DOS can be safely interrupted if flag word
	is null

———————————————————– INT 21 - GET INTERRUPT VECTOR (MSDOS generic)

REG AH = 35H
Reg AL = INT number
ON RETURN:
	REG ES = SEGMENT
	REG BX = OFFSET

———————————————————– INT 21 - DISK SPACE (MSDOS generic)

REG AH = 36H
REG DL = DRIVE NUMBER (1-4)
ON RETURN:
	REG AX = UNKNOWN - PERHAPS (SIDES)
	REG BX = UNKNOWN - PERHAPS (BLOCKS FREE)
	REG CX = UNKNOWN - PERHAPS (BLOCK SIZE)
	REG DX = UNKNOWN - PERHAPS (TOTAL BLOCKS)
NOTE -	MULT AX x CX x BX for FREE SPACE ON DISK
	MULT AX x CX x DX for TOTAL DISK SPACE

———————————————————– INT 21 - DEVICE - MULTIFUNCTION (MSDOS generic)

REG AH = 37H
REG AL = 0, 1, 2, 3 to select subfunction
REG DL = SWITCHAR byte for subfunction 1
       = Device Availability byte for subfn 2
	 (if 0, devices are in DEV subdir)
ON RETURN:
	REG DL = SWITCHAR (subfunction 0)
	       = DEVICE AVAILABLE BYTE (subfunction 3)

———————————————————– INT 21 - GET COUNTRY-DEPENDENT INFORMATION (MSDOS generic)

REG AH = 38H
NOTE -	Very complex, suggested you see:
	Tandy 2000 Programer's manual
	Stock no. 26-5403
	pages 101-104

———————————————————– INT 21 - CREATE A SUBDIRECTORY (MSDOS generic)

REG AH = 39H
REG DS = SEGMENT OF ASCIIZ
REG DX = OFFSET OF ASCIIZ
ON RETURN:
	Flag CF = 0 = SUCCESSFUL
		  1 = ERROR
NOTE -	REG AX = Error code, if any

———————————————————– INT 21 - REMOVE A DIRECTORY ENTRY (MSDOS generic)

REG AH = 3AH
REG DS = SEGMENT OF ASCIIZ
REG DX = OFFSET OF ASCIIZ
ON RETURN:
	Flag CF = 0 = SUCCESSFUL
		  1 = ERROR
NOTE -	REG AX = Error code, if any

———————————————————– INT 21 - CHANGE THE CURRENT DIRECTORY (MSDOS generic)

REG AH = 3BH
REG DS = SEGMENT OF ASCIIZ
REG DX = OFFSET OF ASCIIZ
ON RETURN:
	Flag CF = 0 = SUCCESSFUL
		  1 = ERROR
NOTE -	REG AX = Error code, if any

———————————————————– INT 21 - CREATE A FILE WITH HANDLE (MSDOS generic)

REG AH = 3CH
REG CX = ATTRIBUTES OF FILE
REG DS = SEGMENT OF ASCIIZ
REG DX = OFFSET OF ASCIIZ
ON RETURN:
	Flag CF = 0 = SUCCESSFUL
		  1 = ERROR
	REG AX = FILE HANDLE
		 OR ERROR CODE

———————————————————– INT 21 - OPEN DISK FILE WITH HANDLE (MSDOS generic)

REG AH = 3DH
REG AL = ACCESS CODE = 0 = READ ONLY
		       1 = WRITE ONLY
		       2 = READ/WRITE
REG DS = SEGMENT OF ASCIIZ
REG DX = OFFSET OF ASCIIZ
ON RETURN:
	FLAG CF = 0 = SUCCESSFUL
		  1 = ERROR
	REG AX  = FILE HANDLE
		  OR ERROR CODE

———————————————————– INT 21 - CLOSE A FILE WITH HANDLE (MSDOS generic)

REG AH = 3EH
REG BX = FILE HANDLE
ON RETURN:
	FLAG CF = 0 = SUCCESSFUL
		  1 = ERROR
NOTE -	REG AX = Error code, if any

———————————————————– INT 21 - READ FROM FILE WITH HANDLE (MSDOS generic)

REG AH = 3FH
REG BX = FILE HANDLE
REG CX = NO. OF BYTES TO READ
REG DS = SEGMENT ADDRESS OF BUFFER
REG DX = OFFSET ADDRESS OF BUFFER
ON RETURN:
	FLAG CF = 0 = SUCCESSFUL READ
		  1 = ERROR
	REG AX = 0 = END OF FILE
		 OR NO. OF BYTES READ
		 OR ERROR CODE

———————————————————– INT 21 - WRITE TO FILE WITH HANDLE (MSDOS generic)

REG AH = 40H
REG BX = FILE HANDLE
REG CX = NO. OF BYTES TO Write
REG DS = SEGMENT ADDRESS OF BUFFER
REG DX = OFFSET ADDRESS OF BUFFER
ON RETURN:
	FLAG CF = 0 = SUCCESSFUL WRITE
		  1 = ERROR
	REG AX = NO. OF BYTES Writtten
		 OR ERROR CODE

———————————————————– INT 21 - DELETE A FILE (MSDOS generic)

REG AH = 41H
REG DS = SEGMENT OF ASCIIZ TO DELETE
REG DX = OFFSET OF ASCIIZ TO DELETE
ON RETURN:
	FLAG CF = 0 = SUCCESSFUL
		  1 = ERROR
NOTE -	REG AX = Error code, if any

———————————————————– INT 21 - MOVE FILE READ/WRITE POINTER (MSDOS generic)

REG AH = 42H
REG AL = METHOD VALUE
NOTE -	0 = offset from beginning of file
	1 = offset from present location
	2 = offset from end of file
REG BX = FILE HANDLE
REG CX = BYTES OFFSET HIGH
REG DX = BYTES OFFSET LOW
ON RETURN:
	FLAG CF = 0 = SUCCESSFUL MOVE
		  1 = ERROR
	REG DX = NEW LOC. OF R/W POINTER HIGH
	REG AX = NEW LOC. OF R/W POINTER LOW
		 ERROR CODE IF ERROR

———————————————————– INT 21 - GET/PUT FILE ATTRIBUTES (MSDOS generic)

REG AH = 43H
REG AL = 0 = GET FILE ATTRIBUTES
	 1 = PUT FILE ATTRIBUTES
REG CX = FILE ATTRIBUTES ON PUT
REG DX = POINTER TO FILE ASCIIZ FILE NAME
ON RETURN:
	FLAG CF = SET IF ERROR
	REG AX = Error Code 1, 3, or 5
	REG CX = FILE ATTRIBUTES ON GET

———————————————————– INT 21 - IOCTL (MSDOS generic)

REG AH = 44H
NOTE -	Very complex, suggested you see:
	Tandy 2000 Programer's manual
	Stock no. 26-5403
	pages 121-124

———————————————————– INT 21 - CREATE DUPLICATE HANDLE (MSDOS generic)

REG AH = 45H
REG BX = FILE HANDLE TO DUPLICATE
ON RETURN:
	FLAG CF = 0 = SUCCESSFUL
		  1 = ERROR
	REG AX  = DUPLICATE FILE HANDLE
		  OR ERROR CODE

———————————————————– INT 21 - FORCE DUPLICATE HANDLE (MSDOS generic)

REG AH = 46H
REG BX = CURRENT FILE HANDLE
REG CX = NEW FILE HANDLE
ON RETURN:
	FLAG CF = 0 = SUCCESSFUL
		  1 = ERROR
	REG AX  = ERROR CODE
NOTE -	If no error, both handles now refer to
	Existing file

———————————————————– INT 21 - GET CURRENT DIRECTORY (MSDOS generic)

REG AH = 47H
REG DL = DRIVE = 0 = DEFAULT
		 1 = A - ETC.
REG DS:SI = 64 BYTE BUFFER AREA
ON RETURN:
	FLAG CF = 0 = SUCCESSFUL
		  1 = ERROR
	REG AX  = ERROR CODE
NOTE -	If no error, REG DS:DI points to ASCIIZ
	name of current directory (not including
	drive ID)

———————————————————– INT 21 - ALLOCATE MEMORY (MSDOS generic)

REG AH = 48H
REG BX = NUMBER OF 16 BYTE PARAGRAPHS DESIRED
ON RETURN:
	FLAG CF = 1 = REG BX = MAX NUMBER AVAILABLE
		  0 = REG AX = SEGMENT ADDRESS OF
			       ALLOCATED MEMORY

———————————————————– INT 21 - SET MEMORY FREE (MSDOS generic)

REG AH = 49H
REG ES = SEGMENT ADDRESS OF AREA TO BE FREED
ON RETURN:
	FLAG CF = 0 = SUCCESSFUL
		  1 = ERROR
	REG AX  = ERROR CODE

———————————————————– INT 21 - CHANGE BLOCK SIZE (MSDOS generic)

REG AH = 4AH
REG ES = SEGMENT ADDRESS OF BLOCK TO CHANGE
REG BX = NEW SIZE IN 16 BYTE PARAGRAPHS
ON RETURN:
	FLAG CF = 0 = SUCCESSFUL
		  1 = ERROR
		      REG BX  = MAX NUM AVAIL

———————————————————– INT 21 - LOAD OR EXECUTE (MSDOS generic)

REG AH = 4BH
NOTE -	Very complex, suggested you see:
	Tandy 2000 Programer's manual
	Stock no. 26-5403
	pages 131-133

———————————————————– INT 21 - PROGRAM TERMINATION - WITH EXIT CODE (MSDOS generic)

REG AH = 4CH
REG AL = EXIT CODE
NOTE -	Control passes to DOS

———————————————————– INT 21 - EXIT CODE (MSDOS generic)

REG AH = 4DH
ON RETURN:
	REG AX = EXIT CODE

———————————————————– INT 21 - FIND FIRST ASCIIZ (MSDOS generic)

REG AH = 4EH
NOTE -	Very complex, suggested you see:
	Tandy 2000 Programer's manual
	Stock no. 26-5403
	pages 136-138

———————————————————– INT 21 - FIND NEXT ASCIIZ (MSDOS generic)

REG AH = 4FH
NOTE -	Very complex, suggested you see:
	Tandy 2000 Programer's manual
	Stock no. 26-5403
	pages 136-138

———————————————————– INT 21 - SET PSP SEGMENT (MSDOS generic)

REG AH = 50H
REG BX = SEGMENT ADDRESS OF NEW PSP

———————————————————– INT 21 - GET PSP SEGMENT (MSDOS generic)

REG AH = 51H
ON RETURN:
	REG BX = CURRENT PSP SEGMENT

———————————————————– INT 21 - INTERNAL (MSDOS generic)

REG AH = 52H
ON RETURN:
	REG ES:BX = UNKNOWN POINTER
NOTE -	Use unknown

———————————————————– INT 21 - INTERNAL (MSDOS generic)

REG AH = 53H
ON RETURN:
	UNKNOWN
NOTE -	Use unknown

———————————————————– INT 21 - GET VERIFY FLAG (MSDOS generic)

REG AH = 54H
ON RETURN:
	REG AL = 0 = OFF
		 1 = ON

———————————————————– INT 21 - CREATE CHILD PSP (MSDOS generic)

REG AH = 55H
REG DX = SEGMENT NUMBER FOR PSP

———————————————————– INT 21 - RENAME A FILE (MSDOS generic)

REG AH = 56H
REG DS = SEGMENT OF ASCIIZ OLD NAME
REG DX = OFFSET OF ASCIIZ OLD NAME
REG ES = SEGMENT OF ASCIIZ NEW NAME
REG DI = OFFSET OF ASCIIZ NEW NAME
ON RETURN:
	FLAG CF = CLEARED = SUCCESSFULL
		    SET   = ERROR &
		  REG AX  = ERROR CODE

———————————————————– INT 21 - GET/PUT - DATE/TIME (MSDOS generic)

REG AH = 57H
NOTE -	Very complex, suggested you see:
	Tandy 2000 Programer's manual
	Stock no. 26-5403
	page 141

———————————————————– INT 22 - TERMINATE ADDRESS (MSDOS generic)

NOTE -	FAR (DWORD) address of routine to be executed
	when program "returns to DOS".  Should NOT
	ever be called.

———————————————————– INT 23 - CONTROL "C" EXIT ADDRESS (MSDOS generic)

NOTE -	Automatically called from keyboard scanner
	when CONTROL-C or BREAK is detected.  Normally
	aborts program and returns to DOS, but may
	be changed.

———————————————————– INT 24 - FATAL ERROR ABORT ADDRESS (MSDOS generic)

NOTE -	Automatically called upon detection of
	unrecoverable disk error. Normally prints
	"Abort, Retry, or Ignore?" message and takes
	the reply, but may be changed if desired.

———————————————————– INT 25 - ABSOLUTE DISK READ (MSDOS generic)

REG AL = DRIVE (0-3)
REG DS:BX = DTA (buffer)
REG CX = NUMBER OF SECTORS TO READ
REG DX = FIRST RELATIVE SECTOR TO READ
NOTE -	0 reads boot sector, 1 reads FAT, etc.
ON RETURN:
	FLAG CF = CLEARED = SUCCESSFULL
		    SET   = ERROR &
		  REG AL  = ERROR CODE
NOTE -	This routine PUSHes the flags onto the
	stack when it is called, and does NOT
	remove them at exit  All of the registers,
	not just those listed, are changed by this
	routine.

———————————————————– INT 26 - ABSOLUTE DISK WRITE (MSDOS generic)

REG AL = DRIVE (0-3)
REG DS:BX = DTA (buffer)
REG CX = NUMBER OF SECTORS TO READ
REG DX = FIRST RELATIVE SECTOR TO READ
NOTE -	0 writes boot sector, 1 writes FAT, etc.
ON RETURN:
	FLAG CF = CLEARED = SUCCESSFULL
		    SET   = ERROR &
		  REG AL  = ERROR CODE

———————————————————– INT 27 - TERMINATE BUT STAY RESIDENT (MSDOS generic)

REG CS = CURRENT PROGRAM SEGMENT
REG DX = LAST PROGRAM BYTE + 1
NOTE -	RETURN IS TO DOS

———————————————————– INT 28 - INTERNAL VECTOR (IBM)

NOTE -	This interrupt is called from inside the
	"get input from keyboard" routine in DOS, if
	it is safe to use INT 21 to access the disk
	at that time. It is used primarily by the 
	PRINT.COM routines, but any number of other
	routines could be chained to it by saving
	the original vector, and calling it with
	a FAR call (or just JMPing to it) at the
	end of the new routine.
	Until PRINT.COM installs its own routine,
	this interrupt vector simply points to an
	IRET opcode.

———————————————————– INT 29 - INTERNAL UNKNOWN

NOTE -	This interrupt is called from the DOS output
	routines if output is going to a device rather
	than a file, and the device driver's attribute
	word has bit 3 (04H) set to "1".  Nothing
	more is known about it at this time.

———————————————————– INT 2E - UNKNOWN


INT 30 - UNKNOWN


INT 31 - UNKNOWN


INT F8 - INTERVAL TIMER (10 MSEC)


INT FA - USART READY (RS-232C)


INT FB - USART Rx READY (keyboard)


 ————————-

/data/webs/external/dokuwiki/data/pages/archive/programming/intrupt.txt · Last modified: 2007/03/31 02:14 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki