*DECK NLD 
          IDENT  NLD,PPSTART
          TITLE  NLD -- NAD LOAD/DUMP DRIVER. 
          COMMENT NAD LOAD/DUMP DRIVER. 
          COMMENT COPYRIGHT (C) CONTROL DATA CORP. 1981 
          PERIPH
          BASE   D
          SST 
          LIST   F
          SPACE  4,10 
*****     NLD - NAD LOAD/DUMP DRIVER. 
* 
*         N. A. DEILY              08/01/81.
* 
*         COPYRIGHT (C) CONTROL DATA CORPORATION, 1981. 
*         ALL RIGHTS RESERVED.
* 
*         NLD IS A PP DRIVER FOR LOADING AND DUMPING CONTROLWARE
*         FOR A LOCAL CDC 380-170 NETWORK ACCESS DEVICE (NAD).
*         LOCAL MEANS CONNECTED TO THE HOST CYBER 170/70/6000 
*         MAINFRAME VIA A NORMAL CHANNEL CABLE.  ONCE A LOCAL NAD 
*         IS LOADED AND RUNNING, NLD MAY ALSO BE USED TO PERFORM
*         THE FOLLOWING TASKS IN CONJUNCTION WITH THE LOCAL NAD 
*         CONTROLWARE:  
* 
*         - RETRIEVE ERROR LOG FROM LOCAL NAD 
* 
*         - LOAD/DUMP CONTROLWARE TO/FROM REMOTE NAD
* 
*         - RETRIEVE ERROR LOG FROM REMOTE NAD
* 
*         REMOTE NAD MEANS A NAD ACCESSIBLE TO THE LOCAL NAD VIA
*         THE LOOSELY-COUPLED NETWORK (LCN) HARDWARE AND PROTOCOL.
*         REMOTE FUNCTIONS PROVIDE LOADING, DUMPING, AND ERROR- 
*         LOGGING CAPABILITIES FOR THOSE NADS WHOSE HOST MAINFRAMES 
*         DO NOT PROVIDE THESE SERVICES LOCALLY.
          SPACE  4,10 
***       NLD CALLING SEQUENCE: 
* 
**T       RA+1   18/NLD,1/0,1/R,4/0,12/FC,6/0,18/PBLOCK 
* 
*         R      = 1, IF AUTO-RECALL. 
* 
*         FC     = FUNCTION CODE. 
*                = 1, LOAD NAD CONTROLWARE. 
*                = 2, DUMP NAD MEMORY.
*                = 3, DUMP NAD ERROR LOG. 
*                = 4, CHANGE NAD EST STATUS.
* 
*         PBLOCK = ADDRESS OF PARAMETER BLOCK.
          SPACE  4,10 
***       PARAMETER BLOCK FORMAT: 
* 
**T       PBLOCK 6/0,6/CHAN,12/ESTO,12/SF,12/0,6/RC,5/0,1/C 
**T          +1  42/0,18/FIRST
**T          +2  42/0,18/INPNT
**T          +3  42/0,18/OUTPNT 
**T          +4  42/0,18/LIMIT
**T          +5  12/0,12/0,4/0,16/AC,8/ND,4/0,4/LT
* 
*         CHAN   = CHANNEL NUMBER, SUPPLIED BY CALLER.
* 
*         ESTO   = EST ORDINAL OF NAD, SET BY NLD.
* 
*         SF     = SUB-FUNCTION CODE, SUPPLIED BY CALLER. 
*                (SEE FUNCTION DESCRIPTIONS). 
* 
*         RC     = RESPONSE CODE, RETURNED BY NLD.
*                0, NO ERROR. 
*                1, CALLER NOT AUTHORIZED.
*                2, CHANNEL NUMBER INVALID. 
*                3, EST/CHANNEL UNAVAILABLE.
*                4, NAD ACCESS ERROR. 
*                5, NO MORE NADS IN EST.
*                6, INSUFFICIENT BUFFER SPACE.
*                7, DEVICE ENABLE SWITCH OFF. 
*                8, NAD PROCESSOR STOPPED 
*                9,  CONNECT REJECT (NO ERROR LOG)
*               11,  DUMP-ERROR-LOG RETRY LIMIT 
* 
*         C      = COMPLETE FLAG, ZERO INITIALLY, SET TO ONE
*                  WHEN NLD COMPLETES FUNCTION. 
* 
*         FIRST/INPNT/OUTPNT/LIMIT  = FET-TYPE POINTERS TO RECEIVE
*                  NAD CONTROLWARE.  INITIALLY, FIRST = IN = OUT =
*                  BUFFER FWA, AND LIMIT = BUFFER LWA+1.  WHEN
*                  FUNCTION IS COMPLETED, IN = DATA LWA+1.
* 
*         AC     = ACCESS CODE FOR REMOTE NAD, BITS 31-16.
* 
*         ND     = REMOTE NAD ADDRESS, BITS 15-8. 
* 
*         LT     = LOCAL TCU ENABLE, BITS 3-0.
          SPACE  4,10 
***       INTERFACE CONDITIONS: 
* 
*         LOCAL LOAD/DUMP - 
* 
*         ACCESS TO THE LOCAL NAD IS CONTROLLED IN ALL CASES BY THE NAD 
*         EST ENTRY, WHICH IS POINTED TO INDIRECTLY BY THE CHANNEL
*         NUMBER IN THE PARAMETER BLOCK.  SINCE BOTH LOADING AND
*         DUMPING REQUIRE DEDICATED ACCESS TO THE NAD, NLD REQUIRES 
*         THAT THE EST ENTRY INDICATE THAT THE DEVICE IS RESERVED FOR 
*         DEDICATED MAINTENANCE AT THE CALLING CONTROL POINT. 
*         MHF, THE RHF MAINTENANCE HOST FACILITY APPLICATION, CALLS 
*         CVL TO VALIDATE THAT THE LOCAL NAD IS NOT IN USE AND TO 
*         RESERVE IT.  UPON INITIATING A LOAD OR DUMP OPERATION, NLD
*         CHECKS THAT THE NAD IS *DOWN* AND HAS BEEN RESERVED BY CVL FOR
*         THE LOAD JOB, SINCE EITHER OPERATION HALTS THE NAD PROCESSOR. 
* 
*         WHEN THE CONTROLWARE HAS BEEN LOADED SUCCESSFULLY, THE LOAD 
*         APPLICATION CALLS NLD (FUNCTION 4) TO SET THE HARDWARE- 
*         UNIQUE-IDENTIFIER (HUI) IN THE NAD-S EST ENTRY AND
*         TO CLEAR THE EST NAD-LOAD-NEEDED FLAG.
* 
*         FINALLY, MHF CALLS CVL TO RELEASE THE NAD-S EST ENTRY.
* 
* 
*         LOCAL ERROR LOG - 
* 
*         ERROR LOG RETRIEVAL REQUIRES THAT THE NAD CONTROLWARE BE
*         RUNNING NORMALLY.  ERROR LOG RETRIEVAL CAN TAKE PLACE WHILE 
*         THE NAD IS IN USE BY THE REMOTE HOST FACILITY (RHF).  NLD 
*         CHECKS THAT THE NAD IS EITHER RESERVED BY CVL FOR THE JOB, OR 
*         NOT MARKED *DOWN* IN THE
*         EST, THEN SETS THE NETLOG-ACTIVE FLAG IN THE EST.  NLD
*         AND THE RHF DRIVER, NDR, SHARE ACCESS TO THE NAD THROUGH
*         THE OPERATING SYSTEM CHANNEL INTERLOCK. 
* 
* 
*         REMOTE LOAD/DUMP/ERROR-LOG -
* 
*         REMOTE FUNCTIONS ARE SIMILAR TO LOCAL ERROR LOG IN THAT 
*         THE LOCAL NAD CONTROLWARE MUST BE RUNNING NORMALLY
*         AND ACCESS TO THE LOCAL NAD MAY BE SHARED WITH NDR. 
*         AFTER ACQUIRING NETLOG ACCESS IN THE EST ENTRY, NLD 
*         REQUESTS THE LOCAL NAD TO CREATE A MAINTENANCE PATH TO
*         THE REMOTE NAD ADDRESSED BY THE PARAMETERS IN PBLOCK+5
*         (NOTE, IT IS THE PRESENCE OF A NON-ZERO LOCAL TCU ENABLE
*         FIELD WHICH SIGNALS A REMOTE RATHER THAN A LOCAL
*         FUNCTION).  FOR LOAD AND DUMPS, CONTROLWARE IS TRANSFERRED
*         BY NLD FROM/TO THE CM BUFFER IN THE CONTROL POINT FIELD 
*         LENGTH TO/FROM THE REMOTE NAD MEMORY VIA THE LOCAL NAD AND
*         THE PROPER TRUNK.  FOR REMOTE ERROR LOGGING, THE REMOTE 
*         NAD CONTROLWARE MUST BE RUNNING AND CAPABLE OF COMMUNICATING
*         WITH THE LOCAL NAD. 
*CALL COMNOSDEF 
          SPACE  4,10 
*         DIRECT CELL EQUATES AND RELATED DEFINITIONS.
  
 NDFWA    EQU    20B - 21B         FWA OF CURRENT NAD BLOCK 
 DMPA     EQU    22B               NAD WORDS IN FIRST PARCEL OF DMP 
 DMPB     EQU    23B               NAD WORDS IN SECOND PARCEL OF DMP
 NDBLK    EQU    24B               NUMBER OF NAD WORDS IN CURRENT BLOCK 
 FIRST    EQU    25B - 26B         FIRST
 INPNT    EQU    27B - 30B         IN 
 OUTPNT   EQU    31B - 32B         OUT
 LIMIT    EQU    33B - 34B         LIMIT
 CHAN     EQU    35B               CHANNEL NUMBER 
 ESTO     EQU    36B               EST ORDINAL
 RC       EQU    37B               RETURN CODE
 ESTL     EQU    40B               EST ORDINAL OF LAST FUNCTION 
 AC       EQU    41B - 42B         ACCESS CODE
 ND       EQU    43B               REMOTE NAD ADDRESS 
 CMBLK    EQU    44B               NUMBER OF CM WORDS IN CURRENT BLOCK
 LT       EQU    45B               LOCAL TCU ENABLE 
 PN       EQU    46B               PATH ID
 CHNRES   EQU    47B               CHANNEL RESERVED FLAG
 D.PPIRB  EQU    D.PPIRB - D.PPIRB+4 PP INPUT REGISTER
 D.RA     EQU    D.RA              RA/100B
 D.FL     EQU    D.FL              FL/100B
 TRACE    EQU    57B               TRACE IDENTIFIER 
 TRACEFAN EQU    1                 FAN TRACE IDENTIFIER 
 TRACEFAW EQU    2                 FAW TRACE IDENTIFIER 
 TRACEINP EQU    3                 INP TRACE IDENTIFIER 
 TRACEOUT EQU    4                 OUT TRACE IDENTIFIER 
 TWO      EQU    60B               CONSTANT TWO 
 FETADR   EQU    61B - 62B         ADDRESS OF PARAMETER BLOCK 
 NLGACT   EQU    63B               NETLOG ACTIVE FLAG 
 NXTPNT   EQU    64B               NEXT FLAG FUNCTION POINTER 
 FLUSH    EQU    65B               INPUT FLUSH FLAG 
 STATUS   EQU    66B               CONTROLWARE STATUS 
 ERROR    EQU    67B               LAST ERROR CODE
 ONE      EQU    70B               CONSTANT ONE 
 D.PPIR   EQU    D.PPIR            PP INPUT REGISTER ADDRESS
 D.CPAD   EQU    D.CPAD            CONTROL POINT AREA ADDRESS 
 D.PPMES1 EQU    D.PPMES1          PP MESSAGE BUFFER ADDRESS
  
*         FET RETURN CODES. 
  
 RC01     EQU    1                 CALLER NOT AUTHORIZED
 RC02     EQU    2                 CHANNEL NUMBER INVALID 
 RC03     EQU    3                 EST/CHANNEL UNAVAILABLE
 RC04     EQU    4                 NAD ACCESS ERROR 
 RC05     EQU    5                 NO MORE NADS IN EST
 RC06     EQU    6                 INSUFFICIENT BUFFER SPACE
 RC07     EQU    7                 DEVICE ENABLE OFF
 RC08     EQU    8                 NAD PROCESSOR STOPPED
 RC09     EQU    9                 CONNECT REJECT (NO ERROR LOG)
 RC11     EQU    11                DUMP-ERROR-LOG RETRY LIMIT 
  
*         MISCELLANEOUS DEFINITIONS 
  
 MAXNW    EQU    0#10000           LARGEST POSSIBLE NAD MEMORY SIZE 
 BUFW     EQU    3*100B            LENGTH OF BUFFER (CM WORDS)
 BUFN     EQU    BUFW*5            LENGTH OF BUFFER (PP WORDS)
 GSLHD    EQU    24D               LENGTH OF GENERAL STATUS HEADER (NW) 
 GSLEL    EQU    9D                LENGTH OF EACH EL ENTRY (NAD WDS)
 GSLNE    EQU    21D               NUMBER OF ERROR LOG ENTRIES
 GSLNW    EQU    GSLHD+GSLEL*GSLNE LENGTH OF GS REPLY (NAD WDS) 
 GSLNB    EQU    16D*GSLNW         LENGTH OF GS REPLY (BITS)
 .TEMP    SET    GSLNB+11D
 GSLN     EQU    .TEMP/12D         LENGTH OF GS REPLY (PP WORDS)
 .TEMP    SET    GSLN+4 
 GSLW     EQU    .TEMP/5           LENGTH OF GS REPLY (CM WORDS)
 NADMNE   EQU    2RNC              NAD DEVICE MNEMONIC IN EST 
 C.PT     EQU    3                 STARTING BYTE OFFSET FOR FET POINTERS
 DEBUG    EQU    0                 NO DEBUG CODE
 CH       EQU    1                 DUMMY CHANNEL DEFINITION 
  
 W=NSTHUI EQU    0#B*16/12+1       OFFSET OF HUI WITHIN NAD STATUS
  
 RTY.CIP  EQU    10                RETRY COUNT - CONNECT-IN-PROGRESS
 RTY.DNE  EQU    3                 RETRY COUNT - DUMP-NAD-ERROR-LOG 
 MAIN     TITLE  MAIN PROGRAM.
**        MAIN PROGRAM. 
* 
*         CALL INI TO INITIALIZE NLD. 
*         IF NO ERROR DETECTED THEN 
*           BEGIN 
*             CALL R.OVL TO LOAD OVERLAY IF NECESSARY 
*             CALL FC(N) TO PROCESS FUNCTION CODE N 
*           END 
*         IF ERROR DETECTED THEN
*           BEGIN 
*             CALL IEM TO ISSUE ERROR MESSAGE 
*             CALL ABT TO ABORT THE CONTROL POINT 
*           END 
*         CALL CMP TO COMPLETE FUNCTION CODE
*         CALL TRM TO TERMINATE PATH AND RELEASE CHANNEL
*         EXIT THROUGH M.DPP AND R.IDLE.
  
  
          ORG    PPSTART
  
 NLD      BSS    0                 ENTRY POINT FROM PPRES 
  
          RJM    /INI/INI          INITIALIZE NLD 
          NJN    NLD1              IF ERROR DETECTED
          IFNE   DEBUG,0,1
          RJM    BRK               CALL BREAKPOINT ROUTINE
          LDM    TFCP-1,D.PPIRB+2  OVERLAY NAME, LOAD FLAG
          SHN    17-5 
          MJN    NLD0              IF NO LOAD NEEDED
  
 NOS      IF     DEF,NOS
          ADC    2R3N*1S6          (A) = *5NX*
          RJM    R.OVL             LOAD OVERLAY AND EXECUTE 
          UJN    NLD0.1 
 NOS      ELSE
          SHN    11-5 
          STD    D.T7              STORE LOWER CHARACTER OF OVERLAY NAME
          LDC    2R3N 
          STD    D.T6              STORE UPPER TWO CHARS OF OVERLAY NAME
          LDC    OVLA              FWA OF OVERLAY 
          RJM    R.OVL             LOAD OVERLAY ONLY
 NOS      ENDIF 
  
 NLD0     RJM    OVLA+6            EXECUTE FUNCTION 
  
 NLD0.1   NJN    NLD1              IF ERROR DETECTED
          RJM    CMP               COMPLETE PARAMTER BLOCK
          ZJN    NLD3              IF NO ERROR DETECTED 
  
 NLD1     PJN    NLD2              IF NON-FATAL ERROR 
          RJM    IEM               ISSUE ERROR MESSAGE
          LDK    M.ABORT
          STM    NLDB              SET TO ABORT CONTROL POINT 
          LDN    0                 NO RETURN CODE 
  
 NLD2     STD    RC                SAVE RETURN CODE 
          RJM    CMP               COMPLETE PARAMETER BLOCK 
  
 NLD3     RJM    TRM               TERMINATE PATH, RELEASE CHAN 
          IFNE   DEBUG,0,1
          RJM    BRK               CALL BREAKPOINT ROUTINE
          LDC    M.DPP             SET TO DROP PP (NORMAL TERMINATION)
 NLDB     EQU    *-1               MAY BE CHANGED TO M.ABORT (IF ERROR) 
          RJM    R.MTR             CALL MONITOR TO EXECUTE FUNCTION 
          LJM    R.IDLE            EXIT TO PPRES
 TFCP     SPACE  4,10 
