	.TITLE	INDERR - ERROR ON INDIRECT INPUT FILE

	.IDENT	"X0204"

;
; COPYRIGHT (C) 1976 BY DIGITAL EQUIPMENT CORPORATION,
; MAYNARD, MASSACHUSETTS
;
; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
; SINGLE  COMPUTER  SYSTEM AND MAY BE COPIED ONLY WITH THE IN-
; CLUSION OF THE ABOVE COPYRIGHT NOTICE.   THIS  SOFTWARE,  OR
; ANY  OTHER  COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE
; MADE AVAILABLE TO ANY OTHER PERSON EXCEPT FOR  USE  ON  SUCH
; SYSTEM  AND TO ONE WHO AGREES TO THESE LICENSE TERMS.  TITLE
; TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL  TIMES  REMAIN
; IN DIGITAL.
;
; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITH-
; OUT  NOTICE  AND  SHOULD NOT BE CONSTRUED AS A COMMITMENT BY
; DIGITAL EQUIPMENT CORPORATION.
;
; DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY  FOR
; THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS
; NOT SUPPLIED BY DIGITAL.
;
; ANDREW C. GOLDSTEIN  30-JUN-77  13:04


	.MCALL	CLOSE$

	.ENABL	LSB
	.PSECT	PURE,RO,D

;
; MESSAGE FOR I/O ERROR ON INDIRECT FILE
;
INDERM:	.ASCII	<15><12>"I/O error reading indirect file"<15><12>
INDERS	= .-INDERM

	.EVEN


;+
;
; *** INDER1	I/O ERROR FROM INDIRECT FILE GET$, GIVE ERROR MESSAGE
;		AND CLOSE THE INDIRECT FILE.
;
; INPUTS:	NONE
;
; OUTPUTS:
;
;	R0 ALTERED
;	R3,R4 ALTERED
;	ALL OTHER REGISTERS PRESERVED
;
;-

	.PSECT	CODE,RO

INDER1::CMPB	F.ERR(R0),#IE.EOF ; CHECK FOR EOF
	BEQ	INDCL1		; IF SO, JUST CLOSE QUIETLY
	MOV	#INDERM,R3	; R3, R4 = ERROR DESCRIPTOR
	MOV	#INDERS,R4
	CALL	PRINT		; PRINT THE ERROR MESSAGE
				; CLEAN OUT NON-STANDARD ET FLAGS
	BIC	#ET.IMG!ET.NCH!ET.CCO!ET.CKE!ET.CC,ETYPE(R5)
	BIT	#ET.EXI,ETYPE(R5) ; SEE IF EXIT ON ERROR REQUESTED
	BEQ	10$		; BRANCH IF NOT
	JMP	TEXIT

10$:	CLRB	CCLFLG		; THROW AWAY CCL COMMAND LINE IF INIT FAILS
INDCL1::MOV	R0,-(SP)	; SAVE R0 FOR TECO MAIN
	MOV	INDIR(R5),R0	; CLOSE THE INDIRECT FILE IF IT'S OPEN
	BEQ	20$		; BRANCH IF NOT OPEN
	CLOSE$	R0		; CLOSE IT

	CLR	CMDFDB+F.NRBD	; FLUSH REMAINING RECORD BUFFER
	TSTB	CCLFLG		; SEE IF COMMAND LINE IS WAITING
	BNE	20$		; BRANCH IF YES
	CLR	INDIR(R5)	; ELSE BACK TO TERMINAL INPUT
20$:	MOV	(SP)+,R0	; RESTORE R0
	RETURN

	.DSABL	LSB



	.END
