.TITLE SRDTRP .IDENT -6.3- ; 01-JUN-83 .ENABL LC ;+ ; SRDTRP - Error handler routine ; ; Broken out as subroutine by ??? on ??? ; ; Modifications: ; ; V6.2 Bob Denny 13-Jul-82 Lower case error messages, minor ; ;RBD001 message changes. ; Exit with status on '11M ; ; V6.3 Carl Friedberg 1-June-83 PSECTS ;CEF001 ;- .MCALL QIO$S,WTSE$S,CALLR,CLOSE$,PUT$S .MACRO MESG$ STRING .ASCIZ \STRING\ .ENDM .PSECT SRDATA,D,RW,LCL,CON,REL ;CEF001 MESG: .ASCII /SRD -- */ SERV: .BLKB 4 .ASCII /* / MES1: .BLKB 80. .EVEN .PSECT SRDCOD,I,RO,LCL,CON,REL ;CEF001 TRAP0:: MOV R0,R0SAV MOV R1,R1SAV MOV R2,R2SAV .IF DF R$$11M ;RBD001 MOV #EX$ERR,X$STAT ; ASSUME "ERROR" STATUS ;RBD001 .ENDC ;RBD001 MOV #SERV,R1 ;POINT AT SEVERITY INDICATOR MOV #"DI,(R1)+ ;ASSUME DIAGNOSTIC MOV #"AG,(R1) ; ASRB 1(SP) ;IS THIS FATAL OR DIAGNOSTIC? BCS 10$ ;BR IF DIAGNOSTIC .IF DF R$$11M ;RBD001 MOV #EX$SEV,X$STAT ; ERROR IS SEVERE, FATAL ;RBD001 .ENDC ;RBD001 MOV #"TL,(R1) ;SET FATAL HEADER MOV #"FA,-(R1) ; MOV #LSTNX$,2(SP) ;FIX UP RETURN 10$: ADD #ERRTAB,(SP) ;COMPUTE MESSAGE ADDRESS MOV @(SP)+,R1 ;GET DESCRIPTOR MOV #MES1,R2 ;START OF VARIABLE AREA 20$: MOVB (R1)+,(R2)+ ;FILL OUT MESSAGE BNE 20$ ;THE WHOLE THING MOV #MESG,R1 ;START OF MESSAGE SUB R1,R2 ;R2 GETS LENGTH 40$: QIO$S #IO.WVB,#TTYLUN,#17,,,, BCC 50$ ;BR IF A-OK CALL ALERR ;DIAGNOSE ERR BR 40$ ;RETURN IF NO POOL-TRY AGAIN 50$: WTSE$S #17 ;WAIT FOR I-O TO STOP BIS #FLFL,FLAGS$ ;MARK SOMETHING GONE OUT ; ; PUT IT ALSO ON THE LISTING FILE BIT #OUTFSW,FLAGS$ ; ONLY IF ONE WAS SPECIFIED BEQ 70$ MOV #LSTFDB,R0 TST F.BDB(R0) ; LISTING FILE OPEN ? BEQ 70$ ; BR IF NO PUT$S ,R1,R2 MOV #LINBUF,F.NRBD+2(R0) 70$: MOV R0SAV,R0 MOV R1SAV,R1 MOV R2SAV,R2 RTT ;RETURN CONTROL ; .PSECT SRDATA,D,RW,LCL,CON,REL ;CEF001 R0SAV: +0 R1SAV: +0 R2SAV: +0 ; ; .PSECT MSGTBL,D,RO,LCL,CON,REL ;CEF001 ERRTAB::.WORD 999$ .WORD 1$, 2$, 3$, 4$, 5$, 6$, 7$ .WORD 10$,11$,12$,13$,14$,15$,16$,17$ .WORD 20$,21$,22$,23$,24$,25$,26$,27$,30$ 999$: MESG$ ;RBD001 1$: MESG$ ;RBD001 2$: MESG$ ;RBD001 3$: MESG$ ;RBD001 4$: MESG$ ;RBD001 5$: MESG$ ;RBD001 6$: MESG$ ;RBD001 7$: MESG$ ;RBD001 10$: MESG$ ;RBD001 11$: MESG$ ;RBD001 12$: MESG$ ;RBD001 13$: MESG$ ;RBD001 14$: MESG$ ;RBD001 15$: MESG$ ;RBD001 16$: MESG$ ;RBD001 17$: MESG$ ;RBD001 20$: MESG$ ;RBD001 21$: MESG$ ;RBD001 22$: MESG$ ;RBD001 23$: MESG$ ;RBD001 24$: MESG$ ;RBD001 25$: MESG$ ;RBD001 26$: MESG$ ;RBD001 27$: MESG$ ;RBD001 30$: MESG$ ;RBD001 .EVEN ;*** MAKE SURE ITS AN EVEN NUMBER *** ;**-25 .END