*         FUNCTION OVERLAY NAME TABLE.
  
 TFCP     BSS    0                 FUNCTION OVERLAYS
  
          LOC    1
  
          VFD    6/1LE,6/0         LOAD NAD CONTROLWARE 
          VFD    6/1LF,6/0         DUMP NAD CONTROLWARE 
          VFD    6/0,6/40B         DUMP NAD ERROR LOG (NO OVERLAY)
          VFD    6/1LG,6/0         TURN ON NAD
  
          LOC    *O 
  
 TFCPL    EQU    *-TFCP 
 TEMG     TITLE  ERROR MESSAGES.
**        TEMG - RESIDENT ERROR MESSAGES. 
  
  
 TEMG     BSS    0
  
          LOC    0
  
 ER01     CON    =C* NLD01 - FET ADDRESS ERROR.*
 ER02     CON    =C* NLD02 - NOT CALLED FROM SYSTEM LIBRARY.* 
 ER03     CON    =C* NLD03 - INVALID FUNCTION CODE.*
 ER05     CON    =C* NLD05 - BUFFER ARGUMENT ERROR.*
 ER06     CON    =C* NLD06 - ABORTED BY SYSTEM.*
  
          LOC    *O 
  
 TEMGL    EQU    *-TEMG 
          SPACE  4,10 
**        GLOBAL VARIABLES. 
  
  
 ARCL     CON    0                 AUTO-RECALL REQUESTED
          IF     -DEF,NOS,1 
 FEST     CON    0                 FWA OF EST (NOS/BE)
 LEST     CON    0                 LAST EST ORDINAL + 1 
 SUBF     CON    0                 SUB-FUNCTION 
          TITLE  NAD COMMUNICATION DEFINITIONS. 
  
*CALL,COMNADIO
  
*CALL,COMCHNRES 
  
 CEE      TITLE  GLOBAL SUBROUTINES.
**        CEE - CHECK EST ENTRY FOR VALID NAD ENTRY.
* 
*         ENTRY  (ESTO) = EST ORDINAL 
*                (CHAN) = CHANNEL TO BE SEARCHED FOR
*                         (IF CHAN = 77B, ANY VALID NAD)
* 
*         EXIT   (A) = 0 IF EST ENTRY IS NAD ON CORRECT CHANNEL.
*                D.T0-D.T4 = EST ENTRY. 
  
  
 CEE      ENM    X
 NOS      IF     DEF,NOS
          LDD    ESTO              EST ORDINAL
          RJM    .EST              CONVERT EST ORDINAL TO EST ADDRESS 
          ADK    EQDE 
 NOS      ELSE
          LDM    FEST              FWA OF EST 
          ADD    ESTO              EST ORDINAL
 NOS      ENDIF 
          CRD    D.T0              READ EST ENTRY 
          LDD    D.T0+C.ESTMNE     DEVICE MNENOMIC
          SCK    M.ESTON           CLEAR ON/OFF FLAG
          LMK    NADMNE            NAD DEVICE MNEMONIC
          NJN    CEE1              IF NOT A NAD 
          LDD    CHAN              CHANNEL NUMBER 
          LMN    77B
          ZJN    CEE1              IF CHAN = 77B, ALLOW ANY NAD 
          LDD    D.T0+C.ESTCH1     CHANNEL FROM THIS ENTRY
          LMD    CHAN 
          LPN    37B               (A) = 0 IFF MATCHING CHANNEL 
  
 CEE1     UJK    CEEX              RETURN WITH (A) = 0 IF MATCH 
 CVR      SPACE  4,10 
**        CVR - CHECK CVL-RESERVATION FLAG IN EST ENTRY.
* 
*         ENTRY  D.T0-D.T4 = EST ENTRY. 
* 
*         EXIT   A = -1, EST RESERVED BY CVL FOR ANOTHER JOB. 
*                  =  0, EST NOT RESERVED BY CVL. 
*                  =  1, EST RESERVED BY CVL FOR THIS JOB.
  
  
 CVR      ENM    X
  
 NOS      IF     DEF,NOS
          LDD    ESTO              READ EQUIPMENT ASSIGNMENT
          RJM    .EST              CONVERT EST ORDINAL TO EST ADDRESS 
          ADK    EQAE 
          CRD    D.T3 
          LDD    D.T3+C.ESTEJT
          STD    D.Z2              SAVE EJT ORDINAL 
          ZJN    CVR2              IF EST IS NOT RESERVED 
          LDD    D.CPAD 
          ADK    W.FST
          CRD    D.Z3              READ FST POINTER WORD
          LDD    D.Z3+C.EJTO
          LMD    D.Z2 
          ZJN    CVR1              IF EST RESERVED FOR THIS JOB 
 NOS      ELSE
          LDD    D.T0+C.ESTAT 
          LPK    M.ESTCVL 
          ZJN    CVR2              IF EST NOT RESERVED (A = 0)
          LDD    D.T0+C.ESTAT 
          LPK    L.CPNUM
          SHN    7
          LMD    D.CPAD 
          ZJN    CVR1              IF EST RESERVED FOR THIS JOB 
 NOS      ENDIF 
          LCN    2                 (RETURN A = -1)
 CVR1     ADN    1                 (RETURN A = 1) 
 CVR2     UJK    CVRX              EXIT 
 CIB      SPACE  4,10 
**        CIB - CHECK INPUT BUFFER POINTERS.
* 
*         ENTRY  NONE.
* 
*         EXIT   (A) .LT. 0, ERROR RETURN,
*                    .GE. 0, SIZE AVAILABLE FOR INPUT.
  
  
 CIB      ENM    X
          LDN    3                 FET OFFSET OF OUT POINTER
          RJM    LFT               ADD FWA OF FET 
          ZJN    CIB1              IF ADDRESS ERROR 
          CRD    D.T0              READ OUT POINTER 
          LDD    D.T0+C.PT+1
          STD    OUTPNT+1          STORE OUT POINTER
          LDD    D.T0+C.PT
          LPN    77B
          STD    OUTPNT 
          SBD    LIMIT             CALCULATE OUT - LIMIT
          SHN    12 
          ADD    OUTPNT+1 
          SBD    LIMIT+1
          PJN    CIB1              IF OUT PAST LIMIT
          LDD    OUTPNT            CALCULATE OUT - FIRST
          SBD    FIRST
          SHN    12 
          ADD    OUTPNT+1 
          SBD    FIRST+1
          PJN    CIB2              IF FIRST .LE. OUT
  
 CIB1     LCN    ER05              *BUFFER ARGUMENT ERROR*
          UJN    CIB3              RETURN 
  
 CIB2     RJM    CSP               COMPUTE SPACE AVAILABLE
  
 CIB3     UJK    CIBX              RETURN 
 CMP      SPACE  4,10 
**        CMP - COMPLETE FUNCTION PARAMETER BLOCK.
* 
*         ENTRY  (RC) = FET RETURN CODE,
*                (ESTO) = EST ORDINAL 
* 
*         EXIT   (RC) AND (ESTO) WRITTEN TO FET,
*                COMPLETE BIT SET.
*                (S.ESTNLG) CLEARED IN EST, IF NLGACT SET.
  
  
 CMP      ENM    X
          LDD    NLGACT            NETLOG ACTIVE FLAG 
          ZJN    CMP1              IF EST WAS NOT MODIFIED
 NOS      IF     DEF,NOS
          LDD    ESTO 
          STD    D.T1              SET EST ORDINAL IN REQUEST 
          LDK    C.ESTNA+4
          STD    D.T2              SET FUNCTION TO STORE BYTE C.ESTNA 
          LDK    -M.ESTNLG
          STD    D.T3              SET MASK 
          LDK    0
          STD    D.T4              SET VALUE TO BE PLUGGED
          LDK    M.SEQ             MONITOR FUNCTION TO STORE IN EST 
          RJM    R.MTR             CALL MONITOR TO CLEAR NETLOG ACTIVE
 NOS      ELSE
          LDK    CH.EST 
          RJM    R.RCH             RESERVE EST INTERLOCK
          LDM    FEST              FWA OF EST 
          ADD    ESTO              EST ORDINAL
          CRD    D.T0              READ EST ENTRY 
          LDD    D.T0+C.ESTNA 
          SCK    M.ESTNLG          CLEAR NETLOG ACTIVE
          STD    D.T0+C.ESTNA 
          LDM    FEST 
          ADD    ESTO 
          CWD    D.T0              REWRITE EST ENTRY
          LDK    CH.EST 
          RJM    R.DCH             RELEASE EST INTERLOCK
 NOS      ENDIF 
          LDN    0
          STD    NLGACT            FLAG NETLOG NOT ACTIVE 
  
 CMP1     RJM    R.RAFL            REQUEST FIELD LENGTH ACCESS
          LDD    FETADR            ADDRESS OF FET 
          SHN    12 
          LMD    FETADR+1 
          ADDRA  ER=CMP2
          CRD    D.T0              READ FIRST WORD OF FET 
          LDD    ESTO              EST ORDINAL
          STD    D.T0+1            STORE IN FET 
          LDN    21B               SET COMPLETE BIT AND EOR 
          STD    D.T0+4 
          LDD    RC                RETURN CODE
          SHN    6
          RAD    D.T0+4 
          LDD    FETADR 
          SHN    12 
          LMD    FETADR+1 
          ADDRA  ER=CMP2
          CWD    D.T0              WRITE FIRST WORD OF FET
          LDN    0                 NORMAL RETURN
          UJN    CMP9              RETURN 
  
 CMP2     LCN    ER01              *FET ADDRESS ERROR*
  
 CMP9     UJK    CMPX              RETURN 
 CNT      SPACE  4,10 
**        CNT - REQUEST CONNECTION. 
* 
*         ENTRY  (ND), (LT), (AC) CONTAIN REMOTE NAD PARAMETERS 
* 
*         EXIT   (A) = RC04, IF ERROR DETECTED
*                    = 0, OTHERWISE, IN WHICH CASE
*                      (PN) = PATH ID 
* 
*         BUILD CONNECT MESSAGE.
*         CALL FFN TO ISSUE CONNECT MAINTENANCE PATH FUNCTION 
*         CALL FFN TO SELECT BINARY MODE
*         CALL WFP TO WAIT FOR PRIMED 
*         CALL FAN TO SELECT OUTPUT-12-TO-8 
*         CALL OUT TO OUTPUT CONNECTION MESSAGE 
*         CALL FFN TO ISSUE READY FUNCTION
*         STORE PATH ID FROM STATUS INTO PN 
*         RETURN. 
  
  
 CNT      ENM    X
  
*         BUILD CONNECT MESSAGE.
  
          LDD    ND                REMOTE NAD ADDRESS 
          STM    CNTA+0 
          LDD    LT                LOCAL TCU ENABLES
          SHN    4
          STM    CNTA+1 
          LDD    AC                REMOTE NAD ACCESS CODE 
          STM    CNTA+2 
          LDD    AC+1 
          STM    CNTA+3 
          LDC    CNTA              FWA OF CONNECT MESSAGE 
          STM    OUTA              STORE BUFFER ADDRESS 
  
 CNT1     LDK    FCCM              CONNECT MAINTENANCE PATH 
          RJM    FFN
          MJN    CNT2              IF ERROR 
          ZJN    CNT5              IF ACK RESPONSE
          LMN    RCNK&RCAK
          NJN    CNT4              IF NOT NAK RESPONE 
          RJM    RCD               RELEASE CHANNEL AND DELAY
          ZJN    CNT1              IF NO ERROR, TRY AGAIN 
          UJK    CNTX              RETURN IF ERROR
  
 CNT2     RJM    ERR               REPORT ERROR 
          PJN    CNT3              IF NOT FIRM HARDWARE ERROR 
          LDN    RC04              *NAD ACCESS ERROR* 
          UJK    CNTX              RETURN 
  
 CNT3     LDK    FCAB              ABORT TRANSACTION
          RJM    FFN
          MJN    CNT2              IF HARDWARE ERROR
          UJK    CNT1              RESTART TRANSACTION
  
 CNT4     MJN    CNT2              IF ERROR 
          LDK    -NADERRS          ABNORMAL RESPONSE (REMOTE) 
          UJN    CNT2 
  
 CNT5     LDK    FCBM              SELECT BINARY
          RJM    FFN
          NJN    CNT4              IF NOT ACK 
          RJM    WFP               WAIT FOR PRIMED
          MJN    CNT2              IF ERROR 
          LDK    FCO8              OUTPUT 12 TO 8 
          RJM    FAN
          MJN    CNT2              IF ERROR 
          LDN    CNTAL             LENGTH OF CONNECT MESSAGE
          RJM    OUT               OUTPUT CONNECTION MESSAGE
          ZJN    CNT6              IF NO ERROR
          MJN    CNT2              IF ERROR 
          LDK    -NADERRR          DATA LENGTH ERROR (REMOTE) 
          UJN    CNT2 
  
 CNT6     LDK    FCRY              SEND READY 
          RJM    FFN
          MJN    CNT7              IF ERROR 
          LMN    RCBT&RCAK
          ZJN    CNT10             IF ROUTING ERROR 
          LDD    STATUS 
          SHN    17-S.CSTSP 
          MJN    CNT8              IF SELECTED PATH INPUT 
          UJK    CNT4              IF NO PATH ID RETURNED 
  
 CNT7     LJM    CNT2              REPORT ERROR 
  
 CNT8     SHN    18+S.CSTSP-17     POSITION PATH ID 
          LPC    177B 
          STD    PN                SAVE PATH ID 
          LDN    0                 SIGNAL NO ERROR
 CNT9     UJK    CNTX              RETURN 
  
 CNT10    LDN    RC09              ROUTING ERROR
          UJK    CNT9 
  
  
*         MAINTENANCE PATH CONNECT MESSAGE (IN 8/12 FORMAT).
  
 CNTA     BSS    0
          CODE   ASCII
          LOC    0
          CON    **                8/ND - REMOTE NAD ADDRESS
          CON    **                4/LT - LOCAL TCU ENABLES, 4/0
          CON    **                16/AC - REMOTE NAD ACCESS CODE 
          CON    **                   (CONTINUED) 
          CON    1RE+40B           16/PATH NAME (ASCII *EL*)
          CON    1RL+40B              (CONTINUED) 
          CON    0                 8/PATH ID (NOT USED) 
          CON    1                 4/REMOTE TCU ENABLE (NOT USED) 
*                                  2/0, 2/BUFFER SIZE 
          LOC    *O 
          CODE   *
 CNTAL    EQU    *-CNTA 
 COB      SPACE  4,10 
