.NLIST TTM .TITLE FCSERR - FCS ERROR PROCESSOR .SBTTL FCSERR - TITLE PAGE .PSECT ERRORS,RO,I .IDENT /V01.00/ ; ; ************************************************************************ ; * ; THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS ONLY. DIGITAL EQUIPMENT * ; COMPUTER USER'S SOCIETY, DIGITAL EQUIPMENT CORPORATION, MONSANTO, AND * ; THE AUTHOR DISCLAIM ALL WARRANTIES ON THE PROGRAM, INCLUDING WITHOUT * ; LIMITATION, ALL IMPLIED WARRANTIES OF MERCHANTABLITY AND FITNESS. * ; * ; FULL PERMISSION AND CONSENT IS HEREBY GIVEN TO DECUS AND TO THE DECUS * ; SPECIAL INTEREST GROUPS TO REPRODUCE, DISTRIBUTE, AND PUBLISH AND * ; PERMIT OTHERS TO REPRODUCE IN WHOLE OR IN PART, IN ANY FORM AND * ; WITHOUT RESTRICTION, THIS PROGRAM AND ANY INFORMATION RELATING THERETO * ; * ; ************************************************************************ ; ; VERSION: V01.00 ; ; AUTHOR: RW STAMERJOHN MAPS 24-JUN-77 ; ; THIS MODULE SERVICES FCS ERRORS. ; ; ASSEMBLY INSTRUCTIONS: ; ; OBJECT,LISTING=FCSERR .PAGE .SBTTL FCSERR - GLOBAL DEFINITIONS ; ; SYSTEM MACROS: ; .MCALL CALL,CALLR ; .MCALL FDOF$L ; .MCALL GLUN$S ; ; ; GLOBAL DECLARATIONS: ; .GLOBL ERFCSX ;FCS ERROR AND EXIT. .GLOBL ERFCSR ;FCS ERROR AND RETURN. ; ; GLOBAL REFERENCES: ; .GLOBL $SAVAL ;SAVE ALL REGISTERS. .GLOBL GETMSG ;GET MESSAGE FROM QIOSYM. .GLOBL OERROR ;OUTPUT ERROR MESSAGE. .GLOBL ERRTMP ;TEMP BUFFER. .GLOBL STRING ;MOVE ASCIZ STRING. .GLOBL $CBDMG ;CONVERT BINARY TO DECIMAL MAGNITUDE. .GLOBL $CBOMG ;CONVERT BINARY TO OCTAL MAGNITUDE. .GLOBL $C5TA ;CONVERT RAD50 TO ASCII. .PAGE .SBTTL FCSERR - LOCAL DEFINITIONS ; ; LOCAL MACROS: ; ; NONE. ; ; LOCAL SYMBOLS: ; FDOF$L ;DEFINE FDB OFFSETS. ; ; LOCAL DATA STRUCTURES. ; FCSERR: .ASCIZ /FCS/ ;ERROR TYPE MESSAGE. LUN: .ASCIZ /LUN: / ;LUN MESSAGE. DEV: .ASCIZ / DEVICE: / ;DEVICE MESSAGE. FIL: .ASCIZ / FILE: / ;FILE MESSAGE. .EVEN .PAGE .SBTTL ERFCSX * FCS ERROR AND EXIT .SBTTL ERFCSR * FCS ERROR AND RETURN ; ; THESE ROUTINES PROCESS A FCS ERROR BY OUTPUTING A MESSAGE AND ; EXITING APPROPRIATELY. ; ; CALLING SEQUENCE: ; ; CALL BY: JSR PC,ERFCSX (OR ERFCSR) ; ; WHERE: R0 = FDB ADDRESS. ; ; EXITS WITH: MESSAGE OUTPUT AND RETURN TO CALLER IF ENTRY AT ERFCSR. ; ; MESSAGE OUTPUT AND EXIT IF ENTRY AT ERFCSX. ; ; ERROR CONDITIONS: ; ; BECAUSE THIS IS AN ERROR PROCESSOR, ERRORS FROM THIS ROUTINE ARE IGNORED. ; ; SPECIAL NOTES: ; ; THE FORMAT OF THE ERROR MESSAGE IS (OPTIONAL PARTS IN BRACKETS) ; (VARIABLE PARTS IN PARENS). ; ; (TASKNAME) -- [EXITING DUE TO] FCS ERROR (FCS ERROR NUMBER) ; (FCS ERROR MESSAGE FROM QIOSYM) ; LUN: (LUN NUMBER) DEV: (DEVICE NAME) FILE: (FILENAME) ; AT PC (PC) ; ; REGISTERS: ; ; USES R0-R5 SAVES R0-R5 ; ; CALLS: ; ; $SAVAL,GETMSG,OERROR ; ERFCSX:: ;REF. LABEL. INC (SP) ;SET TO EXIT. ERFCSR:: ;REF. LABEL. JSR PC,$SAVAL ;SAVE ALL REGISTERS. MOV R0,R4 ;SAVE FDB ADDRESS. MOVB F.ERR(R4),R2 ;GET ERROR NUMBER. NEG R2 ; TSTB F.ERR+1(R4) ;IS THIS I/O OR DIRECTIVE ERROR. BEQ 11$ ; IF EQ - I/O ERROR. ADD #128.,R2 ;DIRECTIVE ERRORS START AT 129. 11$: CALL GETMSG ;GET THE ERROR MESSAGE FROM QIOSYM. MOVB F.ERR(R4),R0 ;GET ERROR NUMBER. MOV #FCSERR,R1 ;GET THE ERROR TYPE MESSAGE. MOV 16(SP),R3 ;GET THE ERROR PC. MOV #FCSLIN,R5 ;SET THE FCS OPTIONAL LINE PROCESSOR. CALLR OERROR ;GO PROCESSOR THE ERROR. .PAGE .SBTTL FCSLIN * FCS OPTIONAL LINE PROCESSOR ; ; THIS ROUTINE FORMATS THE OPTIONAL LINE IN A FCS ERROR MESSAGE. ; ; CALLING SEQUENCE: ; ; CALL BY: JSR PC,FSCLIN ; ; WHERE: R0 = START OF BUFFER TO STORE LINE. ; R4 = FDB ADDRESS. ; ; EXITS WITH: LINE PLACED IN BUFFER. ; ; R0 = NEXT FREE BYTE IN BUFFER. ; ; ERROR CONDITIONS: ; ; IF THE GET LUN FAILS THE DEVICE NAME IS LEFT BLANK. ; ; SPECIAL NOTES: ; ; THE LINE DONE BY THIS ROUTINE IS AS FOLLOWS: ; ; LUN: NN DEV: XXNN FILE: XXXXXXXXX.XXX ; ; REGISTERS: ; ; USES R0-R5 SAVES R3,R5 ; ; CALLS: ; ; STRING,$CBDMG,$CBOMG,$C5TA ; FCSLIN: MOV #LUN,R1 ;GET LUN MESSAGE CALL STRING ;PLACE IN BUFFER. MOVB F.LUN(R4),R1 ;GET LUN NUMBER. BIC #177400,R1 ;ONLY WANT LOW BYTE. CLR R2 ;SET FOR NO LEADING ZEROS. CALL $CBDMG ;CONVERT TO ASCII DECIMAL. MOV #DEV,R1 ;GET DEVICE MESSAGE. CALL STRING ;PLACE IN BUFFER. MOVB F.LUN(R4),R1 ;GET THE LUN NUMBER. BIC #177400,R1 ;ONLY WANT LOW BYTE. MOV #ERRTMP,R2 ;GET THE TEMP BUFFER. GLUN$S R1,R2 ;GET THE DEVICE INFORMATION. BCS 10$ ; IF CS - SKIP ON ERROR. MOVB (R2)+,(R0)+ ;STORE DEVICE NAME. MOVB (R2)+,(R0)+ ; MOVB (R2),R1 ;GET THE UNIT NUMBER. BIC #177400,R1 ;ONLY WANT LOW BYTE. CLR R2 ;SET FOR NO LEADING ZEROS. CALL $CBOMG ;CONVERT TO ASCII OCTAL. 10$: MOV #FIL,R1 ;GET FILE MESSAGE. CALL STRING ;PLACE IN BUFFER. ADD #F.FNB+N.FNAM,R4;POSITION R4 AT FILENAME. ; .REPT 3 ; MOV (R4)+,R1 ;GET FILENAME IN RAD50. CALL $C5TA ;CONVERT TO ASCII. .ENDR ; ; MOVB #'.,(R0)+ ;PUT IN EXTENSION SEPERATOR. MOV (R4)+,R1 ;GET EXTENSION. CALLR $C5TA ;CONVERT TO ASCII. ; .END