COMCLNI 
COMMON
          CTEXT  COMCLNI - LOAD NETWORK INTERFACE.
          BASE   D
          IF     -DEF,QUAL$,1 
          QUAL   COMCLNI
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 COMCLNI  SPACE  4,10 
***       COMCLNI - LOAD NETWORK INTERFACE. 
* 
*         C.A. WENDT         82/03/05.
 COMCLNI  SPACE  4,10 
***       *CONCLNI* CONSISTS OF ROUTINES AND TABLES USED TO 
*         LOAD THE NETWORK INTERFACE.  IT IS EXECUTED ONLY IF 
*         NETWORK TERMINALS ARE PRESENT.
 LNI      SPACE  4,10 
**        LNI - LOAD NETWORK INTERFACE. 
* 
*         *LNI* LOADS THE NETWORK INTERFACE, *IAFEX4*, AND
*         APPROPRIATE TABLES DURING *IAF* INITIALIZATION. 
* 
*         CALLS  CTP, LNA, MTT, PNT.
* 
*         MACROS MOVE, OVERLAY. 
* 
*         XREF   COMCLOD, COMCMVE.
  
  
 LNI      SUBR               ENTRY/EXIT 
          OVERLAY (=6LIAFEX4),101B,S  LOAD *IAFEX4* OVERLAY 
          MOVE   /IAFEX4/TINSTL,/IAFEX4/TINST,TINS2 
          RJ     CTP         CHECK FOR AIP TRACE PARAMETER
          RJ     LNA         LOAD NETWORK AIP SUBROUTINES 
          RJ     PNT         PRESET NETWORK TERMINAL POINTERS 
          RJ     MTT         MODIFY TRANSLATION TABLE 
          EQ     LNIX        RETURN 
  
 CTP      SPACE  4,20 
**        CTP - CHECK FOR AIP TRACE PARAMETER.
* 
*         ENTRY  (ATPV) = VALUE ENTERED FOR *T* PARAMETER, IF ANY.
*                       .EQ. *+*, TRACE IS NOT ACTIVE.
*                       .EQ. 0, USE DEFAULT MESSAGE COUNT.
* 
*         EXIT   (/IAFEX4/ATMC) = MESSAGE COUNT USED TO CONTROL 
*                                 PROCESSING OF TRACE OUTPUT FILE.
*                               = ZERO, IF TRACE IS NOT SELECTED. 
*                               = NEGATIVE, IF PROCESS TRACE FILE 
*                                 AT IAF TERMINATION ONLY.
*                TO *ABT* IF ERROR IN PARAMETER.
*                (X2) = ERROR MESSAGE.
* 
*         USES   X - 1, 2, 3, 4, 5, 6.
*                A - 1, 5, 6. 
*                B - 7. 
* 
*         CALLS  DXB. 
  
  
 CTP1     SA6    /IAFEX4/ATMC SET MESSAGE COUNT 
  
 CTP      SUBR               ENTRY/EXIT 
          SA1    ATPV        GET ARGUMENT 
          SX6    DMCT        SET DEFAULT MESSAGE COUNT
          SX4    X1-1R+ 
          ZR     X1,CTP1     IF DEFAULT MESSAGE COUNT SELECTED
          SX6    B0+         ASSUME TRACE NOT SELECTED
          ZR     X4,CTP1     IF TRACE IS NOT SELECTED 
  
*         PROCESS *T=NNNNNNN*.
  
          LX1    6
          SX6    -B1         SET MESSAGE COUNT NEGATIVE 
          SX3    X1-1R* 
          ZR     X3,CTP1     IF T=* OPTION SELECTED 
          LX1    -6 
          SB7    B1+         INDICATE DECIMAL BASE FOR CONVERSION 
          BX5    X1          VALUE TO BE CONVERTED
          RJ     DXB         DISPLAY CODE TO BINARY CONVERSION
          SX2    =C* ERROR IN IAFEX PARAMETER - T.* 
          NZ     X4,ABT      IF ERROR IN CONVERSION 
          ZR     X6,CTP1     IF TRACE IS NOT SELECTED 
          SX4    X6-MNCT     CHECK MESSAGE COUNT
          NG     X4,ABT      IF SELECTED VALUE TOO LOW
          EQ     CTP1        RETURN 
 LNA      SPACE  4,25 