**        COB - CHECK OUTPUT BUFFER POINTERS. 
* 
*         ENTRY  NONE.
* 
*         EXIT   (A) .LT. 0, ERROR RETURN 
*                    .GE. 0, DATA AVAILABLE FOR OUTPUT. 
  
  
 COB      ENM    X
          LDN    2                 FET OFFSET FOR IN POINTER
          RJM    LFT               ADD FWA OF FET 
          ZJN    COB1              IF ADDRESS ERROR 
          CRD    D.T0              READ IN POINTER
          LDD    D.T0+C.PT+1
          STD    INPNT+1           STORE IN POINTER 
          LDD    D.T0+C.PT
          LPN    77B
          STD    INPNT
          SBD    LIMIT             CALCULATE IN - LIMIT 
          SHN    12 
          ADD    INPNT+1
          SBD    LIMIT+1
          PJN    COB1              IF IN PAST LIMIT 
          LDD    INPNT             CALCLUATE IN - FIRST 
          SBD    FIRST
          SHN    12 
          ADD    INPNT+1
          SBD    FIRST+1
          PJN    COB2              IF FIRST .LE. OUT
  
 COB1     LCN    ER05              *BUFFER ARGUMENT ERROR*
          UJN    COB3              RETURN 
  
 COB2     RJM    CSZ               OBTAIN DATA SIZE 
  
 COB3     UJK    COBX              RETURN 
 CSP      SPACE  4,10 
**        CSP - COMPUTE SPACE AVAILABLE.
* 
*         ENTRY  NONE.
* 
*         EXIT   (A) = SPACE AVAILABLE. 
  
  
 CSP      ENM    X
          LDD    OUTPNT            CALCULATE OUT - IN - 1 
          SBD    INPNT
          SHN    12 
          ADD    OUTPNT+1 
          SBD    INPNT+1
          SBN    1
          PJN    CSPX              IF AVAILABLE SPACE IN ONE PIECE
          ADD    LIMIT+1
          SBD    FIRST+1           COMPUTE OUT - IN - 1 + LIMIT - FIRST 
          SHN    6
          ADD    LIMIT
          SBD    FIRST
          SHN    12 
          PJN    CSPX              IF POSITIVE SIZE 
          LDN    0                 SET SIZE TO ZERO 
          UJK    CSPX              RETURN 
 CSS      SPACE  4,10 
**        CSS - CHECK *SLP* (SELECT-PATH) STATUS. 
* 
*         ENTRY  A = RESPONSE FROM *SLP* (SELECT-PATH). 
*                STATUS = STATUS. 
* 
*         EXIT   CSSA - CSSA+1 = RESPONSE FROM *SLP* (18 BITS). 
*                A = 0, IF STATUS = *NAK* OR *DISCONNECT*, ELSE 
*                A .NE. 0.
  
  
 CSS      ENM    X
          STM    CSSA+1            SAVE *SLP* RESPONSE
          SHN    -12
          STM    CSSA 
  
          LDD    STATUS 
          LPK    M.RESPCD          MASK RESPONSE CODE 
          LMK    RCNK 
          ZJN    CSSX              IF *NAK* 
          LMK    RCDC&RCNK
          UJK    CSSX              RETURN 
  
 CSSA     BSSZ   2                 SAVED *SLP* RESPONSE 
 CSZ      SPACE  4,10 
**        CSZ - CHECK DATA SIZE AVAILABLE.
* 
*         ENTRY  NONE.
* 
*         EXIT   (A) = DATA SIZE AVAILABLE. 
  
  
 CSZ      ENM    X
          LDD    INPNT             CALCULATE IN - OUT 
          SBD    OUTPNT 
          SHN    12 
          ADD    INPNT+1
          SBD    OUTPNT+1 
          PJN    CSZX              IF DATA IN ONE PIECE 
          ADD    LIMIT+1
          SBD    FIRST+1           CALCULATE IN - OUT + LIMIT - FIRST 
          SHN    6
          ADD    LIMIT             GIVES DATA WHEN WRAP AROUND OCCURS 
          SBD    FIRST
          SHN    12 
          UJK    CSZX              RETURN 
 DEL      SPACE  4,10 
**        DEL - DELAY A WHILE.
* 
*         ENTRY  NONE 
* 
*         EXIT   (A) = ER06, IF CPA ERROR FLAG SET, 
*                    = RC04, IF DELAY TIME-OUT (NAD ACCESS ERROR).
*                    = 0, OTHERWISE.
  
  
 DEL      ENM    X
          LDN    77B               DELAY COUNT
  
 DEL1     SBN    1                 DECREMENT DELAY COUNT
          PJN    DEL1              IF MORE TO DELAY 
 NOS      IF     DEF,NOS
          LDD    D.CPAD 
          ADK    W.STS
          CRD    D.T0              READ STATUS WORD 
          LDD    D.T1 
 NOS      ELSE
          CPAD   W.CPEF 
          CRD    D.T0              READ CONTROL POINT ERROR FLAG
          LDD    D.T0+C.CPEF
 NOS      ENDIF 
          NJN    DEL2              IF ERROR FLAG SET
          SOM    DELA              DECREMENT RETRY COUNT
          NJN    DEL1.1            IF RETRY COUNT NOT EXCEEDED
          SOM    DELB 
          ZJN    DEL3              IF RETRY COUNT EXCEEDED
 DEL1.1   BSS    0
          LDN    0                 NO ERROR 
          UJN    DEL9              RETURN 
  
 DEL2     LCN    ER06              *ABORTED BY SYSTEM*
          UJN    DEL9              RETURN 
  
 DEL3     LDK    RC03              *NAD ACCESS ERROR* (WAITED TOO LONG) 
  
 DEL9     UJK    DELX              RETURN 
  
 DELA     BSS    1                 DELAY RETRY COUNT
 DELB     BSS    1                 DELAY RETRY COUNT (UPPER)
 DER      SPACE  4,10 
**        DER - DELAY-RETRY-COUNT RESET.
* 
*         ENTRY  NONE.
* 
*         EXIT   A = DELA = 0.
*                DELB = 77B.
  
  
 DER      ENM    X
          LDN    77B
          STM    DELB 
          LDN    0
          STM    DELA 
          UJK    DERX              RETURN 
 DV5      SPACE  4,10 
**        DV5 - DIVIDE BY FIVE. 
* 
*         DIVIDES A 12-BIT QUANTITY BY FRACTIONAL APPROXIMATION OF
*         ONE FIFTH.  (FROM COMDECK *COMPDV5*)
* 
*         ENTRY  (A) = QUANTITY TO BE DIVIDED 
* 
*         EXIT   (A) = QUANTITY/5.
  
  
 DV5      ENM    X
          STD    D.T1              SET BYTE COUNT 
          SHN    1                 2*BYTES
          ADD    D.T1              3*BYTES
          SHN    2                 12*BYTES 
          ADD    D.T1              13*BYTES 
          SHN    12                (SHN -6) 13*BYTES/64 
          STD    D.T0 
          SHN    6+2               4*13*BYTES = 52*BYTES
          SBD    D.T1              51*BYTES 
          ADD    D.T0              51*BYTES + 13*BYTES/64 
          SHN    -8                (51*BYTES + 13*BYTES/64)/256 
          UJK    DV5X              RETURN 
 GLL      SPACE  4,10 
**        GLL - GET LOCAL NAD ERROR LOG.
* 
*         CALL WSA TO WAIT FOR SHARED ACCESS TO LOCAL NAD 
*         CALL IGS TO INPUT GENERAL STATUS
*         RETURN. 
  
  
 GLL      ENM    X
          RJM    WSA               WAIT FOR SHARED ACCESS TO NAD
          NJN    GLLX              IF NO ACCESS 
          LDK    FCGS              GENERAL STATUS FUNCTION
          RJM    IGS               INPUT GENERAL STATUS 
          UJK    GLLX              RETURN 
 IEM      SPACE  4,10 
**        IEM - ISSUE ERROR MESSAGE.
* 
*         ENTRY  (A) = COMPLEMENT OF ERROR ORDINAL
* 
*         EXIT   DAYFILE MESSAGE ISSUED.
  
  
 IEM      ENM    X
          LMC    777777B           COMPLEMENT ERROR ORDINAL 
          STD    D.T0 
          LDM    TEMG,D.T0         FETCH FWA OF ERROR MESSAGE 
          IF     DEF,NOS,1
          ADK    CPON              SEND MESSAGE TO CALLERS DAYFILE
          RJM    R.DFM             ISSUE DAYFILE MESSAGE
          UJK    IEMX              RETURN 
 IGS      SPACE  4,10 
**        IGS - INPUT GENERAL STATUS. 
* 
*         ENTRY  CHANNEL RESERVED,
*                (A) = STATUS FUNCTION
* 
*         EXIT   (A) .NE. 0, IF ERROR,
*                    = 0, OTHERWISE IN WHICH CASE 
*                         (BUFF) - (BUFF+GSLN-1) CONTAINS GENERAL STATUS
* 
*         CALL FFN TO ISSUE FUNCTION
*         CALL FFN TO SELECT BINARY 
*         CALL WFP TO WAIT FOR PRIMED 
*         CALL FAN TO SELECT INPUT BIT STRING 
*         CALL INP TO INPUT GENERAL STATUS
*         RETURN. 
  
  
 IGS      ENM    X
          STM    IGSA              SAVE FUNCTION CODE 
  
 IGS1     LDM    IGSA              LOAD FUNCTION CODE 
          RJM    FFN
          ZJN    IGS4              IF ACK RESPONSE
  
 IGS2     MJN    IGS3              IF HARDWARE ERROR
          LCN    NADERRH           ABNORMAL RESPONSE CODE 
  
 IGS3     RJM    ERR               REPORT ERROR 
          PJN    IGS1              IF RETRY POSSIBLE
          LDK    RC04              *NAD ACCESS ERROR* 
          UJK    IGSX              RETURN 
  
 IGS4     LDK    FCBM              SELECT BINARY
          RJM    FFN
          NJN    IGS2              IF ERROR 
          RJM    WFP               WAIT FOR PRIMED
          MJN    IGS3              IF ERROR 
          LDK    FCIB              INPUT BIT STRING 
          RJM    FAN
          MJN    IGS3              IF ERROR 
          LDK    BUFF 
          STM    INPA              SET INPUT BUFFER ADDRESS 
          STD    FLUSH             SET FLUSH INPUT
          LDK    GSLN              LENGTH OF GENERAL STATUS 
          RJM    INP               INPUT GENERAL STATUS 
          MJN    IGS3              IF ERROR 
          SBK    GSLN 
          ZJN    IGS5              IF ENTIRE GENERAL STATUS INPUT 
          LCN    NADERRK           TRANSFER LENGTH ERROR
          UJK    IGS3 
  
 IGS5     UJK    IGSX              RETURN 
  
 IGSA     BSS    1                 FUNCTION CODE
 ILD      SPACE  4,10 
**        ILD - INITIALIZE FOR LOAD/DUMP. 
* 
*         ENTRY  NONE 
* 
*         EXIT   (A) .NE. 0, IF ERROR,
*                    = 0, OTHERWISE, IN WHICH CASE
*                    EST ENTRY VALIDATED, 
*                    CHANNEL RESERVED,
*                    PATH ESTABLISHED IF REMOTE.
* 
*         CALL R.TAFL TO TERMINATE FIELD LENGTH ACCESS
*         CALL SEN TO SEARCH EST FOR MATCHING CHANNEL 
*         IF (LT .NE. 0) THEN 
*           BEGIN  (* REMOTE LOAD OR DUMP *)
*             CALL WSA TO WAIT FOR SHARED ACCESS TO LOCAL NAD 
*             CALL CNT TO REQUEST CONNECTION TO REMOTE NAD
*                         AND RETURN PATH ID
*           END 
*         ELSE
*           BEGIN  (* LOCAL LOAD OR DUMP *) 
*             CALL WDA TO WAIT FOR DEDICATED ACCESS TO LOCAL NAD
*           END 
*         RETURN. 
  
  
 ILD      ENM    X
          RJM    R.TAFL            TERMINATE FIELD LENGTH ACCESS
          RJM    SEN               SEARCH EST FOR MATCHING CHANNEL
          NJN    ILD2              IF NAD NOT FOUND 
          LDD    LT                LOCAL TCU ENABLES
          ZJN    ILD1              IF NOT REMOTE LOAD/DUMP
          RJM    WSA               WAIT FOR SHARED ACCESS TO LOCAL NAD
          NJN    ILD2              IF ERROR 
          RJM    CNT               REQUEST CONNECTION TO REMOTE NAD 
          UJN    ILD2              RETURN 
  
 ILD1     RJM    WDA               WAIT FOR DEDICATED ACCESS TO NAD 
 ILD2     UJK    ILDX              RETURN 
 LFT      SPACE  4,10 
**        LFT - LOAD FET ADDRESS. 
* 
*         ENTRY  (A) = FET OFFSET 
* 
*         EXIT   (A) = ABSOLUTE CM ADDRESS
*                    = 0, ADDRESS ERROR.
  
  
 LFT      ENM    X
          STD    D.Z0              SAVE FET OFFSET
          LDD    FETADR 
          LPN    77B
          SHN    12 
          LMD    FETADR+1 
          ADD    D.Z0 
          ADDRA  ER=0 
          UJK    LFTX              RETURN 
 LOG      SPACE  4,10 
**        LOG - LOG ERROR.
* 
*         ENTRY  NONE 
* 
*         EXIT   (ERROR) = 0, ERROR LOGGED
* 
*         SAVE DIRECT CELLS D.T5 - D.T6 
*         CALL CER TO LOG CERFILE MESSAGE 
*         RETURN. 
  
  
 LOG      ENM    X                 ENTRY/EXIT 
          LDD    D.PPMES1 
          ADN    3
          CWD    D.T5              SAVE D.T5 - D.T7 IN MSG4 
          RJM    CER               LOG CERFILE MESSAGE
          UJK    LOGX              RETURN 
 RBB      SPACE  4,10 
**        RBB - READ BINARY BUFFER. 
* 
*         ENTRY  (A) = CM WORD COUNT
*                (BUFF) = FWA OF PP BUFFER
* 
*         EXIT   (A) = 0, NORMAL RETURN 
*                    = ER05, BUFFER ARGUMENT ERROR. 
  
  
 RBB0     LCN    ER05              *BUFFER ARGUMENT ERROR*
  
 RBB      ENM    X
          STD    D.T2              SET FIRST PART WORD COUNT
          STD    D.T1              SAVE CM WORD COUNT 
          SBN    1
          MJN    RBB0              IF NO DATA TO WRITE
          LDK    BUFF 
          STM    RBBA              SET READ ADDRESS 
          LDD    OUTPNT            CALCULATE OUT - LIMIT + WORD COUNT 
          SBD    LIMIT
          SHN    12 
          ADD    OUTPNT+1 
          SBD    LIMIT+1
          ADD    D.T1 
          MJN    RBB1              IF NO WRAP AROUND
          STD    D.T3              SET SECOND PART WORD COUNT 
          LDD    D.T1 
          SBD    D.T3 
          STD    D.T2              SET FIRST PART WORD COUNT
  
 RBB1     LDD    OUTPNT 
          SHN    12 
          LMD    OUTPNT+1 
          ADD    D.T2              VALIDATE LAST WORD BEING READ
          ADDRA  ER=RBB0
          SBD    D.T2 
          CRM    **,D.T2           READ CM BUFFER 
 RBBA     EQU    *-1
          LDD    D.T2 
          RAD    OUTPNT+1          ADVANCE OUT POINTER
          SHN    -12
          RAD    OUTPNT 
          SBD    LIMIT             CALCULATE OUT - LIMIT
          SHN    12 
          ADD    OUTPNT+1 
          SBD    LIMIT+1
          NJN    RBB2              IF NOT AT LIMIT
          LDD    FIRST
          STD    OUTPNT            RESET OUT POINTER TO FIRST 
          LDD    FIRST+1
          STD    OUTPNT+1 
          LDD    D.T2              ADVANCE PP BUFFER ADDRESS
          SHN    2                 *4 
          ADD    D.T2              *5 
          RAM    RBBA 
          LDD    D.T3 
          ZJN    RBB2              IF NO SECOND PART
          STD    D.T2              SET WORD COUNT 
          LDN    0
          STD    D.T3              CLEAR SECOND PART WORD COUNT 
          UJK    RBB1 
  
 RBB2     LDN    0                 NORMAL RETURN
          UJK    RBBX              RETURN 
 RCD      SPACE  4,10 
