*DECK     INIT22 (2,2) OVERLAY INITIALIZATION 
          IDENT  INIT22 
 INIT22   SECT   (INITIALIZE CCG OVERLAY.),INI22
 INIT22   SPACE  4,10 
*         IN CCGC 
          EXT    CCGC,OPTLVL,OPT2,PSTAB,WINOC 
  
*         IN CCGLINK
          EXT    O.FE 
  
*         IN CSKEL
          EXT    F.SET
  
*         IN FTN
          EXT    CO.CS,CO.DOOT
          EXT    CO.OPT,F.IL,F.OPT,F.PB,IDPCHK,SYS=,WNB=
  
*         IN IDP
          EXT    IDP= 
  
*         IN INIT20 
          EXT    FW.ILB,FW.PBB
  
*         IN PROSEQ 
          EXT    FPL2,L.API,L.APL,L.ASG,L.BLKS,L.CON,L.FILE,L.GLT,L.IAI 
          EXT    L.IOA,L.NLST,L.SYM1,O.API,O.APL,O.ASG,O.BLKS,O.CON 
          EXT    O.FILE,O.GLT,O.IAI,O.IOA,O.NLST,O.SYM1,O.TEND,PTC= 
  
*         IN PUC
          EXT    F.LBT,LEVEL2,L=API,L=APL,L=ASG,L=BLKS,L=CON,L=FILE 
          EXT    L=GL,L=IOA,L=IOI,L=NLST,L=SYM,MOD,NARGS,N.FP,O=API 
          EXT    O=APL,O=ASG,O=BLKS,O=CON,O=FILE,O=GL,O=IOA,O=IOI 
          EXT    O=NLST,O=SYM,RPV=URP,S=CON,S=ENTRY,Z.LBT 
          EXT    WO.CS,WO.DOOT
  
*         IN RPV20
          EXT    RPV2N
  
*         IN RPV22
          EXT    RPV22
  
*         IN UTILITY
          EXT    CIO=,RPV=,SBM= 
 INIT22   SPACE  4,10 
          DESCRIBE SK.,60    SKELETON EXPANSION FORMAT
 FI       DEFINE 1
 RND      DEFINE 1
          DEFINE 1
 TYPE     DEFINE 3
 GH       DEFINE 9
          DEFINE 45 
  
 F.MEM    BSSENT             START OF WORKING STORAGE 
 INIT22   SPACE  4,10 
**        INIT22 - INITIALIZE CCG OVERLAY.
* 
*         ENTRY  THE (2,2) HAS JUST BEEN LOADED.
* 
*         EXIT   TO *CCGC* TO BEGIN CODE GENERATION.
  
 FTN22    BSSENT
  
*         LINK RPV TABLES.
  
          SX6    0
          SX7    =XRPV22     (X7) = FWA OF (2,2) RNA TABLE
          SA6    =XRPV2N     MARK END-OF-(2,0) RNA TABLE
          SA7    A6+1        STORE LINK TO (2,2) RNA TABLE
  
*         TURN ON REPRIEVE. 
  
 .TEST    IFEQ   TEST,ON     IF TEST MODE 
          SA1    RA.SSW      SENSE SWITCH WORD
          LX1    59-5-6      GET SWITCH 6 
          MI     X1,INI1     IF SWITCH 6 ON 
 .TEST    ENDIF 
  
          RPVON              TURN ON REPRIEVE 
  
*         CHECK FOR IDP BREAK REQUEST.
* 
*         IF THERE ARE ANY IDP KEYWORDS THAT ARE (2,2) SPECIFIC,
*         THEN THIS IS THE PLACE TO LINK IDP TO THEM BY STORING 
*         THE FWA OF THE (2,2) IDP KEYWORD TABLE AT (UKT=LNK).
*         SEE *UKT=LNK* IN DECK *IDP*.
  
 .TEST    IFEQ   TEST,ON     IF TEST MODE 
 INI1     BSS    0
 #OS      IFNE   .OS,2
          SX6    =YUSY=22    (X6) = ADDR OF IDP SYMBOL SEARCH SUBR
          SA6    =XIDP=USY
          CALL   IDPCHK      CHECK FOR IDP REQUEST
          PL     B7,INI2     IF IDP NOT REQUESTED 
 FTN22    BREAK 
 #OS      ENDIF 
 .TEST    ENDIF 
  
