*ERROR MESSAGE ROUTINES                                 HEADER  FUPERR  0001.000
         M.PGM     FUP.ERR,MPX-32,3.6.1,00                              0002.000
         SPACE                                                          0003.000
*                                                                       0004.000
************************************************************************0005.000
*                                                                      *0006.000
*                    PROPRIETARY INFORMATION                           *0007.000
*                    -----------------------                           *0008.000
*   THE INFORMATION CONTAINED HEREIN IS PROPRIETARY TO ENCORE          *0009.000
*   COMPUTER CORPORATION AND/OR ITS VENDORS, AND ITS USE, DISCLOSURE,  *0010.000
*   OR DUPLICATION IS SUBJECT TO THE RESTRICTIONS STATED IN THE        *0011.000
*   STANDARD ENCORE COMPUTER CORPORATION LICENSE TERMS AND CONDITIONS  *0012.000
*   OR THE APPROPRIATE THIRD-PARTY SUBLICENSE AGREEMENT.               *0013.000
*                                                                      *0014.000
*                       RESTRICTED RIGHTS                              *0015.000
*                       -----------------                              *0016.000
*   USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT       *0017.000
*   TO RESTRICTIONS AS SET FOURTH IN SUBDIVISION (c) (1) (ii) OF       *0018.000
*   THE RIGHTS IN TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT       *0019.000
*   252.227.7013                                                       *0020.000
************************************************************************0021.000
* (C) COPYRIGHT 1989 ENCORE COMPUTER CORPORATION                       *0022.000
*     ALL RIGHTS RESERVED                                              *0023.000
************************************************************************0024.000
*                                                                       0025.000
*                                                                       0026.000
*    FUNCTIONAL DESCRIPTION:                                            0027.000
*                                                                       0028.000
*        THESE ROUTINES HANDLE ERROR CONDITIONS FOR ALL OF THE          0029.000
*        COMMAND PROCESSING ROUTINES.                                   0030.000
*                                                                       0031.000
*                                                                       0032.000
*    EXTERNAL REFERENCES:                                               0033.000
*                                                                       0034.000
         EXT       FORMATOT        FORMAT + OUTPUT STRING               0035.000
         EXT       GETPATH         GET SIGNIFICANT PART OF NAME         0036.000
         EXT       STACKPTR        STACK POINTER                        0037.000
         EXT       FUN.SAVE        ADDRESS OF FUNCTION STRING           0038.000
         EXT       FUPERROR        BUMPED FOR EACH ERROR DETECTED       0039.000
         EXT       ADR.MASK        MASK BYTE 0                          0040.000
         EXT       FLAGBITS        PROGRAM GLOBAL FLAGS                 0041.000
*                                                                       0042.000
*    EXTERNAL DEFINITIONS                                               0043.000
*                                                                       0044.000
         DEF       ERROR           MAIN ENTRY POINT                     0045.000
         DEF       ERROR2          PRINT A FIXED ERROR MESSAGE          0046.000
         DEF       ERROR3          PRINT MESSAGE & MOD/ERROR #          0047.000
         DEF       ERROR4          PRINT MESSAGE ABOUT DIRECTORY        0048.000
*                                  ALLOCATION/OPEN FAILURE, OR NO ACCESS0049.000
         DEF       ERROR5          PRINT FUNCTION & PATHNAME            0050.000
         DEF       ERROR6          PRINT MESSAGE TEMPLATE       S850513 0051.000
         DEF       ERRORIO         I/O RELATED PROBLEM  --  PRINT       0052.000
*                                  PRINT ERROR MESSAGE BASED ON         0053.000
*                                  INFORMATION IN FCB                   0054.000
         DEF       ERRDISC         PRINT DISC I/O ERROR                 0055.000
         SPACE                                                          0056.000
*                                                                       0057.000
*    SYSTEM MACRO CALLS FOR REGISTER EQUATES                            0058.000
*                                                                       0059.000
         M.EQUS                    GENERAL SYSTEM EQUATES               0060.000
         M.FCB.                    FILE CONTROL BLOCK EQUATES           0061.000
         M.DFT.                    FILE ASSIGNMENT TABLE EQUATES        0062.000
         M.DTT.                    DEVICE TYPE TABLE EQUATES            0063.000
         M.UDT.                    UNIT DEFINITION TABLE EQUATES        0064.000
