*DECK 5CV 
          IDENT  5CV,C.PP6WA
          PERIPH
          TITLE  5CV - CVL OVERLAY FOR REMOTE NAD ACCESS
          COMMENT CVL OVERLAY FOR REMOTE NAD ACCESS.
          COMMENT COPYRIGHT (C) CONTROL DATA CORP., 1981, 1982. 
          SST 
          SPACE  4,10 
*****     5CV - CVL OVERLAY FOR REMOTE NAD ACCESS.
* 
*         D. P. KARVONEN           81/11/11 
* 
*         5CV OBTAINS THE STATUS OF A REMOTE NAD FOR CVL IN THE COURSE
*         OF DEVICE VALIDATION (CEVAL FUNCTION).
          SPACE  4,10 
***       5CV IS LOADED AT C.PP6WA (VIA R.OVL) AND EXECUTED BY
*         RETURN JUMP TO C.PP6WA+1. 
* 
*         ENTRY CONDITIONS
*                A = 5CV FUNCTION CODE
* 
*                D.PPONE = 1. 
* 
*                D.Z1 = NAD EST ORDINAL (ZERO IF NOT IN EST). 
*                D.Z2 = NAD CHANNEL NUMBER. 
*                D.Z3-D.Z4 = REMOTE HOST ACCESS CODE. 
*                D.Z5 = TCU ENABLES AND BUFFER SIZE INDEX.
*                D.Z6 = LOGICAL TCU ADDRESS.
* 
*         EXIT CONDITIONS 
*                A = RESPONSE, DEPENDING ON FUNCTION. 
*                  .LT. ZERO    DEVICE ERROR. 
*                  .EQ. ZERO    SITUATION INDETERMINATE.
*                  .GT. ZERO    REMOTE NAD CONNECTED TO HOST. 
* 
*         USES
*                D.Z1-D.T7, D.SX0-D.SX7.
* 
*         COMMON DECKS CALLED 
*                COMNADIO, COMCHNRES, COMCHNTBL.
*CALL COMNOSDEF 
          SPACE  4,10 
*         DEFINITIONS FOR COMMON DECKS. 
  
*         DIRECT CELL DEFINITIONS 
  
 NXTPNT   EQU    D.SX0             TRACE INDEX
 FLUSH    EQU    D.SX1             FLUSH FLAG 
 STATUS   EQU    D.SX2             CONTROLWARE STATUS 
 ERROR    EQU    D.SX3             ERROR CODE 
 CHNRES   EQU    D.SX4             CHANNEL RESERVATION FLAG 
 CHAN     EQU    D.SX5             CHANNEL NUMBER 
 PN       EQU    D.SX6             PATH NUMBER
 TRACE    EQU    D.SX7             TRACE FLAG 
 ONE      EQU    D.PPONE           CONSTANT 1 
  
*         MISCELLANEOUS DEFINITIONS.
  
 CH       EQU    15B               DUMMY CHANNEL DEFINITION 
 CVL      EQU    0                 CVL CONDITIONAL CODE 
  
 M.ESTON  BIT    S.ESTON           EST ON/OFF MASK
  
 TRACEFAN EQU    1                 TRACE FLAG (FAN) 
 TRACEFAW EQU    2                 TRACE FLAG (FAW) 
 TRACEINP EQU    4                 TRACE FLAG (INP) 
 TRACEOUT EQU    10B               TRACE FLAG (OUT) 
  
*         5CV DEFINITIONS.
  
 F.5CVIC  EQU    1                 ISSUE CONNECT FUNCTION 
 F.5CVSP  EQU    2                 SELECT PATH FUNCTION 
  
 TTOT     EQU    10D               TIME-OUT THRESHOLD (SECONDS) 
 SCV      TITLE  SCV - MAIN ROUTINE.
          ORG    C.PP6WA
