.TITLE PERROR - ERROR MESSAGE PROCESSING .IDENT /820405/ .MCALL .PRINT,.RCTRLO,.EXIT ;USAGE: ; PROCEDURE PERROR(IDENT,MESSAGE:STRING); EXTERNAL; ; WHERE PERROR IS THE APPROPRIATE ERROR ROUTINE ;REGISTER USAGE: ; ALL REGISTERS PRESERVED ;CALLS: $$$001 .PSECT P.MSGF:: MOVB #'F,MSGT ;SET MESSAGE POINTER MOV #1$,(SP) BR ERRMSG 1$: BISB #10,@#53 ;SET SEVERE ERROR CLR R0 ;SET EXIT STATE .EXIT ; P.MSGI:: MOVB #'I,MSGT ;SET MESSAGE TYPE BISB #1,@#53 ;SET SUCCESS MESSAGE BR ERRMSG ; P.MSGW:: MOVB #'W,MSGT ;SET PREFIX BISB #2,@#53 ;SET WARNING ERROR BR ERRMSG ; P.MSGE:: MOVB #'E,MSGT ;SET PREFIX BISB #4,@#53 ;SET ERROR ERROR ; ERRMSG: MOV R2,-(SP) MOV R3,-(SP) MOV SP,R3 CMP (R3)+,(R3)+ MOV (R3),R2 ;RETURN ADDRESS MOV R1,(R3)+ MOV (R3),R1 ;POINTER TO MESSAGE MOV R0,(R3)+ MOV (R3),R0 ;POINTER TO I.D. BNE 1$ MOV #PASCAL,R0 ;USE DEFAULT 1$: MOV R2,(R3) ;MOVE UP RETURN ADDRESS MOV (SP)+,R3 ; MOV #PRGNAM,R2 ;MOVE I.D. TO BUFFER 2$: MOVB (R0)+,(R2)+ BEQ 3$ CMP R2,#PRGNAM+7 BLO 2$ 3$: MOVB #200,-(R2) .RCTRLO ;ENABLE PRINTING .PRINT #ERROR1 ;PRINT IT .PRINT #ERROR2 TSTB (R1) ;IGNORE IF NO MESSAGE TEXT BEQ 4$ .PRINT R1 ; 4$: MOV (SP)+,R2 ;RESTORE MOV (SP)+,R1 MOV (SP)+,R0 RTS PC ; .PSECT $MSG,D ERROR1: .ASCII /?/ PRGNAM: .ASCII /123456/<200> PASCAL: .ASCII /PASCAL/ ERROR2: .ASCII /-/ MSGT: .ASCII /--/<200> .END