*                                                                       0065.000
*    LOCAL DEFINITIONS                                                  0066.000
*                                                                       0067.000
* OFFSETS INTO VARIABLES BLOCK                                          0068.000
*                                                                       0069.000
FUNCTION EQU       0               FUNCTION STRING                      0070.000
VOL      EQU       1W              VOLUME NAME                          0071.000
DIR      EQU       2W              DIRECTORY NAME                       0072.000
FILE     EQU       3W              FILE NAME                            0073.000
ORIG1    EQU       4W              MODULE FROM WHICH .....              0074.000
ORIG2    EQU       5W              ..... ERROR ORIGINATED               0075.000
ERRORNUM EQU       6W              ERROR CODE                           0076.000
*                                                                       0077.000
MESSAGE  EQU       1W              FOR INTERNAL ERRORS                  0078.000
*                                                                       0079.000
ERRCNT   EQU       0W              I/O ERROR COUNT (FOR ERRDISC)        0080.000
*                                                                       0081.000
FIXEDMES EQU       0               FOR FIXED Z-STRING MESSAGES          0082.000
*                                                                       0083.000
MODNUM   EQU       2W              ERROR3                               0084.000
ERRNUM   EQU       4W              ERROR3                               0085.000
         SPACE                                                          0086.000
*                                                                       0087.000
*        ERRORIO  --  PARAMETER BLOCK EQUATES FOR THE SET-UP            0088.000
*                     OF THE ERROR MESSAGE.                             0089.000
*                                                                       0090.000
ERRADDR  EQU       0W              ERROR MESSAGE ADDRESS                0091.000
DEVMNEM  EQU       1W              DEVICE MNEMONIC                      0092.000
CHANSUB  EQU       2W              DEVICE CHANNEL & SUBADDRESS          0093.000
LFC      EQU       3W              LOGICAL FILE CODE FROM FCB           0094.000
OPERATN  EQU       4W              4W LONG  --  IOCS OPCODE FROM FCB    0095.000
*                                  WILL BE TRANSLATED INTO AN ASCII     0096.000
*                                  STRING NAMING THE I/O OPERATION      0097.000
*CBSTAT  EQU       8W              STATUS WORD FROM FCB         S860784 0098.000
FCBSTAT  EQU       0W              STATUS WORD FROM FCB         S860784 0099.000
FCBIST1  EQU       1W              FCB STATUS IST1              S860784 0100.000
FCBIST2  EQU       2W              FCB STATUS IST2              S860784 0101.000
         SPACE                                                          0102.000
*                                                                       0103.000
*    LOCAL DATA DECLARATIONS                                            0104.000
*                                                                       0105.000
         BOUND     1D                                                   0106.000
OPTABLE  EQU       $               I/O OPERATION NAME TABLE             0107.000
         DATAD     C'OPEN',C' '               0 - OPEN                  0108.000
         DATAD     C'REWIND',C' '             1 - REWIND                0109.000
         DATAD     C'READ',C' '               2 - READ                  0110.000
         DATAD     C'WRITE',C' '              3 - WRITE                 0111.000
         DATAD     C'WRITE EO',C'F'           4 - WRITE END-OF-FILE     0112.000
         DATAD     C'EXECUTE ',C'CHANNEL'     5 - EXECUTE CHANNEL       0113.000
         DATAD     C'ADVANCE ',C'RECORD'      6 - ADVANCE RECORD        0114.000
         DATAD     C'ADVANCE ',C'FILE'        7 - ADVANCE FILE          0115.000
         DATAD     C'BACKSPAC',C'E RECORD'    8 - BACKSPACE RECORD      0116.000
         DATAD     C'BACKSPAC',C'E FILE'      9 - BACKSPACE FILE        0117.000
         DATAD     C'UPSPACE',C' '            A - UPSPACE               0118.000
         DATAD     C'ERASE',C' '              B - ERASE                 0119.000
         DATAD     C'EJECT',C' '              C - EJECT                 0120.000
         DATAD     C'CLOSE',C' '              D - CLOSE                 0121.000
         DATAD     C'RESERVE ',C'PORT'        E - RESERVE PORT          0122.000
         DATAD     C'RELEASE ',C'PORT'        F - RELEASE PORT          0123.000
ERRSTAB  EQU       $                                                    0124.000
VOM.STR  DATAW     C'VM00'                                     83-0427  0125.000
REX.STR  DATAW     C'RM00'         H.REXS ERR ARE FROM H.REMM  83-0427  0126.000
REM.STR  DATAW     C'RM00'                                     83-0427  0127.000
FUP.STR  DATAW     C'VO00'                                     83-0427  0128.000
         DATAW     C'VO00'                                     83-0427  0129.000
         DATAW     C'VO00'                                     83-0427  0130.000
*                                                                       0131.000
ERRTAB   DATAW     ERR.CODE                                    83-0427  0132.000
         DATAW     ERR.CODE                                    83-0427  0133.000
         DATAW     ERR.CODE                                    83-0427  0134.000
         DATAW     ERR.CODE                                    83-0427  0135.000
         DATAW     ERR.FU2                                              0136.000
         DATAW     ERR.INT                                              0137.000