**        SCV - 5CV MAIN ROUTINE. 
* 
*         ENTRY  A = 5CV FUNCTION CODE (F.5CV--). 
*                D.Z1-D.Z6 = REMOTE NAD PARAMETERS SET BY CALLER
*                              ON 1ST CALL ONLY (SEE *INI*).
*                ONE = 1. 
*                NAD CHANNEL RELEASED.
* 
*         EXIT   A = RESPONSE CODE, DEPENDING ON FUNCTION.
*                NAD CHANNEL RELEASED.
* 
*                TO R.IDLE, IF INVALID FUNCTION CODE. 
* 
*         USES   D.Z1.
* 
*         CALLS  INI, ICN, SPN, R.DFM, R.MTR. 
* 
*         MESSAGES  5CV ABORT - INVALID FUNCTION CODE.
  
  
 SCV      ENM    X                 ENTRY/EXIT 
  
          STM    SCVB              SAVE 5CV FUNCTION CODE 
 NOS      IF     DEF,NOS
 SCVA     SOM    INI               (INI = 1 ON 1ST CALL)
*SCVA     UJN    SCV0              MODIFIED BY *INI*
          ZJN    SCVX              IF 1ST CALL
  
 SCV0     LDM    SCVB 
 NOS      ENDIF 
          ZJN    SCV1              IF BAD FUNCTION CODE 
          SBN    F.5CVMAX 
          PJN    SCV1              IF INVALID FUNCTION CODE 
  
 SCV2     RJM    INI               INITIALIZE (ONCE ONLY) 
*SCV2     RJM    RES               RESERVE NAD CHANNEL
  
          LDC    **                PROCESS FUNCTION 
 SCVB     EQU    *-1
          STD    D.Z1              SAVE POINTER 
          LDM    TSCV-1,D.Z1
          STD    D.Z1 
  
          RJM    0,D.Z1            EXECUTE FUNCTION 
  
          STM    SCVC+1            SAVE RESPONSE (BITS 11-0)
          SHN    -12D 
          LMC    2000B             LDC INSTRUCTION
          STM    SCVC              SAVE RESPONSE (BITS 17-12) 
  
          LDN    0
          RJM    REL               RELEASE NAD CHANNEL
  
 SCVC     LDC    **                RECOVER RESPONSE CODE
          UJK    SCVX              RETURN 
  
 NOS      IF     DEF,NOS
 SCV1     LDC    SCVM+CPON         * 5CV ABORT - INVALID FUNCTION CODE *
 NOS      ELSE
 SCV1     LDC    SCVM              * 5CV ABORT - INVALID FUNCTION CODE *
 NOS      ENDIF 
          RJM    R.DFM             SEND DAYFILE MESSAGE 
          LDK    M.ABORT
          RJM    R.MTR             ABORT JOB
          LJM    R.IDLE 
  
 SCVM     DIS     ,* 5CV ABORT - INVALID FUNCTION CODE* 
  
 TSCV     BSS    0                 5CV FUNCTION TABLE 
          LOC    1
          CON    ICN               1 - ISSUE CONNECT
*                      (ADD NEW FUNCTION CODES BEFORE THIS LINE.) 
 F.5CVMAX EQU    *                 HIGHEST VALID FUNCTION CODE +1 
          LOC    *O 
  
*         *CALL,COMNADIO AT THIS IDENT +2 
 COMNADIO TITLE  COMNADIO - NAD COMMUNICATION DEFINITIONS 
*CALL COMNADIO
  
*         *CALL,COMCHNRES AT THIS IDENT +2
COMCHNRES TITLE  COMCHNRES - NAD CHANNEL RESERVE/RELEASE
*CALL COMCHNRES 
  
*         *CALL,COMCHNTBL AT THIS IDENT +2
COMCHNTBL TITLE  COMCHNTBL - CHANNEL TABLE
*CALL COMCHNTBL 
  
 ICN      TITLE  5CV FUNCTION 1  F.5CVIC - ISSUE CONNECT TO REMOTE HOST.