*         INITIALIZE OVERLAY. 
  
 INI2     SETFIL FILE==XF.IL,MODE=INIT,FWA==XFW.ILB 
          SETFIL FILE==XF.PB,MODE=INIT,FWA==XFW.PBB 
  
          IFEQ   CP#RM,0,1
          READ   =XF.IL 
          SX6    =XFW.ILB 
          SA6    =XHO$OBO    STORE CCG SCRATCH BUFFER ORIGIN
          SA1    =XMOD       PROGRAM MODE 
          SA2    N.FP 
          SA3    LEVEL2 
          BX7    X2+X3       FPL2 = N.FP .OR. LEVEL2
          SA7    =XCC$SRF    FLAG FP/LCM EXPANSION REQUIRED 
  
          =X6    0
          LX6    LB.PARCP    SET ALL LOCAL BLOCKS EMPTY 
          SETMEM F.LBT,Z.LBT,X6 
  
  
**        INITIALIZE CCG WORKING COPY OF COMPILER OPTIONS.
*         1.  SET = (CO.) AT BEGINNING OF PASS OVER PROGRAM-UNIT. 
*         2.  RESET BY (V=C$) TURPLES.
*         3.  USED TO DETERMINE (2,2) BEHAVIOR. 
*         THIS MUST BE DONE FOR ALL OPTIONS WHICH GENERATE TURPLES. 
  
          SA1    CO.CS
          SA2    CO.DOOT
          BX6    X1          INITIALIZE WORKING QCG COPY OF OPTIONS 
          LX7    X2 
          SA6    WO.CS
          SA7    WO.DOOT
  
*         COMMUNICATE PASS1 TABLE POINTERS TO PASS2.
  
          MACRO  TABSH,PASS1,D1,D2,PASS2
 PA2      MICRO  1,,/PASS2/ 
          IFC    EQ,/PASS2//,1
 PA2      MICRO  1,,/PASS1/ 
          SA1    =XO=PASS1
          SA2    =XL=PASS1
          BX6    X1 
          LX7    X2 
          SA6    =XO$"PA2"
          SA7    =XL$"PA2"
          ENDM
  
*CALL     COMSTAB            TABLES COMMUNICATED TO CCG 
  
 FE       TABSH              FOR PRESERVED TABLES 
  
*         SET ORIGINS OF UNUSED TABLES TO QUARANTEE MONOTONICITY. 
  
          SX6    F.MEM       MEM = F.MEM  */ START OF WORKING STORAGE 
          SB5    =XZ$FE 
          =B6    -1          I=0
  
 INI40    SB6    B6+1        I=I+1
          GT     B6,B5,INI60 IF TABLE VECTOR EXHAUSTED
          SA1    =XL$BLK+B6 
          NZ     X1,INI50    IF THIS TABLE COMMUNICATED 
          SA6    =XO$BLK+B6  ORG(TABI) = MEM
          EQ     INI40
  
 INI50    SA2    =XO$BLK+B6 
          IX6    X1+X2       MEM = ORG(TABI) + LEN(TABI)
          EQ     INI40
  
 INI60    SA1    =XCO.OPT 
          SX7    X1-2 
          MX6    0
          MI     X7,INI70    IF OPT LT 2
          MX6    1
  
 INI70    SA6    =XOPT2 
          LX1    58 
          BX7    X1 
          SA7    =XHO$OPT 
  
*         SET CERTAIN SPECIAL BITS IN SOME CGS*S. 
  
          MACRO  SETWB,ORD,BITS 
          LOCAL  NOSYM
          CLAS=  X1,WB,BITS 
          SA2    =XO$SYM
          SA3    =XS=ORD
          ZR     X3,NOSYM 
          LX4    B1,X3
          IX2    X2+X3
          IX4    X4+X2
          =A2    X4+WB.W
          BX6    X1+X2
          SA6    A2 
 NOSYM    BSS    0
          ENDM
  
 CON      SETWB  LDO
 VD       SETWB  LDO
 ENTRY    SETWB  LOCF 
 VALUE    SETWB  LOCF 
  
*         DEFINE *EXIT.* AS HEADING BLOCK 0 (EXIT PSEUDO-BLOCK).
  
          =X6    0
          SA6    =XCC$CBN 
          SA1    =XS=EXIT 
          CALL   CG$LABD
          =X6    2
          SA6    CC$CBN 
  
          SX6    =XWINOC
          SA6    =XPSTAB     SET WIN JUMP TABLE TO OC$XXX 
          SB2    =XF.SET
          RJ     ROR         RESET OPCODE OF ROUNDABLES 
          EQ     =XCCGC      EXIT TO CCG CONTROLLER...
 COMDEX   SPACE  4,10 
          LIST   -X          FA=SET, COMFROR LISTED IN INIT00 
*CALL     COMFROR            RESET OPCODE OF ROUNDABLES 
          LIST   *
 FILL     MAX    0,101B+F.MEM-* 
          BSS    FILL        INSURE 101B FOR FTN4 OPT CRAP
          SPACE  4,10 
          LIST   D
          ENTRY  B=LWA22
 B=LWA22  END                MARK LWA OF OVERLAY FOR RPV
