
		- - - 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)
-----------------------------------------------------------

-------------------------
