*DECK TABINIT 
USETEXT CCTTEXT 
USETEXT DNTEXT
          PROC TABINIT; 
 #                                                                     #
 #     TABINIT  -  INITIALIZE TABLE TABLES                             #
 #                                                                     #
 #        DOES  -  SETS THE INITIAL VALUES FOR THE TABLES#
  
          BEGIN 
  
*CALL ASSEMOP 
  
*CALL TABLEDF 
*CALL TABLETYP
*CALL ASMSEQ
*CALL AUXT1 
*CALL AWRT
          CONTROL NOLIST ;    #COPYDCL# 
          CONTROL LIST; 
*CALL CTEXT 
*CALL DNT 
*CALL ETEXT 
*CALL FDLT
*CALL FDRDT1
*CALL FNAT1 
*CALL GTEXT1
*CALL INT1
*CALL LAT1
*CALL LDSET 
*CALL LISTOBJ 
*CALL LPOOL 
*CALL NAMET 
*CALL PAT1
*CALL PLT1
*CALL PNAT1 
*CALL PNT 
*CALL RCT 
*CALL RWT1
*CALL DBSAT 
*CALL SEGPTR
*CALL SPBT1 
*CALL WORKTABS
*CALL OVLCOM
          XREF FUNC GTBASEA;
  
          BASED ARRAY ZERARRAY [1:1] S(1);
              ITEM ZRITEM I(0,0,60);
          ARRAY INITVALS [1:NBRTABLES] P(02);  #INITIAL VALUE TABLE#
              BEGIN 
              ITEM INITTABNBR S:TABLETYPE (0,00,07)  #TABLE NUMBER# 
                  =[
                  S"AUX$",
                  S"AWRT$", 
                  S"NAMET$",
                  S"COPY2$",
                  S"COPY3$",
                  S"OBJLST$", 
                  S"CTEXT$",
                  S"DLT$",
                  S"DNAT$", 
                  S"DNT$",
                  S"ETEXT$",
                  S"FDLT$", 
                  S"FDRDT$",
                  S"FNAT$", 
                  S"GTEXT$",
                  S"INT$",
                  S"LAT$",
                  S"LDSET$",
                  S"LPOOL$",
                  S"PAT$",
                  S"PLT$",
                  S"PLTSTR$", 
                  S"PNAT$", 
                  S"PNT$",
                  S"RCT$",
                  S"RWT$",
                  S"SAT$",
                  S"SEGPTR$", 
                  S"SPBT$", 
                 S"ASMSEQ$",
                  S"WORK1$",
                  S"WORK2$",
                  S"WORK3$",
                  S"WORK4$",
                  S"WORK5$",
                  ];
              ITEM INITINC    U(00,30,09)   #EXTEND INCREMENT#
                  #MUST BE IN A MULTIPLE OF PRUS (64)#
                  =[
                  128,             #AUX#
                  000,             #AWRT# 
                  064,             #NAMET#
                  000,             #COPY2#
                  000,             #COPY3#
                  064,             #OBJLST# 
                  000,             #CTEXT#
                  128,             #DLT#
                  256,             #DNAT# 
                  128,             #DNT#
                  000,             #ETEXT#
                  064,             #FDLT# 
                  064,             #FDRDT#
                  064,             #FNAT# 
                  000,             #GTEXT#
                  000,             #INT#
                  000,             #LAT#
                  064,             #LDSET#
                  064,             #LPOOL#
                  000,             #PAT#
                  064,             #PLT#
                  064,             #PLTSTR# 
                  64,              #PNAT# 
                  128,             #PNT#
                  000,             #RCT#
                  064,             #RWT#
                  064,             #SAT#
                  064,             #SEGPTR# 
                  064,             #SPBT# 
                  000,             #ASMSEQ# 
                  064,             #WORK1#
                  064,             #WORK2#
                  064,             #WORK3#
                  064,             #WORK4#
                  064,             #WORK5#
                  ];
              ITEM INITENTSIZE U(00,39,08)   #ENTRY SIZE# 
 #            MUST BE A  FACTOR OF 64 (1,2,4,8,16,32)                  #
                  =[
                  01,              #AUX#
                  04,              #AWRT# 
                  NAMET$ENTSZ,     #NAMET#
                  01,              #COPY2#
                  16,              # COPY3 #
                  01,              #OBJLST# 
                  01,              #CTEXT#
                  01,              #DLT#
                  04,               #DNAT#
                  DNT$ENTSZ,       #DNT#
                  01,              #ETEXT#
                  08,              #FDLT# 
                  01,              #FDRDT#
                  16,              #FNAT# 
                  01,              #GTEXT#
                  01,              #INT#
                  01,              #LAT#
                  01,              #LDSET#
                  01,              #LPOOL#
                  01,              #PAT#
                  01,              #PLT#
                  01,              #PLTSTR# 
                  01,              #PNAT# 
                  PNT$ENTSZ,       #PNT#
                  01,              #RCT#
                  01,              #RWT#
                  02,              #SAT#
                  01,              #SEGPTR# 
                  02,              #SPBT# 
                  01,        #ASMSEQ# 
                  01,              #WORK1#
                  01,              #WORK2#
                  01,              #WORK3#
                  01,              #WORK4#
                  04,              #WORK5#
                  ];
              ITEM INITINITSZ U(00,47,09)  #INITIAL ALLOC SIZE# 
                  #MUST BE IN A MULTIPLE OF PRUS (64)#
                  =[
                  064,             #AUX#
                  256,             #AWRT# 
                  128,             #NAMET#
                  256,             #COPY2#
                  256,             #COPY3#
                  064,             #OBJLST# 
                  256,             #CTEXT#
                  128,             #DLT#
                  256,             #DNAT# 
                  128,             #DNT#
                  064,             #ETEXT#
                  064,             #FDLT# 
                  064,             #FDRDT#
                  064,             #FNAT# 
                  256,             #GTEXT#
                  064,             #INT#
                  128,             #LAT#
                  064,             #LDSET#
                  128,             #LPOOL#
                  064,             #PAT#
                  128,             #PLT#
                  128,             #PLTSTR# 
                  64,              #PNAT# 
                  064,             #PNT#
                  064,             #RCT#
                  128,             #RWT#
                  064,             #SAT#
                  064,             #SEGPTR# 
                  128,             #SPBT# 
                  128,             #ASMSEQ# 
                  128,             #WORK1#
                  128,             #WORK2#
                  128,             #WORK3#
                  128,             #WORK4#
                  128,             #WORK5#
                  ];
              ITEM INITPRINBR U(01,00,08)  #PRIORITY NUMBER#
                  =[
                  32,              #AUX#
                  02,              #AWRT# 
                  15,              #NAMET#
                  00,              #COPY2#
                  00,              #COPY3#
                  05,              #OBJLST# 
                  00,              #CTEXT#
                  04,              #DLT#
                  34,              #DNAT# 
                  16,              #DNT#
                  00,              #ETEXT#
                  00,              #FDLT# 
                  08,              #FDRDT#
                  06,              #FNAT# 
                  00,              #GETXT#
                  20,              #INT#
                  26,              #LAT#
                  05,              #LDSET#
                  30,              #LPOOL#
                  10,              #PAT#
                  22,              #PLT#
                  14,              #PLTSTR# 
                  28,              #PNAT# 
                  21,              #PNT#
                  18,              #RCT#
                  00,              #RWT#
                  15,              #SAT#
                  00,              #SEGPTR# 
                  12,              #SPBT# 
                  07,        #ASMSEQ# 
                  52,              #WORK1#
                  54,              #WORK2#
                  56,              #WORK3#
                  60,              #WORK4#
                  62,              #WORK5#
                  ];
  
              ITEM INITFIXOVL  S:OVERLAY (01,08,05)   #FIXED AFT OVERL# 
                  =[
                  S"PROCTAB",      #AUX#
                  0,               #AWRT# 
                  0,               #NAMET#
                  0,               #COPY2#
                  0,               #COPY3#
                  S"SSCANNER",     #OBJLST# 
                  S"RGEN",         #CTEXT#
                  S"RPARSER",      #DLT#
                  S"CGEN",         #DNAT# 
                  0,               #DNT#
                  S"PROCTAB",      #ETEXT#
                  S"CBINIT",       #FDLT# 
                  S"DANALYZER",    #FDRDT#
                  S"DPARSER",      #FNAT# 
                  S"PPARSER",      #GTEXT#
                  S"SSCANNER",     #INT#
                  S"PPARSER",      #LAT#
                  S"CGEN",         #LDSET#
                  0,               #LPOOL#
                  S"PICANALYZR",   #PAT#
                  S"PPARSER",      #PLT#
                  S"PPARSER",      #PLTSTR# 
                  S"PPARSER",      #PNAT# 
                  0,               #PNT#
                  S"PPARSER",      #RCT#
                  S"RGEN",         #RWT#
                  S"SSCANNER",     #SAT#
                  S"PROCTAB",      #SEGPTR# 
                  S"SSCANNER",     #SPBT# 
                  S"CGEN",   #ASMSEQ# 
                  0,               #WORK1#
                  0,               #WORK2#
                  0,               #WORK3#
                  0,               #WORK4#
                  0,               #WORK5#
                  ];
  
              ITEM INITRTNOVL  S:OVERLAY (01,13,05)  #RETURN AFT OVL# 
                  =[
                  S"CGEN",         #AUX#
                  S"SSCANNER",     #AWRT# 
                  S"SSCANNER",     #NAMET#  #CHANGED IN COBINIT IF CDCS#
                 0,                #COPY2#
                 0,                #COPY3#
                  S"ASSEM",        #OBJLST# 
                  S"PPARSER",      #CTEXT#
                  S"CGEN",         #DLT#
                  S"ASSEM",        #DNAT# 
                  S"SSCANNER",     #DNT#  # CHANGED IN COBINIT IF CDCS #
                  S"DFORMATTER",   #ETEXT#
                0,           # FDLT - NEVER RETURNED  # 
                  S"RGEN",         #FDRDT#
                  S"CGEN",         #FNAT# 
                  S"CGEN",         #GTEXT#
                  S"XFORMATTER",   #INT#
                  S"CGEN",         #LAT#
                  S"ASSEM",        #LDSET#
                  S"PROCTAB",      #LPOOL#
                  S"RGEN",         #PAT#
                  S"ASSEM",        #PLT#
                  S"ASSEM",        #PLTSTR# 
                  S"ASSEM",        #PNAT# 
                  S"SSCANNER",     #PNT#
                  S"CGEN",         #RCT#
                  S"PPARSER",      #RWT#
                  S"DBTRANS",      #SAT#
                  S"CGEN",         #SEGPTR# 
                  S"PPARSER",      #SPBT# 
                  S"ASSEM",  #ASMSEQ# 
                  0,               #WORK1#
                  0,               #WORK2#
                  0,               #WORK3#
                  0,               #WORK4#
                  0,               #WORK5#
                  ];
  
              ITEM INITROOVL  S:OVERLAY (01,18,05)  #READ ONLY AFT OVL #
                  =[
                  S"PROCTAB",      #AUX#
                  0,               #AWRT# 
                  0,               #NAMET#
                  0,               #COPY2#
                  0,               #COPY3#
                  S"SSCANNER",     #OBJLST# 
                  S"SSCANNER",     #CTEXT#
                  S"RPARSER",      #DLT#
                  S"CGEN",         #DNAT# 
                  0,               #DNT#
                  0,               #ETEXT#
                  S"CBINIT",       #FDLT# 
                  0,               #FDRDT#
                  S"PROCTAB",      #FNAT# 
                  S"PPARSER",      #GETXT#
                  S"SSCANNER",     #INT#
                  S"LITPOOLER",    #LAT#
                  S"CGEN",         #LDSET#
                  0,               #LPOOL#
                  S"PICANALYZR",   #PAT#
                  S"PPARSER",      #PLT#
                  S"PPARSER",      #PLTSTR# 
                  0,               #PNAT# 
                  0,               #PNT#
                  S"PPARSER",      #RCT#
                  S"RGEN",         #RWT#
                  S"SSCANNER",     #SAT#
                  S"PROCTAB",      #SEGPTR# 
                  0,               #SPBT# 
                  S"CGEN",   #ASMSEQ# 
                  0,               #WORK1#
                  0,               #WORK2#
                  0,               #WORK3#
                  0,               #WORK4#
                  ];
  
              END 
          ITEM INDEX1  U; 
          ITEM TABNBR  U; 
 #     ITEMS TO RESET FDLT WITH # 
          ITEM FDLTASGD B;
          ITEM LASTENT I; 
          XREF ITEM BLKGID  U;
          XREF FUNC CMM$AGR;
          CONTROL EJECT;
          FUNC INITBASE (TABLENBR)  U;
 #        INITBASE - RETURNS PLACE IN CCT WHERE TABLE BASE ADDR IS     #
 #     ALSO SETS BASE ADDRESS TO AN ILLEGAL VALUE TO PREVENT BAD REFS  #
 #                                                                     #
 #        CALLED WITH TABLE NUMBER A S PARAM                           #
          BEGIN 
          ITEM TABLENBR U;
          ITEM ADDR U;
          ITEM EM1BASE I = O"00000000000000400000"; 
          SWITCH TABJMP:TABLETYPE 
              PAUXT    : AUX$  ,
              PAWRT    : AWRT$  , 
              PNAMET   : NAMET$ , 
              PDELETED : COPY2$ , 
              PDELETED : COPY3$ , 
              POBJLST : OBJLST$ , 
              PCTEXT   : CTEXT$ , 
              PDELETED : DLT$   ,    #DLT DELETED IN 5.3# 
              PDNAT    : DNAT$  , 
              PDNT     : DNT$   , 
              PETEXT   : ETEXT$ , 
              PFDLT    : FDLT$  , 
              PFDRDT   : FDRDT$ , 
              PFNAT    : FNAT$  , 
              PGTEXT   : GTEXT$ , 
              PINT     : INT$   , 
              PLAT     : LAT$   , 
              PLDSET   : LDSET$ , 
              PLPOOL   : LPOOL$ , 
              PPAT     : PAT$   , 
              PPLT     : PLT$   , 
              PPLTSTR  : PLTSTR$, 
              PPNAT    : PNAT$  , 
              PPNT     : PNT$   , 
              PRCT     : RCT$   , 
              PRWT     : RWT$   , 
              PSAT     : SAT$   , 
              PSEGPTR  : SEGPTR$, 
              PSPBT    : SPBT$  , 
              PASMSEQ  : ASMSEQ$, 
              PWORK1   : WORK1$ , 
              PWORK2   : WORK2$ , 
              PWORK3   : WORK3$ , 
              PWORK4   : WORK4$ , 
              PWORK5   : WORK5$ 
              ; 
          GOTO TABJMP [TABLENBR]; 
  
 PDELETED:  
          RETURN;    #PROCESS FOR DELETED TABLES# 
  
 PASMSEQ: 
          INITBASE = GTBASEA (P<ASMSEQ>); 
          P<ASMSEQ> = EM1BASE;
          RETURN; 
  
 PAUXT: 
          INITBASE = GTBASEA (P<AUXT >);
          P<AUXT > = EM1BASE; 
          RETURN; 
  
 PAWRT: 
          INITBASE = GTBASEA (P<AWRT >);
          P<AWRT > = EM1BASE; 
          RETURN; 
  
 PCTEXT:  
          INITBASE = GTBASEA (P<CTEXTARRAY>); 
          P<CTEXTARRAY> = EM1BASE;
          RETURN; 
  
 PDNAT: 
          INITBASE = GTBASEA (P<DNAT >);
          P<DNAT > = EM1BASE; 
          TTABNBRSPLTS [TABNBR] = 2;
          TTABECSCAND [TABNBR] = TRUE;
          RETURN; 
  
 PDNT:  
          INITBASE = GTBASEA (P<DNT  >);
          P<DNT  > = EM1BASE; 
          TTABECSCAND [TABNBR] = TRUE;
 #     SET TO GROUP 1 - CHANGED IF CDCS RUN - THEN PASSES TO NEXT OVL # 
          TTABGROUP1 [TABNBR] = TRUE;     # SET AS GROUP 1 - BELOW HHA #
          TTABSAVEIT [TABNBR] = TRUE; 
          RETURN; 
  
 PETEXT:  
          INITBASE = GTBASEA (P<ETEXT>);
          P<ETEXT> = EM1BASE; 
          $BEGIN
          TTABFIXOVL [TABNBR] = 0;   #ALLOW FOR LIST OF ALL DIAGS#
          $END
          RETURN; 
  
 PFDLT: 
          IF NOT CCTFSTCOMPIL 
          AND FDLTASGD
          THEN
              BEGIN  # RESET AS BEFORE - LASTS OVER COMPILES #
              TTABLASTENT [TABNBR] = LASTENT; 
              TTABFCENT [TABNBR] = 0; 
              TTABLCENT [TABNBR] = LASTENT; 
              TTABLVENT [TABNBR] = LASTENT; 
              TTABFIRSTREF [TABNBR] =TRUE;
              TTABASGD [TABNBR] = TRUE; 
              TTABFIXED [TABNBR] = TRUE;
              TTABFIXOVL [TABNBR] = 0;
              TTABROOVL [TABNBR] = 0; 
              TTABSAVEIT [TABNBR] = FALSE;
              TTABCALLOC [TABNBR] = ((((LASTENT * TTABENTSIZE [TABNBR]) 
                + 63) / 64) * 64);
              END 
          ELSE
              P<FDLT> = EM1BASE;
          INITBASE = GTBASEA (P<FDLT>); 
          RETURN; 
  
 PFDRDT:  
          INITBASE = GTBASEA (P<FDRDT>);
          P<FDRDT> = EM1BASE; 
          RETURN; 
  
 PFNAT: 
          INITBASE = GTBASEA (P<FNAT >);
          P<FNAT > = EM1BASE; 
          RETURN; 
  
 PGTEXT:  
          INITBASE = GTBASEA (P<GTEXT>);
          P<GTEXT> = EM1BASE; 
          RETURN; 
  
 PINT:  
          INITBASE = GTBASEA (P<INT  >);
          P<INT  > = EM1BASE; 
          RETURN; 
  
 PLAT:  
          INITBASE = GTBASEA (P<LAT  >);
          P<LAT  > = EM1BASE; 
          RETURN; 
  
 PLDSET:  
          INITBASE = GTBASEA (P<LDSETARRAY>); 
          P<LDSETARRAY> = EM1BASE;
          RETURN; 
  
 PLPOOL:  
          INITBASE = GTBASEA (P<LPOOL>);
          P<LPOOL> = EM1BASE; 
          RETURN; 
  
 PNAMET:  
          INITBASE = GTBASEA (P<NAMET>);
          P<NAMET> = EM1BASE; 
          TTABGROUP1 [TABLETYPE"NAMET$"] = TRUE;
          TTABSAVEIT [TABNBR] = TRUE; 
          RETURN; 
  
 POBJLST: 
          INITBASE = GTBASEA (P<LISTOBJ>);
          P<LISTOBJ> = EM1BASE; 
          RETURN; 
  
 PPAT:  
          INITBASE = GTBASEA (P<PAT  >);
          P<PAT  > = EM1BASE; 
          RETURN; 
  
 PPLT:  
          INITBASE = GTBASEA (P<PLTATTRIBUTE>); 
          P<PLTATTRIBUTE> = EM1BASE;
          TTABNBRSPLTS [TABNBR] = 1;  #IN COBSS FOR EDIT PATS # 
          RETURN; 
  
 PPLTSTR: 
          INITBASE = GTBASEA (P<PLTSTRING>);
          P<PLTSTRING> = EM1BASE; 
          TTABNBRSPLTS [TABNBR] = 1;  #IN COBSS FOR EDIT PATS # 
          RETURN; 
  
 PPNAT: 
          INITBASE = GTBASEA (P<PNAT >);
          P<PNAT > = EM1BASE; 
          TTABNBRSPLTS [TABNBR] = 1;
          RETURN; 
  
 PPNT:  
          INITBASE = GTBASEA (P<PNT  >);
          P<PNT  > = EM1BASE; 
          TTABGROUP1 [TABNBR] = TRUE;     # SET AS GROUP 1 - BELOW HHA #
          RETURN; 
  
 PRCT:  
          INITBASE = GTBASEA (P<RCT  >);
          P<RCT  > = EM1BASE; 
          RETURN; 
  
 PRWT:  
          INITBASE = GTBASEA (P<RWT  >);
          P<RWT  > = EM1BASE; 
          RETURN; 
  
 PSAT:  
          INITBASE = GTBASEA (P<SAT   >); 
          P<SAT   > = EM1BASE;
          RETURN; 
  
 PSEGPTR: 
          INITBASE = GTBASEA (P<SEGPTR>); 
          P<SEGPTR> = EM1BASE;
          RETURN; 
  
  
 PSPBT: 
          INITBASE = GTBASEA (P<SPBT >);
          P<SPBT > = EM1BASE; 
          RETURN; 
  
 PWORK1:  
          INITBASE = GTBASEA (P<WORK1>);
          P<WORK1> = EM1BASE; 
          TTABGROUP1 [TABNBR] = TRUE;   #SET AS GROUP ID 1 (BELOW HHA)# 
          RETURN; 
  
 PWORK2:  
          INITBASE = GTBASEA (P<WORK2>);
          P<WORK2> = EM1BASE; 
          TTABGROUP1 [TABNBR] = TRUE;   #SET AS GROUP ID 1 (BELOW HHA)# 
          RETURN; 
  
 PWORK3:  
          INITBASE = GTBASEA (P<WORK3>);
          P<WORK3> = EM1BASE; 
          TTABGROUP1 [TABNBR] = TRUE;   #SET AS GROUP ID 1 (BELOW HHA)# 
          RETURN; 
  
 PWORK4:  
          INITBASE = GTBASEA (P<WORK4>);
          P<WORK4> = EM1BASE; 
          TTABGROUP1 [TABNBR] = TRUE;   #SET AS GROUP ID 1 (BELOW HHA)# 
          RETURN; 
  
 PWORK5:  
          INITBASE = GTBASEA (P<WORK5>);
          P<WORK5> = EM1BASE; 
          TTABGROUP1 [TABNBR] = TRUE;   #SET AS GROUP ID 1 (BELOW HHA)# 
          RETURN; 
  
          END 
          CONTROL EJECT;
 #     START MAIN PROC   #
          IF NOT CCTFSTCOMPIL 
          THEN
 #     NOT FIRST COMPILATION IN STRING - FDLT MUST EXTEND OVER ALL COMP#
              BEGIN 
              LASTENT = TTABLASTENT [TABLETYPE "FDLT$"];
              FDLTASGD = TTABASGD [TABLETYPE "FDLT$"];
              END 
          P<ZERARRAY> = LOC (TTABLE); 
          FOR INDEX1 = 1 STEP 1 UNTIL NBRTABLES * TTABLESIZE DO 
              ZRITEM [INDEX1] = 0;
          FOR INDEX1 = 1 STEP 1 UNTIL NBRTABLES DO
              BEGIN 
              TABNBR = INITTABNBR [INDEX1]; #GET TABLE NUMBER#
              TTABINC [TABNBR] = INITINC [INDEX1];
              TTABENTSIZE [TABNBR] = INITENTSIZE [INDEX1];
              TTABINITSZ [TABNBR] = INITINITSZ [INDEX1];
              TTABPRINBR [TABNBR] = INITPRINBR [INDEX1];
              TTABROOVL [TABNBR] = INITROOVL [INDEX1];
              TTABHIGHWA [TABNBR] = 1;   #INIT TO 1 - NEEDED IN VIRTUAL#
              TTABLASTENT [TABNBR] = -1;   # SET NEG FOR FIRST TEST # 
              TTABLCENT [TABNBR] = -1;   #SET NEG FOR FIRST TEST# 
              TTABALLINCOR [TABNBR] = FALSE;
              TTABFIXOVL [TABNBR] = INITFIXOVL [INDEX1];
              $BEGIN
              TTABSAVEIT [TABNBR] = TRUE;  #ALWAYS WRITE ON FILE IN DBG#
              $END
              TTABRTNOVL [TABNBR] = INITRTNOVL [INDEX1];
              TTABLVENT [TABNBR] = -1;
 #     THE SETTING OF BASE MUST BE LAST (FOR SPECIAL PROCESSING)       #
              TTABBASE [TABNBR] = INITBASE (TABNBR);
              END 
          BLKGID = CMM$AGR (0);    #ASSIGN GROUP ID#
          RETURN; 
          END 
          TERM