**        RCD - RELEASE CHANNEL TEMPORARILY AND DELAY.
* 
*         ENTRY  CHANNEL RESERVED 
* 
*         EXIT   (A) .NE. 0, IF CPA ERROR FLAG SET, 
*                    = 0, OTHERWISE 
*                    CHANNEL RESERVED.
  
  
 RCD      ENM    X
          LDN    1                 TEMPORARY RELEASE
          RJM    REL               RELEASE CHANNEL
          RJM    DEL               DELAY A WHILE
          STM    RCDA+1            SAVE RETURN CODE FROM DEL
          SHN    -12
          STM    RCDA 
          RJM    RES               RESERVE CHANNEL
          LDM    RCDA              RESTORE RETURN CODE FROM DEL 
          SHN    12 
          LMM    RCDA+1 
          UJK    RCDX              RETURN 
  
 RCDA     BSS    2                 TEMPORARY STORAGE FOR DEL RETURN CODE
 NOS      IF     DEF,NOS
          SPACE  4,10 
**        R.RAFL REQUEST FIELD ACCESS.
* 
*         R.TAFL TERMINATE FIELD ACCESS 
* 
*         SINCE NOS DOES NOT HAVE AN EQUIVALENT TO R.RAFL OR
*         R.TAFL, WE WILL DO A PAUSE FOR STORAGE RELOCATION WHEN
*         EITHER ONE IS CALLED. 
* 
*         ENTRY  NONE.
* 
*         EXIT   NONE.
* 
  
 R.RAFL   ENM    X
 R.TAFL   EQU    R.RAFL 
  
          LDN    0
          RJM    R.MTR             PAUSE FOR RELOCATION 
          UJN    R.RAFLX
 NOS      ENDIF 
 SAL      SPACE  4,10 
**        SAL - SET LOCAL NAD ADDRESS/LENGTH REGISTERS. 
* 
*         ENTRY  (NDFWA) - (NDFWA+1) = NAD ADDRESS
*                (NDBLK) = LENGTH IN NAD WORDS
* 
*         EXIT   (A) = RC04, IF NAD ACCESS ERROR
*                    = 0, OTHERWISE.
  
  
 SAL      ENM    X
          LDD    NDFWA             UPPER FOUR BITS OF NAD ADDRESS 
          SHN    12 
          LMD    NDFWA+1           LOWER TWELVE BITS OF NAD ADDRESS 
          SHN    -8 
          STM    SALA              UPPER EIGHT BITS OF NAD ADDRESS
          LDD    NDFWA+1
          LPC    377B 
          STM    SALA+1            LOWER EIGHT BITS OF NAD ADDRESS
          LDD    NDBLK             NUMBER OF NAD WORDS
          SHN    -8 
          STM    SALA+2            UPPER EIGHT BITS OF LENGTH 
          LDD    NDBLK
          LPC    377B 
          STM    SALA+3            LOWER EIGHT BITS OF LENGTH 
  
 SAL1     LDK    FCSA              SET ADDRESS/LENGTH 
          RJM    FAN
          ZJN    SAL4              IF NO ERROR
  
 SAL2     MJN    SAL3              IF HARDWARE ERROR
          LCN    NADERRC
  
 SAL3     RJM    ERR               PROCESS ERROR
          PJN    SAL1              IF RETRY POSSIBLE
          LDK    RC04              *NAD ACCESS ERROR* 
          UJN    SAL9              RETURN 
  
 SAL4     ACN    CH+40B            ACTIVATE CHANNEL 
          LDN    4                 NUMBER OF BYTES TO OUTPUT
          OAM    SALA,CH
          NJN    SAL2              IF ALL DATA NOT TAKEN
  
 SAL5     SBN    1
          ZJN    SAL2              IF DELAY EXPIRED 
          FJM    SAL5,CH           IF ALL DATA NOT TAKEN
          DCN    CH+40B            DISCONNECT CHANNEL 
          LDN    0                 NO ERROR 
  
 SAL9     UJK    SALX              RETURN 
  
 SALA     BSS    4
 SEN      SPACE  4,10 
**        SEN - SEARCH EST FOR NAD ENTRY WITH MATCHING CHANNEL. 
* 
*         ENTRY  (CHAN) = CHANNEL NUMBER. 
* 
*         EXIT   (A)  = RC02, IF CHANNEL NOT FOUND
*                     = 0, IF NO ERROR IN WHICH CASE
*                          (ESTO) CONTAINS EST ORDINAL. 
  
  
 SEN      ENM    X
          LDN    0
          STD    ESTO              INITIAL EST ORDINAL
  
 SEN1     RJM    CEE               CHECK EST ENTRY
          ZJN    SEN2              IF VALID NAD FOUND 
          AOD    ESTO              INCREMENT EST ORDINAL
          SBM    LEST              LAST EST ORDINAL + 1 
          MJN    SEN1              IF MORE ENTRIES TO SEARCH
          LDN    0
          STD    ESTO              RESET EST ORDINAL
          LDN    RC02              *CHANNEL NOT FOUND*
  
 SEN2     UJK    SENX              RETURN 
 SLP      SPACE  4,10 
**        SLP - SELECT PATH.
* 
*         ENTRY  (PN) = PATH NUMBER 
* 
*         EXIT   (A) = 0, IF NO ERROR 
*                    = RC04, NAD ACCESS ERROR.
*                    = -ERO6, ABORTED BY SYSTEM.
* 
*         CALLS  ERR, FFN, RCD. 
  
  
 SLP2     SOM    SLPA              DECREMENT RETRY COUNT
          PJN    SLP3              IF NOT EXHAUSTED 
  
          LDK    -NADERRT          *CONNECT-IN-PROGRESS TIME-OUT* 
          UJN    SLP4              REPORT ERROR 
  
 SLP3     RJM    RCD               RELEASE CHANNEL AND DELAY
          ZJN    SLP1              IF NO ERROR
  
 SLP      ENM    X
  
          LDK    RTY.CIP           RETRY COUNT (CONNECT-IN-PROGRESS)
          STM    SLPA              SET RETRY COUNT
  
 SLP1     LDD    PN                PATH NUMBER
          LMC    FCSP              SELECT PATH FUNCTION 
          RJM    FFN
          MJN    SLP4              IF HDWE ERROR
          ZJN    SLPX              IF *ACK* 
  
          LMK    RCNK&RCAK
          ZJN    SLP5              IF *NAK* 
  
          LMK    RCCP&RCNK
          ZJN    SLP2              IF *CONNECT-IN-PROGRESS* 
  
          LMK    RCDC&RCCP
          ZJN    SLP5              IF *DISCONNECT*
  
          LMK    RCAB&RCDC
          ZJN    SLP5              IF *ABORT* 
  
          LDK    -NADERRG          ABNORMAL STATUS
  
 SLP4     RJM    ERR               REPORT ERROR 
          PJN    SLP3              IF RETRY POSSIBLE
  
 SLP5     LDK    RC04              *NAD ACCESS ERROR* 
          UJK    SLPX              EXIT 
  
 SLPA     BSS    1                 RETRY COUNT (CONNECT-IN-PROGRESS)
*CALL COMTFL
 TRM      SPACE  4,10 
**        TRM - TERMINATE PATH AND RELEASE CHANNEL. 
* 
*         ENTRY  (PN) .NE. 0, IF PATH EXISTS
* 
*         EXIT   (PN) = 0 
*                CHANNEL RELEASED.
* 
*         IF (PN .NE. 0) THEN 
*           BEGIN 
*             CALL RES TO RESERVE CHANNEL 
*             IF RESPONSE .NE. *ACK*
*               CALL CSS TO CHECK SLP STATUS
*             IF CSS RESPONSE .NE. 0 (NOT *NAK* OR *DISCONNECT*)
*               CALL FFN TO PURGE PATH. 
*             CALL FFN TO PURGE PATH
*           END 
*         PN := 0 
*         CALL REL TO RELEASE CHANNEL 
*         IF (ERROR .NE. 0) THEN
*           CALL LOG TO LOG ERROR IN ERROR FILE 
*         RELOAD SLP RESPONSE 
*         RETURN. 
  
  
 TRM      ENM    X
          LDD    PN                PATH ID
          ZJN    TRM4              IF NO PATH EXISTS
          RJM    RES               ENSURE CHANNEL IS RESERVED 
  
 TRM1     RJM    SLP               SELECT PATH
          ZJN    TRM3              IF ACK RESPONSE
          RJM    CSS               CHECK SELECT-PATH STATUS 
          ZJN    TRM4              IF *NAK* OR *DISCONNECT* 
          UJN    TRM3 
  
 TRM2     RJM    ERR               REPORT ERROR 
          MJN    TRM4              IF FIRM ERROR
          UJK    TRM1              RETRY
  
 TRM3     LDN    FCPP              PURGE PATH 
          RJM    FFN
          MJN    TRM2              IF ERROR 
  
 TRM4     LDN    0                 COMPLETE RELEASE 
          RJM    REL               RELEASE CHANNEL
          LDN    0
          STD    PN                FLAG NO PATH EXISTS
          LDD    ERROR             CONTROLWARE ERROR CODE 
          ZJN    TRM9              IF NO ERROR OCCURED
          RJM    LOG               LOG ERROR IN SYSTEM ERROR FILE 
  
 TRM9     LDM    CSSA              RESTORE SLP RESPONSE 
          SHN    12 
          LMM    CSSA+1 
          UJK    TRMX 
 UPI      SPACE  4,10 
**        UPI - UPDATE IN POINTER WITHIN FET. 
* 
*         ENTRY  NONE.
* 
*         EXIT   (A) = 0, NORMAL RETURN.
*                    = ER05, BUFFER ARGUMENT ERROR. 
  
  
 UPI      ENM    X
          LDK    P.ZERO 
          CRD    D.T0 
          LDD    INPNT
          STD    D.T0+C.PT         SET UP IN POINTER
          LDD    INPNT+1
          STD    D.T0+C.PT+1
          LDN    2                 FET OFFSET OF IN POINTER 
          RJM    LFT               ADD FWA OF FET 
          ZJN    UPI1              IF ADDRESS ERROR 
          CWD    D.T0              WRITE IN TO FET
          LDN    0                 NORMAL RETURN
          UJK    UPIX              RETURN 
  
 UPI1     LCN    ER05              *BUFFER ARGUMENT ERROR*
          UJK    UPIX              RETURN 
 UPO      SPACE  4,10 
**        UPO - UPDATE OUT POINTER WITHIN FET.
* 
*         ENTRY  NONE.
* 
*         EXIT   (A) = 0, NORMAL RETURN 
*                    = ER05, BUFFER ARGUMENT ERROR. 
  
  
 UPO      ENM    X
          LDK    P.ZERO 
          CRD    D.T0 
          LDD    OUTPNT 
          STD    D.T0+C.PT         SET UP OUT POINTER 
          LDD    OUTPNT+1 
          STD    D.T0+C.PT+1
          LDN    3                 FET OFFSET OF OUT POINTER
          RJM    LFT               ADD FWA OF FET 
          ZJN    UPO1              IF ADDRESS ERROR 
          CWD    D.T0              WRITE OUT TO FET 
          LDN    0                 NORMAL RETURN
          UJK    UPOX              RETURN 
  
 UPO1     LCN    ER05              *BUFFER ARGUMENT ERROR*
          UJK    UPOX              RETURN 
 WBB      SPACE  4,10 
**        WBB - WRITE BINARY BUFFER.
* 
*         ENTRY  (A) = CM WORD COUNT. 
*                (BUFF) = DATA TO BE WRITTEN. 
* 
*         EXIT   (A) = 0, NORMAL RETURN.
*                    ER01, ADDRESS ERROR. 
  
  
 WBB0     LCN    ER01              ERROR RETURN 
  
 WBB      ENM    X
          STD    D.T2              SET FIRST PART WORD COUNT
          STD    D.T1              SAVE CM WORD COUNT 
          SBN    1
          MJN    WBB0              IF NO DATA TO WRITE
          LDK    BUFF 
          STM    WBBA              SET WRITE ADDRESS
          LDD    INPNT
          SBD    LIMIT             CALCULATE IN - LIMIT + WORD COUNT
          SHN    12 
          ADD    INPNT+1
          SBD    LIMIT+1
          ADD    D.T1 
          MJN    WBB1              IF NO WRAP AROUND
          STD    D.T3              SET SECOND PART WORD COUNT 
          LDD    D.T1 
          SBD    D.T3 
          STD    D.T2              SET FIRST PART WORD COUNT
  
 WBB1     LDD    INPNT
          SHN    12 
          LMD    INPNT+1
          ADD    D.T2              VALIDATE LAST WORD BEING WRITTEN 
          ADDRA  ER=WBB0
          SBD    D.T2 
          CWM    **,D.T2           WRITE CM BUFFER
 WBBA     EQU    *-1
          LDD    D.T2 
          RAD    INPNT+1           ADVANCE IN POINTER 
          SHN    -12
          RAD    INPNT
          SBD    LIMIT             CALCULATE IN - LIMIT 
          SHN    12 
          ADD    INPNT+1
          SBD    LIMIT+1
          NJN    WBB2              IF NOT AT LIMIT
          LDD    FIRST
          STD    INPNT             RESET IN POINTER TO FIRST
          LDD    FIRST+1
          STD    INPNT+1
          LDD    D.T2              ADVANCE PP BUFFER ADDRESS
          SHN    2                 *4 
          ADD    D.T2              *5 
          RAM    WBBA 
          LDD    D.T3 
          ZJN    WBB2              IF NO SECOND PART
          STD    D.T2              SET WORD COUNT 
          LDN    0
          STD    D.T3              CLEAR SECOND PART WORD COUNT 
          UJK    WBB1 
  
 WBB2     LDN    0                 NORMAL RETURN
          UJK    WBBX              RETURN 
 WDA      SPACE  4,10 
**        WDA - WAIT FOR DEDICATED ACCESS TO LOCAL NAD. 
* 
*         ENTRY  (ESTO) = EST ORDINAL OF NAD
*                (CHAN) = CHANNEL NUMBER
* 
*         EXIT   (A) = RC01, IF CALLER NOT AUTHORIZED 
*                    = RC09, IF LOCAL NAD FAULT 
*                    = 0, OTHERWISE, IN WHICH CASE
*                      CHANNEL IS RESERVED, 
*                      NAD MASTER CLEARED AND HALTED, 
* 
*         CALL R.RCH TO RESERVE EST INTERLOCK 
*         READ EST ENTRY
*         CALL CVR TO CHECK CVL RESERVATION OF EST. 
*         IF EST NOT RESERVED BY CVL FOR JOB
*           OR S.EDN = 0 (EST UP)  THEN 
*           RETURN RC01 (* CALLER NOT AUTHORIZED *) 
*         CALL RES TO RESERVE CHANNEL 
*         CALL FAN TO MASTER CLEAR INTERFACE
*         CALL FAN TO CLEAR PARITY ERROR
*         CALL HST TO GET HARDWARE STATUS 
*         IF (DEVICE ENABLE OFF) THEN 
*           RETURN RC07 (* DEVICE ENABLE OFF *) 
*         CALL EPH TO ENSURE PROCESSOR IS HALTED
*         MODIFY FAULT MASK IN ROUTINE *CST*
*             TO IGNORE PROCESSOR HALTED ERRORS 
*         RETURN
  
  
 WDA0     BSS    0
          LDN    RC01              *CALLER NOT AUTHORIZED*
  
 WDA      ENM    X
 NOS      IF     DEF,NOS
          LDD    ESTO              EST ORDINAL
          RJM    .EST              CONVERT EST ORDINAL TO EST ADDRESS 
          ADK    EQDE 
 NOS      ELSE
          LDM    FEST              FWA OF EST 
          ADD    ESTO              EST ORDINAL
 NOS      ENDIF 
          CRD    D.T0              READ EST ENTRY 
          RJM    CVR               CHECK CVL-RESERVATION FLAG 
          SBN    1
          MJN    WDA0              IF NAD NOT RESERVED BY CVL 
 NOS      IF     DEF,NOS
          LDD    D.T0+C.CWNL
          SHN    17-S.CWNL
 NOS      ELSE
          LDD    D.T0+C.ESTAT 
          SHN    17-S.EDN 
 NOS      ENDIF 
          PJN    WDA0              IF NOT DOWN
          RJM    RES               RESERVE NAD CHANNEL
  
 WDA1     LDK    FCMC              MASTER CLEAR INTERFACE 
          RJM    FAN
          NJN    WDA2              IF ERROR 
          LDK    FCCE              CLEAR PARITY ERROR 
          RJM    FAN
          NJN    WDA2              IF ERROR 
          RJM    HST               GET HARDWARE STATUS
          MJN    WDA2              IF HARDWARE ERROR
          LPK    M.HSTENB 
          ZJN    WDA4              IF DEVICE ENABLED
          LDN    RC07              *DEVICE ENABLE OFF*
          UJN    WDA9              RETURN 
  
 WDA2     MJN    WDA3              IF ERROR 
          LCN    NADERRH           *INVALID RESPONSE* 
  
 WDA3     RJM    ERR               PROCESS ERROR
          PJN    WDA1              IF RETRY POSSIBLE
          LDK    RC08              LOCAL NAD FAULT
          UJN    WDA9              RETURN 
  
 WDA4     RJM    EPH               ENSURE PROCESSOR IS HALTED 
          MJN    WDA2              IF ERROR 
          LDM    CSTA              NORMAL FAULT TEST
          STM    WDAA              SAVE 
          LDN    0
          STM    CSTA              MODIFY TEST IN *CSTA*
          LDN    0                 SIGNAL NORMAL RETURN 
  
 WDA9     UJK    WDAX              RETURN 
  
 WDAA     CON    0                 SAVE *CST* FAULT TEST
 WSA      SPACE  4,10 
