This topic lists error codes returned by DOS Functions (in AX when Carry
Flag is set) as well as extended information returned by fn 59H.  Other
error-code listings in TECH Help!:  APM API Error/Return Codes

Error #                                Error #
Hex Dec  Meaning                       Hex Dec  Meaning
                                                                         
01H   1  Invalid function number       0aH  10  Invalid environment
02H   2  File not found                0bH  11  Invalid format
03H   3  Path not found                0cH  12  Invalid access code
04H   4  Too many open files           0dH  13  Invalid data
05H   5  Access denied                 0eH  14  (not used)
06H   6  Invalid handle                0fH  15  Invalid drive specified
07H   7  Memory ctrl blocks destroyed  10H  16  Can't remove current dir
08H   8  Insufficient memory           11H  17  Not same device
09H   9  Invalid memory block address  12H  18  No more matching files

  Extended Error Codes  
These codes (and the class/location/action codes below) are returned by
DOS fn 59H (DOS 3.0+).

Error #
Hex Dec  Meaning (returned in AX by Fn 59H)
                                                                          
0    0  No error (don't expect 0 unless no error has EVER occurred)

13H  19  Write-protected disk            0  
14H  20  Unknown unit ID                 1  
15H  21  Disk drive not ready            2  
16H  22  Unknown command                 3  
17H  23  Disk data error (CRC error)     4    These correspond to error
18H  24  Bad request structure length    5    codes 0-0cH passed in DI to
19H  25  Disk seek error                 6    an INT 24H critical error
1aH  26  Unknown disk media type         7    handler and they match the
1bH  27  Disk sector not found           8    values in AL after errors
1cH  28  Printer out of paper            9    in INT 25H/26H.
1dH  29  Write fault error             0aH  
1eH  30  Read fault error              0bH  
1fH  31  General failure               0cH  

20H  32  File sharing violation
21H  33  File locking violation
22H  34  Invalid disk change
23H  35  FCB unavailable (too many FCBs)
24H  36  Sharing buffer overflow
25H-31H  (reserved)
32H  50  Network request not supported
33H  51  Remote computer not listening
34H  52  Duplicate name on network
35H  53  Network name not found
36H  54  Network busy
37H  55  Network device no longer exists
38H  56  Net BIOS command limit exceeded
39H  57  Network adapter hardware error
3aH  58  Incorrect response from network
3bH  59  Unexpected network error
3cH  60  Incompatible remote adapter
3dH  61  Print queue full
3eH  62  Not enough space for print file
3fH  63  Print file was deleted
40H  64  Network name was deleted
41H  65  Access denied
42H  66  Incorrect network device type
43H  67  Network name not found
44H  68  Network name limit exceeded
45H  69  Net BIOS session limit exceeded
46H  70  Temporarily paused
47H  71  Network request not accepted
48H  72  Print or disk redirection is paused
49H-4fH  (reserved)
50H  80  File already exists
51H  81  (reserved)
52H  82  Cannot make directory entry
53H  83  "fail" error from INT 24H Critical Error handler
54H  84  Too many redirections
55H  85  Duplicate redirection
56H  86  Invalid password
57H  87  Invalid parameter
58H  88  Network data fault

  Error Class  
These codes provide additional information to help you determine how to
handle the error.  Fn 59H returns these informational codes in BH.

Class #
Hex Dec  Meaning (returned in BH by Fn 59H)
                                                                          
01H   1  Out of resource: no more FCBs, memory, channels, handles, etc.
02H   2  Temporary situation: will go away in a while (e.g., locked file)
03H   3  Authorization problem:  You need higher permission to do this
04H   4  Internal error: DOS is at fault
05H   5  Hardware failure
06H   6  System failure: DOS is at fault
07H   7  App. error: passed bad info to DOS, inconsistent request,etc.
08H   8  Not found: requested file/item can't be found
09H   9  Bad format: file/item in invalid format (EXE file bad, etc.)
0aH  10  Locked: file/item locked
0bH  11  Media error: wrong disk, disk CRC error, etc.
0cH  12  Already exists: collision with existing file/item
0dH  13  Unknown error class: classification doesn't exist

  Suggested Action  
These codes indicate appropriate action to take when an error occurs.  The
idea is to limit your coding by NOT looking for specific error numbers in
your application.  Instead, maintain upward compatibility by taking the
suggested actions listed below.  Fn 59H returns these codes in BL.

Action#
Hex Dec  Meaning (returned in BL by Fn 59H)
                                                                          
01H   1  Retry: Retry the operation a few times.  If the error continues
to occur, ask the user if he wants to continue or quit.

02H   2  Delay Retry: Delay a while and retry the operation a few times.
If the error continues to occur, ask the user if she wants to
continue or quit.

03H   3  User Input: If data presented to DOS was entered by a user, ask
the user to re-enter input (e.g., bad drive ID or pathname).

04H   4  Abort: Abort the application, but it's OK to perform cleanup
operations such as closing files, updating indexes, releasing
memory blocks, etc.

05H   5  Immediate Exit: Abort immediately without attempting cleanup.
The system is in an unhealthy state and immediate exit is best.

06H   6  Ignore: The error doesn't make any difference.

07H   7  Retry after user action: the user needs to perform some action,
such as inserting a diskette.  Prompt the user and then retry.

  Error Location  
These codes are meant to help you figure out where the error occurred.
Fn 59H returns these informational codes in CH.

Locus #
Hex Dec  Meaning (returned in CH by Fn 59H)
                                                                          
01H   1  Unknown: No specific area to pin-point error source
02H   2  Block device: error occurred on disk or tape drive
03H   3  (reserved)
04H   4  Character device
05H   5  Memory

  DOS Versions  
Error handling is upwardly-compatible for all DOS versions.  These general
rules apply:

  DOS 1.x: indicates some errors by placing 0ffH in AL upon return.

  DOS 2+:  New 2.0+ calls indicate errors by setting the Carry Flag
(CF=CY=1) and putting an error code into AX.

  DOS 3+:  2.0-6.0 calls still return error codes in AX when CF=CY.
IBM advised us in 1985 to use DOS Fn 59H to obtain error
information since this "AX return code" policy may change.
But I don't see that happening.

See Also: DOS Fn 59H (get extended error info)
INT 24H Critical Error Handling
- -

DOS Error Codes