**        ICN - ISSUE CONNECT TO REMOTE HOST. 
* 
*         ENTRY  CBUF - CBUF+7 = CONNECT MESSAGE (SEE *INI*). 
* 
*         EXIT   A .LT. 0, DEVICE ERROR OR C.P. ERROR FLAG SET. 
*                A .EQ. 0, SITUATION INDETERMINATE, NO RESPONSE.
*                A .GT. 0, NAD CONNECTED TO REMOTE HOST.
* 
*         USES   OUTA, PN.
* 
*         CALLS  ERR, FAN, FFN, OUT, WFP. 
  
  
 ICN      ENM    X
          LDC    CBUF              SET CONNECTION BUFFER ADDR FOR *OUT* 
          STM    OUTA 
  
 ICN1     LDK    FCCP              CONNECT PATH 
          RJM    FFN
          MJN    ICN3              IF HDWE ERROR
          ZJN    ICN6              IF ACK RESPONSE
  
          LMK    RCNK&RCAK
          ZJN    ICN4              IF NAK RESPONSE
  
 ICN2     LDK    -NADERRH          ABNORMAL RESPONSE
  
 ICN3     RJM    ERR               REPORT ERROR 
          PJN    ICN5              IF RETRY POSSIBLE
 ICN4     LJM    ICN10             RETURN - DEVICE ERROR
  
 ICN5     LDK    FCAB              ABORT TRANSACTION
          RJM    FFN
          MJN    ICN3              IF HDWE ERROR
          UJK    ICN1              TRY AGAIN
  
 ICN6     RJM    WFP               WAIT FOR PRIMED
          MJN    ICN3              IF HDWE ERROR
  
          LDN    FCO8              OUTPUT 8/12
          RJM    FAN
          MJN    ICN3              IF HDWE ERROR
  
*         CNPL = CONNECT-PATH-MESSAGE LENGTH FOR BINARY MODE. 
*         CNPL/2*3 = LENGTH IN PP WORDS FOR 8-IN-12 MODE. 
  
          LDK    CNPL/2*3          CONNECT MESSAGE LENGTH 
          RJM    OUT               SEND CONNECT-PATH MESSAGE
          MJN    ICN3              IF HDWE ERROR
  
          ZJN    ICN8              IF LENGTH OK 
  
          LDK    -NADERRI          INDICATE LENGTH ERROR
 ICN7     UJK    ICN3              PROCESS ERROR
  
 ICN8     LDK    FCRY              READY
          RJM    FFN
          MJN    ICN7              IF HDWE ERROR
  
          LDD    STATUS 
          SHN    17D-S.CSTSP
          PJN    ICN2              IF PATH NUMBER NOT RETURNED
  
          SHN    S.CSTSP-17D+18D
          LPC    177B 
          STD    PN                SAVE PATH NUMBER 
  
          RJM    RPS               READ PATH STATUS 
 ICN9     MJN    ICN7              IF HDWE ERROR
          NJN    ICN13             IF RESPONSE
  
          LDD    D.T0+C.CPEF
          ZJN    ICN11             IF TIME-OUT (NOT C.P. ERROR) 
  
*         SET ICNA = RESPONSE CODE + 1. 
  
 ICN10    LCN    1                 ICNA = 0 (DEVICE ERROR)
  
 ICN11    SBN    1                 ICNA = 1 (SITUATION INDETERMINATE) 
  
 ICN12    ADN    2                 ICNA = 2 (REMOTE NAD CONNECTED)
  
          STM    ICNA              SAVE RESPONSE CODE (+1)
  
          RJM    DFP               DISCONNECT AND FLUSH PATH
  
          LDC    **                RELOAD RESPONSE CODE (+1)
 ICNA     EQU    *-1
          SBN    1                 DECREMENT (RESPONSE = -1/0/+1) 
  
          UJK    ICNX              RETURN 
  
 ICN13    LMK    RCAK 
          ZJN    ICN12             IF CONNECT ACCEPTED
  
          LMK    RCAB&RCAK
          ZJN    ICN14             IF PATH ABORTED
          UJK    ICN2              ABNORMAL RESPONSE
  
 ICN14    LDK    FCST              PATH DETAIL STATUS 
          RJM    FFN
          MJN    ICN15             IF HDWE ERROR
  
          LDK    FCBM              SELECT BINARY MODE 
          RJM    FFN
          MJN    ICN15             IF HDWE ERROR
  
          RJM    WFP               WAIT FOR PRIMED
          MJN    ICN15             IF HDWE ERROR
  
          LDK    FCI8              INPUT 8/12 
          RJM    FAN
          MJN    ICN15             IF HDWE ERROR
  
          LDK    SBUF              SET STATUS BUFFER ADDR FOR *INP* 
          STM    INPA 
  
          LDK    PSLN 
          RJM    INP               READ DATA
          MJN    ICN15             IF HDWE ERROR
          SBK    PSLN 
          ZJN    ICN16             IF LENGTH OK 
  
          LDK    -NADERRK          TRANSFER LENGTH ERROR
 ICN15    UJK    ICN3              PROCESS ERROR
  
 ICN16    LDM    SBUF+O=PCTSTA     PATH STATE 
          LMN    0#04              PATH ABORTED STATE 
          ZJN    ICN18             IF PATH ABORTED
          LMN    0#04 
          SHN    8
          LMM    SBUF+O=PCTCLA     PATH STATE CLARIFIER 
          LMK    0#105
          NJN    ICN17             IF NOT REJECT BY REMOTE HOST 
          UJK    ICN12             RETURN - NAD CONNECTED TO HOST 
  
 ICN17    LMK    0#107&0#105
          ZJN    ICN18             IF NETWORK BREAK ON CONNECT
          UJK    ICN10             RETURN - DEVICE ERROR
  
 ICN18    UJK    ICN11             RETURN - SITUATION INDETERMINATE 
 DFP      TITLE  5CV SUBROUTINES