**        LNA - LOAD NETWORK AIP RELOCATABLE SUBROUTINES. 
* 
*         1.  LOADS RELOCATABLE AIP SUBROUTINES.
*         2.  LINKS AIP ENTRY POINTS TO NETWORK LINKAGE SUB-
*             ROUTINES. 
* 
*         ENTRY  (/IAFEX4/ATMC) = MESSAGE COUNT USED TO CONTROL 
*                                 PROCESSING OF TRACE OUTPUT FILE.
*                               = ZERO, IF TRACE IS NOT SELECTED. 
*                               = NEGATIVE, IF PROCESS TRACE FILE 
*                                 AT IAF TERMINATION ONLY.
* 
*         EXIT   (LWAA) = LWA+1 OF COMPLETED AIP LOAD.
*                TO *ABT* IF AIP LOAD ERROR.
* 
*         USES   X - 1, 2, 4, 5, 6. 
*                A - 1, 2, 5, 6, 7. 
* 
*         CALLS  LOADER=, SYS=. 
* 
*         MACROS LOADER, RETURN.
  
  
 LNA      SUBR               ENTRY/EXIT 
  
*         LOAD RELOCATABLE AIP SUBROUTINES FROM SYSTEM LIBRARY. 
  
          SA1    /IAFEX4/ATMC GET AIP TRACE MESSAGE COUNT 
          ZR     X1,LNA1     IF TRACE IS NOT ACTIVE 
          LOADER TLRT        LOAD TRACE VERSION OF AIP
          SA5    TLKT        ENTRY POINT LINK TABLE FOR TRACE 
          EQ     LNA2        CONTINUE PROCESSING
  
 LNA1     LOADER TLDR        LOAD NON-TRACE VERSION OF AIP
          SA5    TLCK        ENTRY POINT LINK TABLE 
 LNA2     SX2    =C* AIP LOAD ERROR.* 
          NG     X6,ABT      IF FATAL LOAD ERROR
          SA7    LWAA        STORE LWA+1 OF COMPLETED LOAD
          RETURN L           RETURN LOADER PARAMETER FILE 
          MX4    -18         SET INSTRUCTION MASK 
  
*         PLUG ENTRY POINT ADDRESSES INTO AIP LINK SUBROUTINES. 
  
 LNA3     ZR     X5,LNAX     IF END OF TABLE
          SA1    X5+B1       READ LINK INSTRUCTION
          AX5    30          READ ENTRY POINT ADDRESS 
          SA2    X5+B1
          BX1    X4*X1       MASK LINK INSTRUCTION
          BX2    -X4*X2 
          BX6    X1+X2       INSERT ENTRY POINT 
          SA6    A1          REWRITE LINK INSTRUCTION 
          SA5    A5+B1       READ NEXT TABLE ENTRY
          NZ     X2,LNA3     IF NOT NULL ENTRY POINT
          SX2    =C* MISSING AIP ENTRY POINT.*
          EQ     ABT         ABORT INITIALIZATION 
 MTT      SPACE  4,20 
**        MTT - MODIFY TRANSLATION TABLE. 
* 
*         MTT MODIFIES THE COMMON DECK *COMTVDT* TRANSLATION
*         TABLE TO CORRESPOND TO EITHER 64 OR 63 CHARACTER SET
*         DEPENDING UPON INSTALLATION SELECTION.
* 
*         ENTRY  (CSMR) = 64 CHARACTER SET IF BIT 59 SET. 
*                TVXD  = FWA OF TRANSLATION TABLE.
*                TVXD63 = 63 CHARACTER SET MODIFICATION TABLE.
*                TVXD64 = 64 CHARACTER SET MODIFICATION TABLE.
* 
*         EXIT   TRANSLATION TABLE MODIFIED.
* 
*         USES   A - 1, 2, 6. 
*                X - 1, 2, 6. 
*                B - 6. 
  
  
 MTT      SUBR               ENTRY/EXIT 
          SA1    CSMR        READ INSTALLATION OPTION 
          SB6    /IAFEX4/TVXD64  ASSUME 64 CHARACTER SET
          NG     X1,MTT1     IF 64 CHARACTER SET
          SB6    /IAFEX4/TVXD63  SET 63 CHARACTER SET 
 MTT1     SA1    B6+         READ MODIFICATION TABLE ENTRY
          NG     X1,MTTX     IF END OF TABLE, RETURN
          SA2    A1+B1       READ SUBSTITUTION
          SB6    B6+2 
          BX6    X2          STORE SUBSTITUTION 
          SA6    /IAFEX4/TVXD+X1
          EQ     MTT1        CONTINUE 
 PNT      SPACE  4,30 
