*DECK     CSLSIT
OVERLAY(77,00)
USETEXT TEXTSS
USETEXT TEXTCS
USETEXT          TXTSMCS
USETEXT          TXTAPSS
PRGM CSLSIT;
# TITLE CSLSIT - SEQUENCE INITIALIZATION TASKS.                       # 
  
      BEGIN  # CSLSIT # 
# 
**    CSLSIT - SEQUENCE INITIALIZATION TASKS. 
* 
*     S. H. FISCHER.         81/08/26.
*     D. G. DEPEW.           81/11/18.
*     C. J. BRION.           82/06/17.
* 
*     THIS ROUTINE IS PART OF THE INITIALIZATION PROCESS FOR CS.
*     ITS JOB IS TO PERFORM OR CALL ROUTINES TO PERFORM ALL THE 
*     TASKS THAT MUST BE DONE BEFORE STARTING NORMAL OPERATIONS 
*     OF CS BY ENTERING THE MAIN LOOP.
* 
*     PRGM CSLSIT 
* 
*     ENTRY      NONE.
* 
*     EXIT       PROGRAM READY TO START NORMAL OPERATIONS.
* 
# 
  
  
  
# 
****  PRGM CSLSIT - XREF LIST.
# 
  
      XREF
        BEGIN 
        PROC CSIBPT;         # BUILD DEBUG AID POINTER TABLE           #
        PROC CSIIAM;         # INITIALIZE AIP MONITOR                  #
        PROC CSIIMT;         # INITIALIZE MANAGED TABLES               #
        PROC CSIBWD;         # BUILD WORKLIST DEFINITIONS              #
        PROC CSIBSW;         # BUILD STATUS WORKLIST DEFINITIONS       #
        PROC CSIBXT;         # BUILD NCF CROSS REFERENCE TABLE         #
        PROC CSIBRT;         # BUILD ROLLOUT TABLE                     #
        PROC CSIBOF;         # BUILD OVERLAY FILE                      #
        PROC CSIBOT;         # BUILD OPERATOR CONTROL BLOCKS #
                                         # AND THE ACN LIST # 
        PROC CSICCC;         # CRACK CONTROL CARD                      #
        PROC MESSAGE;        # ISSUE DAYFILE MESSAGE (MACREL)          #
        PROC NETDBG;
        PROC NETON;          # CONNECT TO NETWORK                      #
        PROC NETREL;
        PROC NETSETP;        # PARALLEL MODE CONTROL                   #
        PROC NETSETF; 
        PROC RECALL;         # PLACE JOB IN RECALL (MACREL)            #
        PROC SSCUTD;         # SS- UPDATE TIME OF DAY                  #
        PROC SSSPES;         # SS- PROGRAM EXECUTION SEQUENCER         #
        PROC SSTAQE;         # SS- ACCEPT QUEUE ENTRY                  #
        END 
  