*                                                                       0138.000
ERR.BLK  REZ       10W             VARIABLES BLOCK                      0139.000
*                                                                       0140.000
ERR.STR  DATAB     C' FAIL: %Z @%C(%C)%C-%A',0                  83-0427 0141.000
ERR5.STR DATAB     C'0UNABLE TO %Z @%C (%C) %C',0                       0142.000
ERR.STR2 DATAB     C' ***************  ERROR   ****************',0      0143.000
INT.STR1 DATAB     C' *********  INTERNAL VOLMGR ERROR  *******',0      0144.000
INT.STR2 DATAB     C' ** %Z  ERROR NUMBER %L4N  **',0                   0145.000
FIX.STR  DATAB     C' %Z',0                                             0146.000
ERR3.STR DATAB     C' **  %Z -- %A',0                          83-0427  0147.000
ERIO.STR DATAB     C'0%Z DEV=%L2A%L4X LFC=%L3A OPER='  ERRORIO 82-1130  0148.000
         DATAB     C'%4A',0                ROUTINE FROMATTING   S860784 0149.000
*        DATAB     C'%4A FCB STATUS=%L8X',0  ROUT. FORM.82-1130 S860784 0150.000
ERIO.ST2 DATAB     C' - FCB STATUS  FCB.SFLG=%L8X  '            S860784 0151.000
         DATAB     C'FCB.IST1=%L8X  FCB.IST2=%L8X',0            S860784 0152.000
ERR4.ST1 DATAB     C'0VOLUME %C DIRECTORY %C -- %Z',0                   0153.000
ERR4.ST2 DATAB     C' ** %A',0                                 83-0427  0154.000
DISCIO   DATAB     C' ** %L4N DISC I/O ERRORS OCCURED ON @%C(%C)%C **',00155.000
ERRMV1   DATAB     C' UNABLE TO %Z - IMPROPER TAPE'             S850513 0156.000
         DATAB     C' ASSIGNMENT',0                             S850513 0157.000
ERRMV2   DATAB     C' ID = %Z AND MULTIVOL = %L4N ON TAPE',0    S850513 0158.000
ERRMV3   DATAB     C' PLEASE ASSIGN TO SINGLE VOLUME TAPE',0    S850513 0159.000
         SPACE                                                          0160.000
         TITLE     ENTRY POINT(S) FOR ERROR(S)                          0161.000
         SPACE                                                          0162.000
         CSECT                                                          0163.000
         SPACE                                                          0164.000
*                                                                       0165.000
* THIS ROUTINE DECODES THE TOP BYTE OF THE ERROR CODE GIVEN             0166.000
* IN R7 AND BRANCHES TO THE CORRECT ERROR HANDLING ROUTINE              0167.000
* BASED ON THIS VALUE.                                                  0168.000
* MASK OUT THE TOP BYTE OF R7 TO GIVE AN ERROR NUMBER ONLY              0169.000
*                                                                       0170.000
ERROR    EQU       $                                                    0171.000
         PUSH                      SAVE REGISTERS                       0172.000
         SPACE                                                          0173.000
         ZBM       NOLIST.F,FLAGBITS    ENABLE AUDIT TRAIL OUTPUT       0174.000
*  FOR THE REPORTING OF ERRORS  --  IN CASE IT WAS INHIBITED.           0175.000
         BL        ERR.CODE        GET ERROR MODULE/CODE       83-0427  0176.000
         BU        ERR.COM         JOINT COMMON CODE           83-0427  0177.000
         SPACE                                                          0178.000
ERR.CODE TRR       R7,R2           ERROR CODE TO R2            83-0427  0179.000
         ANMW      R7,=X'00FFFFFF'                                      0180.000
         SRL       R2,24           MODULE CODE TO BOTTOM BYTE           0181.000
         SLL       R2,2            WORD SCALED                          0182.000
         CI        R2,4W                                       83-0427  0183.000
         BGE       *ERRTAB,R2      DISPATCH TO RELEVANT ROUTINE  83-04270184.000
         ZR        R6              CLEAR                       83-0427  0185.000
         LI        R4,10           RADIUS=10                   83-0427  0186.000
         DVR       R4,R6           GET EQUIV. DECIMAL VALUE    83-0427  0187.000
         CI        R7,9            IS IT AN INDIRECT REMM ERROR 83-0745 0188.000
         BLE       ERR.COD1        NO, BRANCH                  83-0745  0189.000
         SUI       R7,100          GET PURE ERROR NO.          83-0745  0190.000
         LI        R2,8            REMM ERROR                  83-0745  0191.000
ERR.COD1 SLL       R7,8            POSITION QUOTIENT           83-0427  0192.000
         ORR       R7,R6             AND REMAINDER             83-0427  0193.000
         ORMW      R6,ERRSTAB,X2     ADD IN ASCII BASE & MODULE  83-04270194.000
         TRSW      0                                           83-0427  0195.000
         TITLE     COMMON PROCESSING OF ERRORS                          0196.000