**        PNT - PRESET NETWORK TERMINAL POINTERS. 
* 
*         PNT ADDS AN ENTRY TO THE *VDRL* TABLE FOR NETWORK TERMINALS.
*         THE DRIVER NAME AND TERMINAL COUNT ARE SET INTO THIS *VDRL* 
*         WORD.  NETWORK TERMINALS POINTERS AND COUNTERS ARE ALSO 
*         INITIALIZED.
* 
*         ENTRY  (VNTP) = NETWORK TERMINAL COUNT. 
* 
*         EXIT   (VNTP) = 36/ FIRST, 24/LAST NETWORK TERMINAL.
*                (VDRL + N) = DRIVER POINTER WORD.
*                   11/0, 1/IL, 24/DN, 12/TC, 12/0. 
*                      N  = NETWORK DRIVER ORDINAL. 
*                      IL = INTERLOCK BIT.
*                      DN = DRIVER NAME.
*                      TC = TERMINAL COUNT. 
*                (NDRO) = NETWORK DRIVER ORDINAL. 
*                (/IAFEX4/NSPA) = NETWORK STACK POINTER ADDRESS.
* 
*                TO *ABT* IF MULTIPLEXER TABLE OVERFLOW.
* 
*         USES   A - 1, 2, 3, 6, 7. 
*                X - 1, 2, 3, 4, 6, 7.
*                B - 6. 
* 
*         CALLS  ABT. 
  
  
 PNT      SUBR               ENTRY/EXIT 
  
*         INITIALIZE NETWORK DRIVER STACK POINTER WORD. 
  
          SA3    VNTP        GET NETWORK TERMINAL COUNT 
          SB6    B0          CLEAR TABLE INDEX
          MX4    -12
          SX2    VPST        INITIALIZE ACCUMULATOR 
          SX6    X3 
          LX6    12 
  
*         COUNT LIVE MUX TERMINALS. 
  
 PNT1     SA1    VDRL+B6     READ DRIVER TABLE WORD 
          NG     X1,PNT2     IF END OF DRIVER POINTER WORDS 
          AX1    12          ADD MUX TERMINAL COUNT 
          BX1    -X4*X1 
          IX2    X2+X1
          SB6    B6+B1       ADVANCE TABLE POINTER
          EQ     PNT1        LOOP FOR NEXT DRIVER 
  
*         ADD NETWORK DRIVER POINTER TO VDRL TABLE. 
  
 PNT2     SX7    3RIAF       SET DRIVER NAME
          LX7    24 
          BX6    X6+X7       INSERT NETWORK TERMINAL COUNT
          SA6    A1          ADD ENTRY TO *VDRL* TABLE
          SX7    A1          SET STACK POINTER ADDRESS
          SA7    /IAFEX4/NSPA  STORE STACK POINTER ADDRESS
          SX7    X7-VDRL     SET NETWORK DRIVER ORDINAL 
          SA7    NDRO 
  
*         SET NETWORK TERMINAL POINTER WORD.
  
          IX6    X2+X3       UPPER NETWORK TERMINAL BOUND 
          SX6    X6-1 
          LX2    24          LOWER NETWORK TERMINAL BOUND 
          BX6    X6+X2       MERGE BOUNDS 
          SA6    A3          STORE VNTP 
  
*         SET UP NETWORK TIMEOUT MESSAGE. 
  
          SX1    NTODL
          RJ     CDD         TRANSLATE TO DISPLAY CODE
          SA2    /IAFEX4/DMTOS
          MX1    24 
          LX4    54 
          BX6    X1*X4
          BX6    X6+X2
          SA6    A2          INSERT INTO MESSAGE
          EQ     PNTX        RETURN 
 TLCK     SPACE  4,20 
**        TLCK - AIP ENTRY POINT LINK TABLE.
* 
*T,       30/LDRM, 30/LNKI
*            LDRM = ADDRESS OF LDREQ *ENTRY* MACRO. 
*            LNKI = ADDRESS OF LINKAGE SUBROUTINE.
  
  
 TLCK     BSS    0
  
          VFD    30/CHK,30//IAFEX4/NETCHEK
          VFD    30/FNC,30//IAFEX4/NETFUNC
          VFD    30/GET,30//IAFEX4/NETGETQ
          VFD    30/GTL,30//IAFEX4/NETGTLQ
          VFD    30/OFF,30//IAFEX4/NETOFF 
          VFD    30/NON,30//IAFEX4/NETON
          VFD    30/PUT,30//IAFEX4/NETPUTS
          VFD    30/SEP,30//IAFEX4/NETSETP
  
          CON    0           END OF TABLE 
 TLDR     SPACE  4,20 
