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