1424 lines
38 KiB
Plaintext
1424 lines
38 KiB
Plaintext
|
||
- - - 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)
|
||
-----------------------------------------------------------
|
||
|
||
-------------------------
|