**        TLDR - USER CALL LOADER REQUEST TABLE.
  
  
 TLDR     LDREQ  BEGIN,/IAFEX4/TINST,/IAFINI/FWA
          LDREQ  MAP,N
          LDREQ  PRESET,ZERO
          LDREQ  PASSLOC,((MSG=,0,0,//MSG=))
          LDREQ  PASSLOC,((SYS=,0,0,//SYS=))
          LDREQ  PASSLOC,((RCL=,0,0,//RCL=))
          LDREQ  PASSLOC,((WNB=,0,0,//WNB=))
  
*         RELOCATABLE AIP SUBROUTINE REQUEST TABLE. 
  
          LDREQ  LIBLOAD,NETIO,(NETCHEK)
          LDREQ  LIBLOAD,NETIO,(NETFUNC)
          LDREQ  LIBLOAD,NETIO,(NETGETQ)
          LDREQ  LIBLOAD,NETIO,(NETGTLQ)
          LDREQ  LIBLOAD,NETIO,(NETOFF) 
          LDREQ  LIBLOAD,NETIO,(NETON)
          LDREQ  LIBLOAD,NETIO,(NETPUTS)
          LDREQ  LIBLOAD,NETIO,(NETSETP)
  
*         ENTRY POINT ADDRESS TABLE.
  
 CHK      LDREQ  ENTRY,(NETCHEK)
 FNC      LDREQ  ENTRY,(NETFUNC)
 GET      LDREQ  ENTRY,(NETGETQ)
 GTL      LDREQ  ENTRY,(NETGTLQ)
 OFF      LDREQ  ENTRY,(NETOFF) 
 NON      LDREQ  ENTRY,(NETON)
 PUT      LDREQ  ENTRY,(NETPUTS)
 SEP      LDREQ  ENTRY,(NETSETP)
  
*         LOAD REQUEST COMPLETION.
  
          LDREQ  SATISFY,(NETIO)
          LDREQ  SATISFY
          LDREQ  END
          SPACE  4,10 
**        TLKT - AIP ENTRY POINT LINK TABLE FOR AIP TRACE.
* 
*T        30/ LDRM,30/ LNKI 
*         LDRM = ADDRESS OF LDREQ *ENTRY* MACRO CALL. 
*         LNKI = ADDRESS OF LINKAGE SUBROUTINE. 
  
  
 TLKT     BSS    0
          VFD    30/NCK,30//IAFEX4/NETCHEK
          VFD    30/NFC,30//IAFEX4/NETFUNC
          VFD    30/NGE,30//IAFEX4/NETGETQ
          VFD    30/NGL,30//IAFEX4/NETGTLQ
          VFD    30/NOF,30//IAFEX4/NETOFF 
          VFD    30/NEN,30//IAFEX4/NETON
          VFD    30/NPT,30//IAFEX4/NETPUTS
          VFD    30/NRL,30//IAFEX4/NETREL 
          VFD    30/NST,30//IAFEX4/NETSETP
          CON    0           END OF TABLE 
          SPACE  4,10 
**        TLRT - LOADER REQUEST TABLE FOR AIP TRACE.
  
 TLRT     LDREQ  BEGIN,/IAFEX4/TINST,/IAFINI/FWA
          LDREQ  MAP,N
          LDREQ  PRESET,ZERO
  
*         RELOCATABLE AIP SUBROUTINE REQUEST TABLE. 
  
          LDREQ  LIBLOAD,NETIOD,(NETCHEK) 
          LDREQ  LIBLOAD,NETIOD,(NETFUNC) 
          LDREQ  LIBLOAD,NETIOD,(NETGETQ) 
          LDREQ  LIBLOAD,NETIOD,(NETGTLQ) 
          LDREQ  LIBLOAD,NETIOD,(NETOFF)
          LDREQ  LIBLOAD,NETIOD,(NETON) 
          LDREQ  LIBLOAD,NETIOD,(NETPUTS) 
          LDREQ  LIBLOAD,NETIOD,(NETREL)
          LDREQ  LIBLOAD,NETIOD,(NETSETP) 
  
*         ENTRY POINT ADDRESS TABLE.
  
 NCK      LDREQ  ENTRY,(NETCHEK)
 NFC      LDREQ  ENTRY,(NETFUNC)
 NGE      LDREQ  ENTRY,(NETGETQ)
 NGL      LDREQ  ENTRY,(NETGTLQ)
 NOF      LDREQ  ENTRY,(NETOFF) 
 NEN      LDREQ  ENTRY,(NETON)
 NPT      LDREQ  ENTRY,(NETPUTS)
 NRL      LDREQ  ENTRY,(NETREL) 
 NST      LDREQ  ENTRY,(NETSETP)
  
*         LOAD REQUEST COMPLETION.
  
          LDREQ  SATISFY,(NETIOD) 
          LDREQ  SATISFY
          LDREQ  END
          SPACE  4,10 
          BASE   *
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 LNI      EQU    /COMCLNI/LNI 
 QUAL$    ENDIF 
          ENDX
