TC: void harderr( int (*fptr)())
- prototype in dos.h
- harderr() establishes a hardware error handler for current
program, invoked wherever interrupt 0x24 occurs
- function fptr is called when such an interrupt occurs
- handler function will be called with the following
arguments= handler( int errval, int ax, int bp, int si)
where errval is error code in DI register by MS-DOS, and
ax, bp, si are values MS-DOS has in AX, BP, and SI regs
- ax indicates if disk or other device error occurs; if ax is
not negative, then disk error, else device error. For disk
error, ax ANDed with 0x00ff will give bad drive number
- bp and si together point to device driver header
- hardresume() may be called with rescode to return
to MS-DOS, where rescode is
2 - for abort
1 - retry
0 - ignore
- hardretn() may be called to return directly to the application
- handler must return:
0 - ignore
1 - retry
2 - abort
- handler may issue DOS calls 1 through 0xC, but no others, and
no C standard I/O or UNIX I/O calls may be used
- MS C uses _harderr()
- see hardresume() hardretn() INT 24