home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 June
/
SIMTEL_0692.cdr
/
msdos
/
info
/
biosdos.arc
/
DOSREF1.CRD
< prev
next >
Wrap
Text File
|
1987-08-13
|
32KB
|
245 lines
SAU
| |
1 | 2 ┌────────────────────────────┐ |
IBM PC-DOS PROGRAMMER'S | │ INT 20 - PROGRAM TERMINATE │ |
QUICK REFERENCE SUMMARY | └────────────────────────────┘ |
by DAVID E. POWELL | |
| DESCRIPTION: INT 20 RESTORES THE TERMINATE, CTL-BREAK, |
┌───────────────┐ | AND CRITICAL ERROR EXIT ADDRESSES, FLUSHES|
│ ERROR RETURNS │ | ALL BUFFERS, AND RETURNS TO DOS |
└───────────────┘ | |
| INPUT PARMS: CS = ADDRESS OF PROGRAM SEGMENT PREFIX |
OF THE FOLLOWING ERROR CODES, ONLY CODES 1-12 ARE | |
RETURNED IN AX UPON EXIT FROM INTERRUPT 21 OR 24. | OUTPUT PARMS: NONE |
THE REST ARE OBTAINED BY ISSUING THE "GET EXTENDED | |
ERROR" FUNCTION CALL (SEE INT 21, AH=59). | |
| |
01 - INVALID FUNCTION NUMBER | ┌───────────────────────────┐ |
02 - FILE NOT FOUND | │ INT 21 - FUNCTION REQUEST │ |
03 - PATH NOT FOUND | └───────────────────────────┘ |
04 - TOO MANY OPEN FILES (NO HANDLES LEFT) | |
05 - ACCESS DENIED | DESCRIPTION: PERFORM A DOS FUNCTION. |
06 - INVALID HANDLE | |
07 - MEMORY CONTROL BLOCKS DESTROYED | INPUT PARMS: AH = FUNCTION NUMBER. OTHER REGISTERS |
08 - INSUFFICIENT MEMORY | ARE SET AS DESCRIBED BELOW. |
09 - INVALID MEMORY BLOCK ADDRESS | |
0A - INVALID ENVIRONMENT | OUTPUT PARMS: IF ERROR ENCOUNTERED, CY IS SET TO 1 AND |
0B - INVALID FORMAT | AX CONTAINS A RUDIMENTARY ERROR CODE. |
0C - INVALID ACCESS CODE | EXTENDED ERROR INFORMATION MAY BE OBTAINED|
0D - INVALID DATA | BY ISSUING FUNCTION REQUEST 59. |
0E - RESERVED | |
0F - INVALID DRIVE WAS SPECIFIED | |
10 - ATTEMPT TO REMOVE THE CURRENT DIRECTORY | --------- FUNCTION REQUEST SUMMARY ---------- |
11 - NOT SAME DEVICE | |
12 - NO MORE FILES | 00 - PROGRAM TERMINATE |
13 - ATTEMPT TO WRITE ON A WRITE-PROTECTED DISKETTE | 01 - WAIT FOR KEYBOARD INPUT |
14 - UNKNOWN UNIT | 02 - DISPLAY OUTPUT |
15 - DRIVE NOT READY | 03 - WAIT FOR AUXILIARY DEVICE INPUT |
16 - UNKNOWN COMMAND | 04 - AUXILARY OUTPUT |
17 - CRC ERROR | 05 - PRINTER OUTPUT |
18 - BAD REQUEST STRUCTURE LENGTH | 06 - DIRECT CONSOLE I/O |
19 - SEEK ERROR | 07 - WAIT FOR DIRECT CONSOLE INPUT WITHOUT ECHO |
1A - UNKNOWN MEDIA TYPE | 08 - WAIT FOR CONSOLE INPUT WITHOUT ECHO |
1B - SECTOR NOT FOUND | 09 - PRINT STRING |
1C - PRINTER OUT OF PAPER | 0A - BUFFERED KEYBOARD INPUT |
1D - WRITE FAULT | 0B - CHECK STANDARD INPUT STATUS |
1E - READ FAULT | 0C - CLEAR KEYBOARD BUFFER, INVOKE KEYBOARD FUNCTION |
1F - GENERAL FAILURE | 0D - DISK RESET |
20 - SHARING VIOLATION | 0E - SELECT DISK |
21 - LOCK VIOLATION | 0F - OPEN FILE |
22 - INVALID DISK CHANGE | 10 - CLOSE FILE |
23 - FCB UNAVAILABLE | 11 - SEARCH FOR FIRST ENTRY |
24-4F RESERVED | 12 - SEARCH FOR NEXT ENTRY |
50 - FILE EXISTS | 13 - DELETE FILE |
51 - RESERVED | 14 - SEQUENTIAL READ |
52 - CANNOT MAKE | 15 - SEQUENTIAL WRITE |
53 - FAIL ON INT 24 | 16 - CREATE A FILE |
| 17 - RENAME FILE |
-------- ERROR CLASSES -------- | 19 - GET CURRENT DEFAULT DRIVE |
| 1A - SET DISK TRANSFER ADDRESS |
01 - OUT OF RESOURCE │ 08 - NOT FOUND | 1B - GET ALLOCATION TABLE INFORMATION |
02 - TEMPORARY SITUATION │ 09 - BAD FORMAT | 1C - GET ALLOCATION TABLE INFO FOR SPECIFIC DEVICE |
03 - AUTHORIZATION │ 0A - LOCKED | 21 - RANDOM READ |
04 - INTERNAL │ 0B - MEDIA FAILURE | 22 - RANDOM WRITE |
05 - HARDWARE FAILURE │ 0C - ALREADY EXISTS | 23 - GET FILE SIZE |
06 - SYSTEM FAILURE │ 0D - UNKNOWN | 24 - SET RELATIVE RECORD FIELD |
07 - APPLICATION ERROR │ | 25 - SET INTERRUPT VECTOR |
| 26 - CREATE NEW PROGRAM SEGMENT |
| 27 - RANDOM BLOCK READ |
--------- ACTION CODES ---------- | 28 - RANDOM BLOCK WRITE |
| 29 - PARSE FILENAME |
01 - RETRY │ 05 - IMMEDIATE EXIT | 2A - GET DATE |
02 - DELAY RETRY │ 06 - IGNORE | 2B - SET DATE |
03 - RE-ENTER INPUT │ 07 - USER INTERVENTION | 2C - GET TIME |
04 - ABORT │ | 2D - SET TIME |
| 2E - SET/RESET VERIFY SWITCH |
| 2F - GET DISK TRANSFER ADDRESS |
-------------- LOCUS -------------- | 30 - GET DOS VERSION NUMBER |
| 31 - TERMINATE PROCESS AND REMAIN RESIDENT |
01 - UNKNOWN │ 04 - SERIAL DEVICE | 33 - GET/SET CTL-BREAK CHECK STATE |
02 - BLOCK DEVICE │ 05 - MEMORY | 35 - GET VECTOR |
03 - RESERVED │ | 36 - GET DISK FREE SPACE |
| 38 - GET/SET COUNTRY DEPENDENT INFORMATION |
| 39 - CREATE SUBDIRECTORY (MKDIR) |
| 3A - REMOVE SUBDIRECTORY (RMDIR) |
| 3B - CHANGE CURRENT SUBDIRECTORY (CHDIR) |
| 3C - CREATE A FILE |
| 3D - OPEN A FILE |
| 3E - CLOSE A FILE HANDLE |
| 3F - READ FROM A FILE OR DEVICE |
| 40 - WRITE TO A FILE OR DEVICE |
| 41 - DELETE A FILE FROM A SPECIFIED SUBDIRECTORY |
| 42 - MOVE FILE READ/WRITE POINTER |
| 43 - CHANGE FILE MODE |
| 44 - I/O CONTROL FOR DEVICES |
┌──────────────────────────┐ | 45 - DUPLICATE A FILE HANDLE |
│ PRE-DEFINED FILE HANDLES │ | 46 - FORCE A DUPLICATE OF A FILE HANDLE |
└──────────────────────────┘ | 47 - GET CURRENT DIRECTORY |
| 48 - ALLOCATE MEMORY BLOCKS |
0000 - STANDARD INPUT DEVICE - CAN BE REDIRECTED | 49 - FREE ALLOCATED MEMORY BLOCKS |
0001 - STANDARD OUTPUT DEVICE - CAN BE REDIRECTED | 4A - MODIFY ALLOCATED MEMORY BLOCKS |
0002 - STANDARD ERROR DEVICE - CANNOT BE REDIRECTED | 4B - LOAD/EXECUTE A PROGRAM |
0003 - STANDARD AUXILARY DEVICE | 4C - TERMINATE A PROCESS |
0004 - STANDARD PRINTER DEVICE | 4D - GET RETURN CODE OF A SUB_PROCESS |
| 4E - FIND FIRST MATCHING FILE |
| 4F - FIND NEXT MATCHING FILE |
| 54 - GET VERIFY SETTING |
┌───────────────────────┐ | 56 - RENAME A FILE |
│ DOS INTERRUPT SUMMARY │ | 57 - GET/SET A FILE'S DATE AND TIME |
└───────────────────────┘ | 59 - GET EXTENDED ERROR INFORMATION |
| 5A - CREATE A TEMPORARY FILE |
20 - PROGRAM TERMINATE | 5B - CREATE A NEW FILE |
21 - FUNCTION REQUEST | 5C - LOCK/UNLOCK A FILE'S ACCESS |
22 - TERMINATE ADDRESS | 62 - GET ADDRESS OF PROGRAM SEGMENT PREFIX |
23 - CTL-BREAK EXIT ADDRESS | |
24 - CRITICAL ERROR HANDLER ADDRESS | |
25 - ABSOLUTE DISK READ | |
26 - ABSOLUTE DISK WRITE | |
27 - TERMINATE BUT STAY RESIDENT | |
2F - PRINTER | |
| CONTINUED ON NEXT PANEL |
| |
| 4 INT 21 - FUNCTION REQUEST (CONT.) |
3 INT 21 - FUNCTION REQUEST (CONT.) | |
| AH = 19 - GET CURRENT DEFAULT DRIVE |
| INPUT: NONE |
AH = 00 - PROGRAM TERMINATE | OUTPUT: AL = CURRENT DEFAULT DRIVE (0=A,1=B,etc.) |
INPUT: NONE | |
OUTPUT: NONE | AH = 1A - SET DISK TRANSFER ADDRESS |
| INPUT: DS:DX = THE NEW DISK TRANSFER ADDRESS |
AH = 01 - WAIT FOR KEYBOARD INPUT | OUTPUT: NONE |
INPUT: NONE | |
OUTPUT: AL = CHARACTER FROM STANDARD INPUT DEVICE | AH = 1B - GET ALLOCATION TABLE INFORMATION |
| INPUT: NONE |
AH = 02 - DISPLAY OUTPUT | OUTPUT: DS:BX = POINTER TO THE BYTE CONTAINING THE |
INPUT: DL = ASCII CHARACTER TO OUTPUT | FAT ID BYTE FOR THE DEFAULT DRIVE |
OUTPUT: NONE | DX = THE NUMBER OF ALLOCATION UNITS |
| AL = THE NUMBER OF SECTORS/ALLOCATION UNIT |
AH = 03 - WAIT FOR AUXILIARY DEVICE INPUT | CX = THE SIZE OF THE PHYSICAL SECTOR |
INPUT: NONE | |
OUTPUT: AL = CHARACTER FROM THE AUXILIARY DEVICE | AH = 1C - GET ALLOCATION TABLE INFO FOR SPECIFIC DEVICE |
| INPUT: DL = DRIVE NUMBER (0 FOR DEFAULT) |
AH = 04 - AUXILIARY OUTPUT | OUTPUT: DS:BX = POINTER TO THE BYTE CONTAINING THE |
INPUT: DL = CHARACTER TO OUTPUT | FAT ID BYTE FOR THE REQUESTED DRIVE|
OUTPUT: NONE | DX = THE NUMBER OF ALLOCATION UNITS |
| AL = THE NUMBER OF SECTORS/ALLOCATION UNIT |
AH = 05 - PRINTER OUTPUT | CX = THE SIZE OF THE PHYSICAL SECTOR |
INPUT: DL = CHARACTER TO OUTPUT | |
OUTPUT: NONE | AH = 21 - RANDOM READ |
| INPUT: DS:DX = POINTER TO AN OPENED FCB |
AH = 06 - DIRECT CONSOLE I/O | OUTPUT: AL = 00 IF READ WAS SUCCESSFUL |
INPUT: DL = CHARACTER TO OUTPUT IF <> FF | AL = 01 IF EOF (NO DATA READ) |
DL = FF IF CONSOLE INPUT REQUEST | AL = 02 IF DTA IS TOO SMALL |
OUTPUT: AL = INPUT CHARACTER IF DL = FF | AL = 03 IF EOF (PARTIAL RECORD READ) |
ZF = 1 IF DL = FF AND NO CHARACTER IS READY | |
| AH = 22 - RANDOM WRITE |
AH = 07 - WAIT FOR DIRECT CONSOLE INPUT WITHOUT ECHO | INPUT: DS:DX = POINTER TO AN OPENED FCB |
INPUT: NONE | OUTPUT: AL = 00 IF WRITE WAS SUCCESSFUL |
OUTPUT: AL = CHARACTER FROM STANDARD INPUT DEVICE | AL = 01 IF DISKETTE IS FULL |
| AL = 02 IF DTA IS TOO SMALL |
AH = 08 - WAIT FOR CONSOLE INPUT WITHOUT ECHO | |
INPUT: NONE | AH = 23 - GET FILE SIZE |
OUTPUT: AL = CHARACTER FROM STANDARD INPUT DEVICE | INPUT: DS:DX = POINTER TO AN UNOPENED FCB |
| OUTPUT: AL = 00 IF THE DIRECTORY ENTRY IS FOUND |
AH = 09 - PRINT STRING | AL = FF IF THE DIRECTORY ENTRY IS NOT FOUND|
INPUT: DS:DX = POINTER TO STRING ENDING IN "$" | |
OUTPUT: NONE | AH = 24 - SET RELATIVE RECORD FIELD |
| INPUT: DS:DX = POINTER TO AN OPENED FCB |
AH = 0A - BUFFERED KEYBOARD INPUT | OUTPUT: NONE |
INPUT: DS:DX = POINTER TO INPUT BUFFER: | |
┌─┬─┬────────── ┐ | AH = 25 - SET INTERRUPT VECTOR |
│1│2│ BUFFER ...│ | INPUT: DS:DX = ADDRESS OF INTERRUPT HANDLER |
└─┴─┴────────── ┘ | AL = INTERRUPT NUMBER |
│ │ │ | OUTPUT: NONE |
│ │ └──────── PLACE FOR INPUT CHARS | |
│ └────────────── NUMBER OF CHARS IN BUFFER | AH = 26 - CREATE A NEW PROGRAM SEGMENT |
└──────────────── SIZE OF BUFFER | INPUT: DX = SEGMENT NUMBER FOR THE NEW PROGRAM |
OUTPUT: CHARACTERS UP TO AND INCLUDING A CR ARE | OUTPUT: NONE |
PLACED INTO THE BUFFER BEGINNING AT BYTE | |
3. BYTE 2 IS SET TO THE NUMBER OF CHARACTERS | AH = 27 - RANDOM BLOCK READ |
PLACED INTO THE BUFFER. | INPUT: DS:DX = POINTER TO AN OPENED FCB |
| CX = THE NUMBER OF RECORDS TO BE READ |
AH = 0B - CHECK STANDARD INPUT STATUS | OUTPUT: AL = 00 IF READ WAS SUCCESSFUL |
INPUT: NONE | 01 IF EOF (NO DATA READ) |
OUTPUT: AL = FF IF CHARACTER IS AVAILABLE; 00 IF NOT | 02 IF DTA IS TOO SMALL |
| 03 IF EOF (PARTIAL RECORD READ) |
AH = 0C - CLEAR KEYBOARD BUFFER, INVOKE KEYBOARD FUNCTION| CX = ACTUAL NUMBER OF RECORDS READ |
INPUT: AL = INT 21 FUNCTION # 01,06,07,08,OR 0A | |
OUTPUT: KEYBOARD IS CLEARED,FUNCTION IN AL IS INVOKED | AH = 28 - RANDOM BLOCK WRITE |
| INPUT: DS:DX = POINTER TO AN OPENED FCB |
AH = 0D - DISK RESET | CX = NUMBER OF RECORDS TO BE WRITTEN |
INPUT: NONE | OUTPUT: AL = 00 IF WRITE WAS SUCCESSFUL |
OUTPUT: FLUSHES ALL FILE BUFFERS | = 01 IF DISKETTE IS FULL |
| = 02 IF DTA IS TOO SMALL |
AH = 0E - SELECT DISK | CX = ACTUAL NUMBER OF RECORDS WRITTEN |
INPUT: DL = DRIVE NUMBER (0=A,1=B,etc.) | |
OUTPUT: AL = TOTAL NUMBER OF DRIVES INCL. HARDFILES | AH = 29 - PARSE A FILENAME |
| INPUT: DS:SI = POINTER TO A COMMAND LINE TO PARSE |
AH = 0F - OPEN A FILE | ES:DI = POINTER TO A BUFFER TO BE FILLED |
INPUT: DS:DX = POINTER TO AN UNOPENED FCB | WITH AN UNOPENED FCB |
OUTPUT: AL = 00 IF FILE OPENED; AL = FF IF NOT | AL = BIT PATTERN TO CONTROL PARSING |
| (SEE DOS MANUAL FOR BIT MEANINGS) |
AH = 10 - CLOSE A FILE | OUTPUT: AL = 00 IF NO GLOBAL CHARACTERS |
INPUT: DS:DX = POINTER TO AN OPENED FCB | = 01 IF GLOBAL CHARACTERS PRESENT |
OUTPUT: AL = 00 IF FILE IS FOUND; AL = FF IF NOT | = FF IF DRIVE SPECIFIER IS INVALID |
| DS:SI = POINTER TO THE FIRST CHARACTER |
AH = 11 - SEARCH FOR FIRST ENTRY | AFTER THE PARSED FILENAME |
INPUT: DS:DX = POINTER TO AN UNOPENED FCB | ES:DI = POINTER TO THE UNOPENED FCB |
OUTPUT: AL = 00 IF MATCHING FILENAME FOUND; FF IF NOT | |
| AH = 2A - GET DATE |
AH = 12 - SEARCH FOR NEXT ENTRY | INPUT: NONE |
INPUT: DS:DX = POINTER TO SAME FCB IN AH=11 ABOVE | OUTPUT: AL = DAY OF THE WEEK (0=SUNDAY) |
OUTPUT: AL = 00 IF MATCHING FILENAME FOUND; FF IF NOT | CX = YEAR (1980-2099) |
| DH = MONTH (1-12) |
AH = 13 - DELETE A FILE | DL = DAY (1-31) |
INPUT: DS:DX = POINTER TO AN UNOPENED FCB | |
OUTPUT: AL = 00 IF FILE DELETED | AH = 2B - SET DATE |
AL = FF IF FILE NOT FOUND | INPUT: CX = YEAR (1980-2099) |
| DH = MONTH (1-12) |
AH = 14 - SEQUENTIAL READ | DL = DAY (1-31) |
INPUT: DS:DX = POINTER TO AN OPENED FCB | OUTPUT: AL = 00 IF DATE WAS VALID; AL=FF IF NOT |
OUTPUT: AL = 00 IF SUCCESSFUL READ | |
AL = 01 IF END OF FILE (NO DATA READ) | AH = 2C - GET TIME |
AL = 02 IF DTA IS TOO SMALL | INPUT: NONE |
AL = 03 IF END OF FILE (PARTIAL RECORD READ) | OUTPUT: CH = HOUR (0-23) |
| CL = MINUTES (0-59) |
AH = 15 - SEQUENTIAL WRITE | DH = SECONDS (0-59) |
INPUT: DS:DX = POINTER TO AN OPENED FCB | DL = HUNDREDTHS (0-99) |
OUTPUT: AL = 00 IF WRITE WAS SUCCESSFUL | |
AL = 01 IF DISKETTE IS FULL | AH = 2D - SET TIME |
AL = 02 IF DTA IS TOO SMALL | INPUT: CH = HOUR (0-23) |
| CL = MINUTES (0-59) |
AH = 16 - CREATE A FILE | DH = SECONDS (0-59) |
INPUT: DS:DX = POINTER TO AN UNOPENED FCB | DL = HUNDREDTHS (0-99) |
OUTPUT: AL = 00 IF FILE CREATED; AL = FF IF NOT | OUTPUT: AL = 00 IF TIME WAS VALID; AL=FF IF NOT |
| |
AH = 17 - RENAME A FILE | AH = 2E - SET/RESET VERIFY SWITCH |
INPUT: DS:DX = POINTER TO A MODIFIED FCB | INPUT: AL = 01 TO SET VERIFY ON; AL=00 TO SET OFF |
OUTPUT: AL = 00 IF FILE RENAMED; AL = FF IF NOT | OUTPUT: NONE |
| |
CONTINUED ON NEXT PANEL | CONTINUED ON NEXT PANEL |
| |