; ; SUBROUTINE TO GET A TEXTUAL EXPLANATION FOR AN FCS ERROR. ; IT IS ENTERED VIA JSR PC,.PRFCS ; ; ON ENTRY: ; ; R0 ADDRESS OF THE FDB WHICH HAD THE ERROR. ; R1 ADDRESS OF A USER TASKNAME BUFFER. ; R2 SIZE OF THE USER BUFFER. ; ; ON RETURN, ALL REGESTERS ARE UNCHANGED. ; .MCALL MOUT$S,RETURN .PRFCS::MOV R3,-(SP) MOVB F.ERR(R0),R3 ;GET F.ERR NEG R3 ;GET I/O ERROR CODE BITB #200,F.ERR+1(R0) ;IS IT A DIR CODE? BEQ 10$ ;NO ADD #128.,R3 ;FIXUP CODE. 10$: MOUT$S #QIOSYM,#QIOPRM,R3,CONT,USBUF,#BUFFER,#BUFLEN MOV R2,QIOPRM ;SET THE LENGTH OF TSK STRING MOV R1,QIOPRM+2 ;SET THE ADDRESS OF TSK STR. MOV BUFFER+2,QIOPRM+4 ;LENGTH OF ERROR STRING. MOUT$S #PRNTIT,#QIOPRM,,CONT,#SY$STM MOV (SP)+,R3 RETURN ; ; STRING DESCRIPTOR FOR GETTING ERROR NAME ; QIOSYM: .WORD QIOLEN .WORD QIOFIL ; ; FILE NAME WHERE ERROR NAMES ARE KEPT ; QIOFIL: .ASCIZ /SY:[1,2]QIOSYM.MSG/ QIOLEN = .-QIOFIL .EVEN ; ; PARAMETER LIST ; QIOPRM: .WORD 0 ;LENGTH OF TASK STRING. .WORD 0 ;ADDRESS OF TASK STRING. .WORD 0 ;LENGTH OF ERROR STRING. .WORD BUFFER+4 ;ADDRESS OF ERROR STRING. ; ; STRING DESCRIPTOR ; PRNTIT: .WORD FMTLEN ;LENGTH OF STRING .WORD FMTSTR ;ADDRESS OF STRING ; ; FORMAT STRING ; FMTSTR: .ASCII /%VA -- %VA/ FMTLEN = .-FMTSTR .EVEN ; ; LUN FOR MO.... ; .MOLUN::.WORD 0 ; ; BUFFER FOR FCS CODE ; BUFFER: .BLKB 80. BUFLEN = .-BUFFER .END