**        WSA - WAIT FOR SHARED ACCESS TO NAD.
* 
*         ENTRY  (ESTO) = EST ORDINAL OF NAD
*                (CHAN) = CHANNEL NUMBER
* 
*         EXIT   (A) = -ER06, IF C.P. ERROR FLAG SET. 
*                    = RC03, IF EST IS NOT CVL-RESERVED AND DOWN OR OFF,
*                            OR EST IS CVL-RESERVED AND EITHER
*                               (DOWN FOR A REMOTE NAD FUNCTION) OR 
*                               (UP FOR A LOCAL NAD FUNCTION).
*                            OR DELAY TIME OUT. 
*                    = RC08, IF LOCAL NAD FAULT.
*                    = 0, OTHERWISE, IN WHICH CASE
*                      CHANNEL IS RESERVED, 
*                      S.ESTNLG IS SET IN EST ENTRY,
*                      (NLGACT) NE 0, 
*                      (NDLWA) - (NDLWA+1) SET TO MAXIMUM POSSIBLE
*                                          NAD MEMORY SIZE. 
* 
*         USES   D.T0-D.T4. 
* 
*         CALLS  CVR, DEL, RES. 
  
  
 NOS      IF     DEF,NOS
 WSA0     BSS    0
 NOS      ELSE
 WSA0     LDK    CH.EST            RELEASE EST INTERLOCK
          RJM    R.DCH
 NOS      ENDIF 
          LDN    RC03              *EST/CHANNEL UNAVAILABLE*
  
 WSA      ENM    X
          LDN    5
          STM    WSAA              INITIALIZE RETRY COUNT 
  
 NOS      IF     DEF,NOS
 WSA1     BSS    0
 NOS      ELSE
 WSA1     LDK    CH.EST            RESERVE EST INTERLOCK
          RJM    R.RCH
 NOS      ENDIF 
 NOS      IF     DEF,NOS
          LDD    ESTO              EST ORDINAL
          RJM    .EST              CONVERT EST ORDINAL TO EST ADDRESS 
          ADK    EQDE 
 NOS      ELSE
          LDM    FEST              FWA OF EST 
          ADD    ESTO              EST ORDINAL
 NOS      ENDIF 
          CRD    D.T0              READ EST ENTRY 
          RJM    CVR               CHECK CVL-RESERVATION FLAG 
          MJN    WSA0              IF RESERVED FOR ANOTHER JOB
          NJN    WSA1.2            IF RESERVED FOR THIS JOB 
 NOS      IF     DEF,NOS
          LDD    D.T0+C.ESTAT 
          SHN    17-S.ESTDSO       DEVICE STATUS ON/OFF 
 NOS      ELSE
          LDD    D.T0+C.ESTMNE
          SHN    17-S.ESTON 
 NOS      ENDIF 
          MJN    WSA0              IF EST OFF 
 WSA1.1   BSS    0
 NOS      IF     DEF,NOS
          LDD    D.T0+C.CWNL
          SHN    17-S.CWNL
 NOS      ELSE
          LDD    D.T0+C.ESTAT 
          SHN    17-S.EDN 
 NOS      ENDIF 
          MJN    WSA0              IF EST DOWN
          UJN    WSA1.3            CONTINUE 
  
 WSA1.2   LDD    LT 
          NJN    WSA1.1            IF ACCESSING REMOTE NAD
 NOS      IF     DEF,NOS
          LDD    D.T0+C.CWNL
          SHN    17-S.CWNL
 NOS      ELSE
          LDD    D.T0+C.ESTAT 
          SHN    17-S.EDN 
 NOS      ENDIF 
          PJN    WSA0              IF NAD IS UP 
  
 WSA1.3   BSS    0
          LDD    D.T0+C.ESTNA 
          SHN    17-S.ESTNLG
          PJN    WSA3              IF NETLOG NOT ALREADY ACTIVE 
          IF     -DEF,NOS,2 
          LDK    CH.EST 
          RJM    R.DCH             RELEASE EST INTERLOCK
          RJM    DEL               DELAY A WHILE
          MJN    WSA2.1            IF C.P. ERROR FLAG SET 
          NJN    WSA2              IF ERROR 
          SOM    WSAA              DECREMENT RETRY COUNT
          MJN    WSA2              IF RETRY COUNT EXCEEDED
          UJK    WSA1              TRY AGAIN
  
 WSA2     LDK    RC03              *EST/CHANNEL UNAVAILABLE*
  
 WSA2.1   BSS    0
          UJK    WSAX              RETURN 
  
 NOS      IF     DEF,NOS
 WSA3     LDD    ESTO 
          STD    D.T1              SET ESTO FOR REQUEST 
          LDK    C.ESTNA+4
          STD    D.T2              SET FUNCTION TO STORE BYTE C.ESTNA 
          LDK    -M.ESTNLG
          STD    D.T3              SET MASK 
          LDK    M.ESTNLG 
          STD    D.T4              SET VALUE TO BE PLUGGED
          LDK    M.SEQ             FUNCTION TO SET VALUE IN EST 
          RJM    R.MTR             CALL MONITOR TO SET NETLOG ACTIVE
          AOD    NLGACT            SET NETLOG SET ACTIVE FLAG 
 NOS      ELSE
 WSA3     LDD    D.T0+C.ESTNA 
          SCK    M.ESTNLG 
          LMK    M.ESTNLG          SET NETLOG ACTIVE
          STD    D.T0+C.ESTNA 
          AOD    NLGACT            FLAG NETLOG ACTIVE 
          LDM    FEST 
          ADD    ESTO 
          CWD    D.T0              REWRITE EST ENTRY
          LDK    CH.EST 
          RJM    R.DCH             RELEASE EST INTERLOCK
 NOS      ENDIF 
          RJM    RES               RESERVE NAD CHANNEL
  
 WSA4     RJM    CST
          PJN    WSA5              IF NO ERROR
          RJM    ERR               LOG ERROR
          PJN    WSA4              IF RETRY POSSIBLE
          LDK    RC08              *LOCAL NAD FAULT*
          UJN    WSA9 
  
 WSA5     LDN    0                 NO ERROR 
  
 WSA9     UJK    WSAX              RETURN 
  
 WSAA     BSS    1                 RETRY COUNT
*CALL,COMNCER 
  
*CALL,COMNCES 
  
*CALL COMBRK
  
*CALL COMCHNTBL 
  
  
          USE    3NX               FLUSH LITERALS 
 OVLA     EQU    *                 ORIGIN FOR OVERLAY LOADS 
          BSS    5                 SIMULATE PP LOADER TABLE 
 DNE      TITLE  FC=03  DNE - DUMP NAD ERROR LOG. 
          QUAL   3NX
**        FC=03 - DUMP NAD ERROR LOG. 
* 
*         CALL CIB TO CHECK INPUT BUFFER PARAMETERS 
*                     AND CALCULATE SPACE AVAILABLE.
*         IF NOT ENOUGH SPACE IN BUFFER THEN
*           RETURN. 
*         CALL R.TAFL TO TERMINATE FIELD LENGTH ACCESS
*         CALL SEN TO SEARCH EST FOR MATCHING CHANNEL 
*         IF (LT .NE. 0) THEN 
*           CALL GRL TO GET REMOTE NAD LOG
*         ELSE
*           CALL GLL TO GET LOCAL NAD LOG 
*         CALL R.RAFL TO REQUEST FIELD LENGTH ACCESS
*         CALL WBB TO WRITE BUFFER
*         CALL UPI TO UPDATE IN POINTER 
*         RETURN. 
  
  
 DNE      ENM    X                 ENTRY
          RJM    CIB               CHECK INPUT BUFFER PARAMETERS
          MJN    DNEX              IF ERROR DETECTED
          SBK    GSLW              MINIMUM SIZE OF BUFFER 
          PJN    DNE1              IF ENOUGH SPACE IN BUFFER
          LDN    RC06              *INSUFFICIENT BUFFER SPACE*
          UJK    DNEX              ERROR RETURN 
  
 DNE1     RJM    R.TAFL            TERMINATE FIELD LENGTH ACCESS
          RJM    SEN               SEARCH EST FOR MATCHING CHAN 
          NJN    DNE9              IF NAD NOT FOUND 
          LDD    LT                LOCAL TCU ENABLES
          ZJN    DNE2              IF NOT REMOTE NAD
          RJM    GRL               GET REMOTE NAD LOG 
          UJN    DNE3              CONTINUE 
  
 DNE2     RJM    GLL               GET LOCAL NAD LOG
  
*         WRITE ERROR LOG TO CM BUFFER AND UPDATE FET POINTERS. 
  
 DNE3     NJN    DNE9              IF ERROR ENCOUNTERED 
          RJM    R.RAFL            REQUEST FIELD LENGTH ACCESS
          LDK    GSLW              LENGTH OF ERROR LOG
          RJM    WBB               WRITE BINARY BUFFER
          NJN    DNE9              IF ERROR ENCOUNTERED 
          RJM    UPI               UPDATE IN POINTER
  
 DNE9     UJK    DNEX              RETURN 
 DNE      TITLE  FC=03 - SUBROUTINES. 
 GRL      SPACE  4,10 
**        GRL - GET REMOTE NAD ERROR LOG. 
* 
*         CALL WSA TO WAIT FOR SHARED ACCESS TO LOCAL NAD 
*         CALL CNT TO REQUEST CONNECTION TO REMOTE NAD
*                     AND RETURN PATH ID
*         CALL SLP TO SELECT PATH 
*         CALL FFN TO ISSUE REMOTE STATUS REQUEST 
*         WHILE (TRANSFER NOT READY) DO 
*           BEGIN 
*             CALL RCD TO RELEASE CHANNEL AND DELAY 
*             CALL SLP TO SELECT PATH 
*             CALL FFN TO ISSUE REMOTE STATUS REQUEST 
*           END 
*         WHILE (INPUT NOT AVAILABLE) DO
*           BEGIN 
*             CALL RCD TO RELEASE CHANNEL AND DELAY 
*             CALL SLP TO SELECT PATH 
*           END 
*         CALL IGS TO INPUT REMOTE NAD STATUS 
*         RETURN. 
  
  
 GRL      ENM    X                 ENTRY/EXIT 
          RJM    WSA               WAIT FOR SHARED ACCESS TO NAD
          NJN    GRLX              IF NO ACCESS 
          RJM    CNT               REQUEST CONNECTION TO REMOTE NAD 
          NJN    GRLX              IF ERROR 
  
 GRL2     SOM    GRLA              UPDATE RETRY COUNT 
          ZJN    GRL3              IF RETRY LIMIT 
          RJM    SLP               SELECT PATH
          NJN    GRLX              IF ERROR 
          LDK    FCRR              REMOTE STATUS REQUEST
          RJM    FFN
          ZJN    GRL6              IF ACK 
          MJN    GRL5              IF HARDWARE ERROR
          LMN    RCTN&RCAK
          NJN    GRL4              IF NOT (TRANSFER NOT READY) STATUS 
          RJM    RCD               RELEASE CHANNEL AND DELAY
          NJN    GRL9              IF ERROR 
          UJK    GRL2              RESELECT PATH
  
 GRL3     LDK    RC11              *RETRY LIMIT*
          UJN    GRL9 
  
 GRL4     MJN    GRL5              IF HARDWARE ERROR
          LDK    -NADERRS          ABNORMAL RESPONSE (REMOTE) 
  
 GRL5     RJM    ERR               REPORT ERROR 
          PJN    GRL2              IF RETRY POSSIBLE
          LDK    RC04              *NAD ACCESS ERROR* 
          UJN    GRL9              RETURN 
  
 GRL6     SOM    GRLB              UPDATE RETRY COUNT 
          ZJN    GRL3              IF RETRY LIMIT 
          LDD    STATUS            CHECK FOR INPUT AVAILABLE
          SHN    17-S.CSTIA 
          MJN    GRL7              IF INPUT AVAILABLE 
          RJM    RCD               RELEASE CHANNEL AND DELAY
          NJN    GRL9              IF ERROR 
          RJM    SLP               SELECT PATH
          NJN    GRL9              IF ERROR 
          UJK    GRL6              RECHECK STATUS 
  
 GRL7     LDK    FCMI              MAINTENANCE INPUT FUNCTION 
          RJM    IGS               INPUT REMOTE NAD STATUS
          NJN    GRL4              IF ERROR 
  
 GRL9     UJK    GRLX              RETURN 
  
 GRLA     CON    RTY.DNE+1         RETRY COUNT - RESELECT PATH
 GRLB     CON    RTY.DNE+1         RETRY COUNT - RECHECK STATUS 
  
          QUAL   *
 NELW     EQU    *                 END OF RESIDENT OVERLAY (3NX)
 INI      TITLE  INITIALIZATION ROUTINES. 
