CVL 
          IDENT  CVL,CVL
          PERIPH
          BASE   MIXED
          SST 
*COMMENT  CVL - COMMON VALIDATION INTERFACE FOR NOS.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  CVL - COMMON VALIDATION INTERFACE. 
          SPACE  4,10 
*****     CVL - COMMON VALIDATION INTERFACE FOR NOS.
*         R. E. DENNIS.      77/02/03.
*         C. R. LUND.        81/01/12.
*         J. M. MAREK.       88/01/26.
* 
*         CVL IS CALLED BY THE ON-LINE DIAGNOSTIC SOFTWARE TO 
*         PROVIDE VALIDATION OF THE CALLER, VERIFICATION OF THE 
*         HARDWARE TO BE TESTED, AND THE GRANTING OR DENYING OF 
*         PERMISSION FOR SOLE USE OF HARDWARE ELEMENTS. 
*         IN ADDITION, UPON REQUEST, CVL WILL RETURN SYSTEM AND 
*         MACHINE CHARACTERISTICS TO THE CALLER.
          SPACE  4,10 
***       CALL
* 
* 
*T  IR    18/  *CVL*,1/1,5/ CP,12/ VN,6/ CODE,18/ ADDR
*         CP     CONTROL POINT NUMBER.
*         VN     VERSION NUMBER (FUNCTION 4). 
*                     0 - RETURN OLD FORMAT SAB.
*                     1 - RETURN NEW FORMAT SAB.
*         CODE   FUNCTION CODE. 
*         ADDR   PARAMETER BLOCK ADDRESS. 
          SPACE  4,10 
***       ROUTINES CALLED.
* 
*         0PX.
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
*         * CVL CALL ERROR.*
*         MAY INDICATE ANY ONE OF THE FOLLOWING - 
*         1. RECALL BIT NOT SET.
*         2. INCORRECT FUNCTION CODE. 
*         3. THE CALLER DID NOT SUPPLY AN EST ORDINAL, A CH/EQ/UN 
*            COMBINATION, OR A MNEMONIC.
*         4. EST ORDINAL IS SUPPLIED BY THE CALLER, AND THE FUNCTION
*            BIT MEANING THE UNIT IS NOT IN THE EST IS ALSO SET.
*         5. THE NOT-IN-EST BIT IS SET, AND NEITHER THE DEVICE CODE 
*            NOR THE DEVICE MNEMONIC IS SUPPLIED. 
*         6. THE NOT-IN-EST BIT IS SET AND A UNIT RETURN WAS
*            REQUESTED. 
*         7. THE USERS ECS FIELD LENGTH WAS NOT ZERO WHEN A DIAGNOSTIC
*            REQUEST WAS MADE TO ACCESS AN AREA OF *ECS* OR *ESM* 
*            FOR DIAGNOSTIC TESTING.  DIAGNOSTIC AREAS ARE THE
*            PREALLOCATED TRACK, THE MAINTENANCE HALF OF ECS, OR ALL OF 
*            ECS IF THE DEVICE HAS THE DOWN BIT SET IN THE EST.  A ZERO 
*            FIELD LENGTH IN THE *ECS* WORD (BYTE 4) WILL PROVIDE A 
*            FIXED RA AND FL FOR DIAGNOSTIC ISOLATION PURPOSES TO ALLOW 
*            ON-LINE REPAIR OF ECS. 
*            FOR *ESM*, A LOCAL FILE  EM*  IS CREATED FOR DIAGNOSTICS.
*         8. USER DID NOT REQUEST (OR WAS NOT ASSIGNED) A TAPE FILE 
*            WHEN USING TAPE PREASSIGNMENT. 
*         9. USER-SUPPLIED DEVICE MNEMONIC DOES NOT MATCH THAT OF 
*            TAPE ASSIGNED WHEN USING TAPE PREASSIGNMENT. 
*        10. USER ATTEMPTED TO LOAD TAPE CONTROLWARE WHEN 
*            USING TAPE PREASSIGNMENT.
*        11. USER REQUESTED A CH/EQ/UN COMBINATION DEFINED IN THE 
*            EST, BUT THE DEVICE CODE REQUESTED WAS NOT DEFINED IN
*            CVL-S INTERNAL TABLE.
*        12. USER REQUESTED A CHANNEL WHICH DOES NOT EXIST. 
* 
*         * USER VALIDATION DENIED.*
*         INDICATES ONE OF THE FOLLOWING. 
*         1. THE CALLING PROGRAM IS NOT SYSTEM ORIGIN AND EITHER THE
*            USER DOES NOT HAVE SYSTEM ORIGIN PRIVILEGES, OR
*            ENGINEERING MODE IS NOT SET AT THE SYSTEM CONSOLE. 
*         2. THE USER DOES NOT HAVE VALIDATION PRIVILEGES TO RUN ON-
*            LINE DIAGNOSTICS.  THIS IS REQUIRED FOR ALL *VALIDATE
*            CUSTOMER ENGINEER* FUNCTIONS (EXCEPT FOR CERTAIN RHF 
*            FUNCTIONS).
          SPACE  4
          TITLE  LOCAL DEFINITIONS. 
**        COMMON DECKS. 
  
*CALL     COMPMAC 
*CALL     COMSCPS 
          QUAL   DSL
*CALL     COMSDSL 
          QUAL   *
*CALL     COMSESS 
*CALL     COMSMSP 
*CALL     COMSMST 
*CALL     COMSPIM 
 SSJ$     EQU    1
*CALL     COMSSSD 
*CALL     COMSSSJ 
*CALL     COMSZOL 
  
  
****      DIRECT LOCATION ASSIGNMENTS.
  
 FA       EQU    T1          EXERCISE CAUTION WHEN USING THIS CELL
 FS       EQU    T2 - T6     EXERCISE CAUTION WHEN USING THESE CELLS
 EP       EQU    20          EST UNIT NUMBER
 VT       EQU    21          TEMPORARY VALIDATION CODE WORD 
 BS       EQU    22          PARAMETER BLOCK SIZE 
 VH       EQU    23          CODE SHOWING HIGHEST MATCH FOUND 
 SB       EQU    24          SHARE BITS 
 TI       EQU    25          DEVICE CODE TABLE INDEX
 CS       EQU    26          CHANNEL STATUS BYTE FROM CHANNEL TABLE 
 DA       EQU    27          EST INDEX
 LO       EQU    30          LAST EST ORDINAL + 1 
 LM       EQU    31          LAST MASS STORAGE ORDINAL + 1
 CD       EQU    33 - 37     TEMP 
 CC       EQU    34          AUXILIARY CHANNEL FROM EST 
 CB       EQU    CC+1        SECOND CHANNEL FROM EST
 CA       EQU    CB+1        FIRST CHANNEL FROM EST 
 CI       EQU    CA+1        CHANNEL BYTE INDEX 
 ES       EQU    40          *EQDE* WORD OF EST ENTRY 
 EA       EQU    ES+5        ORDINAL OF MATCHED EST ENTRY 
 CE       EQU    47          POINTER TO EST CHANNEL BYTE
 FB       EQU    57          FNT RELATIVE ADDRESS  (0BF PARAMETER)
 AE       EQU    60 - 65     *EQAE* WORD OF EST ENTRY 
****
          SPACE  4
*         VALIDATION BYTE BIT DEFINITIONS.
  
 VBWD     EQU    13          VALIDATION ERROR IN WORD 
 VBB1     EQU    12          VALIDATION ERROR IN BYTE 1 
 VBB2     EQU    11          VALIDATION ERROR IN BYTE 2 
 VBB3     EQU    10          VALIDATION ERROR IN BYTE 3 
 VBB4     EQU    7           VALIDATION ERROR IN BYTE 4 
 VBS1     EQU    6           ELEMENT IN BYTE 1 CANNOT BE SHARED 
 VBS2     EQU    5           ELEMENT IN BYTE 2 CANNOT BE SHARED 
 VBS3     EQU    4           ELEMENT IN BYTE 3 CANNOT BE SHARED 
 VBS4     EQU    3           ELEMENT IN BYTE 4 CANNOT BE SHARED 
 VBCD     EQU    0           CALLER HAS SUPPLIED DATA IN WORD 
  
*         VALIDATION BYTE BIT MASKS.
  
 VWDM     BITSET VBWD        VALIDATION ERROR IN WORD 
 VB1M     BITSET VBB1        VALIDATION ERROR IN BYTE 1 
 VB2M     BITSET VBB2        VALIDATION ERROR IN BYTE 2 
 VB3M     BITSET VBB3        VALIDATION ERROR IN BYTE 3 
 VB4M     BITSET VBB4        VALIDATION ERROR IN BYTE 4 
 VS1M     BITSET VBS1        ELEMENT IN BYTE 1 CANNOT BE SHARED 
 VS2M     BITSET VBS2        ELEMENT IN BYTE 2 CANNOT BE SHARED 
 VS3M     BITSET VBS3        ELEMENT IN BYTE 3 CANNOT BE SHARED 
 VS4M     BITSET VBS4        ELEMENT IN BYTE 4 CANNOT BE SHARED 
 VCDM     BITSET VBCD        CALLER HAS SUPPLIED DATA IN WORD 
  
*         FUNCTION CHARACTERISTICS BIT DEFINITIONS. 
  
 LMEM     EQU    0           CALLER WILL LOAD CONTROLLER MEMORY 
 WRTR     EQU    1           CALLER WILL WRITE ON VALIDATED UNIT
 NPRE     EQU    2           WILL WRITE OUTSIDE PREALLOCATED AREA.
*         EQU    4           RESERVED FOR CDC 
*         EQU    5           RESERVED FOR CDC 
 RTNU     EQU    3           RETURN UNIT TO SYSTEM
 NEST     EQU    6           UNIT NOT IN EST
 SPCL     EQU    7           SPECIAL REQUEST FLAG 
*                              FOR *ECS* THIS BIT IS IGNORED IF *NPRE*
*                              (BIT 2) IS NOT SET.
*                             0 = WILL ACCESS ALL OF NORMAL *ECS* IF
*                                 DOWN BIT IS SET IN EST. 
*                             1 = WILL ACCESS MAINTENANCE MODE HALF OF
*                                 *ECS* IF MAINTENANCE MODE BIT IN THE
*                                 ASSOCIATED MST IS SET.
*                              FOR *RHF*
*                             1 = WILL EITHER LOAD OR DUMP NAD
*                                 CONTROLWARE IF SET IN CONJUNCTION 
*                                 WITH BIT 0 AND REQUESTING VALIDATION
*                                 FOR RHF HARDWARE. 
 BESM     EQU    10            A *DEMA* FLAG TO CREATE EM* LOCAL FILE.
*                             0 = CVL WILL CREATE LOCAL FILE NAMED EM*. 
*                             1 = CVL WILL NOT CREATE LOCAL FILE. 
  
*         FUNCTION CHARACTERISTICS BIT MASKS. 
  
 CMEM     BITSET LMEM 
 WRTM     BITSET WRTR 
 PREM     BITSET NPRE 
 NESM     BITSET NEST        DEVICE NOT EXPECTED IN EST 
 SPCM     BITSET SPCL        BIT MASK FOR SPECIAL FUNCTION BIT 7. 
  
*         VALIDATION RESPONSE CODES.
  
 VRGR     EQU    0           VALIDATION GRANTED 
 VRSH     EQU    2           VALIDATION GRANTED, EQUIPMENT SHARED 
 VRNM     EQU    4           VALIDATION DENIED, NO MATCH
 VRCI     EQU    5           VALIDATION DENIED, CRITICAL INFORMATION
 VRUS     EQU    6           VALIDATION DENIED, EQUIPMENT IN USE
 VRNB     EQU    7           VALIDATION DENIED, SHARE BYTE NOT SET
 VRMS     EQU    10          VALIDATION DENIED, IN MAINTENANCE STATE
 VRMA     EQU    11          VALIDATION DENIED, MA BIT NOT SET IN MST 
 VRLB     EQU    12          VALIDATION DENIED, LOCAL DEVICE CODE BAD 
 VRRB     EQU    13          VALIDATION DENIED, REMOTE DEVICE CODE BAD
 VRSB     EQU    14          VALIDATION DENIED, SHARE BYTE SET
 VRUA     EQU    15          VALIDATION DENIED, CANNOT ACCESS NETWORK 
 VRCH     EQU    16          VALIDATION DENIED, NAD CONNECTED TO HOST 
 VRTC     EQU    17          VALIDATION DENIED, NO TCU ENABLES SET
 VRDS     EQU    33          VALIDATION DENIED, DEVICE STATUS ERROR 
 VRSI     EQU    34          SITUATION INDETERMINATE, NO RESPONSE 
 VRCS     EQU    37          VALIDATION DENIED, CM IN USE 
 VRCD     EQU    40          VALIDATION DENIED, CM NOT DOWNED 
 VRDW     EQU    41          VALIDATION GRANTED, DEVICE LOCALLY DOWN
 VRBC     EQU    42          VALIDATION DENIED, NO BC LOAD ALLOWED
 VRFN     EQU    43          VALIDATION DENIED, FILE NOT FOUND
 VRUV     EQU    44          VALIDATION DENIED, USER VALIDATION DENIED
 VRNZ     EQU    45          VALIDATION DENIED, NON-ZERO EM FL
 VRLT     EQU    46          VALIDATION DENIED, LABELLED TAPE PREASSIGN 
 VREF     EQU    47          VALIDATION DENIED, ENTRY FOUND IN EST
 VRMN     EQU    50          VALIDATION DENIED, MNE/DC INCOMPATIBLE 
 VRIC     EQU    51          VALIDATION DENIED, INCORRECT REQUEST PARAM 
 VRAO     EQU    52          VALIDATION DENIED, ADDRESS OUT OF RANGE
 VRIP     EQU    53          VALIDATION DENIED, INCORRECT PARAM COMB. 
 VREN     EQU    54          VALIDATION DENIED, ENTRY NOT IN EST
 VRIS     EQU    55          VALIDATION DENIED, I/O SEQUENCE ERROR
*         EQU    56          (RESERVED - DO NOT USE)
  
  
*         ASSEMBLY CONSTANTS. 
  
  
 CH       EQU    0           CHANNEL MODIFICATION CONSTANT
 FCV      EQU    6001        FWA OF *5CV* OVERLAY 
          TITLE  LOCAL MACRO DEFINITIONS. 
 VBCD     SPACE  4,10 
**        VBCD - DEFINE VALIDATION BYTE CODES.
* 
*         ENTRY  WORD,BITS
*                WORD = PARAMETER WORD CONTAINING NON-VALID ENTRY.
*                BITS = BIT NUMBERS DEFINING BYTE IN ERROR. 
  
  
          MACRO  VBCD,T,A,B 
          LOC    A*100-ESTV*100+B 
 T        BSS    0
          ENDM
 FCN      SPACE  4,10 
**        FCN - DEFINE FUNCTION PROCESSOR.
* 
*         ENTRY  NAME,USV 
*                NAME = NAME OF FUNCTION PROCESSOR. 
*                USV, IF PRESENT, USER VALIDATION REQUIRED. 
  
  
 .2       SET    0
 FCN      MACRO  A,B
          LOC    .2 
          IFC    NE,$B$$
          CON    1,A
          ELSE
          CON    0,A
          ENDIF 
 .2       SET    .2+1 
          ENDM
          TITLE  MAIN PROGRAM 
**        CVL - MAIN PROGRAM. 
  
  
          ORG    PPFW 
 CVL      RJM    CRS         CHECK RECALL STATUS
          ZJP    CVL1        IF NOT SET 
          LDN    PPUL        GET PP STATUS
          CRD    CM 
          LDD    CM          SET MAXIMUM CHANNEL NUMBER + 1 
          ERRNZ  NCHL-PPUL   CODE DEPENDS ON VALUE
          RAM    GCIA 
          LDN    0
          SBD    CM 
          RAM    GCIB 
          LDD    CM+3        SET NUMBER OF CONCURRENT PPS 
          ERRNZ  CPPL-PPUL   CODE DEPENDS ON VALUE
          LPN    77 
          RAM    GCIC 
          LDD    CP          GET USER-S EJT ORDINAL 
          ADN    TFSW 
          CRD    CM 
          LDD    CM 
          STM    EJTO 
          LDN    ESTP        READ EST POINTER 
          CRD    CM 
          LDD    CM+2        SET LAST EST ORDINAL + 1 
          STD    LO 
          LDD    CM+3        SET LAST MASS STORAGE ORDINAL + 1
          STD    LM 
          LDD    IR+3        CHECK FUNCTION 
          SHN    -6+1 
          STD    T1 
          ADN    1
          STD    T2 
          SBN    TFCNL
 CVL1     PJN    PCE0        IF INCORRECT FUNCTION
          LDM    TFCN,T1
          ZJN    CVL2        IF ENGINEERING ACCESS NOT REQUIRED 
          RJM    CUA         CHECK USER ACCESS
          LDD    CM 
          ZJN    CVL2        IF ENGINEERING ACCESS
          LDC    VRUV*100+1  SET USER VALIDATION DENIED/COMPLETE BIT
          STM    RSCD 
          RJM    CKA         GET PARAMETER BLOCK ADDRESS
          CWM    TPMB,ON
          UJN    DPP         DROP PP
  
 CVL2     LDM    TFCN,T2     SET PROCESSOR
          STD    T1 
          RJM    0,T1        PROCESS FUNCTION 
*         UJN    DPP         DROP PP
 DPP      SPACE  4,10 
**        DPP - DROP PP.
  
  
 DPP      MONITOR DPPM       DROP PP
          LJM    PPR         EXIT TO PP RESIDENT
 PCE      SPACE  4,10 
**        PCE - PROCESS CALL ERROR. 
  
  
 PCE      SUBR               ENTRY/EXIT 
 PCE0     LDC    MSGA        * INCORRECT CEVAL REQUEST PARAMETER(S).* 
 PCE1     RJM    DFM
 PCE2     LDC    MSGB        * CVL CALL ERROR.* 
*         UJN    FEP         ABORT JOB
  
  
*         FEP - FATAL ERROR PROCESSOR.
  
  
 FEP      RJM    DFM
          MONITOR ABTM       ABORT JOB
          LJM    PPR         EXIT TO PP RESIDENT
  
  
*         ERROR MESSAGES ISSUED ON *CVL* ABORT. 
  
 MSGA     DATA   C* INCORRECT CEVAL REQUEST PARAMETER(S).*
 MSGB     DATA   C* CVL CALL ERROR.*
 MSGC     DATA   C* ADDRESS OUT OF RANGE.*
 MSGD     DATA   C* REQUESTED CHANNEL DOES NOT EXIST.*
 TFCN     SPACE  4,10 
**        TFCN - FUNCTION CODE TABLE. 
* 
*         ENTRY  ONE WORD INDEXED BY FUNCTION PROCESSOR.
* 
*T,       12/  ADDR 
*         ADDR = ADDRESS OF FUNCTION PROCESSOR. 
  
  
 TFCN     BSS    0
          FCN    PCE         (UNDEFINED)
          FCN    VCE,E       VALIDATE CUSTOMER ENGINEER 
          FCN    RMC         READ MACHINE CHARACTERISTICS 
          FCN    CEA,E       CHECK ENGINEERING ACCESS 
          FCN    RSB         READ SYSTEM ATTRIBUTE BLOCK
          FCN    MEM,E       RETURN EXCHANGE PACKAGE RA, RAE, FL, FLE.
          LOC    *O 
 TFCNL    EQU    *-TFCN      LENGTH OF FUNCTION CODE TABLE. 
 MEMORY   SPACE  4,10 
**        MEMORY LOCATIONS. 
  
 EJTO     CON    0           EJT ORDINAL
 TPMB     TITLE  PARAMETER BLOCK TABLE. 
***       PARAMETER BLOCK DEFINITIONS.
  
 TPMB     BSS    0
 RAMM     BSS    2           RETURNED RA FOR CEMEM MACRO
 FLMM     BSS    2           FL FOR CEMEM MACRO 
 RSCD     BSS    1           RESPONSE CODE
 RAEM     BSS    2           RAE FOR CEMEM MACRO
 ESTV     EQU    RAEM        EST ORDINAL VALIDATION BYTE
 FLEM     BSS    2           FLE FOR CEMEM MACRO
 ESTO     BSS    1           EST ORDINAL
 CHAN     BSS    1           CHANNEL VALIDATION BYTE
          BSS    1           RESERVED 
          BSS    1           RESERVED 
 CHS2     BSS    1           SECOND CHANNEL BYTE
 CHS1     BSS    1           FIRST CHANNEL BYTE 
 EQPV     BSS    1           EQUIPMENT VALIDATION BYTE
          BSS    2           RESERVED 
 LDVC     BSS    1           LOCAL NAD DEVICE CODE
 EQPN     BSS    1           EQUIPMENT (CONTROLLER) NUMBER
 UNIT     BSS    1           UNIT NUMBER VALIDATION BYTE
          BSS    3           RESERVED 
 UNUM     BSS    1           UNIT NUMBER
 DCMV     BSS    1           DEVICE CODE AND MNEMONIC VALIDATION BYTE 
          BSS    2           RESERVED 
 DEVM     BSS    1           DEVICE MNEMONIC
 DEVC     BSS    1           DEVICE CODE
          BSS    4           RESERVED 
 FNCH     BSS    1           FUNCTION CHARACTERISTICS 
 PSNV     BSS    1           PACK SN VALIDATION BYTE
 PKSN     BSS    4           PACK SERIAL NUMBER 
 RAC1     EQU    PKSN+2      RHF ACCESS CODE (PART 1) 
 RAC2     EQU    PKSN+3      RHF ACCESS CODE (PART 2) 
 TCUV     BSS    1           TCU ENABLES VALIDATION BYTE
          BSS    3           RESERVED 
 TCUE     BSS    1           BUFFER SIZE/TCU ENABLES
 LTCV     BSS    1           TCU ADDRESS VALIDATION BYTE
          BSS    2           RESERVED 
 RDVC     BSS    1           REMOTE NAD DEVICE CODE 
 LTCA     BSS    1           LOGICAL TCU ADDRESS
 TPMBL    EQU    *-TPMB      PARAMETER BLOCK LENGTH 
  
  
