DOS Critical error handler address (INT 24h)

Automatically called upon detection of unrecoverable
I/O error. Normally points to routine in resident part
of COMMAND.COM that prints "Abort, Retry, Ignore, Fail ?"
message and takes the reply, but may be overridden if desired.

Provides the following values in registers on entry to
interrupt handler:

AH: bit 7 = 0 disk I/O error
= 1 other error -- if block device, bad FAT
-- if char device, code in DI
bit 6 unused
bit 5 = 1 if Ignore allowed, 0 if not (DOS 3.2 ???)
bit 4 = 1 if Retry allowed, 0 if not (DOS 3.2 ???)
bit 3 = 1 if Fail allowed, 0 if not (DOS 3.2+)
bit 2 \ disk area of error 00 = DOS area 01 = FAT
bit 1 / 10 = root dir 11 = data area
bit 0 = 1 if write, 0 if read

AL: Drive number if AH bit 7 = 1, otherwise undefined

BP:SI = address of device header for which error occurred
block device if high bit of BP:SI+4 = 1

Low byte of DI:
00h Write-protect error
01h Unknown unit
02h Drive not ready
03h Unknown command
04h Data error (bad CRC)
05h Bad request structure length
06h Seek error
07h Unknown media type
08h Sector not found
09h Printer out of paper
0Ah Write fault
0Bh Read fault
0Ch General failure
0Dh Sharing violation
0Eh Lock violation
0Fh Invalid disk change
10h FCB unavailable
11h Sharing buffer overflow

Handler must return
AL = 00 ignore error
= 01 retry operation
= 02 terminate program through INT 22h
= 03 fail system call in progress (DOS 3.2+)