**        INI - INITIALIZE NLD. 
* 
*         ENTRY  NONE 
* 
*         EXIT   VARIABLES INITIALIZED. 
* 
*         INITIALIZE VARIABLES
*         IF (FWA OF PBLOCK = ZERO) OR (PBLOCK LWA OUT-OF-RANGE) THEN 
*           RETURN ER01  (* FET ADDRESS ERROR *)
*         READ PARAMETERS FROM PBLOCK 
*         IF (NOT CALLED FROM SYSTEM LIBRARY PROGRAM) THEN
*           RETURN ER02  (* NOT CALLED FROM SYSTEM LIBRARY *) 
*         IF NOT (0 < FUNCTION CODE <= LAST VALID CODE) THEN
*           RETURN ER03  (* INVALID FUNCTION CODE *)
*         IF NOT ( (FIRST <= IN < LIMIT) AND (FIRST <= OUT < LIMIT) ) 
*             THEN
*           RETURN ER05  (* BUFFER ARGUMENT ERROR *)
*         RETURN. 
* 
*         NOTE - INI IS OVERWRITTEN BY OVERLAYS 
  
  
          QUAL   INI
          USE    INI
  
 INI      ENM    X
 NOS      IF     DEF,NOS
          LDN    0                 IGNORE AUTO-RECALL FOR NOS 
 NOS      ELSE
          PPENTRY D.PPIRB,D.T0
          LDD    D.PPIRB+1
          LPN    20B               MASK AUTO-RECALL BIT 
 NOS      ENDIF 
          STM    ARCL              SAVE AUTO-RECALL FLAG
          RJM    DER               DELAY-RETRY-COUNT RESET (A = 0)
          STD    NDFWA             ZERO FWA OF CURRENT BLOCK
          STD    NDFWA+1
          STD    NDBLK             ZERO BLOCK SIZE (NAD WORDS)
          STD    CMBLK             ZERO BLOCK SIZE (CM WORDS) 
          STD    PN                ZERO PATH ID 
          STD    RC                ZERO RETURN CODE 
          STD    NLGACT            ZERO NETLOG ACTIVE FLAG
          STD    TRACE             ZERO TRACE INDICATOR 
          STD    NXTPNT            ZERO NEXT FLAG FUNCTION
          STD    STATUS            ZERO CONTROLWARE STATUS
          STM    HSTATUS           ZERO HARDWARE STATUS 
          STD    ERROR             ZERO LAST ERROR
          STM    CERROR            ZERO CURRENT ERROR 
          STD    CHNRES            ZERO CHANNEL RESERVED
          LDN    1
          STD    ONE               CONSTANT ONE 
          LDN    2
          STD    TWO               CONSTANT TWO 
          LDK    P.EST
          CRD    D.T0 
 NOS      IF     DEF,NOS
          LDD    D.T0+C.ESTSIZ
 NOS      ELSE
          LDD    D.T0+C.EST 
          STM    FEST              FWA OF EST 
          LDD    D.T0+C.ESTLWA
          SBM    FEST 
 NOS      ENDIF 
          STM    LEST              LAST EST ORDINAL + 1 
          IF     -DEF,NOS,4 
          LDK    P.CST
          CRD    D.T0              INITIALIZE CHANNEL STATUS TABLE POINT
          LDD    D.T0+C.CST 
          STM    RESA 
          LDN    6                 LENGTH OF PBLOCK 
          STD    D.T0 
          LDD    D.PPIRB+3
          LPN    77B
          STD    FETADR            ADDRESS OF PBLOCK (FET)
          SHN    12 
          LMD    D.PPIRB+4
          STD    FETADR+1 
          ZJN    INI1              IF FET ADDRESS = ZERO
          ADN    5                 LAST WORD OF FET 
          ADDRA  OK=INI2
  
 INI1     LCN    ER01              *FET ADDRESS ERROR*
          UJK    INIX              RETURN 
  
 INI2     SBN    5
          CRM    PBUF,D.T0         READ PBLOCK INTO PBUF
          LDM    PBUF+0 
          LPN    77B
          STD    CHAN              CHANNEL NUMBER 
          LDM    PBUF+1 
          STD    ESTO              EST ORDINAL
          LDM    PBUF+2 
          STM    SUBF              SUB-FUNCTION 
          LDM    PBUF+1*5+C.PT
          LPN    77B
          STD    FIRST
          LDM    PBUF+1*5+C.PT+1
          STD    FIRST+1
          LDM    PBUF+2*5+C.PT
          LPN    77B
          STD    INPNT
          LDM    PBUF+2*5+C.PT+1
          STD    INPNT+1
          LDM    PBUF+3*5+C.PT
          LPN    77B
          STD    OUTPNT 
          LDM    PBUF+3*5+C.PT+1
          STD    OUTPNT+1 
          LDM    PBUF+4*5+C.PT
          LPN    77B
          STD    LIMIT
          LDM    PBUF+4*5+C.PT+1
          STD    LIMIT+1
          LDM    PBUF+5*5+1 
          STD    ESTL              LAST EST ORDINAL 
          LDM    PBUF+5*5+2 
          LPC    377B              UPPER EIGHT BITS 
          STD    AC                NAD ACCESS CODE
          LDM    PBUF+5*5+3 
          SHN    -4 
          STD    AC+1              LOWER EIGHT BITS 
          LDM    PBUF+5*5+3 
          LPN    17B
          SHN    12 
          LMM    PBUF+5*5+4 
          SHN    -8 
          STD    ND 
          LDM    PBUF+5*5+4 
          LPN    17B
          STD    LT                LOCAL TCU ENABLE 
 NOS      IF     DEF,NOS
          LDK    P.CHT
          CRD    D.T0              READ CHT POINTER WORD
          LDD    D.T0+C.CHT        SET FWA OF CHT FOR #RES# 
          LPN    77B
          RAM    RESA-1 
          LDD    D.T0+C.CHT+1 
          STM    RESA 
          LDD    D.CPAD 
          ADK    W.SEP
          CRD    D.T0              READ SPECIAL ENTRY POINT WORD
          LDD    D.T0+C.EPI 
          SHN    17-S.SSJ 
          PJN    INI4              IF NOT SSJ= ENTRY POINT
 NOS      ELSE
          CPAD   W.CPLDR1 
          CRD    D.T0 
          LDD    D.T0+C.CPLP
          SHN    17-S.CPLP
          MJN    INI4              IF NOT CALLED FROM SYSTEM LIBRARY
 NOS      ENDIF 
          LDD    D.PPIRB+2
          ZJN    INI3 
          SBK    TFCPL+1           LAST VALID FUNCTION CODE + 1 
          MJN    INI6              IF VALID FUNCTION CODE 
  
 INI3     LCN    ER03              *INVALID FUNCTION CODE*
          UJN    INI5              RETURN 
  
 INI4     LCN    ER02              *NOT CALLED FROM SYSTEM LIBRARY* 
  
 INI5     UJK    INIX              RETURN 
  
 INI6     LDD    LIMIT             VALIDATE LIMIT 
          ADD    LIMIT+1
          ZJN    INI7              IF LIMIT = ZERO
          LDD    LIMIT             CALCULATE MAXIMUM BUFFER SIZE
          SBD    FIRST
          SHN    12 
          ADD    LIMIT+1
          SBD    FIRST+1
          SBN    1
          MJN    INI7              IF FIRST NOT .LT. LIMIT
          ADN    1
          SBK    100B              MINIMUM BUFFER SIZE
          MJN    INI7              IF BUFFER NOT LARGE ENOUGH 
          LDD    INPNT             CALCULATE IN - LIMIT 
          SBD    LIMIT
          SHN    12 
          ADD    INPNT+1
          SBD    LIMIT+1
          PJN    INI7              IF IN IS PAST LIMIT
          LDD    INPNT             CALCULATE IN - FIRST 
          SBD    FIRST
          SHN    12 
          ADD    INPNT+1
          SBD    FIRST+1
          PJN    INI8              IF IN NOT LESS THAN FIRST
  
 INI7     LCN    ER05              *BUFFER ARGUMENT ERROR*
          UJK    INIX              RETURN 
  
 INI8     LDD    OUTPNT            CALCULATE OUT - LIMIT
          SBD    LIMIT
          SHN    12 
          ADD    OUTPNT+1 
          SBD    LIMIT+1
          PJN    INI7              IF OUT PAST LIMIT
          LDD    OUTPNT 
          SBD    FIRST
          SHN    12 
          ADD    OUTPNT+1 
          SBD    FIRST+1
          MJN    INI7              IF OUT LESS THAN FIRST 
          LDN    0
          UJK    INIX              RETURN 
  
 PBUF     BSS    0                 BUFFER FOR PARAMETER BLOCK 
  
          QUAL   *
  
 NOS      IF     DEF,NOS
          OVERFLOW
 NOS      ENDIF 
  
 LWAINI   EQU    /INI/PBUF+6*5     END OF INITIALIZATION CODE 
          ERRMI  7773B-LWAINI      SPACE LEFT IN INITIALIZATION CODE
 LOD      TITLE  FC=01  LOD - LOAD NAD CONTROLWARE. 
          QUAL   3NE
          IDENT  3NE,OVLA+5 
          ORG    OVLA+5 
          COMMENT  NLD OVERLAY - LOAD NAD CONTROLWARE.
          COMMENT  COPYRIGHT (C) CONTROL DATA CORP. 1981, 1984
**        FC=01 - LOAD NAD CONTROLWARE. 
* 
*         CALL ILD TO INITIALIZE LOAD 
*         IF (LT .EQ. 0) THEN 
*           CALL FAN TO MASTER CLEAR PROCESSOR
*         CALL R.RAFL TO REQUEST FIELD LENGTH ACCESS
*         CALL COB TO CHECK OUTPUT BUFFER PARAMETERS
*                     AND CALCULATE DATA AVAILABLE
*         WHILE (DATA AVAILABLE) DO 
*           BEGIN 
*             CMBLK := MIN( DATAAVAILABLE, BUFW)
*             NDBLK := (CMBLK*5)/2
*             CALL RBB TO READ BINARY BUFFER
*             CALL R.TAFL TO TERMINATE FIELD LENGTH ACCESS
*             IF (LT. NE. 0) THEN 
*               CALL WRB TO WRITE REMOTE NAD BLOCK
*             ELSE
*               CALL WLB TO WRITE LOCAL NAD BLOCK 
*             CALL R.RAFL TO REQUEST FIELD LENGTH ACCESS
*             CALL UPO TO UPDATE OUT POINTER
*             NDFWA := NDFWA + NDBLK
*             CALL COB TO CHECK OUTPUT BUFFER PARAMETERS
*                         AND CALCULATE DATA AVAILABLE
*           END 
*         IF (LT .NE. 0) THEN 
*           CALL TRL TO TERMINATE REMOTE LOAD 
*         ELSE
*           CALL TLL TO TERMINATE LOCAL LOAD
*         RETURN. 
  
  
 LOD      ENM    X
          RJM    ILD               INITIALIZE LOAD
          NJN    LODX              IF ERROR 
          LDD    LT                LOCAL TCU ENABLES
          NJN    LOD1              IF NOT LOCAL LOAD
          LDK    FCPC              MASTER CLEAR PROCESSOR 
          RJM    FAN
  
 LOD1     RJM    R.RAFL            REQUEST FIELD LENGTH ACCESS
  
 LOD2     RJM    COB               CHECK OUTPUT BUFFER
          MJN    LODX              IF ERROR 
          NJN    LOD3              IF SOME DATA AVAILABLE 
          LJM    LOD7              END OF LOAD
  
 LOD3     SBK    BUFW              SIZE OF PP BUFFER
          MJN    LOD4              IF LESS THAN BUFW WORDS
          LDN    0
  
 LOD4     ADK    BUFW              MIN (DATAAVAILABLE, BUFW)
          STD    CMBLK             SIZE IN CM WORDS 
          SHN    2                 CMBLK*4
          ADD    CMBLK             CMBLK*5
          SHN    -1                (CMBLK*5)/2
          STD    NDBLK             SIZE IN NAD WORDS
          LDD    CMBLK             SIZE IN CM WORDS 
          RJM    RBB               READ BINARY BUFFER 
          NJN    LOD9              IF ERROR 
          RJM    R.TAFL            TERMINATE FIELD LENGTH ACCESS
          LDD    LT                LOCAL TCU ENABLES
          ZJN    LOD5              IF NOT REMOTE LOAD 
          RJM    WRB               WRITE NEXT REMOTE BLOCK
          UJN    LOD6 
  
 LOD5     RJM    WLB               WRITE NEXT LOCAL BLOCK 
  
 LOD6     NJN    LOD9              IF ERROR 
          RJM    R.RAFL            REQUEST FIELD LENGTH ACCESS
          RJM    UPO               UPDATE OUT POINTER 
          NJN    LOD6              IF ERROR 
          LDD    NDBLK             NUMBER OF NAD WORDS OUTPUT 
          RAD    NDFWA+1           UPDATE FWA OF NEXT BLOCK 
          SHN    -12
          RAD    NDFWA
          UJK    LOD2              CONTINUE LOADING 
  
 LOD7     LDD    LT                LOCAL TCU ENABLES
          ZJN    LOD8              IF NOT REMOTE LOAD 
          RJM    TRL               TERMINATE REMOTE LOAD
          UJN    LOD9 
  
 LOD8     RJM    TLL               TERMINATE LOCAL LOAD 
  
 LOD9     UJK    LODX              RETURN 
 LOD      TITLE  FC=01 - SUBROUTINES. 
 TLL      SPACE  4,10 
**        TLL - TERMINATE LOCAL LOAD. 
* 
*         RESTORE NORMAL FAULT MASK IN ROUTINE *CST 
*             (* MODIFIED BY *WDA* *) 
*         CALL FAN TO ISSUE GO
*         DELAY 
*         CALL CST TO GET CONTROLWARE STATUS
*         RETURN (A = 0, NORMAL.  A = RC04, ERROR.) 
  
  
 TLL      ENM    X
          LDM    WDAA              TEST FOR FAULT CONDITION 
          STM    CSTA              REENABLE FAULT CHECKING
  
 TLL1     LDN    0
          STD    D.T0              INITIALIZE DELAY COUNTS
          STD    D.T1 
          LDK    FCGO              SEND GO SIGNAL 
          RJM    FAN
          ZJN    TLL4              IF NO ERROR
  
 TLL2     MJN    TLL3              IF HARDWARE ERROR
          LCN    NADERRH
  
 TLL3     RJM    ERR               PROCESS ERROR
          PJN    TLL1              IF RETRY POSSIBLE
          LDK    RC04              *NAD ACCESS ERROR* 
          UJN    TLL9              EXIT 
  
 TLL4     LDN    17B               DELAY COUNT
  
 TLL5     SBN    1                 DECREMENT DELAY COUNT
          NJN    TLL5              IF MORE TO DELAY 
          RJM    CST               GET CONTROLWARE STATUS 
          MJN    TLL2              IF ERROR 
          NJN    TLL7              IF SOME RESPONSE 
          SOD    D.T0              DECREMENT RETRY COUNT
          NJN    TLL4              IF DELAY COUNT NOT EXPIRED 
          AOD    D.T1              INCREMENT OUTER COUNT
          SBN    5*2
          MJN    TLL4              IF LESS THAN 5 SECONDS 
  
          UJK    TLL2 
  
 TLL7     LPK    M.RESPCD+M.CSTFLT
          LMK    RCAK 
          NJN    TLL2              IF FAULT OR NOT *ACK*
  
 TLL9     UJK    TLLX              RETURN 
 TRL      SPACE  4,10 
**        TRL - TERMINATE REMOTE LOAD.
* 
*         ENTRY  PN = PATH NUMBER.
* 
*         EXIT   A = 0 (NORMAL) 
*                PN = 0. (PATH DISCONNECTED, REMOTE NAD STARTED.) 
* 
*                A = RC04 (ERROR).  (PN UNCHANGED.) 
* 
*         CALLS  CSS, ERR, FFN, RES, SLP. 
  
  
 TRL      ENM    X
          LDD    PN 
          ZJN    TRLX              IF NO PATH 
  
          RJM    RES               ENSURE CHANNEL IS RESERVED 
  
 TRL1     RJM    SLP               SELECT PATH
          ZJN    TRL3              IF ACK 
          RJM    CSS               CHECK SELECT-PATH STATUS 
          ZJN    TRL5              IF *NAK* OR *DISCONNECT* 
          UJN    TRL3              CONTINUE 
  
 TRL2     RJM    ERR               REPORT ERROR 
          PJN    TRL1              IF RETRY POSSIBLE
  
          LDK    RC04              NAD ERROR
          UJK    TRLX 
  
 TRL3     LDK    FCDP              DISCONNECT PATH
          RJM    FFN
          MJN    TRL2              IF HARDWARE ERROR
  
 TRL4     LDN    0
          STD    PN                CLEAR PATH 
  
 TRL5     LDM    CSSA              RESTORE SLP RESPONSE 
          SHN    12 
          LMM    CSSA+1 
          UJK    TRLX              RETURN 
 WLB      SPACE  4,10 
**        WLB - WRITE BLOCK TO LOCAL NAD. 
* 
*         CALL SAL TO SET NAD ADDRESS AND LENGTH REGISTERS
*         CALL WFP TO WAIT FOR PRIMED 
*         CALL FAN TO SET OUTPUT 8/12 
*         CALL OUT TO OUTPUT (2*NDBLK) PP BYTES 
*         RETURN. 
  
  
 WLB      ENM    X
  
 WLB1     RJM    SAL               SET NAD ADDRESS AND LENGTH 
          NJN    WLBX              IF ERROR 
          RJM    WFP               WAIT FOR PRIMED
          ZJN    WLB4              IF NO ERROR
  
 WLB2     MJN    WLB3              IF HARDWARE ERROR
          LCN    NADERRH
  
 WLB3     RJM    ERR               PROCESS ERROR
          PJN    WLB1              IF RETRY POSSIBLE
          LDK    RC04              *NAD ACCESS ERROR* 
          UJN    WLB9              RETURN 
  
 WLB4     LDK    FCO8              OUTPUT 8/12
          RJM    FAN
          NJN    WLB2              IF ERROR 
          LDK    BUFF 
          STM    OUTA              SET OUTPUT BUFFER ADDRESS
          LDD    NDBLK             NUMBER OF NAD WORDS TO OUTPUT
          SHN    1                 2*NDBLK = NUMBER OF PP WORDS 
          RJM    OUT               OUTPUT TO NAD
          MJN    WLB2              IF ERROR 
          STM    WLBA              SAVE NUMBER OF BYTES REMAINING 
          ZJN    WLB9              IF ALL BYTES OUTPUT
          LCN    NADERRK           *TRANSFER LENGTH ERROR*
          UJK    WLB3 
  
 WLB9     UJK    WLBX              RETURN 
  
 WLBA     BSS    1
 WRB      SPACE  4,10 