**        DFP - DISCONNECT AND FLUSH PATH 
* 
*         ENTRY  PN = PATH NUMBER.
* 
*         EXIT   PATH FLUSHED.
* 
*         USES   PN.
* 
*         CALLS  ERR, FFN.
  
  
 DFP      ENM    X
          LDD    PN 
          ZJN    DFPX              IF NO PATH ID
  
          LMK    FCSP              SELECT PATH
          RJM    FFN
          MJN    DFP3              IF HDWE ERROR
  
          ZJN    DFP1              IF ACK 
          LMK    RCAB&RCAK
          ZJN    DFP1              IF ABORT 
          LMK    RCCP&RCAB
          NJN    DFP2              IF NOT CONNECT IN PROGRESS 
  
 DFP1     LDK    FCPP              PURGE PATH 
          RJM    FFN
          UJK    DFPX 
  
 DFP2     LDK    -NADERRH          ABNORMAL RESPONSE
 DFP3     RJM    ERR               PROCESS ERROR
          UJK    DFPX              RETURN 
  
 LOG      SPACE  4,10 
**        LOG - LOG ERROR. (NO-OP FOR *5CV*). 
* 
*         ENTRY  NONE.
* 
*         EXIT   NONE.
* 
*         USES   NONE.
* 
*         CALLS  NONE.
  
  
 LOG      ENM    X
          UJK    LOGX              RETURN 
 RCD      SPACE  4,10 
**        RCD - RELEASE NAD CHANNEL AND DELAY FOR 100 MILLISECONDS. 
* 
*         ENTRY  NAD CHANNEL RESERVED.
*                FIELD LENGTH ACCESS RELEASED.
* 
*         EXIT   A = D.T0+C.CPEF = CONTROL POINT ERROR FLAG.
*                NAD CHANNEL RESERVED.
*                FIELD LENGTH ACCESS RELEASED.
*                DAYFILE MESSAGE SENT, IF C.P. ERROR. 
* 
*         USES   D.T0-D.T4. 
* 
*         CALLS  REL, RES.
* 
*         MESSAGES  5CV STOPPED BY SYSTEM.
  
  
 RCD      ENM    X
          LDN    1
          RJM    REL               RELEASE NAD CHANNEL (TEMPORARY)
  
          LDK    T.MSC             READ SYSTEM CLOCK
          CRM    RCDB,ONE 
  
 RCD1     LDC    10000D/2          DELAY
          SBN    1
          NJN    *-1
  
          LDK    T.MSC             READ SYSTEM CLOCK
          CRD    D.T0 
          LDD    D.T0+3            CURRENT SECONDS
          SBM    RCDB+3            INITIAL SECONDS
          PJN    RCD2              IF NO CLOCK OVERFLOW 
          LDN    1                 COMPENSATE FOR OVERFLOW
 RCD2     SHN    12                SAVE CARRY 
          ADD    D.T0+4            CURRENT MSEC 
          SBM    RCDB+4            INITIAL MSEC 
 NOS      IF     DEF,NOS
          SBK    100D              DELAY INTERVAL (100 MSEC)
 NOS      ELSE
          SBK    100D*4            DELAY INTERVAL (100 MSEC)
 NOS      ENDIF 
          MJN    RCD1              IF DELAY NOT EXPIRED 
  
          LDN    0
          RJM    RES               RESERVE NAD CHANNEL
  
          LDD    D.CPAD            CHECK C.P. ERROR FLAG
          ADK    W.CPEF 
          CRD    D.T0 
          LDD    D.T0+C.CPEF
          ZJN    RCD3              IF NO ERROR
  
          STM    RCDA              SAVE ERROR FLAG
 NOS      IF     DEF,NOS
          LDC    RCDD+CPON         SEND DAYFILE MESSAGE 
 NOS      ELSE
          LDC    RCDD              SEND DAYFILE MESSAGE 
 NOS      ENDIF 
          RJM    R.DFM
  
          LDC    ** 
 RCDA     EQU    *-1
          STD    D.T0+C.CPEF       RESET ERROR FLAG 
 RCD3     UJK    RCDX              RETURN 
  
 RCDD     DIS    ,*5CV STOPPED BY SYSTEM* 
 RPS      SPACE  4,10 
