Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!seismo!rutgers!sri-unix!sri-spam!ames!ptsfa!ihnp4!cuae2!killer!csccat!jack From: jack@csccat.UUCP (Jack Hudler) Newsgroups: comp.sys.ibm.pc Subject: Re: DOS Critical-error handler Message-ID: <201@csccat.UUCP> Date: Sun, 26-Jul-87 06:52:01 EDT Article-I.D.: csccat.201 Posted: Sun Jul 26 06:52:01 1987 Date-Received: Thu, 30-Jul-87 01:38:20 EDT References: <1871@isis.UUCP> <1610020@hpcvlo.HP.COM> <6380@eddie.MIT.EDU> Organization: Computer Support Corporation. Carrollton,Texas. Lines: 29 Summary: Forget Returning to DOS. Here is my Idea of a Critical Error Handler. It sets carry for the int 21 caller and sets the return in AX to 100..10C for the caller to know that a hard error occured. INTERRUPT_24 PROC FAR ADD SP,6 ; Dump Dos Return MOV BP,SP OR BYTE PTR[BP+22],1 ; Set Returning Carry TEST AH,AH ; Where testing the high bit MOV AX,99 ; Return 99 if Non-Disk Error JS INT14a ; Jump if NOT disk error MOV AX,DI ; Setup Return ADD AX,100 ; Add 100 to Error Code INT24a: POP BX POP BX POP CX POP DX POP SI POP DI POP BP POP DS POP ES IRET ; Return to INT 21 Caller directly INTERRUPT_24 ENP -- See above (214)661-8960