Values critical error handler is called with
|Notes:||The only DOS calls the handler may make are INT 21/AH=01h-0Ch,30h,59h.
If the handler returns to the application by popping the stack, DOS will be in an unstable state until the first call with AH > 0Ch.
For DOS 3.1+, IGNORE (AL=00h) is turned into FAIL (AL=03h) on network critical errors.
If IGNORE specified but not allowed, it is turned into FAIL.
If RETRY specified but not allowed, it is turned into FAIL.
If FAIL specified but not allowed, it is turned into ABORT.
(DOS 3.0+) if a critical error occurs inside the critical error handler, the DOS call is automatically failed (AL set to 03h and the INT 24 call skipped).
The initial critical error handler is located in the kernel and always results in FAIL. However, by default it is replaced by the critical error handler in the command interpreter when it loads. This can be suppressed (e.g. for BBS systems) by loading the primary DOS 3.00+ COMMAND.COM shell with the undocumented option /F 'Fail'. This syntax is also supported with PTS/DOS 6.51+, S/DOS 1.0+, and DR-OpenDOS 7.02+ (1997-11-13) COMMAND.COM, as well as 4DOS.COM/NDOS.COM. OpenDOS 7.01+ COMMAND.COM (1997-03-21) introduced this under /N, which is still supported by newer releases (although it has a slightly different meaning now).
|Bugs:||DR DOS COMMAND.COM before 1998-05-07 caused incorrect error messages to occur if the error code had a non-zero MSB (e.g. NWCDEX's "IO error reading from device" instead of the correct "not ready error"). This was fixed with the DR-OpenDOS 7.03 COMMAND.COM now passing the full error code to any critical error handlers.|