[Back to DOS SWAG index] [Back to Main SWAG index] [Original]
Unit ExtError;
{ Information lifted from 'Disk Operating System 3.30 Technical Reference'.
An IBM publication. USE this unit with DOS 3.0 or higher.
}
Interface
Implementation
uses Dos;
{$F+,R-,S-,I- }
Var
ExitSave : Pointer;
Procedure GetExtendedError;
Var
Regs : Registers;
s : String;
Begin
ExitProc := ExitSave;
Regs.AH := $59;
Regs.BX := $0000;
Intr($21, Regs);
Write('Error #');
Case Regs.AX of
1 : s := 'Invalid function number';
2 : s := 'File not found';
3 : s := 'Path not found';
4 : s := 'Too many open files (no handles left)';
5 : s := 'Access denied (file was opened Read Only)';
6 : s := 'Invalid handle';
7 : s := 'Memory control blocks destroyed';
8 : s := 'Insufficient memory';
9 : s := 'Invalid memory block address';
10 : s := 'Invalid environment';
11 : s := 'Invalid format';
12 : s := 'Invalid access code';
13 : s := 'Invalid data';
15 : s := 'Invalid drive was specified';
16 : s := 'Attempt to remove current directory';
17 : s := 'Not same device';
18 : s := 'No more files';
19 : s := 'Attempt to write on write-protected diskette';
20 : s := 'Unknown unit';
21 : s := 'Drive not ready';
22 : s := 'Unknown command';
23 : s := 'Data error (CRC)';
24 : s := 'Bad request structure length';
25 : s := 'Seek error';
26 : s := 'Unknown media type';
27 : s := 'Sector not found';
28 : s := 'Printer out of paper';
29 : s := 'Write fault';
30 : s := 'Read fault';
31 : s := 'General failure';
32 : s := 'Sharing violation';
33 : s := 'Lock violation';
34 : s := 'Invalid disk change';
35 : s := 'FCB unavailable';
36 : s := 'Sharing buffer overflow';
50 : s := 'Network request not supported';
51 : s := 'Remote computer not listening';
52 : s := 'Duplicate name on network';
53 : s := 'Network name not found';
54 : s := 'Network busy';
55 : s := 'Network device no longer exists';
56 : s := 'Net BIOS command limit exceeded';
57 : s := 'Network adapter hardware error';
58 : s := 'Incorrect response from network';
59 : s := 'Unexpected network error';
60 : s := 'Incompatible remote adapter';
61 : s := 'Print queue full';
62 : s := 'Not enough space for print file';
63 : s := 'Print file was deleted';
65 : s := 'Access denied';
66 : s := 'Network device type incorrect';
67 : s := 'Network name not found';
68 : s := 'Network name limit exceeded';
69 : s := 'Net BIOS session limit exceeded';
70 : s := 'Temporarily paused';
71 : s := 'Network request not accepted';
72 : s := 'Print or disk redirection is paused';
80 : s := 'File exists';
82 : s := 'Cannot make directory entry';
83 : s := 'Fail on INT 24';
84 : s := 'Too many redirections';
85 : s := 'Duplicate redirection';
86 : s := 'Invalid password';
87 : s := 'Invalid parameter';
88 : s := 'Network device fault';
end;
WriteLn(Regs.AX, ': ', s);
Write('Error class: ');
Case Regs.BH of
1 : s := 'Out of resource';
2 : s := 'Temporary situation';
3 : s := 'Permission problem';
4 : s := 'Internal error in system software';
5 : s := 'Hardware failure';
6 : s := 'Serious failure of system software';
7 : s := 'Application program error';
8 : s := 'File/item not found';
9 : s := 'File/item of invalid format or type';
10 : s := 'File/item interlocked';
11 : s := 'Media failure: wrong disk, CRC error...';
12 : s := 'Collision with existing item';
13 : s := 'Classification doesn''t exist or is inappropriate';
end;
WriteLn(s);
Write('Suggested action: ');
Case Regs.BL of
1 : s := 'Retry';
2 : s := 'Retry after pause';
3 : s := 'Ask user to re-enter input';
4 : s := 'Abort program with cleanup';
5 : s := 'Abort immediately, skip cleanup';
6 : s := 'Ignore';
7 : s := 'Retry after user intervention';
end;
WriteLn(s);
Write('Error locus: ');
Case Regs.CH of
1 : s := 'Unknown or inappropriate';
2 : s := 'Related to disk storage';
3 : s := 'Related to the network';
4 : s := 'Serial device';
5 : s := 'Memory';
end;
WriteLn(s);
Halt;
end; { GetExtendedError }
Begin
ExitSave := ExitProc;
ExitProc := @GetExtendedError;
end. { ExtError }
[Back to DOS SWAG index] [Back to Main SWAG index] [Original]