**        RPS - READ PATH STATUS. 
* 
*         ENTRY  PN = PATH NUMBER.
*                NAD CHANNEL RESERVED.
* 
*         EXIT   A .LT. 0, DEVICE ERROR.
*                A .EQ. 0, CONNECT TIME-OUT EXPIRED OR C.P. ERROR.
*                  D.T0+C.CPEF .EQ. 0, CONNECT TIME-OUT.
*                  D.T0+C.CPEF .NE. 0, C.P. ERROR FLAG. 
*                A .GT. 0, RESPONSE CODE. 
* 
*         CALLS  FFN, RCD.
  
  
 RPS      ENM    X
          LDK    TTOT*10D          SET TIME-OUT COUNTER 
          STM    RPSA 
  
 RPS1     LDD    PN 
          LMK    FCSP              SELECT PATH
          RJM    FFN
          MJN    RPSX              IF HDWE ERROR
          NJN    RPS2              IF NOT *ACK* RESPONSE
          LMK    RCAK              RESTORE RESPONSE 
          UJK    RPSX 
  
 RPS2     LMK    RCCP&RCAK
          ZJN    RPS3              IF CONNECT IN PROGRESS 
          LMK    RCCP              RESTORE RESPONSE 
          UJK    RPSX              RETURN 
  
 RPS3     RJM    RCD               RELEASE CHANNEL AND DELAY (.1 SEC) 
          NJN    RPS4              IF C.P. ERROR FLAG SET 
  
          SOM    RPSA              DECREMENT TIME-OUT COUNTER 
          NJN    RPS1              IF TIME-OUT NOT EXPIRED
  
 RPS4     LDN    0
          UJK    RPSX              RETURN 
 INI      TITLE  INITIALIZING ROUTINE AND BUFFERS.
          CODE   A
 PNAM     VFD    4/0,8/1RR+40B     PATH NAME *RH* 
          VFD    4/0,8/1RH+40B
          CODE   *
 PNAML    EQU    *-PNAM            LENGTH OF PATH NAME
  
* * * * * * * * * * * * * * * * * * * * * * * 
*                                           * 
* NOTE - THE FOLLOWING AREA IS OVERWRITTEN. * 
*                                           * 
* * * * * * * * * * * * * * * * * * * * * * * 
  
 INI      SPACE  4,10 