*                                                                       0197.000
* BRANCHED TO AFTER R6 HAS BEEN SET UP TO CONTAIN THE FORMAT            0198.000
* STRING ADDRESS TO BE OUTPUT.                                          0199.000
*                                                                       0200.000
* NOTE THAT ROUTINES CALLED BETWEEN THR PUSHSTP AND THE POPSTP          0201.000
* MACROS MUST NOT USE STACKPTR                                          0202.000
*                                                                       0203.000
ERR.COM  EQU       $                                                    0204.000
         LA        R3,ERR.BLK      ADDRESS OF VARIABLES BLOCK           0205.000
*                                                                       0206.000
* PUT ERROR CODE FROM R7 INTO BLOCK                                     0207.000
*                                                                       0208.000
         STW       R7,ERRORNUM,R3                                       0209.000
*                                                                       0210.000
* PUT THE ORIGINATING MODULE NAME INTO THE PARAMETER LIST               0211.000
*                                                                       0212.000
         STW       R6,ORIG1,R3                                 83-0427  0213.000
*                                                                       0214.000
* USE THE COMMON SUBROUTINE GETPATH TO COMPRESS THE VOL/DIR/FIL         0215.000
* PARTS OF THE PATHNAME.                                                0216.000
*                                                                       0217.000
         LW        R2,2W,X1        RETRIEVE R2 FROM STACK      83-0427  0218.000
         LA        R7,PROFVN.O,R2       START OF VOLUME NAME            0219.000
         BL        GETPATH                                              0220.000
         STW       R7,VOL,R3                                            0221.000
*                                                                       0222.000
         LA        R7,PROFDN.O,R2       START OF DIRECTORY NAME         0223.000
         BL        GETPATH                                              0224.000
         STW       R7,DIR,R3                                            0225.000
*                                                                       0226.000
         LA        R7,PROFFN.O,R2       START OF FILE NAME              0227.000
         BL        GETPATH                                              0228.000
         STW       R7,FILE,R3                                           0229.000
*                                                                       0230.000
* PUT THE ADDRESS OF THE FUNCTION STRING INTO THE FIRST                 0231.000
* PARAMETER OF THE VARIABLES BLOCK                                      0232.000
*                                                                       0233.000
         LW        R7,FUN.SAVE                                          0234.000
         STW       R7,FUNCTION,R3                                       0235.000
*                                                                       0236.000
* PUT THE FORMAT STRING ADDRESS INTO R2, ( THE ADDRESS OF THE           0237.000
* VARIABLES BLOCK IS ALREADY IN R3), AND CALL THE FORMAT^ROUTINE        0238.000
*                                                                       0239.000
         LA        R2,ERR.STR      FORMAT STRING                        0240.000
*                                                                       0241.000
* COMMON EXIT FOR ALL ERROR ROUTINES                                    0242.000
*                                                                       0243.000
ERR.COM1 ABM       31,FUPERROR     ANOTHER ERROR                        0244.000
         BL        FORMATOT        OUTPUT STRING                        0245.000
         POP                       RESTORE REGISTERS                    0246.000
         TRSW      R0                                                   0247.000
         TITLE     FUP ERRORS NOT ASSOCIATED WITH ANY PROTOTYPE         0248.000
*                                                                       0249.000
* THIS ROUTINE HANDLES VARIOUS TYPES OF ERRORS                          0250.000
*                                                                       0251.000
* INPUTS:                                                               0252.000
*        R7 = ERROR NUMBER ( FORM IS INTERRX)                           0253.000
*        FUN.SAVE = FUCTION STRING ADDRESS                              0254.000
*                                                                       0255.000
* OUTPUTS:                                                              0256.000
*        NONE                                                           0257.000
*                                                                       0258.000
ERR.FU2  EQU       $                                                    0259.000
         PUSH                      SAVE REGISTERS                       0260.000
         LA        R2,ERR.STR2     FIXED MESSAGE FORMAT STRING          0261.000
         BU        ERR.INT2        JOIN COMMON CODE                     0262.000
         TITLE     INTERNAL ERROR HANDLER                               0263.000
*                                                                       0264.000
* THIS ROUTINE HANDLES INTERNAL INCONSISTENCIES                         0265.000
*                                                                       0266.000
* INPUTS:                                                               0267.000
*        R7 = INTERNAL ERROR NUMBER ( FORM IS INTERRX)                  0268.000
*        FUN.SAVE = FUCTION STRING ADDRESS                              0269.000
*                                                                       0270.000
* OUTPUTS:                                                              0271.000
*        NONE                                                           0272.000
*                                                                       0273.000
ERR.INT  EQU       $                                                    0274.000
         PUSH                      SAVE REGISTERS                       0275.000
         LA        R2,INT.STR1     FIXED MESSAGE FORMAT STRING          0276.000
* PRINT THE FIXED MESSAGE INDICATING AN ERROR                           0277.000
ERR.INT2 BL        FORMATOT        PRINT IT                             0278.000
         LA        R3,ERR.BLK      PARAMETER BLOCK ADDRESS              0279.000