***       DETAILED PARAMETER BLOCK DEFINITIONS ARE AS FOLLOWS - 
* 
*T ADDR+0 48/ ,6/  RC,5/ ,1/C 
*T,ADDR+1 5/ VB,6/ ,1/X,36/ ,12/  ESTO
*T,ADDR+2 5/ VB,4/ S,2/ ,1/X,12/ ,12/ ,12/  CH2,12/  CH1
*T,ADDR+3 5/ VB,4/ S,2/ ,1/X,36/ ,12/  EQPN 
*T,ADDR+3 5/ VB,4/ S,2/ ,1/ X,24/ ,12/ LDVC,12/ EQPN  (RHF) 
*T,ADDR+4 5/ VB,4/ S,2/ ,1/X,36/ ,12/  UN 
*T,ADDR+5 5/ VB,4/ S,2/ ,1/ X,24/ ,12/ DEVM,12/ DEVC
*T,ADDR+6 48/ ,12/  FC
*T,ADDR+7 5/ VB,6/ ,1/ X,48/ PACK SN
*T,ADDR+7 5/ VB,6/ ,1/X,24/ RAE,24/ FLE  (FORMAT WHEN ECS DIAGNOSTICS)
*T,ADDR+10 5/ VB,6/ ,1/X,24/ RAE,24/ FLE  (FORMAT FOR DB DISK WHEN EM*) 
*T,ADDR+7 5/ VB,39/ ,16/ RHAC    (RHF DIAGNOSTICS ONLY) 
*T,ADDR+10 5/ VB,4/ S,43/ ,4/ BFSZ,4/ TCUE
*T,ADDR+11 5/ VB,4/ S,27/ ,12/ RDVC,12/ LTCA
* 
*                WHERE -
*                RC (11-6) = RESPONSE CODE (SET BY *CVL*).
*                            0 = VALIDATION GRANTED.
*                            2 = VALIDATION GRANTED, ELEMENT MIGHT BE 
*                                SHARED WITH ANOTHER MAINFRAME. 
*                            4 = VALIDATION DENIED, ELEMENT NOT IN EST. 
*                            5 = VALIDATION DENIED, CRITICAL
*                                INFORMATION MAY BE DESTROYED.
*                            6 = VALIDATION DENIED, ELEMENT IN USE. 
*                            7 = VALIDATION DENIED, SHARE BYTE NOT SET. 
*                            10 = VALIDATION DENIED, MAINTENANCE STATE. 
*                            11 = VALIDATION DENIED, MA NOT SET IN MST
*                            12 = VALIDATION DENIED, LOCAL DEVICE 
*                                 CODE BAD. 
*                            13 = VALIDATION DENIED, REMOTE DEVICE
*                                 CODE BAD. 
*                            14 = VALIDATION DENIED, SHARE BYTE SET.
*                            15 = VALIDATION DENIED, CANNOT ACCESS
*                                 NETWORK.
*                            16 = VALIDATION DENIED, NAD CONNECTED
*                                 TO HOST.
*                            17 = VALIDATION DENIED, NO TCU 
*                                 ENABLES SET.
*                            33 = VALIDATION DENIED, DEVICE STATUS
*                                 ERROR.
*                            34 = SITUATION INDETERMINATE, NO 
*                                 RESPONSE. 
*                            37 = VALIDATION DENIED, CM IN USE. 
*                            40 = VALIDATION DENIED, CM NOT DOWNED. 
*                            41 = VALIDATION GRANTED, VERIFY
*                                 INDEPENDENT SHARED DEVICE DOWN ON ALL 
*                                 MAINFRAMES. 
*                            42 = VALIDATION DENIED, NO BC LOAD ON
*                                 PRE-ASSIGNMENT. 
*                            43 = VALIDATION DENIED, FILE NOT FOUND.
*                            44 = VALIDATION DENIED, USER VALIDATION
*                                 DENIED. 
*                            45 = VALIDATION DENIED, NON-ZERO EXTENDED
*                                 MEMORY FL.
*                            46 = VALIDATION DENIED, LABELLED TAPE WAS
*                                 PRE-ASSIGNED. 
*                            47 = VALIDATION DENIED, ENTRY FOUND IN EST.
*                            50 = VALIDATION DENIED, MNEMONIC/DEVICE
*                                 CODE INCOMPATIBLE.
*                            51 = VALIDATION DENIED, INCORRECT CEVAL
*                                 REQUEST PARAMETER(S). 
*                            52 = VALIDATION DENIED, ADDRESS OUT OF 
*                                 RANGE.
*                            53 = VALIDATION DENIED, INCORRECT CEVAL
*                                 PARAMETER COMBINATION.
*                            54 = VALIDATION DENIED, ENTRY NOT IN EST.
*                            55 = VALIDATION DENIED, CEVAL I/O SEQUENCE 
*                                 ERROR.
*                            56 = (RESERVED - DO NOT USE) 
*                C (0) = COMPLETE BIT (SET BY *CVL*). 
*                VB (59-55) = VALIDATION ERROR BITS (SET BY *CVL*). 
*                             BIT 59 SET = ERROR IN WORD. 
*                             BIT 58 SET = ERROR IN BYTE 1. 
*                             BIT 57 SET = ERROR IN BYTE 2. 
*                             BIT 56 SET = ERROR IN BYTE 3. 
*                             BIT 55 SET = ERROR IN BYTE 4. 
*                X (48) = DATA IN WORD (SUPPLIED BY CALLER - IF NOT 
*                         SET, *CVL* SUPPLIES MISSING FIELD). 
*                ESTO (11-0) = EST ORDINAL OF ELEMENT.
*                S = SHARE BITS - IF SET, REQUESTS EXCLUSIVE ACCESS.
*                            BIT 54 = FOR ELEMENT IN BYTE 1.
*                            BIT 53 = FOR ELEMENT IN BYTE 2.
*                            BIT 52 = FOR ELEMENT IN BYTE 3.
*                            BIT 51 = FOR ELEMENT IN BYTE 4.
*                CHX = CHANNEL NUMBERS (4/0,1/P,1/0,1/C,5/N). 
*                      P = PORT NUMBER FOR CONCURRENT CHANNEL (1 = B).
*                      C = CONCURRENT CHANNEL FLAG. 
*                      N = CHANNEL NUMBER.
*                LDVC (23-12) = LOCAL NAD DEVICE CODE  (RHF ONLY) 
*                EQPN (11-0) = EQUIPMENT (CONTROLLER) NUMBER. 
*                UN (11-0) = UNIT NUMBER. 
*                DEVM (23-12) = DEVICE MNEMONIC.
*                DEVC (11-0) = DEVICE CODE (SEE TABLE *TDVC*).
*                FC (11-0) = FUNCTION BITS. 
*                           BIT 0 = LOAD CONTROLLER MEMORY. 
*                           BIT 1 = WILL WRITE ON UNIT. 
*                           BIT 2 = WILL USE NON - PREALLOCATED AREA. 
*                           BIT 3 = RESERVED. 
*                           BIT 4 = UNUSED (POSSIBLE PHASE II CEVAL)
*                           BIT 5 = UNUSED (POSSIBLE PHASE II CEVAL)
*                           BIT 6 = ELEMENT NOT IN EST. 
*                           BIT 7 = SPECIAL REQUEST FLAG
*                              FOR *ECS* THIS BIT IS IGNORED IF *NPRE*
*                              (BIT 2) IS NOT SET.
*                             0 = WILL ACCESS ALL OF NORMAL *ECS* IF
*                                 DOWN BIT IS SET IN EST. 
*                             1 = WILL ACCESS MAINTENANCE MODE HALF OF
*                                 *ECS* IF MAINTENANCE MODE BIT IN THE
*                                 ASSOCIATED MST IS SET.
*                              FOR *RHF*
*                             1 = WILL EITHER LOAD OR DUMP NAD
*                                 CONTROLWARE IF SET IN CONJUNCTION 
*                                 WITH BIT 0 AND REQUESTING VALIDATION
*                                 FOR RHF HARDWARE. 
*                           BIT 8 = DEMA (DB DISK) REQUEST FLAG TO CVL
*                                   FOR CREATION OF  EM*  LOCAL FILE. 
*                             0 = CVL WILL CREATE LOCAL FILE NAMED EM*. 
*                             1 = CVL WILL NOT CREATE LOCAL FILE. 
*                           BITS (11-9) = UNUSED. 
*                PACK SN = PACK SERIAL NUMBER IN BCD CODE.
*                RAE/FLE = EXCHANGE PACKAGE RAE AND FLE (ECS ONLY)
*                RAE/FLE = EXCHANGE PACKAGE RAE/FLE (DEMA/ESM ONLY) 
*                RHAC = ACCESS CODE  (RHF)
*                BFSZ = BUFFER SIZE  (RHF)
*                TCUE = TCU ENABLES  (RHF)
*                RDVC = REMOTE NAD DEVICE CODE  (RHF) 
*                LTCA = LOGICAL TCU ADDRESS  (RHF)
 COMPDVC  SPACE  4,10 
***       *CEVAL* DEVICE CODE DEFINITIONS.
  
  
 QUAL$    EQU    1           DO NOT QUALIFY COMMON DECKS
          LIST   X
*CALL     COMPDVC 
          LIST   *
 VCE      TITLE  RESIDENT ROUTINES. 
***       FUNCTION 1. 
*         VCE - VALIDATE CUSTOMER ENGINEER. 
* 
*         ENTRY 
*T  IR    18/  *CVL*,1/1,5/ CP ,12/ 0,6/ 01,18/  ADDR 
* 
*         CP     CONTROL POINT. 
*         ADDR   ADDRESS OF THE PARAMETER BLOCK (DEFINED PREVIOUSLY). 
  
  
 VCE      SUBR               ENTRY/EXIT 
  
*         VERIFY USER VALIDATIONS.
  
          LDD    CP          GET ON-LINE DIAGNOSTICS VALIDATION 
          ADK    JSCW 
          CRD    CM 
          LDD    CM 
          SHN    0-12 
          LPN    1
          RAM    VCEB 
          RJM    RPB         READ PARAMETER BLOCK 
          MJN    VCE1        IF NOT RHF VALIDATION CALL 
          RJM    PRS
          PJN    VCE3.1      IF NO FURTHER VALIDATION REQUIRED
 VCE1     LDN    ** 
 VCEB     EQU    *-1         (*COLD* VALIDATION PRIVILEGES) 
          ZJN    VCE2        IF NOT VALIDATED 
  
*         VERIFY EQUIPMENT SELECTION. 
  
          RJM    SMP         SET MATCH PARAMETERS 
          PJN    VCE3        IF PARAMETERS OK 
          LDD    VH 
          RJM    SVB         SET VALIDATION BYTE
          LDN    VRNM&VRUV   SET NO MATCH RESPONSE
 VCE2     LMN    VRUV        USER VALIDATION DENIED 
          UJN    VCE3.1      RETURN RESPONSE CODE 
  
 VCE3     ZJN    VCE4        IF A MATCH WAS FOUND 
          LDD    TI          CHECK DEVICE CODE
          SBN    LRMS        LAST RMS POINTER 
          MJP    VCE15       IF MASS STORAGE
          SBK    LMUX-LRMS   CHECK FOR ECS
          MJN    VCE5        IF NOT ECS 
          SBK    LECS-LMUX
          PJN    VCE5        IF NOT ECS 
          RJM    TEM         TEST FOR EXTENDED MEMORY PRESENT 
 VCE3.1   LJM    VCE16       RETURN RESPONSE CODE 
  
 VCE4     LDD    ES 
          SHN    21-13
          MJN    VCE9        IF MASS STORAGE DEVICE 
  
*         VERIFY NON-MASS STORAGE DEVICES.
  
 VCEA     RJM    UUS         PROCESS UNIT RECORD UNIT SHARE BYTE
*         UJN    VCE5        (TAPE PREASSIGNMENT) 
  
          NJN    VCE8        IF UNIT VALIDATION DENIED
 VCE5     RJM    UES         PROCESS UNIT RECORD EQUIPMENT SHARE BYTE 
          NJN    VCE8        IF EQUIPMENT VALIDATION DENIED 
          RJM    UCS         PROCESS UNIT RECORD CHANNEL SHARE BYTE 
          NJN    VCE8        IF CHANNEL VALIDATION DENIED 
          LDM    DEVM        CHECK FOR MAGNETIC TAPE EQUIPMENT
          RJM    CMT
          ZJN    VCE7        IF MAGNETIC TAPE 
          RJM    RHP         CHECK FOR RHF DEVICE 
          PJN    VCE10       IF RHF DEVICE
          LDN    VRGR&VRSH   SET VALIDATION GRANTED RESPONSE
 VCE7     LMN    VRSH        SET EQUIPMENT SHARED RESPONSE
 VCE8     UJN    VCE10       RETURN RESPONSE CODE 
  
*         VERIFY MASS STORAGE EQUIPMENT.
  
 VCE9     LDD    TI          INDEX INTO DEVICE CODE TABLE (TDVC)
          SBK    LMUX 
          MJN    VCE14       IF NOT EXTENDED MEMORY 
          SBK    LECS-LMUX
          PJN    VCE14       IF NOT EXTENDED MEMORY 
          EXECUTE 3CV 
          RJM    /3CV/ECS 
 VCE10    UJN    VCE16       PROCESS APPROPRIATE VALIDATION CODE
  
 VCE14    RJM    AUS         PROCESS ALLOCATABLE UNIT SHARE BYTE
          NJN    VCE16       IF UNIT VALIDATION DENIED
 VCE15    RJM    AES         PROCESS ALLOCATABLE EQUIPMENT SHARE BYTE 
          NJN    VCE16       IF EQUIPMENT VALIDATION DENIED 
          RJM    ACS         PROCESS ALLOCATABLE CHANNEL SHARE BYTE 
          NJN    VCE16       IF CHANNEL VALIDATION DENIED 
          EXECUTE 3CV 
          RJM    /3CV/PSN    PROCESS PACK SERIAL NUMBER 
          STD    SB          SET RESPONSE CODE
          RJM    /3CV/ESM    CHECK IF DB EQUIP AND FOR LFN=EM* CREATION 
          UJN    VCE17       CONTINUE VALIDATION PROCESSING 
  
*         COMPLETE REQUEST (NORMAL AND ERROR EXIT). 
  
 VCE16    STD    SB 
 VCE17    RJM    CAE         CLEAR PREVIOUSLY ASSIGNED EQUIPMENT
          LDD    SB          SET UP RESPONSE CODE 
          SHN    6
          ADN    1           ADD COMPLETE BIT 
          STM    RSCD 
          RJM    CKA         GET PARAMETER BLOCK ADDRESS
          CWM    TPMB,BS     RETURN PARAMETER BLOCK TO USER 
          LJM    VCEX        EXIT 
 ACS      SPACE  4,15 
**        ACS - PROCESS ALLOCATABLE EQUIPMENT CHANNEL SHARE BITS. 
* 
*         ENTRY  (ACSA) = NUMBER OF EST ENTRIES CONTAINING CHANNEL. 
* 
*         EXIT   (A) = 0, IF VALIDATION GRANTED.
*                (A) = RESPONSE CODE, IF VALIDATION DENIED (CHANNEL 
*                VALIDATION BYTE SET).
* 
*         USES   CI, DA.
* 
*         CALLS  ACH, FNE, GCI, SCH, SCV. 
  
  
 ACS8     LDM    CHS2,CI
 ACS9     STM    CHS1        SET CHANNEL TO BE USED 
          RJM    GCI
          LDD    T1 
          ZJN    ACSX        IF CHANNEL UNASSIGNED
          LDM    CHAN 
          SHN    21-VBCD
          MJN    ACS10       IF CHANNEL SUPPLIED BY CALLER
          SOD    CI 
          MJN    ACS10       IF ALL CHANNELS DOWN 
          LDM    CHS2,CI
          NJN    ACS9        IF ANOTHER CHANNEL TO CHECK
 ACS10    RJM    SCV         INDICATE CHANNEL(S) CANNOT BE SHARED 
  
 ACS      SUBR               ENTRY/EXIT 
          LDD    TI          MAP ACCESS LEVEL 10 TO LEVEL 20 FOR RMS
          SBN    LRMS 
          PJN    ACS0        IF NOT RMS EQUIPMENT 
          LDM    EQPV 
          SHN    -VBS4
          ZJN    ACS0        IF EQUIPMENT TO BE SHARED
          RJM    CDD         CHECK FOR ISMD DEVICE
          NJN    ACS0.1      IF NOT ISMD TYPE RMS DEVICE
 ACS0     LDN    1           INITIALIZE CHANNEL INDEX 
          STD    CI 
          LDM    CHAN 
          SHN    -VBS4
          ZJP    ACS8        IF CHANNEL IS TO BE SHARED 
 ACS0.1   LDM    CHS2,CI
 ACS1     STM    CHS1 
          RJM    GCI
          SCN    40          IGNORE THE CHANNEL DOWN BIT
          ADD    T1 
          ZJN    ACS2        IF CHANNEL UNASSIGNED
 ACS1.1   SOD    CI 
          MJN    ACS1.2      IF ALL CHANNELS HAVE BEEN CHECKED
          LDM    CHS2,CI
          NJN    ACS1        IF ANOTHER CHANNEL TO TEST 
 ACS1.2   LJM    ACS10       INDICATE ALL CHANNELS ARE UP 
  
 ACS2     LDN    NOPE-1 
          STD    DA 
 ACS3     RJM    FNE         FIND NEXT NON-EMPTY EST
          ZJN    ACS4        IF CHANNEL NOT IN EST
          RJM    SCH
          NJN    ACS3        IF NO CHANNEL MATCH
          LDD    CS 
          ZJN    ACS1.1      IF CHANNEL NOT DOWN
 ACS4     RJM    ACH
          ZJN    ACS1.1      IF CHANNEL NOT ASSIGNED TO DIAGNOSTIC
          LDN    0
          LJM    ACSX        EXIT 
 ACH      SPACE  4,15 
**        ACH - ASSIGN CHANNEL TO DIAGNOSTICS.
* 
*         *ACH* WILL REQUEST AN UNCONFIGURED CHANNEL TO BE DOWNED 
*         BEFORE ASSIGNMENT IF IT IS NOT ALREADY DOWN.
* 
*         ENTRY  (CHS1) = CHANNEL TO BE REQUESTED.
*                (CS) = CHANNEL BYTE FROM CHANNEL TABLE.
* 
*         EXIT   (A) .NE. 0 IF CHANNEL ASSIGNED.
*                (A) = 0 IF CHANNEL NOT ASSIGNED. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  CEC. 
* 
*         MACROS MONITOR. 
  
  
 ACH      SUBR               ENTRY/EXIT 
          LDD    CS 
          NJN    ACH1        IF CHANNEL ALREADY DOWN
          STD    CM+1 
          STD    CM+4        CLEAR MUX FLAG 
          LDN    DNCS        DOWN UNCONFIGURED CHANNEL
          STD    CM+2 
          LDM    CHS1        SET REQUESTED CHANNEL
          LPN    77 
          STD    CM+3 
          MONITOR  SEQM 
 ACH1     LDM    CHS1 
          LPN    77 
          STD    CM+3 
          LDN    ICNS        SET CHANNEL ASSIGNMENT SUBFUNCTION 
          STD    CM+2 
          LDD    IR+1        SET CONTROL POINT NUMBER 
          LPN    37 
          STD    CM+1 
          MONITOR  SEQM 
          LDD    CM+1 
          ZJN    ACHX        IF CHANNEL NOT ASSIGNED
          RJM    CEC         INCREMENT EQUIPMENT COUNTER
          UJN    ACHX        EXIT 
 AES      SPACE  4,15 
**        AES - PROCESS ALLOCATABLE EQUIPMENT SHARE BYTE. 
* 
*         EXIT   (A) = 0, IF VALIDATION GRANTED.
*                (A) = RESPONSE CODE, IF VALIDATION DENIED ( EQUIPMENT
*                VALIDATION BYTE SET).
*                (ACSA) = NUMBER OF EST ENTRIES CONTAINING CHANNEL. 
* 
*         USES   CI, DA, T1.
* 
*         CALLS  CDD, FCM.
  
  
 AES3     LDM    FNCH 
          SHN    21-LMEM
          PJN    AES4        IF NOT CHANGING CONTROLLER MEMORY
          LDM    CHAN 
          SHN    -VBS4
          ZJN    AES6        IF CHANNEL SHARE BIT NOT SET EITHER
 AES4     LDD    AE+4 
          ZJN    AESX        IF CONTROL MODULE UNASSIGNED 
 AES5     LDN    VRCS&VRNB   CONTROL MODULE IN USE
 AES6     LMN    VRNB        SET RESPONSE 
          STD    T1 
          LDC    VWDM+VB4M
          RAM    EQPV 
          LDD    T1 
  
 AES      SUBR               ENTRY/EXIT 
          RJM    CDD         CHECK FOR ISMD DEVICE
          ZJN    AES1        IF ISMD TYPE RMS DEVICE
          LDN    0
          UJN    AESX        CONTROLLER NOT IN EST
  
 AES1     RJM    FCM         FIND CONTROL MODULE
          ZJN    AESX        IF CONTROL MODULE NOT IN EST 
          STM    AESA 
          LDM    EQPV 
          SHN    21-VBS4
          PJP    AES3        IF CONTROL MODULE WILL BE SHARED 
  
