.TITLE SRDTRP .IDENT -5.0- ; 19-NOV-79 ;+ ; ERROR TRAP ROUTINE ; ; THIS ROUTINE IS DISPATCHED TO WHEN A TRAP INSTRUCTION ; IS EXECUTED. THE TOP OF THE STACK CONTAINS ; THE LOW BYTE OF THE TRAP INSTRUCTION TIMES 2 ; ; THE MOST SIGNIFICANT BIT OF THIS 9 BIT FIELD IS ; SEVERITY BIT, WHERE A 1 INDICATES A DIAGNOSTIC ; ; THE LOW 8 BITS IS A 7 BIT ERROR NUMBER * 2 ;- ; ; SYSTEM MACRO CALLS ; .MCALL QIO$S,WTSE$S,CALLR,CLOSE$ .MACRO MESG$ STRING .ASCIZ \STRING\ .ENDM MESG: .ASCII /SRD -- */ SERV: .BLKB 4 .ASCII /* / MES1: .BLKB 40. .EVEN TRAP0:: 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 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 MOVB #'!,(R2)+ ; FILL THIS OUT MOV #MESG,R1 ; START OF MESSAGE SUB R1,R2 ; R1 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 RTT ; RETURN CONTROL ; ; ; 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$ 999$: MESG$ 1$: MESG$ 2$: MESG$ 3$: MESG$ 4$: MESG$ 5$: MESG$ 6$: MESG$ 7$: MESG$ 10$: MESG$ 11$: MESG$ 12$: MESG$ 13$: MESG$ 14$: MESG$ 15$: MESG$ 16$: MESG$ 17$: MESG$ 20$: MESG$ 21$: MESG$ 22$: MESG$ 23$: MESG$ 24$: MESG$ 25$: MESG$ .EVEN ; *** MAKE SURE ITS AN EVEN NUMBER *** .END