**        INI - INITIALIZE
* 
*         ENTRY  (VIA RJM - EXECUTED ONCE ONLY) 
*                D.Z1 = NAD EST ORDINAL (ZERO IF NONE). 
*                D.Z2 = NAD CHANNEL NUMBER. 
*                D.Z3 = 4/0, 8/REMOTE HOST ACCESS CODE (UPPER). 
*                D.Z4 = 4/0, 8/REMOTE HOST ACCESS CODE (LOWER). 
*                D.Z5 = 4/0, 4/TCU ENABLES, 4/BUFFER SIZE INDEX.
*                D.Z6 = 4/0, 8/LOGICAL TCU ADDR.
* 
*         EXIT   (TO SCV2)
*                NXTPNT = 0 (TRACE INDEX).
*                FLUSH = 0 (FLUSH FLAG).
*                STATUS = 0 (CONTROLWARE STATUS). 
*                ERROR = 0 (ERROR CODE).
*                CHNRES = 0 (CHANNEL RESERVATION FLAG - NOT RESERVED).
*                CHAN = NAD CHANNEL NUMBER. 
*                PN = 0 (PATH NUMBER).
*                TRACE = 0 (ACTIVE SUBROUTINE FLAG).
*                NADEST = NAD EST ORDINAL (ZERO IF NONE). 
*                CBUF - CBUF+7 = CONNECT MESSAGE (FOR *ICN*). 
*                RESA = FWA CHANNEL STATUS TABLE. 
*                INSTRUCTIONS MODIFIED
*                 SCVA  = *UJN SCV0* (NOS ONLY) 
*                 SCV2  = *RJM RES* 
* 
*         USES   D.T0-D.T4. 
  
  
*         NOTE.  FOR NOS, CELL *INI* CONTAINS 1 OR 0 TO INDICATE
*                1ST OR 2D 5CV CALL.  SEE ROUTINE *SCV*.
  
 INI      DATA   1                 ENTRY (VIA RJM)
  
          LDK    P.ZERO 
          CRD    NXTPNT            CLEAR NXTPNT - CHNRES
          CRD    ERROR             CLEAR ERROR  - TRACE 
  
 NOS      IF     DEF,NOS
          LDK    P.CHT
          CRD    D.T0              READ CHANNEL TABLE POINTER WORD
          LDD    D.T0+C.CHT 
          LPN    77B
          LMK    .LDC.
          STM    RESA-1            SET FWA OF CHANNEL TABLE FOR #RES# 
          LDD    D.T0+C.CHT+1 
          STM    RESA 
 NOS      ELSE
          LDK    P.CST
          CRD    D.T0 
          LDD    D.T0+C.CST 
          STM    RESA              FWA CHANNEL STATUS TABLE 
 NOS      ENDIF 
  
 NOS      IF     DEF,NOS
          LDC    400B+SCV0-SCVA    (UJN SCV0) 
          STM    SCVA              MODIFY INSTRUCTION 
 NOS      ENDIF 
          LDC    RES               (RJM RES)
          STM    SCV2+1            RESET INSTRUCTION
  
          LDD    D.Z1 
          STM    NADEST            NAD EST ORDINAL
          LDD    D.Z2 
          STD    CHAN              NAD CHANNEL NUMBER 
          LDD    D.Z3 
          STM    CBUF+2            REMOTE HOST ACCESS CODE (UPPER 8)
          LDD    D.Z4 
          STM    CBUF+3            REMOTE HOST ACCESS CODE (LOWER 8)
          LDD    D.Z5 
          STM    CBUF+7            TCU ENABLES + BUFFER SIZE INDEX
          SCN    17B
          STM    CBUF+1            TCU ENABLES
          LDD    D.Z6 
          STM    CBUF              LOGICAL TCU ADDR 
  
          LDM    PNAM 
          STM    CBUF+4            PATH NAME (UPPER 8)
          LDM    PNAM+1 
          STM    CBUF+5            PATH NAME (LOWER 8)
          LDN    0
          STM    CBUF+6            PATH ID
  
          LJM    SCV2              EXIT - CONTINUE PROCESSING 
  
 NADEST   EQU    INI               NAD EST ORDINAL
 CBUF     EQU    NADEST+1          CONNECT MESSAGE BUFFER 
 SBUF     EQU    CBUF+CMGL         STATUS MESSAGE BUFFER
 RCDB     EQU    SBUF+PSLN         SYSTEM CLOCK BUFFER
 RPSA     EQU    RCDB+5            TIME-OUT COUNTER 
  
 NOS      IF     DEF,NOS
          OVERFLOW C.PP6WA
 NOS      ENDIF 
  
 END5CV   MAX    *,RPSA+1 
          ERRNG  7777B-END5CV  5CV IS TOO LARGE 
  
          END 