# 
****
# 
  
  
      DEF NR$NAME # O"16220634000000000000" #; # NETREL NAME (NRF1)    #
      DEF OPTION$  #0#;      # DAYFILE MESSAGE OPTION                  #
  
      STATUS NETON$          # NETON STATUS LIST                       #
        SUCCESS,             # NETON SUCCESSFUL                        #
        UNAVAIL,             # NAM UNAVAILABLE                         #
        DUPLICATE,           # DUPLICATE CS NETON ATTEMPT              #
        DISABLED;            # CS IS DISABLED                          #
  
  
      ITEM NSTAT  S:NETON$;  # NETON STATUS                            #
      ITEM GETFET  I;        # FLUSH INDICATOR #
      ITEM STATIS;           # STATUS RETURNED BY NETDBG               #
      ITEM DNFETADR;         # *ZZZZZDN* FET ADDRESS                   #
      ITEM I;                # LOOP INDUCTION VARIABLE                 #
  
  
      ARRAY TRYMSG [00:00] S(3);
        BEGIN 
        ITEM TR$TEXT    C(00,00,20) = ["CS ATTEMPTING NETON."]; 
        ITEM TR$ZERO    U(02,00,60) = [0];
        END 
  
      ARRAY DUPMSG [00:00] S(3);
        BEGIN 
        ITEM DP$TEXT    C(00,00,20) = ["CS DUPLICATE NETON."];
        ITEM DP$ZERO    U(02,00,60) = [0];
        END 
  
      ARRAY DISMSG [00:00] S(2);
        BEGIN 
        ITEM DI$TEXT    C(00,00,15) = ["CS DISABLED."]; 
        ITEM DI$ZERO    U(01,30,30) = [0];
        END 
  
      ARRAY OKMSG [00:00] S(3); 
        BEGIN 
        ITEM OK$TEXT    C(00,00,20) = ["CS NETON SUCCESSFUL."]; 
        ITEM OK$ZERO    U(02,00,60) = [0];
        END 
  
  
      P<ABH> = LOC(ABHBUF); 
      P<CSSM> = LOC(MSGBUF);
      P<APSM> = LOC(MSGBUF);
  
      P<SSITRQ> = LOC(P<TRQ>);
      P<SSITRQL> = LOC(TRQL); 
      SSCRTRW = CSWDF"SCRTR"; 
      CTM$FTIME[0] = O"7777 7777";
  
      TXTALEN = MSBFAPL + 1; # SET TEXT LENGTH OF BLOCK CS CAN ACCEPT  #
  
      SSCUTD;                # UPDATE TIME OF DAY                      #
  
      CSIBPT;                # BUILD DEBUG AID POINTER TABLE           #
  
      CSIIMT;                # INITIALIZE MANAGED TABLES               #
  
      CSIBWD;                # BUILD WORKLIST DEFINITIONS              #
  
      CSIBSW;                # BUILD WORKLIST DEFINITIONS              #
  
      CSICCC;                # CRACK THE CONTROL CARD                  #
  
      CSIIAM;                # INITIALIZE AIP MONITOR                  #
  
      CSIBXT;                # BUILD NCF CROSS REFERENCE TABLE         #
  
      CSIBOT;                # BUILD OPERATOR TABLES #
  
      CSIBOF;                # BUILD OVERLAY FILE                      #
  
      CSIBRT;                # BUILD ROLLOUT TABLE                     #
  
  
      CSSTATE = FALSE;       # EQUALS SHUTDOWN NOT IN PROGRESS         #
  
  
      IF MC NQ 0
      THEN
        NETREL(NR$NAME,0,0);   # INITIALIZE *ZZZZZDN* FILE            # 
  
      GETFET = 0; 
      NETSETF(GETFET,DNFETADR);        # GET *ZZZZZDN* GET ADDRESS     #
      TPA$ADDR[1] = DNFETADR;          # SAVE THE FET ADDRESS          #
  
  
      MESSAGE (TRYMSG, OPTION$);
      FOR NSTAT = S"UNAVAIL"
        WHILE NSTAT EQ S"UNAVAIL" 
      DO                     # LOOP UNTIL NAM IS AVAILABLE             #
        BEGIN 
        RECALL (0); 
        NETON ("CS", NSUP, NSTAT, MINACN$, MAXACN$); # CONNECT TO NW #
        END 
  
  
      $BEGIN
      FOR I=1 STEP 1 UNTIL NSVT$
      DO                     # CLEAR THE STATISTICS VALUE TABLE        #
        BEGIN 
        SVT$VAL[I] = 0; 
        END 
      $END
  
  
      IF NSTAT EQ S"DUPLICATE"
      THEN                   # CS ALREADY NETTED ON                    #
        BEGIN 
        MESSAGE (DUPMSG, OPTION$);
        STOP; 
        END 
      ELSE IF NSTAT EQ S"DISABLED"
      THEN                   # CS IS DISABLED                          #
        BEGIN 
        MESSAGE (DISMSG, OPTION$);
        STOP; 
        END 
  
      NET$ONF = TRUE;        # SET NET ON FLAG                         #
      NETDBG(FALSE,FALSE,STATIS);        # TURN TRACE OFF # 
      MESSAGE (OKMSG, OPTION$); 
  
      NETSETP(0);            # BEGIN PARALLEL MODE                     #
  
  
# 
*     FINALLY, ISSUE THE LST/HDX AND DC/TRU SUPERVISORY MESSAGES.  THE
*     MESSAGES CAN HAVE IDENTICAL ABH'S.  SET UP ABH FIRST, THEN SM 
*     BODIES, THEN ISSUE MESSAGES.
# 
      ABHWORD[1] = 0;        # SET UP ABH WORD                         #
      ABHABT[1] = APPCMD; 
      ABHACT[1] = CT60TRANS;
      ABHTLC[1] = 1;
  
      SPMSG0[1] = 0;         # SET UP AND ISSUE DC/TRU SM              #
      PFCSFC[1] = DCTRU;
      SSTAQE (P<OTQ>, 3, ABH[1], APSM[1]);
  
      PFCSFC[1] = LSTHDX;    # SET UP AND ISSUE LST/HDX SM             #
      LSTDIS[1] = TRUE;      # INPUT INITIALLY DISABLED FOR ALL ACN'S  #
      SSTAQE (P<OTQ>, 3, ABH[1], APSM[1]);
  
  
      SSSPES;    # PROGRAM EXECUTION SEQUENCER                         #
  
  
      END  # CSLSIT # 
      TERM