*                                                                       0280.000
* MUST MAP ERROR NUMBER ONTO A MESSAGE EVENTUALLY (AND CHANGE           0281.000
* FORMAT STRING TO BE A %Z.                                             0282.000
**************************************************************          0283.000
         STW       R7,MESSAGE,R3   CALLERS MESSAGE ADDRESS              0284.000
*                                                                       0285.000
         LW        R7,FUN.SAVE     FUNCTION STRING ADDRESS              0286.000
         STW       R7,FUNCTION,R3  INTO PARAMETER BLOCK                 0287.000
*                                                                       0288.000
* PRINT THE VARIABLE MESSAGE                                            0289.000
*                                                                       0290.000
         LA        R2,INT.STR2     VARIABLE MESSAGE FORMAT STRING       0291.000
         BU        ERR.COM1        PRINT MESSAGE AND EXIT               0292.000
         TITLE     PRINT A GENERAL ERROR MESSAGE                        0293.000
*                                                                       0294.000
* THIS ENTRY POINT ALLOWS A MESSAGE TO BE PRINTED TO THE                0295.000
* ERROR TRAIL BY PASSING THE ADDRESS OF THE MESSAGE (Z-STRING FORMAT)   0296.000
* IN REGISTER 7.                                                        0297.000
*                                                                       0298.000
* INPUT:                                                                0299.000
*        R7 = ADDRESS OF Z-STRING MESSAGE                               0300.000
*                                                                       0301.000
* OUTPUT:                                                               0302.000
*        NONE                                                           0303.000
*                                                                       0304.000
ERROR2   EQU       $                                                    0305.000
         PUSH                      SAVE REGISTERS                       0306.000
         SPACE                                                          0307.000
         ZBM       NOLIST.F,FLAGBITS    ENABLE AUDIT TRAIL OUTPUT       0308.000
*  FOR THE REPORTING OF ERRORS  --  IN CASE IT WAS INHIBITED.           0309.000
         SPACE                                                          0310.000
         LA        R3,ERR.BLK      VARIABLE PARAMETER BLOCK             0311.000
         STW       R7,FIXEDMES,R3  STORE MESSAGE ADDRESS                0312.000
*                                                                       0313.000
         LA        R2,FIX.STR      FORMAT STRING ADDRESS                0314.000
         BU        ERR.COM1        PRINT MESSAGE AND EXIT               0315.000
         TITLE     PRINT MESSAGE & MODULE/ERROR #                       0316.000
*                                                                       0317.000
* INPUT: R6 = MESSAGE ADDR                                              0318.000
*        R7 = MODULE #/ERROR #                                          0319.000
*                                                                       0320.000
ERROR3   EQU       $                                                    0321.000
         SPACE                                                          0322.000
         PUSH                      SAVE REGS                            0323.000
         SPACE                                                          0324.000
         ZBM       NOLIST.F,FLAGBITS    ENABLE AUDIT TRAIL OUTPUT       0325.000
*  FOR THE REPORTING OF ERRORS  --  IN CASE IT WAS INHIBITED.           0326.000
         SPACE                                                          0327.000
*        GET FUNCTION STRING ADDRESS & PUT INTO PARAMETER BLOCK         0328.000
         LA        R3,ERR.BLK      PARAMETER BLOCK                      0329.000
*        PUT MESSAGE ADDRESS INTO PARAMETER BLOCK                       0330.000
         STW       R6,0W,X3                                             0331.000
         BL        ERR.CODE        GET ERROR MODULE/CODE       83-0427  0332.000
         STW       R6,1W,R3        PLANT INTO PARAMETER BLOCK  83-0427  0333.000
         LA        R2,ERR3.STR     FORMAT STRING                        0334.000
*        PARAMETER BLOCK ADDRESS IN R3                                  0335.000
         BU        ERR.COM1        PRINT MESSAGE AND EXIT               0336.000
         TITLE     ERROR4 -- DIRECTORY ALOC/OPEN FAIL OR NO ACCESS      0337.000
*++                                                                     0338.000
*                                                                       0339.000
* ERROR4   --  FORMAT & PRINT AN ERROR MESSAGE STATING VOLUME NAME      0340.000
*              AND DIRECTORY NAME.  REASON IS EITHER NO ACCESS ALLOWED  0341.000
*              OR ALLOCATION/OPEN FAILURE.                              0342.000
*                                                                       0343.000
*        INPUT:    R2 = ADDRESS OF A PROTOTYPE ENTRY                    0344.000
*                  R6 = ADDRESS OF ERROR MESSAGE                        0345.000
*                  R7 = MODULE #/ERROR #  COMBO                         0346.000
*                                                                       0347.000
*        OUTPUT:   NONE                                                 0348.000
*                                                                       0349.000
*--                                                                     0350.000
         SPACE                                                          0351.000
ERROR4   EQU       $                                                    0352.000
         PUSH                      SAVE REGS                            0353.000
         SPACE                                                          0354.000
         ZBM       NOLIST.F,FLAGBITS    ENABLE AUDIT TRAIL OUTPUT       0355.000
*  FOR THE REPORTING OF ERRORS  --  IN CASE IT WAS INHIBITED.           0356.000
         SPACE                                                          0357.000
         LA        R3,ERR.BLK      PARAMETER BLOCK                      0358.000
*  PUT MESSAGE ADDRESS INTO PARAMETER BLOCK                             0359.000
         STW       R6,2W,X3                                             0360.000
         LA        R7,PROFVN.O,X2  VOLUME NAME ADDRESS                  0361.000
         BL        GETPATH         MAKE COUNTED STRING DESCRIPTOR       0362.000
         STW       R7,0W,X3        PLANT DESCRIPTOR FOR VOLUME NAME     0363.000
*                                  IN PARAMETER BLOCK                   0364.000
         LA        R7,PROFDN.O,X2  DIRECTORY NAME ADDRESS               0365.000
         BL        GETPATH         MAKE COUNTED STRING DESCRIPTOR       0366.000
         STW       R7,1W,X3        PLANT DESCRIPTOR FOR DIRECTORY NAME  0367.000
*                                  IN PARAMETER BLOCK                   0368.000
         LA        R2,ERR4.ST1     FORMAT STRING                        0369.000
*  PARAMETER BLOCK ADDRESS IN R3                                        0370.000
         BL        FORMATOT        FORMAT & PRINT THE MESSAGE           0371.000
         LW        R7,7W,X1        RETRIEVE R7 FROM STACK               0372.000
         BL        ERR.CODE        GET ERROR MODULE/CODE       83-0427  0373.000
         STW       R6,0W,X3        PLANT INTO PARAMETER BLOCK  83-0427  0374.000
         LA        R2,ERR4.ST2     FORMAT STRING                        0375.000
*  PARAMETER BLOCK ADDRESS IN R3                                        0376.000
         BU        ERR.COM1        PRINT MESSAGE AND EXIT               0377.000
         PAGE                                                           0378.000
*++                                                                     0379.000
*                                                                       0380.000
*  ERROR5  -  PRINT FUNCTION NAME AND FILE PATHNAME                     0381.000
*                                                                       0382.000
*  INPUT:                                                               0383.000
*        R2 = PROTOTYPE ADDRESS                                         0384.000
*                                                                       0385.000
*--                                                                     0386.000
         SPACE                                                          0387.000
ERROR5   EQU       $                                                    0388.000
         PUSH                      SAVE REGS                            0389.000
         LA        R3,ERR.BLK      PARAMETER BLOCK                      0390.000
*                                                                       0391.000
* PUT THE ADDRESS OF THE FUNCTION STRING INTO THE FIRST                 0392.000
* SLOT OF THE PARAMETER BLOCK                                           0393.000
*                                                                       0394.000
         LW        R7,FUN.SAVE                                          0395.000
         STW       R7,FUNCTION,R3                                       0396.000
*                                                                       0397.000
* USE THE COMMON SUBROUTINE GETPATH TO COMPRESS THE VOL/DIR/FIL         0398.000
* PARTS OF THE PATHNAME.                                                0399.000
*                                                                       0400.000
         LA        R7,PROFVN.O,R2       START OF VOLUME NAME            0401.000
         BL        GETPATH                                              0402.000
         STW       R7,VOL,R3                                            0403.000
*                                                                       0404.000
         LA        R7,PROFDN.O,R2       START OF DIRECTORY NAME         0405.000
         BL        GETPATH                                              0406.000
         STW       R7,DIR,R3                                            0407.000
*                                                                       0408.000
         LA        R7,PROFFN.O,R2       START OF FILE NAME              0409.000
         BL        GETPATH                                              0410.000
         STW       R7,FILE,R3                                           0411.000
*                                                                       0412.000
* PUT THE FORMAT STRING ADDRESS INTO R2, ( THE ADDRESS OF THE           0413.000
* VARIABLES BLOCK IS ALREADY IN R3), AND CALL THE FORMAT ROUTINE        0414.000
*                                                                       0415.000
         LA        R2,ERR5.STR     FORMAT STRING                        0416.000
         BL        FORMATOT        OUTPUT STRING                        0417.000
         POP                       RESTORE REGISTERS                    0418.000
         TRSW      R0                                                   0419.000
         PAGE                                                           0420.000
************************************************************    S850513 0421.000
*                                                          *    S850513 0422.000
*        ERROR6 - PRINT AN MESSAGE TEMPLATE                *    S850513 0423.000
*          INPUT: R2 = FAT ADDRESS                         *    S850513 0424.000
*                                                          *    S850513 0425.000
************************************************************    S850513 0426.000
ERROR6   EQU       $                                            S850513 0427.000
         PUSH                      SAV REGISTERS                S850513 0428.000
         SPACE                                                  S850513 0429.000
         LA        R3,ERR.BLK      GET ERROR BLOCK              S850513 0430.000
         LW        R7,FUN.SAVE     GET FUNCTION STRING          S850513 0431.000
         STW       R7,FUNCTION,R3  STORE INTO ERR.BLK           S850513 0432.000
         LA        R2,ERRMV1       GET ERRMV1 ERROR MESSAGE     S850513 0433.000
         BL        FORMATOT        OUTPUT                       S850513 0434.000
         LA        R3,ERR.BLK      GET ERROR BLOCK ADDR         S850513 0435.000
         LW        R2,C.REGS       GET TSA                      S850513 0436.000
         LW        R2,T.BBUFA,R2   GET BUFFER                   S850513 0437.000
         LW        R5,0,R2         SEE IF SINGLE VOLUME OR MULT S850513 0438.000
         CI        R5,1            SAVE ON SINGLE TAPE?         S850513 0439.000
         BNE       ERROR6.1        IF NOT, BRANCH               S850513 0440.000
         LA        R7,ERRMV3       GET ERROR MSG                S850513 0441.000
         BL        ERROR2          PRINT                        S850513 0442.000
         BU        ERROR6.2                                             0443.000
ERROR6.1 EQU       $               MULTI-VOLUME TAPE            S850513 0444.000
         STW       R2,0,X3         STORE INTO ERR.BLK           S850513 0445.000
         LW        R5,4,R2         GET VOLUME NUMBER FROM TAPE  S850513 0446.000
         STW       R5,4,X3         STORE INTO ERR.BLK           S850513 0447.000
         LA        R2,ERRMV2       GET TEMPLATE                 S850513 0448.000
         BL        FORMATOT        OUTPUT MESSAGE               S850513 0449.000
ERROR6.2 POP                       RESTORE REGISTERS            S850513 0450.000
         TRSW      R0              RETURN                       S850513 0451.000
         PAGE                                                   S850513 0452.000
*++                                                                     0453.000
*                                                                       0454.000
* ERRORIO  --  I/O RELATED ERROR, PRINT MESSAGE USING INPUT ERROR       0455.000
*              MESSAGE AND APPLICABLE INFORMATION FROM INPUT FCB        0456.000
*                                                                       0457.000
*        INPUT:    R2 = FCB ADDRESS                                     0458.000
*                  R6 = ADDRESS OF ERROR MESSAGE                        0459.000
*        OUTPUT:   NONE                                                 0460.000
*                                                                       0461.000
*--                                                                     0462.000
         SPACE                                                          0463.000
ERRORIO  EQU       $                                                    0464.000
         PUSH                      SAVE REGS                            0465.000
         SPACE                                                          0466.000
         ZBM       NOLIST.F,FLAGBITS    ENABLE AUDIT TRAIL OUTPUT       0467.000
*  FOR THE REPORTING OF ERRORS  --  IN CASE IT WAS INHIBITED.           0468.000
         SPACE                                                          0469.000
         STW       R6,ERR.BLK+ERRADDR   ERROR MESSAGE ADDRESS           0470.000
         ZR        R6              INITIALIZE                           0471.000
         LW        R7,FCB.LFC,X2   IOCS OPCODE/LOGICAL FILE CODE        0472.000
         SLLD      R6,8            ISOLATE OPCODE                       0473.000
         STW       R7,ERR.BLK+LFC  PLANT LFC IN PARAMETER BLOCK         0474.000
         SLL       R6,4            OPCODE TIMES 4 WORDS = TABLE INDEX   0475.000
         TRR       R6,R3           ... TO INDEX REG                     0476.000
         LD        R6,OPTABLE,X3   1ST HALF OF OPERATION NAME           0477.000
         STW       R6,ERR.BLK+OPERATN   PLANT IN PARAMETER BLOCK        0478.000
         STW       R7,ERR.BLK+OPERATN+1W     PLANT IN PARAMETER BLOCK   0479.000
         LD        R6,OPTABLE+1D,X3     2ND HALF OF OPERATION NAME      0480.000
         STW       R6,ERR.BLK+OPERATN+2W     PLANT IN PARAMETER BLOCK   0481.000
         STW       R7,ERR.BLK+OPERATN+3W     PLANT IN PARAMETER BLOCK   0482.000
*        LW        R7,FCB.SFLG,X2  STATUS WORD FROM FCB         S860784 0483.000
*        STW       R7,ERR.BLK+FCBSTAT   PLANT IN PARAMETER BLOCKS860784 0484.000
         TRR       R2,R5           SAVE FCB ADDRESS IN R5       S860784 0485.000
*                                                                       0486.000
*        GET DEVICE MNEMONIC, CHANNEL AND SUBADDRESS                    0487.000
*                                                                       0488.000
         LW        R2,FCB.FATA,X2  FAT ADDRESS FROM FCB                 0489.000
         ANMW      R2,ADR.MASK     MASK BYTE 0                          0490.000
         LH        R3,DFT.UDTX,X2  UDT INDEX FROM FAT                   0491.000
         MPI       R2,UDT.SIZE     OFFSET TO DESIRED UDT ENTRY          0492.000
         ADMW      R3,C.UDTA       ADDRESS OF DESIRED UDT ENTRY         0493.000
         LH        R7,UDT.CHAN,X3  DEVICE CHANNEL #/SUBADDR FROM UDT    0494.000
         STW       R7,ERR.BLK+CHANSUB   PLANT IN PARAMETER BLOCK        0495.000
*                                                                       0496.000
*        GET DEVICE MNEMONIC FROM DEVICE TYPE TABLE                     0497.000
*                                                                       0498.000
         LB        R3,UDT.DTC,X3   DEVICE TYPE CODE FROM UDT            0499.000
         SUI       R3,1            ZERO BIAS                            0500.000
         MPI       R2,DTT.SIZE     OFFSET TO DESIRED DTT ENTRY          0501.000
         ADMW      R3,C.DTTA       ADDRESS DESIRED DTT ENTRY            0502.000
         LH        R7,DTT.NAM,X3   ASCII DEVICE MNEMONIC FROM DTT ENTRY 0503.000
         SLL       R7,16           MOVE TO LEFT HALF WORD               0504.000
         STW       R7,ERR.BLK+DEVMNEM   PLANT IN PARAMETER BLOCK        0505.000
*                                                                       0506.000
*        FORMAT & PRINT THE MESSAGE                                     0507.000
*                                                                       0508.000
         LA        R2,ERIO.STR     FORMATING STRING ADDRESS             0509.000
         LA        R3,ERR.BLK      PARAMETER BLOCK ADDRESS              0510.000
         BL        FORMATOT        PRINT FIRST PART OF MSG.     S860784 0511.000
         TRR       R5,R2           GET FCB ADDRESS IN INDEX     S860784 0512.000
         LW        R7,FCB.SFLG,X2  STATUS WORD FROM FCB         S860784 0513.000
         STW       R7,FCBSTAT,X3   PLANT IN PARM BLOCK          S860784 0514.000
         LW        R7,FCB.IST1,X2  GET FCXB.IST1                S860784 0515.000
         STW       R7,FCBIST1,X3   PUT INTO PARM BLOCK          S860784 0516.000
         LW        R7,FCB.IST2,X2  GET FCXB.IST2                S860784 0517.000
         STW       R7,FCBIST2,X3   PUT INTO PARM BLOCK          S860784 0518.000
         LA        R2,ERIO.ST2     GET ADDR OF 2ND PART OF MSG  S860784 0519.000
         BU        ERR.COM1        PRINT MESSAGE AND EXIT               0520.000
         TITLE     ERRDISC - DISC I/O ERRORS NON-TERMINAL               0521.000
*++                                                                     0522.000
*                                                                       0523.000
*        ERRDISC   THIS ENTRY POINT PRINTS A MESSAGE SAYING THAT        0524.000
*                  X NUMBER OF DISC I/O ERRORS OCCURED WHEN READING     0525.000
*                  FILE.                                                0526.000
*                                                                       0527.000
*        INPUTS:                                                        0528.000
*                  R2 = PROTOTYPE ADDRESS                               0529.000
*                  R4 = COUNT OF I/O ERRORS                             0530.000
*                                                                       0531.000
*        OUTPUT:                                                        0532.000
*                  NONE                                                 0533.000
*                                                                       0534.000
*--                                                                     0535.000
         SPACE     2                                                    0536.000
ERRDISC  EQU       $                                                    0537.000
         PUSH                      SAVE REGISTERS                       0538.000
         LA        R3,ERR.BLK      ERROR MESSAGE PARAMETER BLOCK        0539.000
*                                                                       0540.000
         STW       R4,ERRCNT,R3    PUT COUNT INTO PARAMETER BLOCK       0541.000
*                                                                       0542.000
         LA        R7,PROFVN.O,R2  GET ADDRESS VOLUME NAME              0543.000
         BL        GETPATH         COMPRESS NAME                        0544.000
         STW       R7,VOL,R3       PUT INTO PARAMETER BLOCK             0545.000
*                                                                       0546.000
         LA        R7,PROFDN.O,R2  GET ADDRESS OF DIR NAME              0547.000
         BL        GETPATH         COMPRESS NAME                        0548.000
         STW       R7,DIR,R3       PUT INTO PARAMETER BLOCK             0549.000
*                                                                       0550.000
         LA        R7,PROFFN.O,R2  GET ADDRESS OF FILE NAME             0551.000
         BL        GETPATH         COMPRESS NAME                        0552.000
         STW       R7,FILE,R3      PUT INTO PARAMETER BLOCK             0553.000
*                                                                       0554.000
         LA        R2,DISCIO       MESSAGE TEMPLATE                     0555.000
         BL        FORMATOT                                             0556.000
         POP                       RESTORE REGISTERS                    0557.000
         TRSW      R0              RETURN                               0558.000
         SPACE     2                                                    0559.000
END      END                                                            0560.000