**        WRB - WRITE NEXT BLOCK TO REMOTE NAD. 
* 
*         ENTRY  BUFF = FWA OF PP BUFFER (CONTROLWARE DATA).
*                NDBLK = LENGTH, IN NAD WORDS.
*                PN = PATH NUMBER.
* 
*         EXIT   A = 0, ALL DATA SENT.
*                A = ERROR CODE.
* 
*         CALLS  ERR, FAN, FFN, OUT, RCD, SLP.
  
  
 WRB8     RJM    RCD               RELEASE CHANNEL AND DELAY
          ZJN    WRB1              IF NO ERROR
  
 WRB      ENM    X
  
 WRB1     RJM    SLP               SELECT PATH
          NJN    WRBX              IF ERROR 
  
          LDK    FCWD              WRITE DATA 
          RJM    FFN
          MJN    WRB3              IF DEVICE ERROR
          ZJN    WRB5              IF *ACK* 
  
          LMK    RCTN&RCAK
          ZJN    WRB8              IF TRANSFER NOT READY
  
 WRB2     LDK    -NADERRS          RESPONSE ERROR (REMOTE)
  
 WRB3     RJM    ERR               PROCESS ERROR
          PJN    WRB1              IF RETRY POSSIBLE
          LDK    RC04              *NAD ACCESS ERROR* 
 WRB4     UJK    WRBX              RETURN 
  
 WRB5     LDK    FCBM              SELECT BINARY MODE 
          RJM    FFN
          MJN    WRB3              IF DEVICE ERROR
  
          RJM    WFP               WAIT FOR PRIMED
          MJN    WRB3              IF DEVICE ERROR
  
          LDK    FCO8              OUTPUT 8 IN 12 
          RJM    FAN
          MJN    WRB3              IF DEVICE ERROR
  
          LDK    BUFF 
          STM    OUTA              FWA OF BUFFER
          LDD    NDBLK             LENGTH IN NAD WORDS
          SHN    1                 LENGTH IN PP BYTES 
          RJM    OUT               OUTPUT DATA
          MJN    WRB3              IF DEVICE ERROR
          ZJN    WRB7              IF ALL DATA TAKEN
  
          LDK    -NADERRR          LENGTH ERROR (REMOTE)
 WRB6     UJK    WRB3              PROCESS ERROR
  
 WRB7     LDK    FCRY              READY
          RJM    FFN
          MJN    WRB6              IF DEVICE ERROR
  
          LDK    FCTD              TRANSMIT DATA
          RJM    FFN
          ZJN    WRB4              IF *ACK* RESPONSE, RETURN
          MJN    WRB6              IF DEVICE ERROR
          UJK    WRB2              RESPONSE ERROR 
  
  
          USE    OVERFLOW 
          QUAL   *
 NOS      IF     DEF,NOS
          OVERFLOW  OVLA+5
 NOS      ENDIF 
 NLLW     EQU    *                 LWA OF OVERLAY 3NE 
          ERRMI  7773B-NLLW        TEST FOR 3NE OVERFLOW
 DMP      TITLE  FC=02  DMP - DUMP NAD CONTROLWARE. 
          QUAL   3NF
          IDENT  3NF,OVLA+5 
          ORG    OVLA+5 
          COMMENT  NLD OVERLAY - DUMP NAD CONTROLWARE.
          COMMENT  COPYRIGHT (C) CONTROL DATA CORP. 1981, 1984
