.NLIST TTM .TITLE QIOERR - QIO ERROR PROCESSOR .SBTTL QIOERR - 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 QIO ERRORS. ; ; ASSEMBLY INSTRUCTIONS: ; ; OBJECT,LISTING=QIOERR .PAGE .SBTTL QIOERR - GLOBAL DEFINITIONS ; ; SYSTEM MACROS: ; .MCALL CALL,CALLR ; .MCALL GLUN$S ; ; ; GLOBAL DECLARATIONS: ; .GLOBL ERQIOX ;QIO ERROR AND EXIT. .GLOBL ERQIOR ;QIO ERROR AND RETURN. ; ; GLOBAL REFERENCES: ; .GLOBL $SAVAL ;SAVE ALL REGISTERS. .GLOBL ERRTMP ;ERROR BUFFER. .GLOBL GETMSG ;GET MESSAGE FROM QIOSYM. .GLOBL OERROR ;OUTPUT ERROR MESSAGE. .GLOBL STRING ;MOVE ASCIZ STRING. .GLOBL $CBDMG ;CONVERT BINARY TO DECIMAL MAGNITUDE. .GLOBL $CBOMG ;CONVERT BINARY TO OCTAL MAGNITUDE. .PAGE .SBTTL QIOERR - LOCAL DEFINITIONS ; ; LOCAL MACROS: ; ; NONE. ; ; LOCAL SYMBOLS: ; ; NONE. ; ; LOCAL DATA STRUCTURES. ; QIOERR: .ASCIZ /QIO/ ;ERROR TYPE MESSAGE. LUN: .ASCIZ /LUN: / ;LUN MESSAGE. DEV: .ASCIZ / DEVICE: / ;DEVICE MESSAGE. .EVEN .PAGE .SBTTL ERQIOX * QIO ERROR AND EXIT .SBTTL ERQIOR * QIO ERROR AND RETURN ; ; THESE ROUTINES PROCESS A QIO ERROR BY OUTPUTING A MESSAGE AND ; EXITING APPROPRIATELY. ; ; CALLING SEQUENCE: ; ; CALL BY: MOV B,-(SP) ; MOV A,-(SP) ; JSR PC,ERQIOX (ORERQIOR) ; ; WHERE: A = I/O ERROR CODE. ; B = LUN NUMBER. ; ; EXITS WITH: MESSAGE OUTPUT AND RETURN TO CALLER IF ENTRY AT ERQIOR. ; ; MESSAGE OUTPUT AND EXIT IF ENTRY AT ERQIOX. ; ; ERROR CONDITIONS: ; ; BECAUSE THIS IS AN ERROR PROCESSOR, ERRORS FROM THIS ROUTINE ARE IGNORED. ; ; SPECIAL NOTES: ; ; THE FORMAT OF THE MESSAGE OUTPUT IS (OPTIONAL PARTS IN BRACKETS) ; (VARIABLE PARTS IN PARENS). ; ; (TASKNAME) -- [EXITING DUE TO] QIO ERROR (I/O ERROR NUMBER) ; (I/O ERROR MESSAGE FROM QIOSYM) ; LUN: (LUN NUMBER) DEV: (DEVICE NAME LUN ASSIGNED TO) ; AT PC (PC) ; ; REGISTERS: ; ; USES R0-R5 SAVES R0-R5 ; ; CALLS: ; ; $SAVAL,GETMSG,OERROR ; ERQIOX:: ;REF. LABEL. INC (SP) ;SET TO EXIT. ERQIOR:: ;REF. LABEL. MOV #10$,-(SP) ;SET RETURN ADDRESS. JSR PC,$SAVAL ;SAVE ALL REGISTERS. MOVB 22(SP),R2 ;GET ERROR NUMBER. NEG R2 ; CALL GETMSG ;GET THE ERROR MESSAGE FROM QIOSYM. MOVB 22(SP),R0 ;GET ERROR NUMBER MOV #QIOERR,R1 ;GET THE ERROR TYPE MESSAGE. MOV 20(SP),R3 ;GET THE PC. MOV 24(SP),R4 ;GET THE LUN NUMBER. MOV #QIOLIN,R5 ;SET THE QIO OPTIONAL LINE PROCESSOR. CALLR OERROR ;GO PROCESSOR THE ERROR. ; ; CLEAN UP ON RETURN. ; 10$: MOV (SP),4(SP) ;SET RETURN ADDRES. ADD #4,SP ;CLEAN STACK. RETURN ;RETURN TO CALLER. .PAGE .SBTTL QIOLIN * QIO OPTIONAL LINE PROCESSOR ; ; THIS ROUTINE FORMATS THE OPTIONAL LINE IN A QIO ERROR MESSAGE. ; ; CALLING SEQUENCE: ; ; CALL BY: JSR PC,QIOLIN ; ; WHERE: R0 = START OF BUFFER TO STORE LINE. ; R4 = LUN NUMBER. ; ; 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 ; ; REGISTERS: ; ; USES R0-R5 SAVES R3-R5 ; ; CALLS: ; ; STRING,$CBDMG,$CBOMG ; QIOLIN: MOV #LUN,R1 ;GET LUN MESSAGE CALL STRING ;PLACE IN BUFFER. MOV R4,R1 ;GET LUN NUMBER. CLR R2 ;SET FOR NO LEADING ZEROS. CALL $CBDMG ;CONVERT TO ASCII DECIMAL. MOV #DEV,R1 ;GET DEVICE MESSAGE. CALL STRING ;PLACE IN BUFFER. MOV #ERRTMP,R2 ;GET A BUFFER. GLUN$S R4,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$: RETURN ; ; .END