*         IF THE CONTROL MODULE IS DOWNED, THEN ALL DRIVES ON THAT
*         CONTROL MODULE ARE GUARANTEED TO BE DOWNED AND GLOBALLY 
*         UNLOADED. 
  
          LDD    CM 
          LPN    3
          LMN    3
          ZJN    AES2        IF CONTROL MODULE IS DOWNED
          LDN    VRCD&VRNB   CONTROL MODULE NOT DOWNED
          LJM    AES6        ISSUE MESSAGE
  
 AES2     LDM    EJTO 
          LMD    AE+4 
          ZJN    AESX        IF ALREADY ASSIGNED TO THIS DIAGNOSTIC 
          LDK    RDES        REQUEST DOWNED EQUIPMENT 
          STD    CM+2 
          LDM    AESA 
          STD    CM+1 
          MONITOR REQM
          LDD    CM+1 
          ZJP    AES5        IF ASSIGNED TO ANOTHER DIAGNOSTIC
          LDN    0
          LJM    AESX        EXIT WITH CONTROL MODULE ASSIGNED
  
 AESA     CON    0           CONTROL MODULE EST ORDINAL 
 AUS      SPACE  4,15 
**        AUS - PROCESS ALLOCATABLE UNIT SHARE BIT. 
* 
*         ENTRY  (ESTO) = EST ORDINAL OF UNIT.
*                (ES - ES+4) = FIRST WORD OF EST ENTRY FOR UNIT.
* 
*         EXIT   (A) = 0, IF VALIDATION GRANTED.
*                (SB) = VRDW, IF VALIDATION GRANTED (OPERATOR SHOULD
*                       ENSURE DEVICE IS NOT BEING USED BY OTHER
*                       MAINFRAMES).
*                (A) = RESPONSE CODE, IF VALIDATION DENIED (UNIT
*                VALIDATION BYTE SET).
* 
*         USES   T1, AE - AE+4, CM - CM+4.
* 
*         MACROS MONITOR, SFA.
  
  
 AUS4     LDM    FNCH        GET FUNCTION ATTRIBUTES
          LPN    WRTM+PREM
          LMN    WRTM+PREM
          ZJN    AUS6        IF WRITING OUT OF PRE-ALLOCATED AREA 
          LDD    AE+4 
          ZJN    AUSX        IF UNIT UNASSIGNED 
 AUS5     LDN    VRUS&VRCI   EQUIPMENT IN USE 
 AUS6     LMN    VRCI        SET RESPONSE 
          STD    T1 
          LDC    VWDM+VB4M
          RAM    UNIT        SET UNIT VALIDATION BYTE 
          LDD    T1          RESTORE RESPONSE 
  
 AUS      SUBR               ENTRY/EXIT 
          SFA    EST,ESTO    READ EQUIPMENT ASSIGNMENT
          ADK    EQAE 
          CRD    AE 
          LDM    UNIT 
          SHN    21-VBS4     ISOLATE SHARE BIT
          PJN    AUS4        IF UNIT WILL BE SHARED 
          LDD    ES 
          SHN    21-1 
 AUS1     PJN    AUS5        IF UNIT NOT OFF
          SHN    21-0-21+1
          PJN    AUS5        IF UNIT NOT DOWN 
          LDM    EJTO        EJT ORDINAL
          LMD    AE+4 
 AUS2     ZJN    AUSX        IF ASSIGNED TO THIS JOB PREVIOUSLY 
          LDK    RDES        REQUEST DOWNED EQUIPMENT 
          STD    CM+2 
          LDM    ESTO        EST ORDINAL
          STD    CM+1 
          MONITOR  REQM 
          LDD    CM+1 
          ZJN    AUS1        IF ASSIGNED TO ANOTHER DIAGNOSTIC
          LDD    ES 
          SHN    21-11
          PJN    AUS3        IF NOT A SHARED DEVICE 
          LDN    VRDW        DEVICE IS LOCALLY DOWN 
          STD    SB 
 AUS3     LDN    0           VALIDATION GRANTED 
          UJN    AUS2        RETURN 
 CAE      SPACE  4,15 
**        CAE - CLEAR ASSIGNED EQUIPMENT. 
* 
*         ENTRY  (SB) = VALIDATION RESPONSE CODE. 
* 
*         EXIT   IF CALLER IS RETURNING EQUIPMENT OR IF VALIDATION
*                HAS BEEN DENIED, THEN ALL EQUIPMENT PREVIOUSLY 
*                ASSIGNED TO DIAGNOSTIC HAS BEEN RELEASED AND THE 
*                EQUIPMENT ASSIGNED COUNTER HAS BEEN DECREMENTED
*                APPROPRIATELY. 
* 
*         USES   CI, AE - AE+4, CM - CM+4, ES - ES+4. 
* 
*         CALLS  CEC, CMT, GCI, MCH, SFN. 
* 
*         MACROS MONITOR, SFA.
  
  
 CAE      SUBR               ENTRY/EXIT 
          LDM    FNCH 
          SHN    21-RTNU
          MJN    CAE1        IF CALLER RETURNING EQUIPMENT
          LDD    SB 
          ZJN    CAEX        IF VALIDATION GRANTED
          LMN    VRSH 
          ZJN    CAEX        IF VALIDATION GRANTED
          LMN    VRDW&VRSH
          ZJN    CAEX        IF VALIDATION GRANTED
 CAE1     LDD    CP          READ EQUIPMENT ASSIGNED COUNTER
          ADN    EACW 
          CRD    CM 
          LDD    CM 
 CAE1.1   ZJN    CAEX        IF NO EQUIPMENT ASSIGNED 
          LDM    ESTO        CHECK EST ORDINAL
          SBD    LO 
          PJN    CAE2        IF NOT IN EST
          ADD    LO          READ EST ENTRY 
          SFA    EST
          ADK    EQDE 
          CRD    ES 
          ADK    EQAE-EQDE   READ EQUIPMENT ASSIGNMENT
          CRD    AE 
          LDD    AE+4 
          LMM    EJTO 
          NJN    CAE2        IF NOT ASSIGNED TO THIS JOB
          LDD    ES+3        CHECK FOR MAGNETIC TAPE EQUIPMENT
          RJM    CMT
          NJN    CAE1.3      IF NOT TAPE
*         LDN    0           FNT/FST UPDATE NOT REQUIRED
          RJM    SFN         SEARCH FNT FOR FILE
          ZJN    CAE1.1      IF TAPE WAS PREASSIGNED
 CAE1.3   LDM    ESTO        RETURN EQUIPMENT 
          STD    CM+1 
          MONITOR  DEQM 
 CAE2     RJM    CDD         CHECK FOR ISMD DEVICE
          NJN    CAE2.1      IF NOT ISMD TYPE RMS DEVICE
          RJM    FCM
          ZJN    CAE2.1      IF CONTROL MODULE NOT IN EST 
          STM    CM+1 
          LDM    AE+4 
          ZJN    CAE2.1      IF UNASSIGNED
          LMM    EJTO 
          NJN    CAE2.1      IF ASSIGNED TO ANOTHER DIAGNOSTIC
          MONITOR  DEQM 
 CAE2.1   LDM    CHAN 
          SHN    21-VBCD
          PJN    CAE3        IF CHANNEL NOT SUPPLIED BY CALLER
          LDN    0           INITIALIZE LAST CHANNEL INDEX
          STD    CI 
          LDM    CHS1 
          UJN    CAE4        CHECK FOR CHANNEL ASSIGNMENT 
  
 CAE3     RJM    MCH         GET CHANNELS 
          LDM    CHS2,CI
 CAE4     RJM    GCI
          LDM    EJTO 
          LMD    T1 
          NJN    CAE6        IF NOT ASSIGNED TO THIS JOB
          LDD    IR+1        CP NUMBER
          LPN    37 
          STD    CM+1 
          LDN    CCNS        RELEASE CHANNEL ASSIGNMENT SUBFUNCTION 
          STD    CM+2 
          LDM    CHS1        CHANNEL NUMBER 
          LPN    77 
          STD    CM+3 
          MONITOR  SEQM 
*         LDN    0
 CAEA     UJN    CAE4.1      DECREMENT EQUIPMENT ASSIGNED COUNTER 
*         STD    CM+4        (LOADING NAD CONTROLWARE ONLY) 
  
          LDM    CHS1        CHANNEL NUMBER 
          STD    CM+3 
          LDN    UPCS        UP CHANNEL SUBFUNCTION 
          STD    CM+2 
          LDM    ESTO        EST ORDINAL
          STD    CM+1 
          MONITOR  SEQM 
*         LDN    0
 CAE4.1   RJM    CEC         DECREMENT EQUIPMENT ASSIGNED COUNTER 
 CAE5     LJM    CAEX        EXIT 
  
 CAE6     SOD    CI 
          MJN    CAE5        IF ALL CHANNELS CHECKED
          LDM    CHS2,CI
          ZJN    CAE5        IF ALL CHANNELS CHECKED
          STM    CHS1 
          LJM    CAE4        TEST ANOTHER CHANNEL 
 CDD      SPACE  4,10 
**        CDD - CHECK FOR ISMD DEVICE.
* 
*         ENTRY  (TI) = INDEX INTO *COMPDVT* TABLE. 
* 
*         EXIT   (A) = 0, IF ISMD TYPE DEVICE.
  
  
 CDD1     LCN    0           SET NOT AN ISMD DEVICE 
  
 CDD      SUBR               ENTRY/EXIT 
          LDD    TI 
          SBN    FISM 
          MJN    CDDX        IF NOT ISMD DEVICE 
          SBN    LISM-FISM
          PJN    CDD1        IF NOT ISMD DEVICE 
          LDN    0
          UJN    CDDX        RETURN 
 CEC      SPACE  4,10 
**        CEC - CHANGE VALUE IN EQUIPMENT ASSIGNED COUNTER. 
* 
*         ENTRY  (A) = 0 IF COUNTER IS TO BE DECREMENTED. 
*                (A) .NE. 0 IF COUNTER IS TO BE INCREMENTED.
* 
*         EXIT   COUNTER INCREMENTED/DECREMENTED APPROPRIATELY. 
* 
*         USES   T2, T3, CM - CM+4. 
  
  
 CEC      SUBR               ENTRY/EXIT 
          STD    T3 
          LDD    CP          READ EQUIPMENT ASSIGNED COUNTER
          ADN    EACW 
          STD    T2 
          CRD    CM 
          LDD    T3 
          ZJN    CEC1        IF DECREMENTING COUNTER
          AOD    CM 
          UJN    CEC2        UPDATE COUNTER IN CP AREA
  
 CEC1     SOD    CM 
 CEC2     LDD    T2 
          CWD    CM 
          UJN    CECX        EXIT 
 CKA      SPACE  4,10 
**        CKA - CHECK ADDRESS.
* 
*         ENTRY  (IR+3 - IR+4) = RELATIVE ADDRESS.
*                (BS) = PARAMETER BLOCK WORD COUNT. 
* 
*         EXIT   (A) = ABSOLUTE ADDRESS.
* 
*         CALLS  PCE. 
  
  
 CKA2     LDD    IR+3        LOAD ABSOLUTE ADDRESS
          LPN    77 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IR+4 
  
 CKA      SUBR               ENTRY/EXIT 
          LDD    IR+3        RELATIVE ADDRESS 
          LPN    77 
          SHN    14 
          LMD    IR+4 
          SBN    2
          MJN    CKA1        IF OUT OF RANGE
          ADN    2
          ADD    BS          ADD BLOCK WORD COUNT 
          SHN    -6 
          SBD    FL 
          MJN    CKA2        IF IN RANGE
 CKA1     LDC    MSGC        * ADDRESS OUT OF RANGE.* 
          LJM    PCE1        * CVL CALL ERROR.* 
 CMT      SPACE  4,10 
**        CMT - CHECK FOR MAGNETIC TAPE EQUIPMENT.
* 
*         ENTRY  (A) = DEVICE MNEMONIC. 
* 
*         EXIT   (A) = 0, IF MAGNETIC TAPE UNIT.
  
  
 CMT      SUBR               ENTRY/EXIT 
          LMC    2RMT 
          ZJN    CMTX        IF *MT*
          LMC    2RNT&2RMT
          ZJN    CMTX        IF *NT*
          LMC    2RCT&2RNT
          ZJN    CMTX        IF *CT*
          LMC    2RAT&2RCT
          UJN    CMTX        (A) = 0 IF *AT*
 FCH      SPACE  4,15 
**        FCH - FETCH CHANNEL(S) FROM NEXT NON-RMS EST ENTRY. 
* 
*         ENTRY  (DA) = EST ORDINAL - 1 OF NEXT EST ENTRY TO CHECK. 
*                (LO) = LAST EST ENTRY IN TABLE + 1.
* 
*         EXIT   (A) = NONZERO, IF A NON-RMS ENTRY FOUND. 
*                    = 0, IF NO MORE NON-RMS ENTRIES IN TABLE.
*                (DA) = EST ORDINAL OF FOUND ENTRY. 
*                (AE - AE+4) = *EQAE* WORD OF EST ENTRY.
*                (CM - CM+4) = *EQDE* WORD OF EST ENTRY.
* 
*         CALLS  FNE. 
  
  
 FCH      SUBR               ENTRY/EXIT 
 FCH1     RJM    FNE         FIND NEXT EST ENTRY ON CHANNEL 
          ZJN    FCHX        IF NO MORE EST ENTRIES IN TABLE
          LDD    CM 
          SHN    21-13
          MJN    FCH1        IF RMS ENTRY 
          LDN    1
          UJN    FCHX        EXIT 
 FCM      SPACE  4,20 
**        FCM - FIND CONTROL MODULE.
* 
*         *FCM* SEARCHES THE EST FOR A CONTROL MODULE EST ENTRY WHOSE 
*         EQUIPMENT (CONTROL MODULE) NUMBER MATCHES THE UPPER OCTAL 
*         DIGIT OF *UNUM*. (THE PHYSICAL UNIT NUMBER *UNUM* CONSISTS OF 
*         CONTROL MODULE NUMBER * 10B + DRIVE NUMBER.)
* 
*         ENTRY  (LO) = LAST EST ORDINAL + 1. 
* 
*         EXIT   (A) = CONTROL MODULE EST ORDINAL, IF FOUND.
*                    = 0, IF CONTROL MODULE NOT IN EST. 
*                (AE - AE+4) = *EQAE* WORD OF EST ENTRY.
*                (CM - CM+4) = *EQDE* WORD OF EST ENTRY.
* 
*         USES   DA, AE - AE+4, CM - CM+4.
* 
*         MACROS SFA. 
  
  
 FCM      SUBR               ENTRY/EXIT 
          LDN    NOPE-1 
          STD    DA 
 FCM1     AOD    DA          CHECK NEXT EST ENTRY 
          LMD    LO 
          ZJN    FCMX        IF CONTROL MODULE NOT IN EST 
          SFA    EST,DA      GET EST ENTRY
          ADK    EQDE 
          CRD    CM 
          ADK    EQAE-EQDE   GET EQUIPMENT ASSIGNMENT 
          CRD    AE 
          LDD    CM+3        CHECK FOR A CONTROL MODULE 
          LMC    2RCM 
          NJN    FCM1        IF NOT A CONTROL MODULE
          LDD    CM+4        CHECK IF THE RIGHT EQUIPMENT (CONTROLLER)
          SHN    -6 
          LMM    UNUM 
          SCN    7
          NJN    FCM1        IF NOT THE RIGHT EQUIPMENT NUMBER
          LDD    DA 
          LJM    FCMX        EXIT 
 FNE      SPACE  4,10 
**        FNE - FIND NEXT EST ENTRY.
* 
*         *FNE* FINDS THE NEXT NON-EMPTY EST ENTRY AND EXTRACTS 
*         ITS CHANNEL NUMBERS.
* 
*         ENTRY  (DA) = EST ORDINAL - 1 OF NEXT EST ENTRY TO CHECK. 
*                (LO) = LAST EST ENTRY IN TABLE + 1.
* 
*         EXIT   (A) = NONZERO, IF AN EST ENTRY FOUND.
*                      0, IF NO MORE ENTRIES IN TABLE.
*                (DA) = EST ORDINAL OF FOUND ENTRY. 
*                (AE - AE+4) = *EQAE* WORD OF EST ENTRY.
*                (CM - CM+4) = *EQDE* WORD OF EST ENTRY.
* 
*         USES   CE, DA, AE - AE+4, CM - CM+4.
* 
*         CALLS  GCH. 
* 
*         MACROS SFA. 
  
  
 FNE      SUBR               ENTRY/EXIT 
 FNE1     AOD    DA 
          LMD    LO 
          ZJN    FNEX        IF NO MORE EST ENTRIES TO CHECK
          SFA    EST,DA      GET NEXT EST ENTRY 
          ADK    EQDE 
          CRD    CM 
          ADK    EQAE-EQDE
          CRD    AE 
          LDD    CM+3 
          ZJN    FNE1        IF ENTRY EMPTY 
          LDN    CM+1        GET CHANNELS FROM EST
          STD    CE 
          RJM    GCH
          LDD    DA 
          UJN    FNEX        EXIT WITH MATCH
 GCH      SPACE  4,10 
**        GCH - GET CHANNELS FROM EST ENTRY.
* 
*         ENTRY  (CE) = POINTER TO CHANNEL BYTE IN EST ENTRY (BYTE 1).
*                (AE - AE+4) = *EQAE* WORD OF EST ENTRY.
* 
*         EXIT   (CA - CC) = CHANNEL NUMBERS. 
* 
*         USES   CA, CB, CC.
  
  
 GCH2     LDN    0           CLEAR AUXILIARY CHANNEL
 GCH3     STD    CC 
          LDI    CE          FETCH FIRST TWO CHANNELS 
          STD    CA 
          LDM    1,CE 
          STD    CB 
  
 GCH      SUBR               ENTRY/EXIT 
          LDM    2,CE        CHECK DEVICE TYPE
          LMC    2RDE 
          ZJN    GCH1        IF EXTENDED MEMORY DEVICE
          LMN    2RDP&2RDE
          NJN    GCH2        IF NOT EXTENDED MEMORY 
 GCH1     LDD    AE+2 
          LPN    37          GET SIDE DOOR PORT CHANNEL NUMBER
          ZJN    GCH3        IF NO CHANNEL
          LMC    4000 
          UJN    GCH3        SET CHANNEL NUMBER 
 GCI      SPACE  4,10 
**        GCI - GET CHANNEL FROM CHANNEL STATUS TABLE.
* 
*         ENTRY  (A) = CHANNEL NUMBER.
* 
*         EXIT   (A) = CHANNEL BYTE FROM TABLE. 
*                (CS) = CHANNEL BYTE FROM TABLE.
*                (T1) = CORRESPONDING CHANNEL ASSIGNMENT TABLE ENTRY. 
*                TO *PCE0* IF CHANNEL DOES NOT EXIST. 
* 
*         USES   CM - CM+4, T0 - T7.
  
  
 GCI      SUBR               ENTRY/EXIT 
          LPN    77          IGNORE CIO CHANNEL PORT NUMBER 
          STD    T2          SAVE CHANNEL NUMBER
 GCIA     SBN    **          (MAXIMUM NIO CHANNEL NUMBER) 
          MJN    GCI2        IF NON-CONCURRENT CHANNEL
 GCIB     SBN    40-**       (40-MAXIMUM NIO CHANNEL NUMBER)
          MJN    GCI1        IF UNDEFINED CHANNEL 
 GCIC     SBN    **          (NUMBER OF CIO PPS/CHANNELS) 
          MJN    GCI2        IF CONCURRENT CHANNEL
 GCI1     LDC    MSGD        *REQUESTED CHANNEL DOES NOT EXIST* 
          LJM    PCE0        PROCESS CALL ERROR 
  
 GCI2     LCN    0           INITIALIZE CHANNEL STATUS TABLE INDEX
          STD    T0 
 GCI3     AOD    T0 
          LCN    5
          RAD    T2 
          PJN    GCI3        IF NOT CORRECT INDEX 
          LDC    CHTP        READ FWA OF CHANNEL STATUS TABLE 
          CRD    CM 
          LDD    CM+2        BUILD FWA OF TABLE 
          SHN    14 
          LMD    CM+3 
          ADD    T0          ADD CORRECT CHANNEL TABLE WORD INDEX 
          CRD    CM 
          ADN    CTALL       READ CHANNEL ASSIGNMENT TABLE
          CRD    T3 
          LDM    T3+5,T2
          STD    T1 
          LDM    CM+5,T2
          STD    CS 
          UJP    GCIX        EXIT 
 MCH      SPACE  4,15 
