.TITLE IOERR - I/O ERROR MESSAGE PRINTER ; ; IOERR - PRINTS ERROR MESSAGE FROM FCS FUNCTIONS ; ; .MCALL PSTR,POCT,PDECB,PCRLF,PRAD50,PRAD5S,TTYOUT ; ; IOERR:: JSR R0,QUTERD ;SAVE REGISTERS AND DSW IOERR0::TSTB F.ERR(R0) ;ERROR IN FDB? BMI 1$ ;YES, PRINT IT JMP TRYDSW ;NO, LOOK IN DSW 1$: PSTR ^*.I/O ERROR .* MOVB F.ERR+1(R0),R2 ;IO OR DIR? BEQ 2$ ;IO PSTR ^*/DR/* ;DIR 2$: MOVB F.ERR(R0),R1 ;GET ERROR IOERR1: PDECB R1,SIGN ;PRINT ERROR NUMBER CALL QUTPC ;AND PC AT TIME OF ERROR TSTB R2 ;WAS IT IO? BEQ 2$ ;YES MOV #DIRNAM,R2 ;NO, DIR BR 3$ 2$: MOV #IONAM,R2 ;IO 3$: CALL .QTERR BCS 4$ PCRLF 4$: PSTR ^*/FILE: /* MOV R0,R2 ADD #N.DVNM+F.FNB,R2 ;COMPUTE ADDR OF DEVICE NAME TTYOUT R2,#2 ;DEVICE NAME POCT N.UNIT+F.FNB(R0) ;AND UNIT NUMBER PSTR /:/ TST N.FNAM+F.FNB(R0) ;IS THERE A FILE NAME BEQ 5$ ;NO, SKIP IT MOV R0,R1 ;COMPUTE ADDRESS OF ADD #N.FNAM+F.FNB,R1 ;FILE NAME PRAD5S R1,#3 ;AND PRINT IT PSTR /./ PRAD50 N.FTYP+F.FNB(R0) PSTR ^*/;/* POCT N.FVER+F.FNB(R0) 5$: PCRLF ;START A NEW LINE JMP DIE ; ; TRYDSW: MOV QUTDSW,R1 ;LOOK IN $DSW FOR ERROR BMI 1$ ;THERE IT IS JMP UNKERR ;ITS NOT THERE EITHER 1$: PSTR ^*.I/O ERROR FOUND IN DSW .* MOV #-1,R2 ;FLAG DIR TABLE JMP IOERR1 ;AND DO REST ; ; DIRNAM: .WORD 2$-1$ 1$: .ASCII /DIRERR/ 2$: .EVEN ; IONAM: .WORD 2$-1$ 1$: .ASCII /IOERR/ 2$: .EVEN ; ; .END