**        FC=02 - DUMP NAD CONTROLWARE. 
* 
*         CALL ILD TO INITIALIZE DUMP 
*         REPEAT
*           CALL CIB TO CHECK INPUT BUFFER PARAMETERS 
*                       AND CALCULATE SPACE AVAILABLE 
*           IF (NO SPACE) AND (AUTO-RECALL) THEN
*             RETURN RC06 (* INSUFFICIENT BUFFER SPACE *) 
*           WHILE (NO SPACE) DO 
*             BEGIN 
*               CALL R.TAFL TO TERMINATE FIELD LENGTH ACCESS
*               CALL RCD TO RELEASE CHANNEL AND DELAY 
*               CALL R.RAFL TO REQUEST FIELD LENGTH ACCESS
*               CALL CIB TO CHECK INPUT BUFFER PARAMETERS 
*                           AND CALCULATE SPACE AVAILABLE 
*             END 
*           NDBLK := MIN( BUFN/2, (NDLWA-NDFWA) ) 
*           IF THIS BUFFER CROSSES NAD MEMORY BANKS 
*           THEN
*             READ 1ST PARCEL (-0#XFFE/-0#XFFF, LOCAL/REMOTE) 
*             READ THE NEXT NAD WORD (0#XFFF/0#X000, LOCAL/REMOTE)
*             IF MEMORY PARITY ERROR (LOCAL) OR PATH ABORTED (REMOTE) 
*             THEN
*               SET END OF DUMP FLAG
*             ELSE
*               FILL REMAINDER OF PP BUFFER 
*           ELSE
*             FILL PP BUFFER
*           IF END OF DUMP
*             SET BIT 11 OF LAST PP DATA WORD IN BUFFER 
*           CALL WBB TO WRITE BUFFER
*           CALL UPI TO UPDATE IN POINTER 
*           NDFWA := NDFWA + NDBLK
*         UNTIL (ALL MEMORY DUMPED) 
*         RETURN. 
  
 BUFN     EQU    BUFW*5            TEST ASSUMPTIONS 
          QUAL   TEST 
 A        SET    0#4000*2          16KW NAD 
 B        SET    A/BUFN 
 B        SET    B*BUFN 
          ERRZR  A-B               CODE DEPENDS ON VALUE
 A        SET    0#8000*2          32KW NAD 
 B        SET    A/BUFN 
 B        SET    B*BUFN 
          ERRZR  A-B               CODE DEPENDS ON VALUE
 A        SET    0#C000*2          48KW NAD 
 B        SET    A/BUFN 
 B        SET    B*BUFN 
          ERRZR  A-B               CODE DEPENDS ON VALUE
 A        SET    0#10000*2         64KW NAD 
 B        SET    A/BUFN 
 B        SET    B*BUFN 
          ERRZR  A-B               CODE DEPENDS ON VALUE
          QUAL   *
  
 DMP      ENM    X
          IF     DEF,NOS,4
          LDK    M.DCP             DROP CPU 
          RJM    R.MTR             AND
          LDK    M.RCP             REQUEST CPU
          RJM    R.MTR             TO PREVENT CONTROL POINT HANG
          LDD    LT 
          ZJN    DMP0              IF LOCAL NAD DUMP
          AOM    DMPC              MODIFY INSTRUCTIONS
          AOM    DMPC+1 
 DMP0     RJM    ILD               INITIALIZE DUMP
  
 DMP1     NJN    DMPX              IF ERROR 
          RJM    R.RAFL            REQUEST FIELD LENGTH ACCESS
          RJM    CIB               CHECK INPUT BUFFER 
          MJN    DMP1              IF ERROR 
          SBK    BUFW              SIZE OF PP BUFFER
          PJN    DMP3              IF AT LEAST BUFW WORDS 
          LDM    ARCL              AUTO-RECALL
          ZJN    DMP2              IF (NO SPACE) AND (NOT AUTO-RECALL)
          LDN    RC06              *INSUFFICIENT BUFFER SPACE*
          UJK    DMPX              RETURN 
  
 DMP2     RJM    R.TAFL            TERMINATE FIELD LENGTH ACCESS
          RJM    RCD               RELEASE CHANNEL AND DELAY
          UJK    DMP1              CHECK FOR ERROR AND LOOP 
  
 DMP3     RJM    R.TAFL            TERMINATE FIELD LENGTH ACCESS
          LDN    0
          STD    DMPA              ASSUME NO 1ST PARCEL 
          LDK    BUFN/2 
          STD    DMPB              ASSUME FULL 2D PARCEL
          LDC    BUFF              FWA OF BUFFER
          STM    DMPFWA            STARTING ADDRESS FOR TRANSFER
          LDD    NDFWA             UPPER FOUR BITS OF NAD FWA 
          SHN    18-2              POSITION UPPER TWO BITS
          STD    D.T0              MEMORY BANK NUMBER (= UPPER 2) 
          SHN    2+12 
          LMD    NDFWA+1           LOWER 12 BITS OF NAD FWA 
          ADD    DMPB              (A) = NAD LWA+1
          SHN    -14               ISOLATE MEMORY BANK NUMBER 
          LMD    D.T0 
          NJN    DMP3.1            IF CROSSING MEMORY BANKS 
          LJM    DMP6 
  
 DMP3.1   LDD    NDFWA             UPPER FOUR BITS OF NAD FWA 
          LPN    3                 CLEAR UPPER 2 BITS 
          SHN    12                (A) = 0#0000 - 0#3000
          LMD    NDFWA+1           (A) = MOD(NDFWA,0#4000)
          LMC    777777B           (A) = -MOD(NDFWA,0#4000) 
  
*         SET THE 1ST PARCEL LENGTH SO THAT THE NEXT READ ENDS WITH 
*         LOCAL NAD WORD 0#XFFE, OR REMOTE NAD WORD 0#XFFF. 
*         (NEITHER PARITY ERROR NOR PATH ABORT SHOULD OCCUR.) 
  
 DMPC     ADC    0#3FFF            (A) = 0#3FFF-MOD(NDFWA,0#4000) LOCAL 
*         ADC    0#4000            (A) = 0#4000-MOD(NDFWA,0#4000) REMOTE
          STD    DMPA              SAVE 1ST PARCEL LENGTH 
          STD    NDBLK             (NAD WORDS TO INPUT UP TO BOUNDARY)
          LDD    D.T0              CHECK MEMORY BANK NUMBER 
          LMN    3                 3 = 64KW MEMORY
          ZJN    DMP3.2            IF LAST 64KW MEMORY BANK 
          LDD    DMPB              ADJUST 2D PARCEL LENGTH
          SBD    DMPA 
 DMP3.2   STD    DMPB              SET 2D PARCEL LENGTH 
          RJM    RNB               READ NAD BLOCK 
          ZJN    DMP4              IF NO ERROR
          UJK    DMPX              RETURN 
  
 DMP4     LDD    DMPA              LENGTH OF 1ST PARCEL 
          RAD    NDFWA+1           UPDATE NAD ADDR
          SHN    -12
          RAD    NDFWA
          LDD    DMPA              LENGTH OF 1ST PARCEL 
          SHN    1                 CONVERT TO PP WORDS
          RAM    DMPFWA            STARTING ADDRESS FOR TRANSFER
          AOD    DMPA              INCREMENT 1ST PARCEL LENGTH
          LDN    1
          STD    NDBLK             READ ONE WORD
  
*         READ NAD WORD 0#XFFF (LOCAL) OR 0#X000 (REMOTE).
  
          RJM    RNB               READ 1 NAD WORD
          NJN    DMP5              IF ERROR (END OF MEMORY) 
          SOD    DMPB              ADJUST 2D PARCEL LENGTH
          MJN    DMP5              IF NO MORE MEMORY POSSIBLE 
          AOD    NDFWA+1           UPDATE NAD ADDR
          SHN    -12
          RAD    NDFWA
          LDN    2
          RAM    DMPFWA            UPDATE FWA PP BUFFER 
          UJN    DMP6 
  
 DMP5     AOM    EOM               SIGNAL END-OF-MEMORY 
          LDN    0
          STD    DMPB              CLEAR 2D PARCEL LENGTH 
          LDD    LT 
          ZJN    DMP6              IF LOCAL NAD DUMP
          SOD    DMPA              DECREMENT 1ST PARCEL LENGTH
  
 DMP6     LDD    DMPB              2D PARCEL LENGTH 
          STD    NDBLK             REMAINDER TO INPUT 
          ZJN    DMP7              IF NO 2D PARCEL
  
          RJM    RNB               READ NAD BLOCK 
          NJN    DMP7.2            IF ERROR 
  
 DMP7     RJM    R.RAFL            REQUEST FIELD LENGTH ACCESS
          LDM    EOM               END-OF-MEMORY FLAG 
          ZJN    DMP7.1            IF NOT END OF MEMORY 
          LDD    DMPA              1ST PARCEL LENGTH (IF ANY) 
          ADD    DMPB              2D PARCEL LENGTH 
          SHN    1                 PP WORDS 
          STD    D.T1 
          LDC    4000B
          RAM    BUFF-1,D.T1       SET END-OF-DUMP FLAG IN DATA 
 DMP7.1   LDD    DMPA              1ST PARCEL LENGTH (IF ANY) 
          ADD    DMPB              2D PARCEL LENGTH 
          SHN    1                 (NDBLK*2)
          ADN    4                 (NDBLK*2)+4
          RJM    DV5               ((NDBLK*2)+4)/5
          RJM    WBB               WRITE BINARY BUFFER
 DMP7.2   NJN    DMP9              IF ERROR 
          RJM    UPI               UPDATE IN POINTER
          NJN    DMP9              IF ERROR 
          LDD    DMPB              2D PARCEL LENGTH 
          RAD    NDFWA+1           UPDATE FWA OF NEXT BLOCK 
          SHN    -12
          RAD    NDFWA
          LDM    EOM               END-OF-MEMORY FLAG 
          NJN    DMP8              IF END OF DUMP 
          IF     DEF,NOS,2
          LDK    M.RCLCP           RECALL CONTROL POINT 
          RJM    R.MTR
          UJK    DMP1              LOOP TO DUMP NEXT BLOCK
  
 DMP8     LDN    0                 NORMAL RETURN
 DMP9     UJK    DMPX              RETURN 
  
 DMPFWA   BSSZ   1                 FWA OF PP BUFFER FOR NAD DUMP
 EOM      BSSZ   1                 END-OF-MEMORY FLAG 
          TITLE  FC=02 - SUBROUTINES. 
 RLB      SPACE  4,10 
**        RLB - READ NEXT BLOCK FROM LOCAL NAD. 
* 
*         CALL SAL TO SET NAD ADDRESS AND LENGTH REGISTERS
*         CALL WFP TO WAIT FOR PRIMED 
*         CALL FAN TO SET INPUT 8/12
*         CALL INP TO INPUT (2*NDBLK) PP BYTES
*         RETURN. 
  
  
 RLB      ENM    X
  
 RLB1     RJM    SAL               SET NAD ADDRESS AND LENGTH 
          NJN    RLBX              IF ERROR 
          RJM    WFP               WAIT FOR PRIMED
          ZJN    RLB4              IF NO ERROR
  
 RLB2     MJN    RLB3              IF HARDWARE ERROR
          LCN    NADERRH
  
 RLB3     RJM    ERR               PROCESS ERROR
          PJN    RLB1              IF RETRY POSSIBLE
          LDK    RC04              *NAD ACCESS ERROR* 
          UJK    RLBX              RETURN 
  
 RLB4     LDK    FCI8              INPUT 8/12 
          RJM    FAN
          MJN    RLB2              IF ERROR 
          LDM    DMPFWA 
          STM    INPA              SET INPUT BUFFER ADDRESS 
          LDN    0
          STD    FLUSH             NO FLUSH 
          LDD    NDBLK             NUMBER OF NAD WORDS TO INPUT 
          SHN    1                 2*NDBLK = NUMBER OF PP WORDS 
          RJM    INP               INPUT FROM NAD 
          MJN    RLB2              IF ERROR 
          STM    RLBA              SAVE NUMBER OF BYTES INPUT 
          RJM    HST               GET HARDWARE STATUS
          MJN    RLB2              IF ERROR 
          SCK    M.HSTPPE+M.HSTHLT IGNORE PROCESSOR HALT/ABNORMAL 
          NJN    RLB5              IF FAULT CONDITION 
          LDM    RLBA              NUMBER OF BYTES INPUT
          SBD    NDBLK
          SBD    NDBLK             (BYTES INPUT) - 2*NDBLK
          ZJN    RLB9              IF CORRECT NUMBER INPUT
          LCN    NADERRK           *TRANSFER LENGTH ERROR*
          UJK    RLB3              PROCESS ERROR
  
 RLB5     SCK    M.HSTMPE          DI DETECTED MEMORY PARITY ERROR
          ZJN    RLB6              IF ONLY MEMORY PARITY ERROR
          LCN    NADERFL           HARDWARE FAULT 
          UJK    RLB3              LOG ERROR
  
 RLB6     LDK    FCMC              MASTER CLEAR NAD 
          RJM    FAN
          LDK    FCCE              CLEAR PARITY ERROR 
          RJM    FAN
          LDK    RC04              HARDWARE FAULT (NO RETRY)
  
 RLB9     UJK    RLBX              RETURN 
  
 RLBA     BSS    1                 NUMBER OF BYTE INPUT 
 RNB      SPACE  4,10 
**        RNB - READ NEXT BLOCK.
* 
*         CALL DER TO RESET DELAY-RETRY-COUNT 
*         IF LOCAL DUMP 
*         THEN
*           CALL RLB TO READ LOCAL BLOCK
*         ELSE
*           CALL RRB TO READ REMOTE BLOCK 
*         RETURN. 
* 
*         EXIT   (A) = ZERO, IF NO ERRORS.
  
  
 RNB      ENM    X
          RJM    DER               DELAY-RETRY-COUNT RESET
          LDD    LT                LOCAL TCU ENABLES
          ZJN    RNB1              IF NOT REMOTE DUMP 
          RJM    RRB               READ NEXT REMOTE BLOCK 
          UJK    RNBX              RETURN 
  
 RNB1     RJM    RLB               READ NEXT LOCAL BLOCK
          UJK    RNBX              RETURN 
 RRB      SPACE  4,10 
**        RRB - READ NEXT BLOCK FROM REMOTE NAD.
* 
*         RRBA := 0 
*         REPEAT
*           CALL SLP TO SELECT PATH 
*           CALL FFN TO ISSUE READ DATA BLOCK FUNCTION
*           WHILE (TRANSFER NOT READY) OR (INPUT NOT AVAILABLE) DO
*             BEGIN 
*               CALL RCD TO RELEASE CHANNEL AND DELAY 
*               CALL SLP TO SELECT PATH 
*               CALL FFN TO ISSUE READ DATA BLOCK FUNCTION
*             END 
*           CALL FFN TO SELECT BINARY MODE
*           CALL WFP TO WAIT FOR PRIMED 
*           CALL FAN TO INPUT 8/12
*           CALL INP TO INPUT ( (2*NDBLK) - RRBA) PP BYTES
*           RRBA := RRBA + NUMBEROFBYTESINPUT 
*         UNTIL (RRBA = (2*NDBLK) ) 
*         RETURN. 
  
  
 RRB      ENM    X
          LDN    0
          STM    RRBA              INITIALIZE CUMULATIVE BYTES READ COUN
  
 RRB01    RJM    SLP               SELECT PATH
          ZJN    RRB02             IF ACK 
          MJN    RRBX              IF ERROR (ABORTED BY SYSTEM) 
  
          LDD    STATUS            RECHECK STATUS 
          LPK    M.RESPCD 
          LMK    RCAB 
          NJN    RRB04             IF NOT *ABORT* 
  
          LDD    STATUS            PATH ABORTED 
          SHN    17-S.CSTIA 
          MJN    RRB02             IF INPUT AVAILABLE 
          LJM    RRB10             ABORTED AND NO MORE INPUT, CHECK END 
  
 RRB02    LDK    FCRD              READ DATA BLOCK FUNCTION 
          RJM    FFN
          ZJN    RRB06             IF ACK 
          LMN    RCAB&RCAK
          ZJN    RRB06             IF ABORT, FLUSH NAD BUFFER 
          LMN    RCTN&RCAB
          NJN    RRB04             IF NOT (TRANSFER NOT READY) STATUS 
  
 RRB03    RJM    RCD               RELEASE CHANNEL AND DELAY
          NJN    RRBX              IF ERROR 
          UJK    RRB01             LOOP TO RESTART TRANSACTION
  
 RRB04    MJN    RRB05             IF HARDWARE ERROR
          LDK    -NADERRS          ABNORMAL RESPONSE (REMOTE) 
  
 RRB05    RJM    ERR               REPORT ERROR 
          PJN    RRB01             IF RETRY POSSIBLE
          LDN    RC04              *NAD ACCESS ERROR* 
          UJK    RRBX              RETURN WITH ERROR
  
 RRB06    LDD    STATUS            CHECK FOR INPUT AVAILABLE
          SHN    17-S.CSTIA 
          PJN    RRB03             IF INPUT NOT AVAILABLE 
          LDK    FCBM              SELECT BINARY
          RJM    FFN
          NJN    RRB04             IF ERROR 
          RJM    WFP               WAIT FOR PRIMED
          NJN    RRB04             IF ERROR 
          LDK    FCI8              INPUT 8/12 
          RJM    FAN
          NJN    RRB04             IF ERROR 
          STD    FLUSH             FLAG NO FLUSH
          LDM    DMPFWA            FWA OF PP BUFFER 
          ADM    RRBA              SKIP OVER BYTES ALREADY READ 
          STM    INPA              SET FWA FOR THIS READ
          LDD    NDBLK             NUMBER OF NAD WORDS TO READ
          SHN    1                 PP BYTES = 2 * NAD WORDS 
          SBM    RRBA              NO. LEFT = TOTAL - NO. ALREADY READ
          RJM    INP               INPUT BYTES
          MJN    RRB09             IF ERROR 
          RAM    RRBA              UPDATE NUMBER OF BYTES READ
          SBD    NDBLK
          SBD    NDBLK             - 2*NDBLK
          NJN    RRB07             IF READ NOT COMPLETE 
          LJM    RRB12             READ COMPLETE - RETURN 
  
 RRB07    PJN    RRB08             IF TOO MANY BYTES READ 
          UJK    RRB01             REPEAT TO TRANSFER MORE BYTES
  
 RRB08    LDK    -NADERRR          DATA BLOCK LENGTH ERROR (REMOTE) 
  
 RRB09    UJK    RRB04             PROCESS ERROR
  
*         HERE IF PATH STATUS IS ABORTED AND NO MORE INPUT AVAILABLE. 
*         IF THE DETAILED PATH STATUS INDICATES THAT THE REMOTE NAD 
*         IS NO LONGER RESPONDING, ASSUME THAT ALL OF THE REMOTE NAD
*         MEMORY HAS BEEN DUMPED AND SET EOM TO TERMINATE THE DUMP. 
  
 RRB10    LDK    FCST              READ DETAILED PATH STATUS
          RJM    FFN
          NJN    RRB09             IF NOT ACK 
          RJM    WFP               WAIT FOR PRIMED
          NJN    RRB09             IF ERROR 
          LDK    FCI8              INPUT IN 8/12 MODE 
          RJM    FAN
          NJN    RRB09             IF ERROR 
          STD    FLUSH             NO FLUSH 
          LDK    RRBB              SET BUFFER FOR PATH STATUS 
          STM    INPA 
          ERRNZ  O=PCTSTA          VERIFY THE STATE BYTE OFFSET = 0 
          ERRNZ  O=PCTCLA-1        VERIFY THE CLARIFIER BYTE OFFSET = 1 
          LDK    O=PCTCLA+1        READ PCT THRU THE CLARIFIER
          RJM    INP               INPUT STATUS 
          MJN    RRB09             IF ERROR 
          SBN    O=PCTCLA+1 
          NJN    RRB08             IF TRANSFER LENGTH ERROR 
  
*         CHECK THE STATE AND CLARIFIER FOR PATH DISCONNECTED (STATE = 2
*         AND CLARIFIER = 8).  IF SO, THE END-OF-MEMORY HAS BEEN
*         REACHED.
  
          LDM    RRBB+O=PCTSTA     GET THE STATE
          LMN    0#02 
          NJN    RRB10.5           STATE NOT 2
          LDM    RRBB+O=PCTCLA     GET THE CLARIFIER
          LMN    0#08 
          ZJN    RRB11             IF REMOTE NOT RESPONDING 
 RRB10.5  LDK    -NADERRS          ABNORMAL RESPONSE (REMOTE) 
          UJK    RRB04             PROCESS ERROR
  
 RRB11    LDN    1
          STM    EOM               END-OF-MEMORY FLAG 
          LDK    RC04              *NAD ACCESS ERROR* 
  
 RRB12    UJK    RRBX              RETURN 
  
 RRBA     BSS    1                 CUMULATIVE BYTE COUNT
  
 RRBB     BSS    2                 BUFFER FOR DETAILED PATH STATUS
  
  
          USE    OVERFLOW 
          QUAL   *
 NOS      IF     DEF,NOS
          OVERFLOW  OVLA+5
 NOS      ENDIF 
 NDLW     EQU    *                 LWA OF OVERLAY 3NF 
          ERRMI  7773B-NDLW        TEST FOR 3NF OVERFLOW
 CES      TITLE  FC=04 - CHANGE NAD EST STATUS. 
          QUAL   3NG
          IDENT  3NG,OVLA+5 
          ORG    OVLA+5 
          COMMENT  NLD OVERLAY - CHANGE NAD EST STATUS. 
          COMMENT  COPYRIGHT (C) CONTROL DATA CORP. 1981, 1984
**        CES - CHANGE NAD EST STATUS.
* 
*         ENTRY  CHAN = NAD CHANNEL NUMBER. 
*                SF = 0, CLEAR NAD LOAD NEEDED
*                   = 1, SET NAD OFF. 
* 
*         EXIT   A = 0, NAD EST ENTRY MODIFIED ---
*                  = RC01, IF NAD NOT RESERVED BY CVL.
*                  = RC02, IF NAD NOT FOUND.
*                  = RC04, IF NO STATUS RETURNED. 
*                  = ER03, IF INVALID SUB-FUNCTION. 
  
  
 CES      ENM    X
          RJM    SEN               FIND NAD EST ENTRY 
          NJN    CES9              IF NOT FOUND (A = RC02)
          RJM    CVR               CHECK CVL-RESERVATION
          SBN    1
          ZJN    CES2              IF EST RESERVED BY CVL 
          LDK    RC01              * CALLER NOT AUTHORIZED *
          UJK    CES9              EXIT 
  
 CES2     LDM    SUBF              SUB-FUNCTION 
          STD    D.T0 
          SBN    TCESL
          MJN    CES3              IF VALID SUB-FUNCTION
          LCN    ER03              *INVALID FUNCTION CODE*
          UJN    CES9              EXIT 
  
 CES3     LDM    TCES,D.T0         PROCESSOR ADDRESS
          STM    CESA 
          RJM    **                PROCESS FUNCTION 
 CESA     EQU    *-1
  
 CES9     UJK    CESX              RETURN 
  
*         SUB-FUNCTION TABLE. 
  
 TCES     BSS    0
  
          LOC    0
  
          CON    PNI               PLACE NAD IN SERVICE 
          CON    PNO               TAKE NAD OUT-OF-SERVICE
  
          LOC    *O 
  
 TCESL    EQU    *-TCES 
          TITLE  FC=04 - SUBROUTINES. 
 PNI      SPACE  4,10 
**        PNI - PLACE NAD IN SERVICE. 
* 
*         IF NOS
*         THEN
*           SET HUI IN EST
*           CLEAR NAD-LOAD-NEEDED FLAG IN EST.
*         IF NBE
*         THEN
*           SET HUI IN EST
*           CLEAR NAD DOWN. 
  
  
 PNI      ENM    X
          LDN    0
          STM    BUFF+W=NSTHUI
          RJM    GLL               GET GENERAL STATUS OF LOCAL NAD
          NJN    PNIX              IF ERROR IN LOCAL STATUS 
  
 NOS      IF     DEF,NOS
          LDD    ESTO 
          STD    D.T1              EST ORDINAL
          LDK    C.ESTHUI+4 
          STD    D.T2              FUNCTION CODE
          LDN    0
          STD    D.T3              MASK (CLEAR 12 BITS) 
          LDM    BUFF+W=NSTHUI
          LPC    0#FF              HUI = BITS 7-0 
          STD    D.T4              NEW VALUE
          LDK    M.SEQ
          RJM    R.MTR             CALL MONITOR TO SET HUI
          LDD    ESTO 
          STD    D.T1              EST ORDINAL
          LDK    C.CWNL+4 
          STD    D.T2              FUNCTION CODE
          LDK    -M.CWNL
          STD    D.T3              MASK 
          LDN    0
          STD    D.T4              NEW VALUE
          LDK    M.SEQ             FUNCTION TO STORE VALUE IN EST 
          RJM    R.MTR             CALL MONITOR TO CLEAR CWNL FLAG
  
 NOS      ELSE
  
          LDK    CH.EST 
          RJM    R.RCH             RESERVE EST CHANNEL
          LDM    FEST 
          ADD    ESTO 
          CRD    D.T0              READ EST ENTRY 
          LDM    BUFF+W=NSTHUI
          LPC    0#FF              MASK BITS 7-0
          STD    D.T0+C.ESTHUI     SET HARDWARE-UNIQUE-IDENTIFIER 
          LDD    D.T0+C.ESTAT 
          SCK    M.EDN             CLEAR DOWN FLAG
          STD    D.T0+C.ESTAT 
          LDM    FEST 
          ADD    ESTO 
          CWD    D.T0              WRITE EST ENTRY
          LDK    CH.EST 
          RJM    R.DCH             RELEASE EST CHANNEL
 NOS      ENDIF 
  
          LDN    0
          UJK    PNIX              RETURN 
 PNO      SPACE  4,10 
**        PNO - TAKE NAD OUT-OF-SERVICE.
* 
*         IF NOS
*         THEN
*           SET NAD-LOAD-NEEDED FLAG IN EST 
*           SET NAD OFF.
*         IF NBE
*         THEN
*           SET NAD DOWN
*           SET NAD OFF.
  
  
 PNO      ENM    X
  
 NOS      IF     DEF,NOS
          LDD    ESTO 
          STD    D.T1              EST ORDINAL
          LDK    C.CWNL+4 
          STD    D.T2              FUNCTION CODE
          LDK    -M.CWNL
          STD    D.T3              MASK 
          LDK    M.CWNL 
          STD    D.T4              NEW VALUE
          LDK    M.SEQ             FUNCTION TO STORE VALUE IN EST 
          RJM    R.MTR             CALL MONITOR TO SET CWNL FLAG
          LDN    2                 TURN-EST-ENTRY-OFF FUNCTION
          STD    D.T2              FUNCTION CODE
          LDD    ESTO 
          STD    D.T1              EST ORDINAL TO CHANGE
          LDK    M.SEQ
          RJM    R.MTR             CALL MONITOR TO TURN OFF EST 
  
 NOS      ELSE
  
          LDK    CH.EST 
          RJM    R.RCH             RESERVE EST CHANNEL
          LDM    FEST 
          ADD    ESTO 
          CRD    D.T0              READ EST ENTRY 
          LDD    D.T0+C.ESTAT 
          SCK    M.EDN
          LMK    M.EDN             SET DOWN FLAG
          STD    D.T0+C.ESTAT 
          LDD    D.T0+C.ESTMNE
          SCK    M.ESTON
          LMK    M.ESTON           SET OFF FLAG 
          STD    D.T0+C.ESTMNE
          LDM    FEST 
          ADD    ESTO 
          CWD    D.T0              WRITE EST ENTRY
          LDK    CH.EST 
          RJM    R.DCH             RELEASE EST CHANNEL
 NOS      ENDIF 
  
          LDN    0
          UJK    PNOX              RETURN 
          USE    OVERFLOW 
          QUAL   *
 NOS      IF     DEF,NOS
          OVERFLOW  OVLA+5
 NOS      ENDIF 
 NTLW     EQU    *                 LWA OF OVERLAY 3NG 
          ERRMI  7773B-NTLW        TEST FOR 3NG OVERFLOW
  
 HHA      MAX    NLLW,NDLW,NELW,NTLW  HIGHEST HIGH ADDRESS
  
*         RESERVED STORAGE LOCATIONS. 
  
 BUFF     EQU    HHA               START OF BUFFERS 
  
 LWABUF   EQU    BUFF+BUFN         END OF DATA BUFFER 
          ERRMI  7773B-LWABUF      SPACE LEFT IN NLD
  
          END 