**        MCH - MATCH CHANNELS. 
* 
*         ENTRY  (AE - AE+4) = *EQAE* WORD OF EST ENTRY.
*                (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
* 
*         EXIT   (A) = 0, IF A MATCH. 
*                (A) NON-ZERO, IF NO MATCH (VH PROPERLY SET). 
* 
*         USES   CE, CI, VH, VT.
* 
*         CALLS  GCH, SCH.
  
  
 MCH7     LDD    CA          STORE CHANNEL
 MCH8     LPC    277
          STM    CHS2,CI
          SOD    CI 
          MJN    MCH9        IF LAST CHANNEL TRANSFERRED
          LDD    CB 
          NJN    MCH8        IF ANOTHER CHANNEL 
 MCH9     LDN    1           RESET CHANNEL INDEX
          STD    CI 
          LDN    0           SET RESPONSE 
  
 MCH      SUBR               ENTRY/EXIT 
          LDN    ES+1        SET CHANNEL BYTE POINTER 
          STD    CE 
          RJM    GCH         GET CHANNELS FROM EST
          LDN    1           INITIALIZE CHANNEL INDEX 
          STD    CI 
          LDM    CHAN        GET PARAMETER BLOCK CHANNEL WORD 
          SHN    21-VBCD
          PJN    MCH7        IF NO CHANNELS FROM CALLER 
          LDC    C1VB        INITIALIZE VALIDATION CODE WORD
          STD    VT 
 MCH1     LDD    VT 
          SBD    VH 
          MJN    MCH2        IF NOT HIGHER VALIDATION 
          RAD    VH          UPDATE CODE WORD 
 MCH2     RJM    SCH         SCAN CHANNELS
          NJN    MCHX        IF NO CHANNEL MATCHES
          SOD    CI 
          MJN    MCH9        IF BOTH CHANNELS MATCH 
          AOD    VT 
          LDM    CHS2,CI
          NJN    MCH1        IF ANOTHER CHANNEL 
          UJN    MCH9        RESET CHANNEL INDEX
          SPACE  4,15 
**        RHP - RHF PROCESSOR.
* 
*         THIS ROUTINE DETERMINES THE USER-REQUESTED LEVEL OF ACCESS
*         TO THE RHF SUBSYSTEM.  THIS IS DONE BY CHECKING AND 
*         VALIDATING THE PARAMETERS IN THE USER-PASSED PARAMETER
*         BLOCK.  IF NO ERRORS ARE FOUND, THE APPROPRIATE ROUTINE IS
*         CALLED TO EITHER GRANT OR DENY THE USER THAT LEVEL OF ACCESS
*         TO THE RHF SUBSYSTEM. 
* 
*         EXIT   (A) = RESPONSE CODE RETURNED TO THE CALLER.
*                      -1, IF DEVICE IS NOT A NAD.
* 
*         USES   ES - ES+4, T1 - T6.
* 
*         CALLS  DVT, VLC, VLD, VLR, VRD, *5CV*.
* 
*         MACROS EXECUTE, SFA.
  
  
 RHP6     LCN    1           NOT A NAD DEVICE 
  
 RHP      SUBR               ENTRY/EXIT 
          LDM    DEVC 
          SBK    FNAD 
          MJN    RHP6        IF NOT RHF VALIDATION CALL 
          SBN    LNAD-FNAD
          PJN    RHP6        IF NOT RHF VALIDATION CALL 
          RJM    DVT         DETERMINE VALIDATION TYPE REQUESTED
          NJN    RHPX        IF ERROR DETECTED
          LDM    TRHP,T1     PROCESS RHF ACCESS REQUEST 
          STD    T1 
          RJM    0,T1 
          PJN    RHPX        IF RETURNING RESPONSE TO CALLER
  
*         SET *5CV* PARAMETERS IN T1 - T6 FOR RHF CALL. 
* 
*         (T1) = NAD EST ORDINAL (0 IF NOT IN EST). 
*         (T2) = NAD CHANNEL NUMBER.
*         (T3) = REMOTE ACCESS CODE (4/0,8/UPPER 8).
*         (T4) = REMOTE ACCESS CODE (4/0,8/LOWER 8).
*         (T5) = TCU ENABLES AND BUFFER SIZE INDEX. 
*         (T6) = LOGICAL TCU ADDRESS. 
  
          EXECUTE  5CV       LOAD *5CV* 
          LDD    EA 
          SBD    LO 
          MJN    RHP0.1      IF ENTRY IN EST
          LDN    0
          STM    ESTO 
 RHP0.1   LDM    ESTO        NAD EST ORDINAL (0 IF NOT IN EST)
          STD    T1 
          LDM    CHS1        NAD CHANNEL NUMBER 
          STD    T2 
          LDM    RAC1        REMOTE ACCESS CODE 
          LPN    17          UPPER 4 BITS 
          SHN    14 
          LMM    RAC2        LOWER 12 BITS
          STD    T4 
          SHN    -10
          STD    T3          UPPER 8
          SHN    10 
          LMD    T4 
          STD    T4          LOWER 8
          LDM    TCUE        TCU ENABLES
          LPN    17 
          SHN    4
          ADN    1           SET BUFFER SIZE INDEX = 1
          STD    T5          4/0,4/TCU ENABLES,4/1
          LDM    LTCA        LOGICAL TCU ADDRESS
          LPC    377
          STD    T6 
          LDM    EQPV 
          SHN    21-VBS3
          PJN    RHP4        IF LOCAL NAD IS SHARED 
          LDD    T1 
          ZJN    RHP4        IF NAD NOT IN EST
          SFA    EST
          ADK    EQDE 
          CRD    ES          READ EST ENTRY 
          LDD    ES 
          SHN    21-1 
          MJN    RHP4        IF LOCAL NAD IS TURNED OFF OR DOWN 
          SHN    0-7-21+1+22
          LPN    7
          LMN    4
          ZJN    RHP4        IF LOCAL NAD NOT IN USE
 RHP1     LDN    VRUS        LOCAL NAD IN USE 
 RHP2     LJM    RHPX        RETURN 
  
 RHP3     LDN    VRDS        DEVICE ERROR 
          UJN    RHP2        RETURN 
  
 RHP4     LDN    1           ISSUE CONNECT FUNCTION 
          RJM    FCV         CALL *5CV* 
          MJN    RHP3        IF DEVICE ERROR
          ZJN    RHP5        IF NO RESPONSE 
          LDN    VRCH&VRSI   NAD CONNECTED TO HOST
 RHP5     LMN    VRSI        SITUATION INDETERMINATE
          UJN    RHP2        RETURN 
  
*         TRHP - TABLE OF ROUTINES FOR PROCESSING THE USER-SPECIFIED
*         LEVEL OF ACCESS TO THE RHF SUBSYSTEM. 
  
 TRHP     BSS    0
          LOC    0
 LNCT     CON    VLC         VALIDATE LOCAL NAD CONCURRENT
 LNDT     CON    VLD         VALIDATE LOCAL NAD DEDICATED 
 RNDT     CON    VDN         VALIDATE REMOTE NAD DEDICATED
 LRDT     CON    VDN         VALIDATE LOCAL AND REMOTE NAD DEDICATED
          LOC    *O 
 SCH      SPACE  4,10 
**        SCH - SCAN CHANNELS FOR A MATCH.
* 
*         ENTRY  (CI) = INDEX TO PARAMETER BLOCK CHANNEL LIST.
*                (CA - CC) = CHANNELS FROM EST ENTRY. 
* 
*         EXIT   (A) = 0, IF A MATCH. 
*                (A) NON-ZERO, IF NO MATCH. 
* 
*         USES   T1.
  
  
 SCH      SUBR               ENTRY/EXIT 
          LDN    2           INITIALIZE CHANNEL COUNT 
          STD    T1 
 SCH1     LDM    CC,T1
          ZJN    SCH2        IF NO MATCH
          LMM    CHS2,CI
          LPC    277
          ZJN    SCHX        IF A MATCH 
 SCH2     SOD    T1 
          PJN    SCH1        IF MORE CHANNELS 
          UJN    SCHX        EXIT WITH ERROR
 SCV      SPACE  4,10 
**        SCV - SET CHANNEL VALIDATION BYTE.
* 
*         ENTRY  (CI) = INDEX TO CHANNEL THAT WAS REFUSED.
* 
*         EXIT   (A) = RESPONSE CODE FOR CHANNEL IN USE.
*                (CHANNEL VALIDATION BYTE SET). 
* 
*         USES   T1.
  
  
 SCV      SUBR               ENTRY/EXIT 
          LDC    TVBN+WVB1   CALCULATE TVBN ADDRESS 
          SBD    CI 
          STD    T1 
          LDI    T1          FETCH PROPER VALIDATION CODE 
          RAM    CHAN        SET CHANNEL VALIDATION BYTE
          LDN    VRUS        SET RESPONSE CODE TO EQUIPMENT IN USE
          UJN    SCVX        EXIT 
 SFN      SPACE  4,20 
**        SFN - SEARCH LOCAL FNT FOR FILE ON SPECIFIED EQUIPMENT. 
* 
*         ENTRY  (A) = 0 IF FNT/FST IS READ-ONLY. 
*                (A) .NE. 0 IF FNT/FST ARE TO BE UPDATED. 
*                (ESTO) = EST ORDINAL.
* 
*         EXIT   (A) = 0 IF FILE FOUND (AND *FILE BUSY* STATUS SET
*                IF UPDATING FNT/FST).
*                (A) = 1 IF FILE INTERLOCK REJECT.
*                (A) = 2 IF FILE NOT FOUND. 
*                (CM - CM+4) = FNT ENTRY, IF FILE FOUND AND IF
*                UPDATING FNT/FST.
*                (FS - FS+4) = FST ENTRY, IF FILE FOUND AND IF
*                UPDATING FNT/FST.
* 
*         USES   FA, T0, CM - CM+4, FS - FS+4.
* 
*         CALLS  SFB. 
* 
*         MACROS NFA. 
  
  
 SFN      SUBR               ENTRY/EXIT 
          STM    SFNA        SAVE FILE UPDATE STATUS
          LDD    CP          SETUP LOCAL FILE SEARCH
          ADN    FLSW 
          CRD    CM 
          LDD    CM 
          SHN    6
          ADN    1
          STD    T0 
          LDC    FNTN        SET FIRST ENTRY OFFSET 
          STD    FA 
 SFN1     LDN    LENF        ADVANCE FNT OFFSET 
          RAD    FA 
          SBD    T0 
          MJN    SFN2        IF MORE ENTRIES TO SEARCH
          LDN    2
          UJN    SFNX        FILE NOT FOUND 
  
 SFN2     NFA    FA,R 
          CRD    FS          READ FNT ENTRY 
          ADN    FSTL        READ FST ENTRY 
          CRD    CM 
          LDD    FS 
          ZJN    SFN1        IF EMPTY ENTRY 
          LDD    CM 
          LMM    ESTO 
          NJN    SFN1        IF ORDINALS DO NOT MATCH 
          LDC    0
 SFNA     EQU    *-1         FNT/FST UPDATE STATUS
          ZJN    SFN3        IF NO UPDATE REQUIRED
          RJM    SFB         SET FILE BUSY
 SFN3     LJM    SFNX        RETURN WITH MATCHING ORDINALS
 SVB      SPACE  4,10 
**        SVB - SET VALIDATION BYTE.
* 
*         ENTRY  (A) = VALIDATION BYTE CODE.
*                BITS 11 - 6 = VALIDATION BYTE OFFSET.
*                BITS  5 - 0 = *TVBN* INDEX.
* 
*         EXIT   VALIDATION BYTE SET. 
* 
*         USES   T1, T2.
  
  
 SVB      SUBR               ENTRY/EXIT 
          SHN    14          POSITION CODE
          ADC    ESTV 
          STD    T1 
          SHN    -14         SHIFT OFF ADDRESS, INDEX TO BITS 5 - 0 
          STD    T2 
          LDM    TVBN,T2     GET VALIDATION BITS
          RAI    T1          STORE IN BYTE
          UJN    SVBX        EXIT 
  
*         TVBN - VALIDATION BIT TABLE.
  
 TVBN     BSS    0
          LOC    0
 WVB4     CON    VB4M+VWDM
 WVB3     CON    VB3M+VWDM
 WVB2     CON    VB2M+VWDM
 WVB1     CON    VB1M+VWDM
 WVBW     CON    VWDM 
          LOC    *O 
  
*         VALIDATION BYTE CODES.
  
 EOVB     VBCD   ESTV,WVB4   EST ORDINAL ERROR
 C2VB     VBCD   CHAN,WVB3   CHANNEL 2 ERROR
 C1VB     VBCD   CHAN,WVB4   CHANNEL 1 ERROR
 LNVB     VBCD   EQPV,WVB3   LOCAL NAD DEVICE CODE ERROR
 EQVB     VBCD   EQPV,WVB4   EQUIPMENT NUMBER ERROR 
 UNVB     VBCD   UNIT,WVB4   UNIT NUMBER ERROR
 MNVB     VBCD   DCMV,WVB3   DEVICE MNEMONIC ERROR
 DCVB     VBCD   DCMV,WVB4   DEVICE CODE ERROR
 SNVB     VBCD   PSNV,WVBW   PACK SERIAL NUMBER ERROR 
 PEVB     VBCD   PSNV,WVB1
 TCVB     VBCD   TCUV,WVB4   TCU ENABLES ERROR
 RDVB     VBCD   LTCV,WVB3   REMOTE NAD DEVICE CODE ERROR 
 RNVB     VBCD   LTCV,WVB4   LOGICAL TCU ADDRESS ERROR
  
          LOC    *O 
 UCS      SPACE  4,15 
**        UCS - PROCESS UNIT RECORD CHANNEL SHARE BITS. 
* 
*         ENTRY  (TI) = INDEX TO DEVICE CODE TABLE. 
* 
*         EXIT   (A) = 0, IF VALIDATION GRANTED.
*                (A) = RESPONSE CODE, IF VALIDATION DENIED. 
*                (SB) = SHARE BITS SET (IF ANY) FOR THE APPROPRIATE 
*                       CHANNEL FIELDS IN THE PARAMETER BLOCK.
*                (CHANNEL VALIDATION BYTE SET). 
* 
*         USES   CI, DA.
* 
*         CALLS  ACH, CMT, FCH, GCI, SCH, SCV.
  
  
 UCS9     LDD    TI          CHECK IF MUX 
          SBK    FMUX 
          MJN    UCS10       IF NOT MUX 
          SBK    LMUX-FMUX
          PJN    UCS10       IF NOT MUX 
          LDC    VWDM        SET CHANNEL VALIDATION BYTE
          RAM    CHAN 
          LDN    VRNB        SET RESPONSE TO NO SHARE BYTE SET
          UJN    UCSX        EXIT 
  
 UCS10    LDM    CHS2,CI
 UCS11    STM    CHS1 
          RJM    GCI
          LPN    40 
          ZJN    UCSX        IF CHANNEL UP
          LDD    T1 
          ZJN    UCSX        IF CHANNEL DOWN AND UNASSIGNED 
          LMM    CM+5,T3
          LPC    3700 
          ZJN    UCSX        IF CHANNEL DOWN AND UNASSIGNED 
          LDM    CHAN 
          SHN    21-VBCD
          MJN    UCS12       IF CHANNEL SUPPLIED BY CALLER
          SOD    CI 
          MJN    UCS12       IF ALL CHANNELS CHECKED
          LDM    CHS2,CI
          NJN    UCS11       IF ANOTHER CHANNEL TO CHECK
 UCS12    RJM    SCV         INDICATE CHANNEL IS DOWN 
  
 UCS      SUBR               ENTRY/EXIT 
          LDN    1           INITIALIZE CHANNEL INDEX 
          STD    CI 
          LDM    CHAN 
          SHN    -VBS4
          NJN    UCS1        IF CHANNEL WILL NOT BE SHARED
          LJM    UCS9        CHECK IF CHANNEL IS UP 
  
 UCS1     LDM    DEVM        CHECK FOR MAGNETIC TAPE EQUIPMENT
          RJM    CMT
          ZJN    UCS1.1      IF TAPE CHANNEL REQUESTED
          LDC    UJNI+UCS6.1-UCSA  DO NOT ASSIGN NON-TAPE CHANNEL 
          STM    UCSA 
          ERRNG  37+UCSA-UCS6.1  ERROR IF OUT OF RANGE
          UJN    UCS3        INITIALIZE EST SEARCH
  
 UCS1.1   LDM    CHS2,CI
 UCS2     STM    CHS1 
          RJM    GCI
          SCN    40          IGNORE THE CHANNEL DOWN BIT
          ADD    T1 
          ZJN    UCS3        IF CHANNEL UNASSIGNED
          LDM    CHAN 
          SHN    21-VBCD
          MJN    UCS2.1      IF CHANNEL SUPPLIED BY CALLER
          SOD    CI 
          MJN    UCS2.1      IF ALL CHANNELS CHECKED
          LDM    CHS2,CI
          NJN    UCS2        IF ANOTHER CHANNEL TO TEST 
 UCS2.1   LJM    UCS12       INDICATE CHANNEL IS NOT DOWN 
  
 UCS3     LDN    NOPE-1      INITIALIZE EST ORDINAL FOR SEARCH
          STD    DA 
          LDN    1
          STD    CI 
 UCS5     RJM    FCH         FETCH CHANNEL(S) FROM NEXT NON-RMS ENTRY 
          ZJN    UCS6        IF NO MORE EST ENTRIES 
          RJM    SCH
          NJN    UCS5        IF ENTRY DOES NOT HAVE CHANNEL 
          LDD    CS 
          ZJN    UCS2.1      IF CHANNEL NOT DOWN
  
*         VALIDATION FOR EXCLUSIVE USAGE OF THE CHANNEL WILL BE 
*         GRANTED IF ALL UNITS ON THE CHANNEL ARE DOWN/UNASSIGNED, OR 
*         IF DOWN/ASSIGNED TO THE CALLER. 
  
          LDD    CM          CHECK FOR DOWN UNIT
          LPN    3
          LMN    3
          NJN    UCS5.1      IF UNIT NOT DOWN 
          LDD    AE+4 
          ZJN    UCS5        IF UNIT UNASSIGNED 
          LMM    EJTO 
          ZJN    UCS5        IF DOWN/ASSIGNED TO THIS JOB 
 UCS5.1   LJM    UCS12       SET CHANNEL VALIDATION BYTE
  
 UCS6     RJM    ACH
*         UJN    UCS6.1      DO NOT ASSIGN NON-TAPE CHANNEL 
 UCSA     EQU    *-2
          ZJN    UCS5.1      IF CHANNEL NOT ASSIGNED
 UCS6.1   LDN    0
          LJM    UCSX        EXIT 
 UES      SPACE  4,15 
**        UES - PROCESS UNIT RECORD EQUIPMENT SHARE BIT.
* 
*         ENTRY  (CI) = POINTER TO CHANNEL BYTE.
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   (A) = 0, IF VALIDATION GRANTED.
*                (A) = RESPONSE CODE, IF VALIDATION DENIED
*                (EQUIPMENT VALIDATION BYTE SET). 
* 
*         USES   CI, DA, T1.
* 
*         CALLS  CMT, FCH, SCH. 
  
  
 UES10    STD    T1 
          LDC    VWDM+VB4M   SET EQUIPMENT VALIDATION BYTE
*         LDC    VWDM+VB3M   (SET LOCAL NAD DEVICE CODE BYTE) 
 UESB     EQU    *-1
          RAM    EQPV 
          LDD    T1          SET ERROR CODE 
          UJN    UESX        EXIT 
  
 UES11    LDN    0
  
 UES      SUBR               ENTRY/EXIT 
          LDM    EQPV        CHECK EQUIPMENT SHARE BIT
 UESC     SHN    21-VBS4
*         SHN    21-VBS3     (TEST LOCAL NAD SHARE BYTE)
          MJN    UES1        IF EQUIPMENT WILL NOT BE SHARED
          LDM    FNCH        CHECK FUNCTIONAL BITS
*         UJN    UES11       (NOT CHANGING LOCAL NAD CONTROLWARE) 
 UESD     EQU    *-2
          SHN    21-LMEM
          PJN    UES11       IF NOT CHANGING CONTROLLER MEMORY
          LDN    VRNB        SET SHARE BIT NOT SET RESPONSE 
          UJN    UES10       SET ERROR AND EXIT 
  
 UES1     LDM    DEVM        CHECK FOR MAGNETIC TAPE EQUIPMENT
          RJM    CMT
          ZJN    UES2        IF MAGNETIC TAPE 
          LDM    DEVC 
          SBK    FNAD 
          MJN    UES11       IF NOT RHF EQUIPMENT 
          SBN    LNAD-FNAD
          PJN    UES11       IF NOT RHF EQUIPMENT 
          LDC    TNCE-1      SET CHECK FOR NAD EQUIPMENT
          STM    UESA 
 UES2     LDN    NOPE-1      INITIALIZE EST ORDINAL FOR SEARCH
          STD    DA 
 UES3     RJM    FCH         FETCH CHANNELS FROM NEXT NON-RMS EST ENTRY 
          ZJP    UESX        IF END OF EST ENTRIES
          LDC    TMTE-1      TABLE OF TAPE EQUIPMENTS 
*         LDC    TNCE-1      (TABLE OF NAD EQUIPMENTS)
 UESA     EQU    *-1
          STD    T1 
 UES5     AOD    T1          CHECK NEXT TABLE ENTRY 
          LDI    T1 
 UES6     ZJN    UES3        IF END OF TABLE
          LMD    CM+3 
          NJN    UES5        IF NO MATCH WITH EST ENTRY 
          LDN    1
          STD    CI 
 UES7     RJM    SCH         CHECK IF ENTRY IS ON SAME CHANNEL
          ZJN    UES8        IF ENTRY HAS SAME CHANNEL
          SOD    CI          DECREMENT CHANNEL INDEX
          MJN    UES3        IF NO MORE CHANNELS TO CHECK 
          LDM    CHS2,CI
          NJN    UES7        IF ANOTHER CHANNEL TO CHECK
          UJN    UES3        CHECK NEXT EST ENTRY 
  
*         VALIDATION FOR THE CONTROLLER WILL BE GRANTED IF ALL UNITS
*         ON THE CONTROLLER ARE DOWN/UNASSIGNED, OR IF DOWN/ASSIGNED
*         TO THE CALLER.
  
 UES8     LDD    CM+4        CHECK CONTROLLER 
          SHN    -11
          LMM    EQPN 
          NJN    UES3        IF NOT ON SAME CONTROLLER
          LDD    CM          CHECK FOR DOWN/UNASSIGNED UNIT 
          LPN    3
          LMN    3
          NJN    UES9        IF UNIT NOT DOWN 
*         PSN                (LOAD/DUMP CONTROLWARE VALIDATION CALL)
 UESE     EQU    *-1
          LDD    AE+4 
          ZJN    UES6        IF UNIT UNASSIGNED 
          LMM    EJTO 
          ZJN    UES6        IF DOWN/ASSIGNED TO THIS JOB 
 UES9     LDN    VRUS        SET EQUIPMENT IN USE RESPONSE
          LJM    UES10       SET ERROR AND EXIT 
  
**        TMTE - TABLE OF MAGNETIC TAPE EQUIPMENT MNEMONICS.
  
 TMTE     DATA   2RMT 
          DATA   2RNT 
          DATA   2RAT 
          DATA   2RCT 
          DATA   0
  
**        TNCE - TABLE OF NAD EQUIPMENT MNEMONICS.
  
 TNCE     DATA   2RNC 
          DATA   0
 UUS      SPACE  4,10 
**        UUS - PROCESS UNIT RECORD UNIT SHARE BIT. 
* 
*         ENTRY  (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   (A) = 0, IF VALIDATION GRANTED.
*                (A) = RESPONSE CODE, IF VALIDATION DENIED. 
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR, SFA.
  
  
 UUS6     LDC    VWDM+VB4M   SET UNIT VALIDATION BYTE 
          RAM    UNIT 
          LDN    VRNB        SET RESPONSE TO SHARE BIT NOT SET
  
 UUS      SUBR               ENTRY/EXIT 
          LDM    UNIT        CHECK UNIT PARAMETER WORD
          SHN    21-VBS4
          PJN    UUS6        IF UNIT SHARE BIT NOT SET
*         PJN    UUS1        (RHF VALIDATION CALL)
 UUSA     EQU    *-1
          LDD    ES 
          LPN    3
          LMN    3
          NJN    UUS4        IF UNIT UP 
 UUS1     SFA    EST,ESTO 
          ADK    EQAE 
          CRD    CM 
          LDD    CM+4 
          ZJN    UUS2        IF UNIT UNASSIGNED 
          LMM    EJTO 
          NJN    UUS4        IF ASSIGNED TO ANOTHER DIAGNOSTIC
          UJN    UUSX        RETURN 
  
 UUS2     LDM    ESTO        EST ORDINAL
          STD    CM+1 
 UUSB     LDN    RVES        (RHF VALIDATION CALL)
          ORG    UUSB 
          LDN    RDES        REQUEST DOWNED EQUIPMENT 
          STD    CM+2 
          MONITOR  REQM 
          LDD    CM+1 
          ZJN    UUS4        IF ASSIGNED TO ANOTHER DIAGNOSTIC
  
 UUSC     LDN    1           (LOAD/DUMP NAD CONTROLWARE)
          ORG    UUSC 
          LDN    0
          NJN    UUS5        IF LOADING/DUMPING CONTROLWARE 
 UUS3     LJM    UUSX        RETURN 
  
 UUS4     LDC    VWDM+VB4M   SET UNIT VALIDATION BYTE 
          RAM    UNIT 
          LDN    VRUS        SET RESPONSE TO UNIT IN USE
          UJN    UUS3        RETURN 
  
 UUS5     LDM    EQPV 
          LPN    VS3M 
          ZJN    UUS3        IF NOT DEDICATED ACCESS
          LDD    ES 
          SHN    -7 
          LPN    4
          LMN    4
          ZJN    UUS3        IF *CONTROLWARE NOT LOADED* FLAG SET 
          LDD    ES 
          SHN    -7 
          LPN    3
          NJN    UUS4        IF NAD IN USE
          LDD    ES 
          LPN    2
          ZJN    UUS4        IF NAD TURNED ON 
          LDM    ESTO        EST ORDINAL
          STD    CM+1 
          LDN    SB0S        SET EST BYTE 0 SUBFUNCTION 
          STD    CM+2 
          LDC    6777        SET EST BYTE MASK
          STD    CM+3 
          LDD    TH          SET EST BIT VALUE TO SET 
          STD    CM+4 
          MONITOR  SEQM 
*         LDN    0
          LJM    UUSX        RETURN 
 COMMON   SPACE  4,10 
***       RESIDENT COMMON ROUTINES. 
  
  
*CALL     COMPSFB 
 RMC      TITLE  OVERLAYABLE FUNCTION PROCESSORS. 
          USE    OVERLAY
  
 OVLA     EQU    *+5         OVERLAY
          SPACE  4
***       FUNCTION 2. 
*         RMC - READ MACHINE CHARACTERISTICS TO (PARAMETER).
* 
*         ENTRY 
*T  IR    18/  *CVL*,1/1,5/ CP ,12/ 0,6/ 02,18/  ADDR 
* 
*         EXIT
*T  ADDR  12/  SW,12/  ECS,12/  NPP, 12/  HW,11/  MEM,1/C 
*                WHERE -
*         SW (59-48) = SOFTWARE CHARACTERISTICS.
*                BIT 48 = 63 CHARACTER SET. 
*         ECS(47-36) = EXTENDED MEMORY SIZE/1000B.
*                SET TO 7777 IF .GT. 2000K. 
*         NPP (35-24) = NUMBER OF PPU-S.
*         HW (23-12) = HARDWARE CHARACTERISTICS.
*                BIT 21 = HARDWARE ESM MODE.
*                BIT 20 = 8X5 MAINFRAME (CM EXTENSION). 
*                BITS 19-18 = 7000 TYPE CPU FLAGS.
*                         0 = NOT 7000 TYPE CPU.
*                         1 = CYBER 76 MODEL A. 
*                         2 = CYBER 76 MODEL B. 
*                         3 = CYBER 176.
*                BIT 17 = PPU-S AT 2X SPEED.
*                BIT 16 = CYBER 170 TYPE MAINFRAME (S/C REGISTER).
*                BIT 15 = CMU PRESENT.
*                BIT 14 = CEJ/MEJ PRESENT.
*                BIT 13 = INSTRUCTION STACK PRESENT.
*                BIT 12 = CPU 1 PRESENT.
*         MEM (11-1) = CENTRAL MEMORY SIZE/200B (TRUNCATED).
*                SET TO 3777 IF SIZE .GE. 262K. 
*         C (0) = COMPLETE BIT. 
  
  
 RMC      SUBR               ENTRY/EXIT 
          LDN    PPUL        GET NUMBER OF PP-S 
          CRD    CM 
          LDN    IPRL        READ INSTALLATION PARAMETER WORD 
          CRD    ES 
          LDD    ES+2 
          LPN    1           RETRIEVE CHARACTER SET BIT 
          STD    CM 
          RJM    DES         DETERMINE EXTENDED MEMORY SIZE 
          STD    CM+1 
          LDK    CFGL        DETERMINE ECS/ESM MODE 
          CRD    ES 
          LDD    ES+3 
          LPC    2000 
          SHN    -1 
          STD    CM+3 
          LDC    MABL        READ MACHINE SIZE
          CRD    ES 
          LDD    ES+1        DETERMINE HARDWARE CHARACTERISTICS 
          LMC    4777 
          STD    T1 
          SHN    -3 
          LPC    702         SET CME, CYBER 176, AND STACK CPU FLAGS
          RAD    CM+3 
          LDD    T1          SET CMU FLAG 
          LPN    10 
          RAD    CM+3 
          LDD    T1          SET CYBER 170 FLAG 
          SHN    -2 
          LPN    20 
          ADN    4           SET CEJ/MEJ ENABLED FLAG 
          RAD    CM+3 
          LDD    T1          SET CPU 1 PRESENT FLAG 
          LPN    2
          SHN    -1 
          RAD    CM+3 
          LDD    ES+4        SET 2X PP SPEED FLAG 
          LPN    1
          SHN    5-0
          RAD    CM+3 
          LDD    ES+2 
          ZJN    RMC1        IF .LT. 262K 
          LCN    0           SET SIZE = 3777
          UJN    RMC2        SAVE SIZE
  
 RMC1     LDD    ES+3        GET ACTUAL SIZE
 RMC2     SCN    1           SET COMPLETE BIT 
          LMN    1
          STD    CM+4 
          LDN    1           SET PARAMETER BLOCK WORD COUNT 
          STD    BS 
          RJM    CKA         CHECK PARAMETER BLOCK ADDRESS
          CWD    CM          STORE RESPONSE 
          LJM    RMCX        RETURN 
 CEA      EJECT 
***       FUNCTION 3. 
*         CEA - CHECK ENGINEERING ACCESS. 
* 
*         ENTRY 
*T  IR    18/  *CVL*,1/1,5/ CP ,12/ 0,6/ 03,18/  ADDR 
* 
*         EXIT
*T  ADDR  58/0,1/1
  
  
 CEA      SUBR               ENTRY/EXIT 
          LDN    ZERL        CLEAR RESPONSE WORD
          CRD    CM 
          LDN    1           SET PARAMETER BLOCK WORD COUNT 
          STD    BS 
          STD    CM+4        SET COMPLETE BIT 
          RJM    CKA         CHECK ADDRESS
          CWD    CM          RETURN COMPLETE BIT
          UJN    CEAX        EXIT 
 RSB      EJECT 
***       FUNCTION 4. 
*         RSB - READ SYSTEM ATTRIBUTE BLOCK.
* 
*         ENTRY 
*T  IR    18/ *CVL*,1/1,5/ CP,12/ VN,6/ 04,18/ ADDR 
* 
*         EXIT   ADDR CONTAINS THE FOLLOWING- 
* 
*T,ADDR   12/ ,12/ LNGTH,24/ ,6/ RC,5/ VN,1/C 
*T,ADDR+1 12/ PPSD,24/ CMSZ,12/ ,12/ OPTN 
*T,ADDR+2 60/FIRST VARIABLE ENTRY 
*T,ADDR+N 60/LAST VARIABLE ENTRY
  
*         WHERE - 
  
*         LNGTH  NUMBER OF CM WORDS IN THE RESPONSE.
*         RC     RESPONSE CODE (ALWAYS 0).
*         VN     VERSION NUMBER OF FORMAT RETURNED. 
*         C      COMPLETION BIT.
*         PPSD   PP SPEED.
*         CMSZ   CM SIZE. 
*         OPTN   OPTIONS INSTALLED. 
*         VARIABLE ENTRY - SEE *CEVAL* INTERFACE SPECIFICATION. 
  
  
 RSB      SUBR               ENTRY/EXIT 
          LDK    DSSL        GET EI/MICROCODE VERIFIED FLAG 
          CRD    T3 
          ADN    MABL-DSSL
          CRD    CM 
          ADN    EABL+MFEI-MABL  GET SAB FWA AND LENGTH 
          CRD    ES 
          LDD    CM+1        FORM ADDR+1 OF RESPONSE
          STD    CD+4 
          SHN    -6          SET FLAG FOR MAINFRAME TYPE
          LPN    44 
          LMN    4
          STD    T2 
          LDD    CM+2        SET CM SIZE/100B 
          STD    CD+1 
          LDD    CM+3 
          STD    CD+2 
          LDD    CM+4        SET PP SPEED 
          STD    CD 
          LDN    1           INITIALIZE CM WORD LENGTH
          STD    BS 
          STM    TPMB+4      SET COMPLETE BIT 
          RJM    WOW         WRITE ONE WORD 
          LDD    IR+2        CHECK FORMAT VERSION REQUESTED 
          ZJN    RSB1        IF OLD FORMAT
          LJM    RSB7        RETURN NEW FORMAT
  
*         RETURN OLD FORMAT.
  
 RSB1     RJM    GSF         GET SAB FWA
          CRD    CD          READ MAINFRAME DESCRIPTOR ENTRY
          LDD    CD+3        SAVE CPU0 ON/OFF FLAG (CYBER 800)
          LPN    1
          STD    T5 
          LDD    CD          SAVE MAINFRAME DESCRIPTOR LENGTH 
          SHN    -6 
          STD    T3 
          STD    T4 
 RSB3     RJM    GSF         GET SAB FWA
          ADD    T3          READ NEXT ENTRY
          CRD    CM 
          LDN    ZERL 
          CRD    CD 
          LDD    CM          SAVE ENTRY LENGTH
          SHN    14 
          STD    T6 
          SHN    -14         CHECK DESCRIPTOR ID
          STD    T1 
          LMN    77 
          NJN    RSB4        IF NOT EXTENDED MEMORY ENTRY 
          LDC    EMP         SET EXTENDED MEMORY PROCESSOR ADDRESS
          STD    T1 
          UJN    RSB5        PROCESS EXTENDED MEMORY ENTRY
  
 RSB4     LMN    77 
          SBN    3
          PJN    RSB6        IF ENTRY NOT TO BE USED
          LDM    TOFP,T1     SET PROCESSOR ADDRESS
          STD    T1 
          LDD    CM+1        SET ELEMENT NUMBER 
          STD    CD 
          LDD    CM+2        SET MODEL NUMBER 
          STD    CD+1 
          LDD    CM+3        SET SERIAL NUMBER
          STD    CD+2 
  
*         JUMP TO PROCESSOR WITH -
* 
*         (T2) = 0 IF CYBER 800 MAINFRAME (EXCLUDING 865/875).
*         (T3) = (T4) = SAB INDEX.
*         (T5) = 0 IF CPU0 IS LOGICALLY ON. 
*              = 1 IF CPU0 IS LOGICALLY OFF.
*         (T6) = CURRENT SAB ENTRY LENGTH.
*         (T7) = EI/MICROCODE VERIFIED AT DEADSTART FLAG. 
*         (BS) = CURRENT CM WORD LENGTH OF OLD SAB FORMAT BUFFER. 
*         (CD - CD+4) = EID OR 0 (EXTENDED MEMORY PROCESSOR). 
*         (CM - CM+4) = WORD 0 OF CURRENT SAB ENTRY.
  
 RSB5     RJM    0,T1        PROCESS ENTRY
 RSB6     LDD    T6          ADVANCE SAB INDEX
          RAD    T3 
          STD    T4 
          SBD    ES+3 
          NJP    RSB3        IF NOT END OF SAB
          LDD    BS 
          UJN    RSB9        SET BLOCK LENGTH 
  
*         RETURN NEW FORMAT.
  
 RSB7     RJM    GSF         GET SAB FWA
          CRM    TPMB+2*5,ES+3
          ERRNG  CKA2-SABML*5-2*5-TPMB  BUFFER OVERFLOW 
          LDD    T2 
          NJN    RSB8        IF NOT CYBER 800 TYPE MAINFRAME
          RJM    CPR         CHECK PROCESSOR RESERVED FOR NOS/VE
          LDD    T7          ADD EI/MICROCODE VERIFIED FLAG 
          SHN    0-3
          LPN    1
          RAM    TPMB+3*5+4 
 RSB8     LDN    2           SET VERSION NUMBER 
          RAM    TPMB+4 
          LDD    ES+3        SET BLOCK LENGTH 
          ADN    2
          STD    BS 
 RSB9     STM    TPMB+1 
          RJM    CKA         CHECK FOR VALID ADDRESS
          CWM    TPMB,BS
          LJM    RSBX        RETURN 
          SPACE  4,10 
**        TOFP - TABLE OF OLD FORMAT ENTRY PROCESSORS.
  
  
 TOFP     BSS    0
          LOC    0
  
          CON    IOP         IOU ENTRY PROCESSOR
          CON    CMP         CM ENTRY PROCESSOR 
          CON    PRP         PROCESSOR ENTRY PROCESSOR
  
          LOC    *O 
 MEM      EJECT 
  
  
***       FUNCTION 5. 
*         MEM - RETURN EXCHANGE RA, RAE, FL, FLE. 
* 
*         ENTRY 
*T IR     18/  *CVL*,1/1,5/ CP,12/ 0,6/ 05,18/  ADDR
* 
*         EXIT
*T ADDR   24/RA,24/FL,11/0,1/C
*T ADDR+1 24/RAE,24/FLE,12/0
  
  
 MEM      SUBR               ENTRY/EXIT 
          LDD    CP 
          ADN    1
          CRM    RAMM,ON     READ RA INTO PARAMETER BLOCK 
          CRM    FLMM,ON     READ FL INTO PARAMETER BLOCK 
          ADN    1
          CRM    RAEM,ON     READ RAE INTO PARAMETER BLOCK
          CRM    FLEM,ON     READ FLE INTO PARAMETER BLOCK
          LDN    1           SET COMPLETE BIT IN PARAMETER BLOCK
          STM    RAMM+4 
          LDN    0           CLEAR BYTE 4 OF RAE/FLE PARAMETER BLOCK
          STM    RAEM+4 
          LDN    2           PARAMETER BLOCK LENGTH 
          STD    BS 
          RJM    CKA          OBTAIN REQUESTOR PARAMETER BLOCK ADDRESS
          CWM    RAMM,BS     WRITE PARAMETER BLOCK
          UJN    MEMX        EXIT 
 CMP      TITLE  OVERLAYABLE SUBROUTINES. 
 CMP      SPACE  4,10 
**        CMP - CM DESCRIPTOR ENTRY PROCESSOR.
* 
*         ENTRY  (T2) = 0 IF CYBER 800 TYPE MAINFRAME.
*                (CD - CD+2) = CM ELEMENT ID. 
*                (CM - CM+4) = WORD ZERO OF NEW FORMAT CM ENTRY.
* 
*         EXIT   OLD FORMAT CM ENTRY WRITTEN TO *TPMB*. 
* 
*         CALLS  WOW. 
  
  
 CMP1     LDD    CM+4        SET MAINTENANCE CHANNEL PORT NUMBER
          SHN    -2 
          SCN    77 
          STD    CD+4 
          LDN    6           SET DESCRIPTOR ID
 CMP2     SHN    10 
          RAD    CD 
          RJM    WOW         WRITE OLD FORMAT WORD
  
 CMP      SUBR               ENTRY/EXIT 
          LDD    T2 
          ZJN    CMP1        IF CYBER 800 TYPE MAINFRAME
          LDN    5
          UJN    CMP2        SET DESCRIPTOR ID
 CMR      SPACE  4,10 
**        CMR - CHECK FOR MATCHING ROUTINE. 
* 
*         EXIT   (A) = STATUS.
*                      0, IF MATCHING ROUTINE MATCHES,
*                         OR THERE IS NO MATCHING ROUTINE,
*                         OR THE DEVICE IS NOT IN THE EST.
*                      NONZERO, IF NO MATCH.
  
  
 CMR      SUBR               ENTRY/EXIT 
          LDM    ESTO 
          ZJN    CMRX        IF DEVICE NOT IN THE EST 
          LDM    TADR,TI
          ZJN    CMRX        IF NO MATCHING ROUTINE 
          STD    T1 
          LDM    TMSK,TI     GET MASK FOR MATCHING ROUTINE
          RJM    0,T1 
          UJN    CMRX        RETURN WITH STATUS 
 CPR      SPACE  4,10 
**        CPR - CHECK PROCESSOR RESERVED FOR NOS/VE.
* 
*         ENTRY  (TPMB) = *SAB* ELEMENT DESCRIPTOR TABLE. 
* 
*         USES   CM - CM+4. 
  
  
CPR       SUBR               ENTRY/EXIT 
          LDN    SSTL 
          CRD    CM 
          LDD    CM+3        CHECK SYSTEM STATUS
          SHN    0-13 
          NJN    CPRX        IF NVE DISABLED
          LDM    TPMB+2*5+/DSL/PCPF 
          LPN    2
          NJN    CPRX        IF SINGLE CPU MAINFRAME
          LDM    TPMB+2*5+/DSL/OPTN 
          LPN    1
          NJN    CPRX        IF CPU0 OFF
          LDM    TPMB+10*5+/DSL/PSTA
          SHN    21-0 
          MJN    CPRX        IF SECOND CPU OFF
          SHN    1
          SCN    2           FLAG PROCESSOR SUPPORTS 180 STATE ONLY 
          LMN    2
          STM    TPMB+10*5+/DSL/PSTA
          UJN    CPRX        RETURN 
 DES      SPACE  4,10 
**        DES - DETERMINE EXTENDED MEMORY SIZE/1000B. 
* 
*         EXIT   (A) = EXTENDED MEMORY SIZE/1000B.
* 
*         USES   ES - ES+4, T1 - T5.
* 
*         MACROS SFA. 
  
  
 DES      SUBR               ENTRY/EXIT 
          LDK    EXML        READ EXTENDED MEMORY EST ORDINAL 
          CRD    T1 
          LDD    T1+4 
          LPC    777
          ZJN    DESX        IF NO CPU ACCESS TO EXTENDED MEMORY
          SFA    EST         READ EST ENTRY 
          ADK    EQDE 
          CRD    ES 
          ADK    EQAE-EQDE
          CRD    T1 
          LDD    T1+2 
          SHN    -6 
          LPN    3           MASK OFF EXTENDED MEMORY SHIFT COUNT 
          ADD    TH 
          ERRNZ  SHNI-1000
          STM    DESA        UPDATE SHIFT INSTRUCTION 
          LDD    ES+4        READ MST ENTRY 
          SHN    3
          ADK    TDGL 
          CRD    ES 
          LDD    ES+2        GET LENGTH OF TRT = T
          SHN    6           T*100
          ADD    ES+2        T*101
          SHN    -3          T*101B/10B = T*4*2020B/1000B 
 DESA     SHN    0           EM SIZE/1000B
*         SHN    EMSC        (EMSC = EM SHIFT COUNT)
          STD    T1 
          SHN    -14
          ZJN    DES1        IF .LE. 2000K WORDS
          LDC    7777        EM SIZE .GT. 2000K WORDS 
          UJP    DESX        RETURN 
  
 DES1     LDD    T1          EM SIZE/1000B
          UJP    DESX        RETURN 
 EMP      SPACE  4,10 
**        EMP - EXTENDED MEMORY DESCRIPTOR ENTRY PROCESSOR. 
* 
*         ENTRY  (CD - CD+4) = 0. 
* 
*         EXIT   OLD FORMAT EXTENDED MEMORY ENTRY WRITTEN TO *TPMB*.
* 
*         CALLS  WOW. 
  
  
 EMP      SUBR               ENTRY/EXIT 
          LDC    377         SET EXTENDED MEMORY TYPE 
          STD    CD+1 
          LDN    12D         SET DESCRIPTOR ID
          SHN    10 
          STD    CD 
          RJM    WOW         WRITE OLD FORMAT WORD
          UJN    EMPX        RETURN 
 FDC      SPACE  4,10 
**        FDC - FIND DEVICE CODE. 
* 
*         ENTRY  (DEVC) = DEVICE CODE TO FIND.
* 
*         EXIT   (A) = 0, IF DEVICE CODE FOUND (DEVM, TI SET).
*                      NONZERO, IF NOT IN *TDVC* (*VH* SET).
*                TO *VCE16*, IF DEVICE CODE AND MNEMONIC INCOMPATIBLE.
* 
*         USES   TI.
  
  
 FDC6     LDK    TDVCL-1     RESET DEVICE CODE INDEX
          STD    TI 
  
 FDC      SUBR               ENTRY/EXIT 
          LDC    DCVB 
          STD    VH 
          LDK    TDVCL       INITIALIZE DEVICE CODE TABLE INDEX 
          STD    TI 
 FDC1     SOD    TI 
          ZJN    FDC6        IF MORE DEVICE CODES TO CHECK
          LDM    DEVC        CHECK DEVICE CODE
          LMM    TDVC,TI     CHECK FOR A MATCH IN THE TABLE 
          LPC    3777 
          NJN    FDC1        IF NO MATCH
          RJM    CMR         CHECK FOR MATCH ROUTINE
 FDC2     NJN    FDC1        IF NO MATCH
 FDC3     LDM    DEVM        CHECK MNEMONIC 
          NJN    FDC5        IF MNEMONIC SUPPLIED 
          LDM    TMNE,TI     FETCH MATCHING TRANSFER ADDRESS
          STM    DEVM        PUT IN PARAMETER BLOCK 
 FDC4     UJP    FDCX        EXIT 
  
 FDC5     LMM    TMNE,TI
          ZJN    FDC4        IF MNEMONIC MATCHES
          LDM    TDVC,TI     CHECK FOR ALTERNATE
          SHN    0-13 
          NJN    FDC2        IF ALTERNATE 
          LDK    VRMN        MNEMONIC / DEVICE CODE INCOMPATIBLE
          LJM    VCE16       EXIT WITH ERROR RESPONSE CODE
 FMN      SPACE  4,10 
**        FMN - FIND MNEMONIC.
* 
*         ENTRY  (DEVM) = MNEMONIC TO FIND. 
* 
*         EXIT   (A) = 0, IF MNEMONIC FOUND (DEVC, TI SET). 
*                (A) NON-ZERO, IF NOT IN *TMNE* (*VH* SET). 
* 
*         USES   TI.
  
  
 FMN3     LDM    TDVC,TI     STORE DEVICE CODE IN PARAMETER BLOCK 
          LPC    3777 
          STM    DEVC 
          LDN    0
  
 FMN      SUBR               ENTRY/EXIT 
          LDC    MNVB 
          STD    VH 
          LDK    TMNEL       INITIALIZE INDEX 
          STD    TI 
 FMN1     SOD    TI 
          SBN    1
          MJN    FMNX        IF MNEMONIC NOT FOUND
          LDM    TMNE,TI
          LMM    DEVM 
          NJN    FMN1        IF NO MATCH
          LDM    TDVC,TI     CHECK CORRESPONDING DEVICE CODE
          LMN    DEVC.DQL 
          LPC    3777 
          ZJN    FMN1        IF LARGE SECTOR DEVICE CODE, DO NOT MATCH
          LDM    ESTO 
          ZJN    FMN2        IF NO EST ENTRY FOUND
          RJM    CMR         CHECK FOR MATCHING ROUTINE 
          NJN    FMN1        IF NO MATCH
 FMN2     LJM    FMN3        EXIT 
 GSF      SPACE  4,10 
**        GSF - GET SAB FIRST WORD ADDRESS. 
* 
*         ENTRY  (ES - ES+1) = MAINFRAME DESCRIPTOR FWA.
* 
*         EXIT   (A) = SAB FWA. 
  
  
 GSF      SUBR               ENTRY/EXIT 
          LDD    ES+1 
          SCN    77 
          SHN    6
          ADD    ES 
          SHN    6
          UJN    GSFX        RETURN 
 IOP      SPACE  4,10 
**        IOP - IOU DESCRIPTOR ENTRY PROCESSOR. 
* 
*         ENTRY  (T2) = 0 IF CYBER 800 TYPE MAINFRAME.
*                (T4) = CURRENT SAB INDEX.
*                (CD - CD+2) = IOU ELEMENT ID.
*                (CM - CM+4) = WORD 0 OF NEW FORMAT IOU ENTRY.
* 
*         EXIT   OLD FORMAT IO ENTRY WRITTEN TO *TPMB*. 
* 
*         CALLS  RNW, WOW.
  
  
 IOP1     LDD    CM+4        SET MAINTENANCE CHANNEL PORT NUMBER
          SHN    -2 
          SCN    77 
          STD    CD+4 
          LDN    10D         SET DESCRIPTOR ID
 IOP2     SHN    10 
          RAD    CD 
          LDN    1           SET ENTRY LENGTH - 1 
          RAD    CD+4 
          RJM    WOW         WRITE OLD FORMAT WORD
          RJM    RNW         READ NEXT SAB WORD 
          LDN    0
          STD    CD+4 
          RJM    WOW         WRITE OLD FORMAT WORD
  
 IOP      SUBR               ENTRY/EXIT 
          LDD    T2 
          ZJN    IOP1        IF CYBER 800 TYPE MAINFRAME
          LDN    9D          SET DESCRIPTOR ID
          UJN    IOP2        COMPLETE ENTRY 
 MEE      SPACE  4,25 
**        MEE - FIND MATCHING EST ENTRY.
* 
*         ENTRY  (EA) = FIRST EST ORDINAL TO TEST.
*                (LO) = LAST EST ORDINAL + 1 TO SEARCH. 
* 
*         EXIT   (A) = 0, IF A MATCH WAS MADE.
*                    = 1, IF NO MATCH AND MATCH NOT EXPECTED. 
*                    = -1, IF NO MATCH. 
*                (ESTO) = EST ORDINAL, IF A MATCH WAS MADE. 
*                         0, IF NO MATCH. 
*                (AE - AE+4) = *EQAE* WORD OF EST ENTRY, IF MATCH.
*                (ES - ES+4) = *EQDE* WORD OF EST ENTRY, IF MATCH.
* 
*         ERROR  TO *VCE16* WITH (A) = ERROR RESPONSE CODE FOR THE
*                FOLLOWING CONDITIONS - 
*                  AN UNEXPECTED ENTRY IS FOUND IN THE EST. 
*                  THE MNEMONIC AND THE DEVICE CODE ARE INCOMPATIBLE. 
* 
*         USES   EA, AE - AE+4, ES - ES+4.
* 
*         CALLS  MCH, MEQ, MUN. 
* 
*         MACROS SFA. 
  
  
 MEE7     AOD    EA          ADVANCE EST ORDINAL
          LMD    LO 
          NJN    MEE1        IF MORE EST ENTRIES TO CHECK 
          STM    ESTO        RESET EST ORDINAL TO ZERO
          LDM    FNCH 
          SHN    1-NEST 
          LPN    2
          SBN    1           SET STATUS 
  
 MEE      SUBR               ENTRY/EXIT 
 MEE1     LDD    EA          SET ORDINAL IN PARAMETER BLOCK 
          STM    ESTO 
          SFA    EST         READ EST ENTRY 
          ADK    EQDE 
          CRD    ES 
          ADK    EQAE-EQDE
          CRD    AE 
          LDD    ES+3 
          ZJN    MEE7        IF ENTRY EMPTY 
 MEEA     UJN    MEE4        MATCH EQUIPMENT SPECIFICATIONS 
*         PSN                (*DE* DEVICE REQUESTED)
  
          LMC    2RDE 
          ZJN    MEEX        IF *DE* DEVICE FOUND 
          LMN    2RDP&2RDE
 MEE2     ZJN    MEEX        IF *DP* DEVICE FOUND 
 MEE3     UJN    MEE7        CHECK NEXT ENTRY 
  
 MEE4     RJM    MCH         MATCH CHANNELS 
          NJN    MEE7        IF NO MATCH
          RJM    MEQ         MATCH EQUIPMENT (CONTROLLER) NUMBER
          NJN    MEE3        IF NO MATCH
          RJM    MUN         MATCH UNIT NUMBERS 
          NJN    MEE3        IF NO MATCH
          LDM    FNCH 
          SHN    21-NEST
          MJN    MEE5        IF NOT EXPECTED IN EST 
          LDM    DEVM 
          ZJN    MEE2        IF NO MNEMONIC SUPPLIED
          LMD    ES+3 
          ZJN    MEE2        IF MNEMONIC MATCHES
          LDN    VRMN        MNEMONIC/DEVICE CODE INCOMPATIBLE
          UJN    MEE6        EXIT WITH ERROR RESPONSE CODE
  
 MEE5     LDN    VREF        ENTRY FOUND IN EST 
 MEE6     LJM    VCE16       EXIT WITH ERROR RESPONSE CODE
 MEQ      SPACE  4,20 
**        MEQ - MATCH EQUIPMENT (CONTROLLER) NUMBER.
* 
*         ENTRY  (ES - ES+4) = EST ENTRY TO MATCH.
* 
*         EXIT   (A) = 0, IF A MATCH. 
*                (A) .NE. 0, IF NO MATCH (VH SET PROPERLY). 
*                (EP) = UNIT NUMBER FROM EST OR MST (FIRST UNIT NUMBER
*                       IF MULTI-SPINDLE RMS DEVICE). 
*                FOR RMS -
*                (CM) = NUMBER OF UNITS - 1 IN DEVICE.
*                (CM+1 - CM+4) = UNIT NUMBERS IN DEVICE.
*                IF (CM+4) = 7777, UNITS ARE CONTIGUOUS.
* 
*         USES   EP, T1, VH, CM - CM+4. 
* 
*         CALLS  CMT. 
  
  
 MEQ      SUBR               ENTRY/EXIT 
          LDD    ES          CHECK EST ENTRY
          SHN    21-13
          PJN    MEQ4        IF NOT RMS EQUIPMENT 
          LDD    ES+4        READ *DDLL*
          SHN    3
          ADN    DDLL 
          CRD    CM 
          LDD    CM 
          STD    T1 
          SHN    21-12       CHECK FOR NULL EQUIPMENT 
          MJN    MEQX        IF NULL EQUIPMENT
          SHN    12-21       SET NUMBER OF UNITS
          LPN    7
          STD    CM 
          LDD    CM+4        SET FIRST UNIT 
          LPN    77 
          STD    EP 
          LDD    T1          SET EQUIPMENT (CONTROLLER) NUMBER
          SHN    -6 
          LPN    7
          UJN    MEQ7        MATCH EQUIPMENT (CONTROLLER) NUMBER
  
 MEQ4     LDN    0           SET NUMBER OF UNITS
          STD    CM 
          LDM    DEVM        CHECK FOR MAGNETIC TAPE EQUIPMENT
          RJM    CMT
          ZJN    MEQ5        IF MAG TAPE ENTRY
          LDM    DEVM        CHECK FOR MUX
          LMC    2RTT 
          ZJN    MEQ5        IF MUX 
          LMC    2RNP&2RTT
          NJN    MEQ6        IF NOT MUX 
  
*         NT/MT/CT/AT/TT/NP ENTRIES PROCESSED HERE. 
  
 MEQ5     LDD    ES+4        SET UNIT NUMBER
          LPN    17 
          UJN    MEQ6.1      SET UNIT NUMBER
  
*         CP/CR/LP ENTRIES PROCESSED HERE.
  
 MEQ6     LDD    ES+4        SET UNIT NUMBER
          LPN    77 
 MEQ6.1   STD    EP 
          LDD    ES+4        SET EQUIPMENT (CONTROLLER) NUMBER
          SHN    -11
 MEQ7     STD    T1 
          LDC    EQVB        SET VALIDATION BYTE
          SBD    VH 
          MJN    MEQ8        IF NOT HIGHER VALIDATION 
          RAD    VH          UPDATE CODE WORD 
 MEQ8     LDM    EQPV        GET PARAMETER BLOCK EQUIPMENT WORD 
          SHN    21-VBCD
          MJN    MEQ9        IF EQUIPMENT (CONTROLLER) NUMBER SUPPLIED
          LDD    T1          STORE EQUIPMENT (CONTROLLER) NUMBER
          STM    EQPN 
 MEQ9     LDD    T1          SET RESPONSE 
          LMM    EQPN 
          LJM    MEQX        EXIT 
 MUN      SPACE  4,15 
**        MUN - MATCH UNIT NUMBER.
* 
*         ENTRY  (EP) = UNIT NUMBER FROM EST. 
*                (CM) = NUMBER OF UNITS - 1 IN DEVICE.
*                (CM+1 - CM+4) = UNIT NUMBERS IN DEVICE IF (CM) .NE.
*                ZERO (IF (CM+4) = 7777, UNIT NUMBERS ARE SEQUENTIAL).
* 
*         EXIT   (A) = 0, IF A MATCH OR IF RHF VALIDATION CALL. 
*                (A) NON-ZERO, IF NO MATCH (VH SET PROPERLY). 
*                (EP) = LOGICAL UNIT NUMBER FOR RMS.
* 
*         USES   CM, EP, T1, T2, VH.
  
  
 MUN4     LDD    EP          SET UNIT NUMBER
          STM    UNUM 
 MUN5     LDN    0           SET RESPONSE 
          STD    EP          SET LOGICAL UNIT NUMBER
  
 MUN      SUBR               ENTRY/EXIT 
          LDM    UNIT        CHECK UNIT NUMBER FROM CALLER
 MUNA     EQU    *-2
*         UJN    MUN5        (RHF VALIDATION CALL)
          SHN    21-VBCD
          PJN    MUN4        IF NO UNIT NUMBER FROM CALLER
          LDC    UNVB        UPDATE VALIDATION CODE WORD
          STD    VH 
          LDD    EP          SAVE PHYSICAL UNIT NUMBER
          STD    T1 
          LDN    0           SET LOGICAL UNIT NUMBER
          STD    EP 
          LDN    CM+4        UNIT NUMBER LIST ADDRESS 
          STD    T2 
          LDD    T1          MATCH PHYSICAL UNIT NUMBER 
 MUN1     LMM    UNUM 
          ZJN    MUNX        IF MATCH 
          SOD    CM 
          MJN    MUNX        IF NO MORE TO CHECK
          LDD    CM+4 
          LMC    7777 
          NJN    MUN2        IF NOT CONTIGUOUS UNITS
          AOD    EP          INCREMENT LOGICAL UNIT NUMBER
          AOD    T1          INCREMENT PHYSICAL UNIT NUMBER 
          UJN    MUN1        LOOP 
  
 MUN2     AOD    EP          INCREMENT LOGICAL UNIT 
          LPN    1
          NJN    MUN3        IF SECOND UNIT NUMBER IN WORD
          SOD    T2          DECREMENT TO NEW WORD
          LDI    T2 
          LPN    77 
          UJN    MUN1        SET PHYSICAL UNIT
  
 MUN3     LDI    T2          ISOLATE NEXT PHYSICAL UNIT NUMBER
          SHN    -6 
          UJN    MUN1        SET PHYSICAL UNIT
 PRP      SPACE  4,15 
**        PRP - PROCESSOR DESCRIPTOR ENTRY PROCESSOR. 
* 
*         ENTRY  (T2) = 0 IF CYBER 800 TYPE MAINFRAME.
*                (T4) = CURRENT SAB INDEX.
*                (T5) = 1 IF CPU0 IS LOGICALLY OFF (CYBER 800). 
*                (T7) = EI/MICROCODE VERIFIED AT DEADSTART FLAG.
*                (PRPA) = 1 IF ONE PROCESSOR ENTRY ALREADY PROCESSED. 
*                (CD - CD+2) = PROCESSOR ELEMENT ID.
*                (CM - CM+4) = WORD ZERO OF NEW FORMAT PROCESSOR ENTRY. 
* 
*         EXIT   OLD FORMAT PROCESSOR ENTRY WRITTEN TO *TPMB*.
* 
*         USES   T1, CM - CM+4. 
* 
*         CALLS  GSF, RNW, WOW. 
  
  
 PRP2     LDN    1           SET DESCRIPTOR ID
          SHN    10 
          RAD    CD 
          RJM    WOW         WRITE OLD FORMAT WORD
 PRP3     LDN    1           SET CPU ENTRY PROCESSED
          RAM    PRPA 
  
 PRP      SUBR               ENTRY/EXIT 
          LDD    T2 
          NJN    PRP2        IF NOT CYBER 800 TYPE MAINFRAME
          LDD    CM+4        GET MAINTENANCE CHANNEL PORT NUMBER
          SHN    -2 
          SCN    77 
          ADN    4           SET ENTRY LENGTH - 1 
          STD    CD+4 
          AOD    T4 
          RJM    GSF         GET SAB FWA
          ADD    T4          READ NEXT WORD OF NEW FORMAT 
          CRD    CM 
          LDD    CM          SET DEGRADATION FLAGS
          STD    CD+3 
          LDD    CM+2        SAVE PMF HARDWARE FLAG 
          SHN    0-3
          LPN    1
          LMN    1           FLAG IS OPPOSITE IN OLD FORMAT 
          STD    T1 
  
*         FOR A DUAL CPU CYBER 800 TYPE MAINFRAME, ONLY ONE PROCESSOR 
*         DESCRIPTOR IS RETURNED.  IT CONTAINS INFORMATION ABOUT THE
*         FIRST CPU THAT IS LOGICALLY ON. 
  
          LDD    T5          GET CPU0 ON/OFF FLAG 
          LMN    0           PROCESSOR ENTRY HAS NOT BEEN PROCESSED 
 PRPA     EQU    *-1
*         LMN    1           (PROCESSOR ENTRY HAS BEEN PROCESSED) 
          NJN    PRP3        IF ENTRY NOT TO BE USED
          LDN    2           SET DESCRIPTOR ID
          SHN    10 
          RAD    CD 
          RJM    WOW         WRITE OLD FORMAT WORD
          LDN    ZERL 
          CRD    CD 
          LDD    T1          SET PMF HARDWARE AVAILABILITY
          STD    CD+4 
          RJM    WOW         WRITE OLD FORMAT WORD
          RJM    RNW         READ NEXT WORD OF NEW FORMAT 
          RJM    GSF         GET SAB FWA
          ADN    1           READ SECOND WORD OF MAINFRAME DESCRIPTOR 
          CRD    CM 
          LDD    CM+3        SET EI NAME
          STD    CD+4 
          RJM    WOW         WRITE OLD FORMAT WORD
          RJM    RNW         READ NEXT SAB WORD 
          LDD    T7          SET EI/MICROCODE VERIFIED FLAG 
          SHN    1-3
          LPN    2
          RAD    CD+4 
          RJM    WOW         WRITE OLD FORMAT WORD
          LDD    MA          SET EI DATE
          CWD    CM 
          CRD    CD 
          LDN    0
          STD    CD+3 
          STD    CD+4 
          RJM    WOW         WRITE OLD FORMAT WORD
          LJM    PRP3        RETURN 
 RNW      SPACE  4,10 
**        RNW - READ NEXT SAB WORD. 
* 
*         ENTRY  (T4) = CURRENT SAB INDEX.
* 
*         EXIT   (T4) INCREMENTED.
*                (CD - CD+4) = NEXT SAB WORD. 
* 
*         CALLS  GSF. 
  
  
 RNW      SUBR               ENTRY/EXIT 
          AOD    T4          INCREMENT INDEX
          RJM    GSF         GET SAB FWA
          ADD    T4 
          CRD    CD 
          UJN    RNWX        RETURN 
 RPB      SPACE  4,10 
**        RPB - READ PARAMETER BLOCK. 
* 
*         EXIT   (A) .GE. 0 IF RHF VALIDATION CALL. 
*                (A) .LT. 0 OTHERWISE.
*                (VH) = VALIDATION LEVEL INITIALIZED TO *EOVB*. 
*                TABLE *TPMB* CONTAINS USER PARAMETER BLOCK.
* 
*         USES   BS, VH.
* 
*         CALLS  CKA. 
  
  
 RPB1     LDN    1           INDICATE RHF VALIDATION CALL 
  
 RPB      SUBR               ENTRY/EXIT 
          LDN    TPMBL/5     READ PARAMETER BLOCK 
          STD    BS 
          RJM    CKA
          CRM    TPMB,BS
          LDN    EOVB        INITIALIZE VALIDATION LEVEL
          STD    VH 
          LDM    DEVC        DETERMINE VALIDATION CALL TYPE 
          SBK    FNAD 
          MJN    RPBX        IF NOT RHF VALIDATION CALL 
          SBN    LNAD-FNAD
          MJN    RPB1        IF RHF VALIDATION CALL 
          LCN    1
          UJN    RPBX        EXIT 
 SMP      SPACE  4,20 
**        SMP - SET AND/OR MATCH PARAMETERS.
* 
*         ENTRY  (IR+3 - IR+4) = RELATIVE PARAMETER BLOCK ADDRESS.
*                (IR+1) = CONTROL POINT NUMBER. 
* 
*         EXIT   (A) = 0, IF DEVICE FOUND IN EST AS EXPECTED. 
*                    = 1, IF DEVICE NOT IN EST AS EXPECTED. 
*                    = -1, IF BAD PARAMETER FOUND (*VH* SET.) 
*                (EA) = (ESTO) = EST ORDINAL. 
*                (SB) = 0.
*                (TI) = TABLE *TDVC* INDEX INITIALIZED. 
*                (VH) = VALIDATION LEVEL POINTER INITIALIZED TO *EOVB*. 
*                TABLE *TPMB* CONTAINS USER PARAMETER BLOCK.
*                TO *VCE16*, IF RETURNING UNIT, OR IF ERROR DETECTED. 
* 
*         USES   EA, LO, TI, VH, CM - CM+4. 
* 
*         CALLS  CMT, FDC, FMN, MEE, VTP. 
* 
*         MACROS SFA. 
  
  
 SMP      SUBR               ENTRY/EXIT 
          LDN    0           INITIALIZE RESPONSE CODE 
          STD    SB 
          LDN    NOPE        INITIALIZE EST ORDINAL FOR SEARCH
          STD    EA 
  
*         PART I.  VERIFY THAT AT LEAST A MINIMAL SET OF PARAMETERS 
*                  HAVE BEEN PASSED.
  
          LDM    FNCH 
          SHN    21-RTNU
          PJN    SMP1        IF NOT RETURNING UNIT
          LDN    0
          LJM    VCE16       RETURN EQUIPMENT 
  
*         IF ESTO NOT GIVEN, EITHER *DEVM* MUST BE *DE*, *MT*, *NT*,
*         *CT* OR *AT*, OR ELSE CHANNEL, EQUIP AND UNIT MUST BE GIVEN.
  
 SMP1     LDM    ESTV        CHECK USER EST ORDINAL 
          SHN    21-VBCD
          MJN    SMP4        IF EST ORDINAL SUPPLIED
          LDM    DEVM 
          LMC    2RDE 
          ZJP    SMP15       IF *DE* REQUEST
          LDM    CHAN        CHECK USER CHANNEL 
          SHN    21-VBCD
 SMPA     PJN    SMP3        IF CHANNEL NOT SUPPLIED
*         PJN    SMP2        (RHF VALIDATION CALL)
          LDM    EQPV        CHECK USER EQUIPMENT 
          SHN    21-VBCD
          PJN    SMP2        IF EQUIPMENT NOT SUPPLIED
          LDM    UNIT        CHECK USER UNIT NUMBER 
          SHN    21-VBCD
 SMPB     MJN    SMP5        IF UNIT NUMBER SUPPLIED
*         UJN    SMP5        (RHF VALIDATION CALL - NO UNIT NUMBER) 
 SMP2     LDN    VRIP        INCORRECT PARAMETER COMBINATION
          LJM    VCE16       EXIT WITH ERROR RESPONSE CODE
  
 SMP3     LDM    DEVM        CHECK FOR MAGNETIC TAPE EQUIPMENT
          RJM    CMT
          NJN    SMP2        IF MNEMONIC SPECIFIED NOT TAPE 
          RJM    VTP         VALIDATE TAPE PREASSIGNMENT PARAMETERS 
*         UJN    SMP4        VERIFY EST ORDINAL 
  
*         PART II.  VERIFY THAT THE PARAMETERS PASSED ARE CONSISTENT
*                   AND SUPPLY THE MISSING PARAMETERS.
  
*         VERIFY THE EST ORDINAL IN *ESTO*. 
  
 SMP4     LDN    EOVB        INITIALIZE VALIDATION BYTE 
          STD    VH 
          LDM    FNCH        CHECK NOT-IN-EST FUNCTION BIT
          SHN    21-NEST
          MJN    SMP2        IF NOT SUPPOSED TO BE IN EST 
          LDM    ESTO        EST ORDINAL
          ZJN    SMP8        IF NOT PRESENT 
          STD    EA 
          SBD    LO 
          PJN    SMP8        IF EST ORDINAL OUT OF RANGE
          LDD    EA          SET LAST EST ORDINAL + 1 TO SEARCH 
          ADN    1
          STD    LO 
  
*         SEARCH THE EST FOR AN ENTRY.
* 
*         THE PARAMETERS SUPPLIED MUST HAVE BEEN- 
*                EST ORDINAL, OR
*                DEVICE MNEMONIC = *MT*, *NT*, *CT* OR *AT* 
*                  (*VTP* GOT ESTO), OR 
*                CHANNEL, EQUIPMENT, AND UNIT, OR 
*                CHANNEL, EQUIPMENT, UNIT, AND DEVICE CODE, OR
*                CHANNEL, EQUIPMENT, UNIT, AND DEVICE MNEMONIC. 
  
 SMP5     RJM    MEE         FIND MATCHING EST ENTRY
          NJN    SMP10       IF ENTRY WAS NOT FOUND 
          LDD    ES+3 
          STM    DEVM        SUPPLY DEVICE CODE 
          LDM    DEVC 
          ZJN    SMP6        IF NO DEVICE CODE FROM CALLER
          RJM    FDC         FIND DEVICE CODE 
          UJN    SMP7        RETURN WITH STATUS 
  
 SMP6     RJM    FMN         FIND MNEMONIC
 SMP7     ZJN    SMP9        IF MATCH FOUND 
 SMP8     LCN    1           SET ERROR STATUS 
 SMP9     LJM    SMPX        EXIT 
  
*         VERIFY EQUIPMENT THAT IS NOT IN THE EST.
  
*         THE PARAMETERS SUPPLIED MUST HAVE BEEN- 
*                CHANNEL, EQUIPMENT, UNIT, AND DEVICE CODE, OR
*                CHANNEL, EQUIPMENT, UNIT, AND DEVICE MNEMONIC. 
  
 SMP10    MJN    SMP13       IF ENTRY WAS EXPECTED
          LDM    FNCH 
          SHN    21-RTNU
          MJN    SMP13       IF UNIT RETURN REQUESTED 
          LDM    DEVC 
          ZJN    SMP11       IF NO DEVICE CODE FROM CALLER
          RJM    FDC         FIND DEVICE CODE 
          UJN    SMP12       RETURN WITH STATUS 
  
 SMP11    LDM    DEVM 
          ZJN    SMP14       IF NO DEVICE MNEMONIC FROM CALLER
          RJM    FMN         FIND MNEMONIC
 SMP12    LDN    1           EQUIPMENT NOT FOUND AS EXPECTED
          UJN    SMP9        RETURN WITH STATUS 
  
 SMP13    LDN    VREN&VRIP   ENTRY NOT IN EST 
 SMP14    LMN    VRIP        INCORRECT PARAMETER COMBINATION
          LJM    VCE16       RETURN WITH ERROR RESPONSE CODE
  
*         PROCESS *DE* REQUEST. 
  
*         THE PARAMETERS SUPPLIED MUST HAVE BEEN- 
*                DEVICE MNEMONIC = *DE*.
  
 SMP15    STM    MEEA        ENABLE *DE* PROCESSING IN *MEE*
 SMP16    RJM    MEE         FIND MATCHING EST ENTRY
          NJP    SMP10       IF NO ENTRY FOUND
          LDD    ES+3        SET MNEMONIC FROM EST
          STM    DEVM 
          RJM    FMN         FIND MNEMONIC
          MJN    SMP17       IF MNEMONIC NOT FOUND
          LDM    TMSK,TI
          LPN    70 
          ZJN    SMP16       IF NO HIGH SPEED PORT
          LDM    FNCH 
          SHN    21-NEST
          MJN    SMP13       IF NOT EXPECTED IN EST 
          RJM    MCH         MATCH / SET CHANNELS 
          ZJN    SMP18       IF CHANNEL MATCHED OR WAS NOT SPECIFIED
 SMP17    LCN    1           SET ERROR STATUS 
 SMP18    LJM    SMPX        EXIT 
 TEM      SPACE  4,15 
**        TEM - TEST FOR EXTENDED MEMORY PRESENT. 
* 
*         ENTRY  CALLER HAS REQUESTED VALIDATION FOR EXTENDED MEMORY
*                WITH NO MATCHING PARAMETERS FOUND IN THE EST.  ONE 
*                MORE PASS IS REQUIRED TO ENSURE THAT EXTENDED
*                MEMORY, IF FOUND WITH AN ALTERNATE MNEMONIC, IS NOT
*                BEING USED BY THE SYSTEM.
* 
*         EXIT   (A) = RESPONSE CODE RETURNED TO CALLER.
* 
*         USES   EA, CM - CM+4, ES - ES+4.
* 
*         MACROS SFA. 
  
  
 TEM3     LDD    MA          RETURN ADDRESS OF PREALLOCATED SPACE 
          CWM    TEMA,ON
          SBN    1
          CRM    PSNV,ON
          LDN    VRGR        VALIDATION GRANTED 
  
 TEM      SUBR               ENTRY/EXIT 
          LDM    FNCH 
          LPN    WRTM+PREM
          LMN    WRTM+PREM
          NJN    TEM3        IF WRITING ONLY IN PREALLOCATED AREA 
          LDK    EXML        READ EXTENDED MEMORY EST ORDINAL 
          CRD    CM 
          LDD    CM+4 
          LPC    777
          ZJN    TEMX        IF NO EXTENDED MEMORY PRESENT
          SFA    EST         READ EST ENTRY 
          ADK    EQDE 
          CRD    ES 
          ADK    EQAE-EQDE   READ EQUIPMENT ASIGNMENT 
          CRD    CM 
          LDD    ES 
          LPN    3
          LMN    3
          NJN    TEM1        IF EXTENDED MEMORY NOT DOWN
          LDD    CM+4 
          ZJN    TEMX        IF EXTENDED MEMORY DOWN AND UNASSIGNED 
          ERRNZ  VRGR        ERROR IF RESPONSE VALUE CHANGES
 TEM1     LDN    VRUS        EQUIPMENT IN USE 
          UJN    TEMX        RETURN 
  
  
 TEMA     VFD    12/0          *PSNV* VALUE 
          VFD    24/ECSRA*100  PREALLOCATED AREA RAE
          VFD    24/ECSFL*100  PREALLOCATED AREA FLE
 VTP      SPACE  4,30 
**        VTP - VALIDATE TAPE PREASSIGNMENT INFORMATION.
* 
*         ENTRY  (EA) = *NOPE*. 
* 
*         EXIT   (ESTO) = EST ORDINAL OF THE PREASSIGNED TAPE,
*                IF NO ERRORS.  PROCESSING THEN CONTINUES IN *SMP*
*                AS IF THE USER HAD SUPPLIED ONLY THE EST ORDINAL.
* 
*                THE *DIAGNOSTIC-ASSIGNED* BIT IS ALSO SET IN THE 
*                TAPE-S FNT ENTRY TO ONLY ALLOW *CIO* OPERATIONS
*                THAT REMOVE THE ENTRY FROM THE FNT AND TO ABORT
*                ALL OTHERS.
* 
*         ERROR  TO *VCE16* WITH (A) = ERROR RESPONSE CODE IF ANY OF
*                THE FOLLOWING CONDITIONS EXIST.
*                1.  USER-S *DEVM* AND EJT ORDINAL DO NOT MATCH 
*                    WITH CORRESPONDING FIELDS IN EST AND EAT ENTRIES.
*                2.  NO FNT/FST ENTRY CONTAINS A MATCHING EST 
*                    ORDINAL. 
*                3.  USER ATTEMPTED TO LOAD TAPE CONTROLWARE WHEN 
*                    USING TAPE PREASSIGNMENT.
*                4.  USER WAS PREASSIGNED A LABELED TAPE. 
* 
*         USES   EA, FS+4, CM - CM+4. 
* 
*         CALLS  SFN. 
* 
*         MACROS NFA, SFA.
  
  
 VTP7     AOD    EA          ADVANCE EST ORDINAL
          LMD    LO 
          NJN    VTP2        IF MORE ENTRIES TO PROCESS 
          LDN    VRFN        FILE NOT FOUND 
          UJN    VTP1        EXIT WITH ERROR
  
 VTP      SUBR               ENTRY/EXIT 
          LDM    FNCH        CHECK FOR LOAD CONTROLWARE REQUEST 
          SHN    21-LMEM
          PJN    VTP2        IF CONTROLWARE LOAD NOT REQUESTED
          LDN    VRBC        NO BC LOAD ON PREASSIGN
 VTP1     LJM    VCE16       EXIT WITH ERROR RESPONSE CODE
  
 VTP2     SFA    EST,EA      READ NEXT EST ENTRY
          ADK    EQDE 
          CRD    CM 
  
*         TEST IF USER-SUPPLIED DEVICE MNEMONIC AND EJT 
*         ORDINAL MATCH THOSE IN EST AND EAT ENTRIES. 
  
          LDD    CM+3 
          ZJN    VTP7        IF EMPTY ENTRY 
          LMM    DEVM 
 VTP3     NJN    VTP7        IF MNEMONICS DO NOT MATCH
          SFA    EST,EA      READ EQUIPMENT ASSIGNMENT
          ADK    EQAE 
          CRD    CM 
          LDD    CM+4 
          LMM    EJTO 
          NJN    VTP3        IF EJT ORDINALS DO NOT MATCH 
          LDD    EA          STORE EST ORDINAL
          STM    ESTO 
  
*         SEARCH FNT/FST TO ENSURE THAT EST ORDINALS MATCH AND
*         THAT THE PREASSIGNED TAPE IS UNLABELED. 
  
          LDN    1           FNT/FST UPDATE REQUIRED
          RJM    SFN         SEARCH FNT/FST 
          ZJN    VTP4        IF EST ORDINAL FOUND IN FNT/FST
          LMN    2
          ZJN    VTP3.1      IF FILE NOT FOUND
          LDK    VRIS&VRFN   I/O SEQUENCE ERROR 
 VTP3.1   LMN    VRFN        FILE NOT FOUND 
          UJN    VTP4.1      EXIT WITH ERROR RESPONSE CODE
  
 VTP4     LDD    FS+4 
          SHN    21-13
          PJN    VTP6        IF UNLABELED TAPE WAS PREASSIGNED
          LDN    VRLT        LABELED TAPE WAS PREASSIGNED 
 VTP4.1   LJM    VCE16       EXIT WITH ERROR RESPONSE CODE
  
*         SET *DIAGNOSTIC-ASSIGNED* BIT IN FNT. 
  
 VTP6     SHN    13-21
          SCN    1           CLEAR FILE BUSY STATUS 
          LMN    1
          STD    FS+4 
          LDD    CM+3        SET *DIAGNOSTIC-ASSIGNED* BIT IN FNT 
          SCN    40 
          LMN    40 
          STD    CM+3 
          NFA    FA,R        REWRITE FNT/FST ENTRIES
          CWD    CM 
          ADN    FSTL 
          CWD    FS 
          LDC    UJNI+VCE5-VCEA  ALTER BRANCH ADDRESS 
          STM    VCEA 
          LJM    VTPX        EXIT 
  
          ERRNG  37+VCEA-VCE5  ERROR IF OUT OF RANGE
 WOW      SPACE  4,10 
**        WOW - WRITE OLD FORMAT WORD.
* 
*         ENTRY  (BS) = CURRENT CM WORD LENGTH OF OLD FORMAT BLOCK. 
*                (CD - CD+4) = NEXT WORD FOR OLD FORMAT BLOCK.
* 
*         EXIT   (A) .NE. 0.
*                (BS) INCREMENTED.
  
  
 WOW      SUBR               ENTRY/EXIT 
          LDD    MA 
          CWD    CD 
          CRM    TPMB+1*5,ON
 WOWA     EQU    *-1
          LDN    5           INCREMENT ADDRESS FOR NEXT WORD
          RAM    WOWA 
          AOD    BS          INCREMENT CM WORD LENGTH 
          UJN    WOWX        RETURN 
 PRS      TITLE  PRESET FOR RHF PROCESSING. 
**        PRS - PRESET ROUTINES FOR RHF PROCESSING. 
* 
*         CERTAIN ROUTINES NEED SLIGHT CHANGES, SINCE RHF 
*         PROCESSING IS SOMEWHAT DIFFERENT FOR RHF DIAGNOSTICS. 
*         *PRS* MAKES THOSE REQUIRED CHANGES. 
* 
*         EXIT   (A) .GE. 0 IF RESPONSE CODE IS TO BE RETURNED TO 
*                           REQUESTING JOB. 
*                (A) .LT. 0 IF FURTHER VALIDATION REQUIRED. 
* 
*                APPROPRIATE ROUTINES HAVE BEEN ALTERED TO ALLOW
*                RHF VALIDATION PROCESSING. 
  
  
 PRS7     AOM    VCEB        SET *COLD* VALIDATION PRIVILEGES 
          LCN    0           VALID DEVICE CODE
  
 PRS      SUBR               ENTRY/EXIT 
          LDM    FNCH 
          SHN    21-RTNU
          MJN    PRS7        IF RETURNING EQUIPMENT 
          LDM    DEVC 
          LMC    DEVC.NCR 
          ZJN    PRS4        IF REMOTE NAD
          LMN    DEVC.NCL&DEVC.NCR
          ZJN    PRS5        IF LOCAL NAD 
          LDM    FNCH 
          SHN    21-NEST
          MJN    PRSX        IF NOT IN EST
          LDC    DCVB        NO MATCH ON DEVICE CODE
          RJM    SVB
          LDN    VRNM 
 PRS2     UJN    PRSX        EXIT 
  
 PRS4     LDC    *           ALTER BRANCH ADDRESS 
          ORG    *-1
          LOC    UESD 
          UJN    UES11
          LOC    *O 
          STM    UESD 
          LDM    TCUE 
          LPN    17 
          NJN    PRS5        IF TCU ENABLES SET 
          LDC    TCVB 
          RJM    SVB
          LDN    VRTC        NO TCU ENABLES SET 
          UJN    PRS2        EXIT 
  
 PRS5     LDC    *           ALTER BRANCH ADDRESS 
          ORG    *-1
          LOC    MUNA 
          UJN    MUN5 
          LOC    *O 
          STM    MUNA 
          LDC    *           ALTER BRANCH ADDRESS 
          ORG    *-1
          LOC    SMPA 
          PJN    SMP2 
          LOC    *O 
          STM    SMPA 
          ISTORE SMPB,(UJN SMP5)  IGNORE UNIT NUMBER CHECK
          LDC    VWDM+VB3M   SET VALIDATION FOR LOCAL NAD 
          STM    UESB 
          LDC    SHNI+21-VBS3  CHECK LOCAL NAD SHARE BYTE 
          STM    UESC 
          LDN    RVES-RDES   CHANGE *REQM* SUBFUNCTION
          RAM    UUSB 
          LDC    *           ALTER BRANCH ADDRESS 
          ORG    *-1
          LOC    UUSA 
          PJN    UUS1 
          LOC    *O 
          STM    UUSA 
          LDM    FNCH 
          LPC    CMEM+SPCM
          LMC    CMEM+SPCM
          NJN    PRS6        IF NOT LOCAL NAD LOAD OR DUMP
          LDK    PSNI        ALLOW CONTROLWARE LOAD/DUMP ON UP NAD
          STM    UESE 
          LDC    STDI+CM+4   SAVE CHANNEL NUMBER
          STM    CAEA 
          AOM    UUSC        SET LOAD/DUMP CONTROLWARE FLAG 
 PRS6     LJM    PRS7        SET VALIDATION STATUS
 DVT      SPACE  4,15 
**        DVT - DETERMINE VALIDATION TYPE.
* 
*         EXIT   (A) = RESPONSE CODE, IF ERROR DETECTED.
*                (A) = 0, IF NO ERRORS FOUND. 
*                (T1) = TABLE INDEX OF NEXT ROUTINE TO PROCESS, IF
*                       NO ERRORS FOUND.
*                IF AN ERROR IS DETECTED, THE APPROPRIATE VALIDATION
*                BYTE IS FLAGGED IN THE PARAMETER BLOCK.
* 
*         USES   T1.
* 
*         CALLS  SVB. 
  
  
 DVT      SUBR               ENTRY/EXIT 
          LDM    TCUE        SET BUFFER SIZE TYPE 1 
          LPN    17 
          ADN    20 
          STM    TCUE 
          LDM    DEVC        DETERMINE NAD TYPE 
          LMC    DEVC.NCR 
          NJN    DVT1        IF NOT REMOTE NAD
          LJM    DVT6        PROCESS REMOTE NAD 
  
 DVT1     LDM    FNCH 
          SHN    21-LMEM
          MJN    DVT4        IF LOCAL NAD DEDICATED REQUESTED 
          LDM    EQPV 
          SHN    21-VBS3
          MJN    DVT2        IF SHARE BYTE SET
          LDN    LNCT        SET LOCAL NAD CONCURRENT TABLE INDEX 
          STD    T1 
          ERRNZ  LNCT-VRGR   (EXIT ERROR IF *LNCT* VALUE CHANGED) 
          UJN    DVTX        EXIT 
  
 DVT2     LDC    LNVB        ERROR - SHARE BYTE SET 
          RJM    SVB
          LDN    VRSB 
 DVT3     UJN    DVTX        EXIT 
  
 DVT4     LDM    EQPV 
          SHN    21-VBS3
          PJN    DVT5        IF SHARE BYTE NOT SET
          LDN    LNDT        SET LOCAL NAD DEDICATED TABLE INDEX
          STD    T1 
          LDN    0
          UJN    DVT3        EXIT 
  
 DVT5     LDC    LNVB        ERROR - SHARE BYTE NOT SET 
          RJM    SVB
          LDN    VRNB 
          UJN    DVT3        EXIT 
  
 DVT6     LDM    RDVC 
          LMC    DEVC.NCR 
          ZJN    DVT8        IF REMOTE NAD DEVICE CODE
          LDC    RDVB        ERROR - REMOTE NAD DEVICE CODE BAD 
          RJM    SVB
          LDN    VRRB 
 DVT7     UJN    DVT3        EXIT 
  
 DVT8     LDM    LTCV        TEST REMOTE NAD SHARE BYTE 
          SHN    21-VBS3
          MJN    DVT9        IF SHARE BYTE SET
          LDN    LNCT        PROCESS LOCAL AND REMOTE NAD CONCURRENT
          UJN    DVT11       EXIT 
  
 DVT9     LDM    EQPV        TEST LOCAL NAD SHARE BYTE
          SHN    21-VBS3
          MJN    DVT10       IF LOCAL AND REMOTE NAD DEDICATED
          LDN    RNDT        PROCESS REMOTE NAD DEDICATED 
          UJN    DVT11       EXIT 
  
 DVT10    LDN    LRDT        PROCESS LOCAL AND REMOTE NAD DEDICATED 
 DVT11    STD    T1 
          LDN    0
          UJN    DVT7        EXIT 
 VDN      SPACE  4,10 
**        VDN - VALIDATE DEDICATED NAD USAGE. 
* 
*         EXIT   (A) = POSITIVE, IF USER UNAUTHORIZED ACCESS. 
*                (A) = NEGATIVE, IF USER AUTHORIZED ACCESS. 
* 
*         USES   CM - CM+4. 
  
  
 VDN      SUBR               ENTRY/EXIT 
          LDD    CP          READ USER ACCESS WORD
          ADK    AACW 
          CRD    CM 
          LDD    CM+3 
          SHN    21-4 
          MJN    VDNX        IF USER AUTHORIZED ACCESS
          LDN    VRUA        UNAUTHORIZED ACCESS TO NETWORK 
          UJN    VDNX        RETURN 
 VLC      SPACE  4,10 
**        VLC - VALIDATE LOCAL NAD CONCURRENTLY.
* 
*         EXIT   (A) = RESPONSE CODE RETURNED TO *MALET*. 
* 
*         CALLS  VDN. 
  
  
 VLC      SUBR               ENTRY/EXIT 
          RJM    VDN
          PJN    VLC1        IF USER NOT ALLOWED ACCESS 
          LDN    VRGR        VALIDATION GRANTED 
          UJN    VLCX        EXIT 
  
 VLC1     LDN    VRUA        UNAUTHORIZED TO ACCESS NETWORK 
          UJN    VLCX        EXIT 
 VLD      SPACE  4,10 
**        VLD - VALIDATE LOCAL NAD DEDICATED. 
* 
*         ENTRY  (ES - ES+4) = NAD EST ENTRY. 
* 
*         EXIT   (A) = RESPONSE RETURNED TO CALLER. 
* 
*         CALLS  TSA. 
  
  
 VLD      SUBR               ENTRY/EXIT 
          LDD    ES 
          SHN    0-7
          LPN    3
          ZJN    VLDX        IF SUBSYSTEM NOT USING NAD 
          ERRNZ  VRGR        (EXIT ERROR IF *VRGR* VALUE CHANGES) 
          LDN    VRUS        UNIT IN USE
          UJN    VLDX        RETURN 
          TTL    CVL - COMMON VALIDATION INTERFACE. 
  
  
**        COMMON DECKS. 
  
  
*CALL     COMPCUA 
*CALL     COMPCRS 
  
          OVERFLOW           CHECK FOR LOAD OVERFLOW
          TITLE  MASS STORAGE VALIDATION OVERLAY. 
          QUAL   3CV
          IDENT  3CV,ECVX 
*COMMENT  CVL - MASS STORAGE VALIDATION OVERLAY.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 3CV      SPACE  4,10 
          ORG    OVLA 
 ECE      SPACE  4,10 
**        ECV - *3CV* ENTRY POINT.
  
  
 ECV      SUBR               ENTRY/EXIT 
          UJN    ECVX        EXIT 
 ECS      SPACE  4,15 
**        ECS - EXTENDED CORE STORAGE CALL. 
* 
*         THIS ROUTINE ADJUSTS THE EXCHANGE PACKAGE RAE/FLE AND SETS
*         APPROPRIATE INFORMATION IN THE USER-S CALL BLOCK. 
* 
*         EXIT   (A) = RESPONSE CODE. 
*                EXCHANGE PACKAGE AND USER CALL BLOCK ADJUSTED. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  UXP. 
  
  
 ECS11    LDN    VRNZ        NON-ZERO EXTENDED MEMORY FL
  
 ECS      SUBR               ENTRY/EXIT 
          LDD    CP 
          ADN    ECSW 
          CRD    CM 
          LDD    CM+4 
          NJN    ECS11       IF EXTENDED MEMORY FIELD LENGTH IS NONZERO 
          STM    PSNV        CLEAR UPPER BYTE RAE/FLE ADDR IN PARAM BLK 
  
*         INITIALIZE THE RAE AND FLE POINTERS.
  
          LDC    ECSA 
          STD    T6          SET EXCHANGE PACKAGE POINTER 
          STD    T7          SET PARAMETER BLOCK POINTER
          LDM    TMSK,TI     CHECK FOR CPU ACCESS PATH
          LPN    70 
          NJN    ECS1        IF CPU ACCESS PATH 
          LDN    ECSC-ECSA
          RAD    T6          RESET EXCHANGE PACKAGE POINTER 
 ECS1     LDM    FNCH        FUNCTION CHARACTERISTICS 
          SHN    21-NPRE
          MJN    ECS3        IF REQUEST TO ACCESS OUTSIDE PREALLOCATED
  
*         SET PARAMETER BLOCK.
  
 ECS2     LDI    T7          SET RAE
          STM    PKSN 
          LDM    1,T7 
          STM    PKSN+1 
          LDM    2,T7        SET FLE
          STM    PKSN+2 
          LDM    3,T7 
          STM    PKSN+3 
          RJM    UXP         UPDATE EXCHANGE PACKAGE
          LDN    VRGR        VALIDATION GRANTED 
          LJM    ECSX        EXIT - PROCESS APROPRIATE VALIDATION 
  
*         VALIDATE REQUEST TO ACCESS OUTSIDE OF PREALLOCATED AREA.
  
*         DETERMINE FIELD LENGTH. 
  
 ECS3     SHN    21-NEST-21+NPRE+22 
          MJN    ECS4        IF NOT IN EST
          LDD    ES+4 
          SHN    3
          ADK    DILL 
          CRD    CD          GET ACCESS MODE FROM MST 
          ADK    DDLL-DILL
          CRD    CM          GET EM SIZE FROM MST 
          LDD    CM+1        SET FLE IN PARAMETER BLOCK 
          STM    ECSA+2 
          LDD    CM+2 
          STM    ECSA+3 
  
*         DETERMINE REFERENCE ADDRESS.
  
 ECS4     LDM    FNCH        FUNCTION CHARACTERISTICS 
          LPC    SPCM&NESM
          SHN    21-SPCL
          PJN    ECS6        IF NOT REQUESTING MAINTENANCE HALF OF ECS
          ERRNG  SPCL-NEST   CODE ASSUMES BIT POSITIONS 
          ERRNG  NEST+5-SPCL CODE ASSUMES BIT POSITIONS 
          SHN    21-NEST-21+SPCL
          MJN    ECS5        IF NOT IN EST
          LDD    CD+3 
          SHN    21-11
          PJN    ECS9        IF MAINTENANCE MODE NOT SET
 ECS5     LDC    400         SET BIT 20 IN RAE FOR EXCHANGE PACKAGE 
 ECS6     STM    ECSA        SET RAE IN PARAMETER BLOCK 
          LDN    0
          STM    ECSA+1 
  
*         VERIFY ACCESS MODE. 
  
          LDM    FNCH        FUNCTION CHARACTERISTICS 
          SHN    21-WRTR
          MJN    ECS8        IF WRITING OUTSIDE PREALLOCATED AREA 
          LDC    ECSB        SET PARAMETER BLOCK TO PREALLOCATED AREA 
          STD    T7 
 ECS7     UJP    ECS2        REWRITE EXCHANGE PACKAGE 
  
 ECS8     SHN    21-NEST-21+WRTR+22 
          MJN    ECS7        IF NOT IN EST
          LDD    ES 
          LPN    3
          LMN    3
          ZJN    ECS7        IF DEVICE *DOWN* 
          LDN    VRUS        VALIDATION DENIED (EQUIPMENT IN USE) 
          UJN    ECS10       PROCESS USER NOT VALIDATED 
  
 ECS9     LDN    VRMA        VALIDATION DENIED CODE (NO MA PARAMETER) 
 ECS10    LJM    ECSX        PROCESS USER VALIDATION
  
  
*         EXCHANGE PACKAGE AND PARAMETER BLOCK VALUES.
  
 ECSA     VFD    24/ECSRA*100  PREALLOCATED AREA RAE
*         VFD    24/0          (ACCESSING OUTSIDE PREALLOCATED AREA)
*         VFD    24/4000000    (ACCESSING MAINTENANCE HALF) 
          VFD    24/ECSFL*100  PREALLOCATED AREA FLE
*         VFD    24/*DDLL* FL  (ACCESSING OUTSIDE PREALLOCATED AREA)
  
*         ALTERNATE PARAMETER BLOCK VALUES WHEN NOT WRITING OUTSIDE 
*         PREALLOCATED AREA.
  
 ECSB     VFD    24/ECSRA*100  PREALLOCATED AREA RAE
          VFD    24/ECSFL*100  PREALLOCATED AREA FLE
  
*         ALTERNATE EXCHANGE PACKAGE VALUES WHEN NO CPU PATH. 
  
 ECSC     VFD    24/0        RAE WHEN NO CPU ACCESS PATH
          VFD    24/0        FLE WHEN NO CPU ACCESS PATH
 ESM      SPACE  4,30 
**        ESM - EXTENDED SEMI-CONDUCTOR MEMORY STORAGE CALL.
* 
*         THIS ROUTINE CAN CREATE A LOCAL FILE NAMED  EM*  IF DEVICE
*         IS A DEMA DISK AND PARAMETERS CALL FOR  EM*  FILE CREATION. 
*         THE FILE IS CREATED IN THE *ESM* HARDWARE BY OVERLAY *0BF*. 
*         THIS  EM*  FILE IS ASSIGNED BY THE SYSTEM (0BF) AND AN FNT IS 
*         CREATED.  THE  EM*  FILE IS ASSIGNED SPECIAL FILE 
*         STATUS (MALET IS *SSJ=*) AND THE FILE WILL HAVE AUTO-DROP 
*         STATUS.  AUTO-DROP STATUS ENSURES THAT THE FILE WILL NOT BE 
*         AVAILABLE FOR ANY CIO OPERATIONS (PARTICULARLY A *RETURN*), 
*         WHEN MALET IS TERMINATED. 
*         THE PHYSICAL RAE OF  EM*  IS DETERMINED, ROUNDED UP TO THE
*         NEAREST 1K, AND PLACED IN THE USER-S EXCHANGE PACKAGE 
*         WITH AND FLE OF 1K.  THE RAE AND FLE ARE ALSO PLACED
*         IN THE CALLER-S PARAMETER BLOCK.
* 
*         ENTRY  (SB) = PRESENT VALIDATION CODE.
*                THE USER-S PARAMETER BLOCK CONTAINS DESIRED DATA.
* 
*         EXIT   (SB) = UPDATED VALIDATION CODE IF ERROR ENCOUNTERED. 
*                TO PCE2, IF ERROR FLAG SET (* CVL CALL ERROR*).
*                EXCHANGE PACKAGE AND USER CALL BLOCK ARE ADJUSTED. 
*                EM* EXISTS AS A USER LOCAL FILE  (*SSST* TYPE).
* 
*         USES   EP, T2 - T7, CM - CM+4.
* 
*         CALLS  CEA, ECS, UXP, *0BF*.
* 
*         MACROS EXECUTE, MONITOR, PAUSE, SFA.
  
  
 ESM10    LMK    2RDP&2RDB
          NJN    ESMX        IF NOT LOW SPEED PORT EM DEVICE
          RJM    ECS         SET RAE AND FLE IN PARAMETER BLOCK 
          STD    SB          SAVE RESPONSE
  
 ESM      SUBR               ENTRY/EXIT 
          LDD    SB 
          ZJN    ESM1        IF VALIDATION GRANTED
          LMN    VRSH 
          ZJN    ESM1        IF VALIDATION GRANTED
          LMN    VRDW&VRSH
          NJN    ESMX        IF VALIDATION DENIED 
 ESM1     LDM    DEVM 
          LMC    2RDB 
          NJN    ESM10       IF NOT DEMA DEVICE 
 ESM2     LDM    FNCH 
          SHN    21-BESM     TEST FUNCTION CHARACTERISTCS FOR LFN = EM* 
          MJN    ESMX        IF NOT BUILD EM* LOCAL FILE
          LDD    CP 
          ADN    ECSW 
          CRD    CM 
          LDD    CM+4 
          ZJN    ESM5        IF ESM FIELD LENGTH IS ZERO
          LDN    VRNZ        NON-ZERO EXTENDED MEMORY FL
 ESM3     STD    SB          UPDATE ERROR RESPONSE CODE 
          UJN    ESMX        RETURN 
  
 ESM4     LDN    VRIC        INCORRECT CEVAL REQUEST PARAMETER
          UJN    ESM3        PROCESS NO ESM IN SYSTEM ERROR 
  
 ESM5     LDK    EXML        READ EXTENDED MEMORY EST ORDINAL 
          CRD    CM 
          LDD    CM+4 
          LPC    777
          ZJN    ESM4        IF NO EXTENDED MEMORY EQUIPMENT
          STD    EP          EST ORDINAL TO *0BF* PARAMETER AREA (20B)
 ESM7     LDD    MA 
          CWD    EP          SAVE LOW CORE REGISTERS (20 - 24)
          CRM    SAVE,ON
          CWD    ES          SAVE LOW CORE REGISTERS (40 - 44)
          CRM    SAVE+5,ON
          LDC    2REM 
          STD    ES          FILE NAME TO (40-43) 
          LDN    1R*
          SHN    6
          STD    ES+1 
          LDN    0
          STD    ES+2 
          STD    ES+3 
          STM    OVLB-1 
          EXECUTE 0BF,OVLB   CREATE FNT ENTRY (LFN = EM*) 
          PSN    0
          LDD    EP+1        RNI HERE FROM *0BF* IF FILE EXISTED
          STD    T6 
          NJN    ESM9        IF TRACK ASSIGNED
          PAUSE 
          LDD    CM+1 
          ZJN    ESM8        IF NO ERROR FLAG SET 
          LJM    PCE2        * CVL CALL ERROR * 
  
 ESM8     LDN    ZERL 
          CRD    CM 
          LDN    TRLR        STORE RECALL STACK REASON CODE 
          STD    CM 
          LDD    MA 
          CWD    IR 
          ADN    1
          CWD    CM 
          MONITOR RECM
          LJM    PPR         ENTER RECALL 
  
 ESM9     LDD    EP+3 
          STD    T7 
          RJM    CEA         CONVERT LOGICAL TO PHYSICAL TRACK ADDRESS
          LDD    CM+4        SET RAE TO NEXT 1K VALUE (ADDRESS) 
          ADD    TH 
          LPC    -777 
          STD    T2+1        SET RAE FOR EXCHANGE PACKAGE 
          STM    PKSN+6      SET RAE IN PARAMETER BLOCK 
          SHN    -14
          RAD    CM+3 
          STD    T2 
          STM    PKSN+5 
          LDN    0
          STD    T2+2        SET FLE FOR EXCHANGE PACKAGE 
          STM    PKSN+7      SET FLE IN PARAMETER BLOCK 
          LDD    TH 
          STD    T2+3 
          STM    PKSN+10
          LDD    MA          RESTORE REGISTERS
          CWM    SAVE,TR
          LDD    MA 
          CRD    EP 
          ADN    1
          CRD    ES 
          LDN    T2          SET EXCHANGE PACKAGE VALUES FWA
          STD    T6 
          RJM    UXP         UPDATE EXCHANGE PACKAGE
          LJM    ESMX        EXIT 
  
  
*         THE FOLLOWING TEN DECIMAL CELLS ARE USED FOR SAVING AND 
*         RESTORING LOW CORE IN ROUTINE *ESM*.  IF SPACE IS NEEDED, 
*         THE AREA COULD BE MOVED TO UNUSED OR ALREADY EXECUTED 
*         AREAS OF CORE.
  
 SAVE     BSS    2*5          TEMP FOR REGISTER SAVE
 PSN      SPACE  4,15 
**        PSN - CHECK PACK SERIAL NUMBER. 
* 
*         ENTRY  (EP) = LOGICAL UNIT NUMBER.
*                (ES - ES+4) = EST ENTRY. 
*                (SB) = VRDW, IF DOWNED, ALLOCATABLE DEVICE ALREADY 
*                       ASSIGNED TO CALLER. 
*                     = 0, OTHERWISE. 
* 
*         EXIT   (A) = VALIDATION RESPONSE CODE (PACK SERIAL NUMBER 
*                VALIDATION BYTE SET IF ERROR). 
* 
*         USES   VT, CD - CD+4, CM - CM+4.
* 
*         CALLS  0PI. 
* 
*         MACROS EXECUTE. 
  
  
 PSN7     LDD    SB 
          NJN    PSNX        IF DEVICE ASSIGNED TO CALLER 
          LDN    VRSH        INDICATE EQUIPMENT MIGHT BE SHARED 
  
 PSN      SUBR               ENTRY/EXIT 
          LDM    FNCH 
          SHN    21-NEST
          MJN    PSN7        IF EQUIPMENT IS NOT IN THE EST 
          LDD    ES+1 
          SHN    21-5 
          PJN    PSN0        IF NONCONCURRENT CHANNEL 
          LDD    ES+2 
          SHN    21-5 
          MJN    PSN7        IF CONCURRENT CHANNEL
 PSN0     LDD    ES+4        CHECK FOR *6DI* DRIVER 
          SHN    3
          ADN    MDGL 
          CRD    CM 
          ADN    STLL-MDGL   CHECK DEVICE UNLOADED
          CRD    CD 
          LDD    CM+3 
          LPN    7
          LMN    LA6DI
          NJN    PSN7        IF NO PACK SERIAL PROCESSING 
          LDM    FNCH        CHECK FUNCTION BITS
          LPN    WRTM+PREM
          LMN    WRTM+PREM
          NJP    PSN7        IF NOT WRITING OUTSIDE PREALLOCATED AREA 
          LDD    CP          CHECK ORIGIN TYPE
          ADN    JOTW 
          CRD    CM 
          LDD    CM+3 
          LPN    77 
          LMK    SYOT 
 PSN1     ZJP    PSN7        IF SYSTEM ORIGIN 
          LDM    PSNV        CHECK PACK S/N PARAMETER WORD
          SHN    21-VBCD
          MJN    PSN5        IF CALLER SUPPLIED SERIAL NUMBER 
 PSN2     LDC    VWDM        INDICATE NO MATCH
 PSN3     STM    PSNV 
          LDN    VRCI        SET MAY DESTROY DATA RESPONSE
          LJM    PSNX        EXIT 
  
*         COMPARE PACK SERIAL NUMBER. 
  
 PSN4     LDM    PKSN+3      CHECK SERIAL NUMBER
          LMM    BFMS+1 
          NJN    PSN2        IF INCORRECT 
          LDM    PKSN+2 
          LMM    BFMS 
          NJN    PSN2        IF INCORRECT 
          UJN    PSN1        EXIT 
  
*         READ PACK SERIAL NUMBER.
  
 PSN5     LDD    CD 
          LPN    2
          NJN    PSN2        IF PACK UNLOADED 
          LDM    ESTO        FETCH EST ORDINAL
          STM    OVLB-1 
          EXECUTE 0PI,OVLB
          STD    VT          SAVE MAIN PROCESSOR ADDRESS
          LDD    EP          SET LOGICAL UNIT NUMBER
          RJM    0,VT        READ SERIAL NUMBER 
          NJN    PSN4        IF NO ERROR
          LDC    VWDM+VB1M   INDICATE HARDWARE ERROR
          LJM    PSN3        SET RESPONSE AND EXIT
 UXP      SPACE  4,20 
**        UXP - UPDATE EXCHANGE PACKAGE.
* 
*         *UXP* ALTERS THE RAE AND FLE EXCHANGE PACKAGE WORDS IF THIS 
*         IS A CYBER 170 AND ESM IS IN ESM MODE.  IT THEN WRITES THE
*         RAE AND FLE EXCHANGE PACKAGE WORDS AND CLEARS THE UEM ENABLED 
*         BIT.
* 
*         ENTRY  (EP) = EST ORDINAL OF EXTENDED MEMORY, IF ASSIGNING
*                       *DB* DEVICE WITH -EM*- FILE.
*                     = 0, IF ASSIGNING EXTENDED MEMORY.
*                (T6) = FWA OF EXCHANGE PACKAGE VALUES. 
* 
*         EXIT   EXCHANGE PACKAGE *RAE* AND *FLE* SET AND UEM ENABLE
*                CLEARED. 
* 
*         USES   CM - CM+4. 
  
  
 UXP5     LDD    CP          SET RAE
          ADN    4
          CRD    CM 
          LDI    T6 
          STD    CM 
          LDM    1,T6 
          STD    CM+1 
          LDD    CP 
          ADN    4
          CWD    CM 
          ADN    5-4         SET FLE
          CRD    CM 
          LDM    2,T6 
          STD    CM 
          LDM    3,T6 
          STD    CM+1 
          LDD    CP 
          ADN    5
          CWD    CM 
          ADK    3-5         CLEAR UEM ENABLE BIT 
          CRD    CM 
          LDD    EP 
          LMN    40 
          ZJN    UXPX        IF UEM CPU PATH
          LDD    CM 
          LPC    -400 
          STD    CM 
          LDD    CP 
          ADN    3
          CWD    CM 
  
 UXP      SUBR               ENTRY/EXIT 
          LDD    EP 
          NJN    UXP1        IF EST READ REQUIRED 
          LDM    TMSK,TI
          UJN    UXP2        CHECK FOR ESM MODE 
  
 UXP1     SFA    EST         READ EXTENDED MEMORY EST ORDINAL 
          ADK    EQDE 
          CRD    CM 
          LDD    CM+4        GET CPU PATH TYPE
          SHN    3
          ADN    DILL 
          CRD    CM 
          LDD    CM+3 
 UXP2     LPN    70 
          STD    EP          SAVE CPU PATH TYPE 
          LMN    30 
          ZJN    UXP4        IF IN ESM MODE 
 UXP3     UJP    UXP5        REWRITE EXCHANGE PACKAGE 
  
 UXP4     LDK    MABL        CHECK MACHINE TYPE 
          CRD    CM 
          LDD    CM+1 
          SHN    21-10
          MJN    UXP3        IF NOT A CYBER 170 
          LDM    1,T6        SET ADJUSTED RAE 
          SCN    77 
          SHN    6
          LMI    T6 
          SHN    6
          STM    1,T6 
          SHN    -14
          STI    T6 
          LDM    3,T6        SET ADJUSTED FLE 
          SCN    77 
          SHN    6
          LMM    2,T6 
          SHN    6
          STM    3,T6 
          SHN    -14
          STM    2,T6 
          UJP    UXP3        REWRITE EXCHANGE PACKAGE 
 COMMON   SPACE  4,10 
**        COMMON DECKS. 
  
 CEI$     EQU    0           INITIALIZE *CEA* FOR CPU-ACCESSIBLE DEVICE 
*CALL     COMPCEA 
          SPACE  4,10 
          USE    OVERLAY
 OVLB     EQU    *+5         OVERLAY AREA 
  
          ERRNG  BFMS-OVLB-ZBFL  *0BF* OVERFLOWS
          ERRNG  BFMS-OVLB-ZPXL  *0PI* OVERFLOWS
          SPACE  4,10 
          OVERFLOW  OVLA,BFMS 
          END 
