*COMDECK COM88J 
          CONTROL NOLIST;    #COM88J# 
        DEF ICFTDBG1  #B<10,1> INTOPS NE 0 #; 
        DEF ICFTDBG2  #B<9,1> INTOPS NE 0 #;
       DEF TRACEBACK  #B<2>OPTION EQ 1#;
       DEF UNBEHAVED  #B<1>OPTION EQ 0#;
       DEF  AUSIZE  #99#;          # NUMBER OF AU ENTRIES -1  # 
       DEF SSDT   # B<36>OPTION NE 0 #; # SINGLE STATEMENT DEP. TREE   #
       DEF AUFUDGE #5#;        #MIN ADDR USAGE TO START ISSUING BRAIS  # LARRY-R
       DEF MINPS  #2#; #MIN PARCEL SAVINGS NEEDED TO ISSUE BRAI        #
       DEF MINTPS #4#; #MIN TOTAL PARCEL SVGS+2 NEEDED TO ISSUE BRAI   #
       DEF  LRC     #LREF#; 
       DEF  FSM #ICFTW1M1#;   # FIRST SEQUENCE MARK                    #
       DEF ICFTPADINT  # 200 #;  #INITIAL VALUE FOR ICFT PAD           #
COMMON COM88J;
BEGIN 
#                                                                      #
#  CANNED CODE ARRAYS --- FORMATS ARE AS FOLLOWS:                      #
#                                                                      #
#   NAME    FIELD   BITS     COMMENTS                                  #
#   ----    -----   ----     --------                                  #
#   QQCL    LASTOP  8-8      T = END OF CANNED INSTRUCTION LIST        #
#   QQOC    OPCODE  9-17     CODE FILE OPCODE FOR INSTRUCTION          #
#   -       IDES    18-20    I-REGISTER DESIGNATOR                     #
#   -       JDES    21-23    J-REGISTER DESIGNATOR                     #
#   -       KDES    24-41    K-FIELD (EITHER CONST OR REG DESIGNATOR)  #
#   QQIJK   IJKDES  18-41    ALL DESIGNATORS TOGETHER                  #
#   CCP     S.T.P.  42-59    SYMTAB PTR   0 = NONE                     #
#                                         1 = USE CURRENT LOCATION CNTR#
#                                                                      #
#   IN THE ARRAY DEFINITION EACH FIELD NAME IS CONCATENATED WITH THE   #
#   NUMBER OF THE CANNED CODE ARRAY.  FOR EXAMPLE, CCP10[0] IS THE     #
#   FIRST S.T.P. OF THE TENTH CANNED CODE ARRAY.                       #
#                                                                      #
#                                                                      #
#  OPCODE VALUES ARE DEFINED IN STATUS LIST  QCFOP.                    #
#                                                                      #
  
#   CANNED CODE ARRAY 1  --  GENERATE TRACE INFO AND LABL FOR PRGM     #
  
    ARRAY CNCD1[0:1] S(1); # TRACE PRESET AND LABL FOR MAIN PROG. E.P. #
        BEGIN 
            ITEM QQCL1 B (0,8,1) = [F,T], 
                 QQOC1 S:QCFOP (0,9,9) = [S"TRC", S"LABL"], 
                 CCP1 I  (0,42,18); 
        END 
  
#   CANNED CODE ARRAY 4  --  SA1 TO PARAMETER LIST LOCATION            #
  
    ARRAY CNCD4[0:0] S(1);
        BEGIN                       # SA1 PARAMETER LIST LOCATION # 
            ITEM QQCL4 B (0,8,1) = [T], 
                 QQOC4 S:QCFOP (0,9,9) = [ S"ABPK" ], 
                 QQIJK4 I (0,18,24) = [ O"10000000"]; 
            ITEM CCP4 I (0,42,18);
        END 
  
#   CANNED CODE ARRAY 5  --  CALL A FORMAL PROC (OR FUNC)              #
  
    ARRAY CNCD5[0:10] S(1); 
        BEGIN 
            ITEM QQCL5 B (0,8,1) = [F,F,F,F,F,F,F,F,F,F,T], 
                 QQOC5 S:QCFOP (0,9,9) = [
                   S"MASK", S"CIRL", S"ABPK", S"BXPB", S"XBPK", 
                   S"CIRL", S"LOR" , S"AXPB", S"RJ"  , S"RJ"  , S"JP"], 
                 QQIJK5 I (0,18,24) = [ 
                   O"30000001", O"37000001", O"20000000", O"12000000",
                   O"40000004", O"43000006", O"63000004", O"62000000",
                   O"00000001", O"00400000", O"10000001" ]; 
            ITEM CCP5 I (0,42,18) = [0,0,0,0,1,0,0,0,1,1];
        END 
  
#   CANNED CODE ARRAY 6  --  GENERATE RJ FOR PROC CALL                 #
  
    ARRAY CNCD6[0:0] S(1);
        BEGIN 
            ITEM QQCL6 B (0,8,1) = [T], 
                 QQOC6 S:QCFOP (0,9,9) = [ S"RJ"];
            ITEM CCP6 I (0,42,18);
        END 
  
#   CANNED CODE ARRAY 8  --  GENERATE TERM AT END OF CODE FILE         #
  
    ARRAY CNCD8[0:0] S(1);
        BEGIN 
            ITEM QQCL8 B (0,8,1) = [T], 
                 QQOC8 S:QCFOP (0,9,9) = [ S"TERM"];
        END 
  
#   CANNED CODE ARRAY 9  --  GENERATE TRACEBACK INFO AT START OF PROC  #
  
    ARRAY CNCD9[0:1] S(1);
        BEGIN 
            ITEM QQCL9 B (0,8,1) = [F,T], 
                 QQOC9 S:QCFOP (0,9,9) = [ S"LABL", S"PRST" ],
                 CCP9  I (0,42,18); 
        END 
  
#   CANNED CODE ARRAY 10  --  GENERATE RJ FOR PROC CALL WITH TRACEBACK #
  
    ARRAY CNCD10[0:0] S(1); 
        BEGIN 
            ITEM QQCL10 B (0,8,1) = [T],
                 QQOC10 S:QCFOP (0,9,9) = [ S"TRC" ], 
                 CCP10  I (0,42,18);
        END 
  
#   CANNED CODE ARRAY 11  --  GENERATE CODE FOR ALTERNATE ENTRY POINT  #
  
    ARRAY CNCD11 [0:4] S(1);
        BEGIN 
        ITEM QQCL11       B( 0, 8, 1) = [ 
                  F,F,F,F,T ];
        ITEM QQOC11 S:QCFOP( 0, 9, 9) = [ 
                  S"ABPK", S"BXMT", S"ABPK", S"RJ", S"RJ" ];
        ITEM QQIJK11      I( 0,18,24) = [ 
                  O"20000000", O"62000000", O"60000000", O"00000001", 
                  O"00400000" ];
        ITEM CCP11        I( 0,42,18) = [ 
                  0,0,0,1,1 ];
        END 
  
        ARRAY [0:5] S(1); 
              ITEM COPC S:QICFOP (0,0,60)           #OPCD FOR CONS LOAD#
                   = [ S"LOAD", 
                       S"MASK", 
                       S"LDSC", 
                       S"MSKC", 
                       S"MSKL", 
                       S"LOAD"];
        ARRAY AU[0:AUSIZE]  S(1);  # ADDRESSES USED TABLE # 
            ITEM
                PSAVE  I  (0,0,10) ,   # PARCEL SAVINGS                #
                IDRV   B  (0,10,1) ,   # ISSUE DRV FLAG                #
                AUISSU B  (0,11,1) ,   # SHOWS IF BRAI ISSUED FOR SINK # LARRY-R
                QSAVE  U  (0,12,8) ,   # SAVINGS IF BRAI ALREADY ISSUED# LARRY-R
                SSTI   B  (0,20,1) ,   # SAME SYMBOL TABLE INDEX       #
                AUIL   B  (0,20,1) ,   # SHOW IF USED IN LOOP          # LARRY-R
                ACTP   U  (0,21,3) ,   # ACCESS TYPE CODE              # LARRY-R
                AUOFF  I  (0,24,18),   # ADDRESS OFFSET   # 
                AUADD  I  (0,42,18);   # SYMBOL TABLE INDEX OF ENTITY # 
        ITEM LASTAU I=-1 ;            # INDEX OF LAST AU ENTRY USED # 
    ARRAY CONSTEP [1:6] S(1);  # S.T. INDEX OF CONSTANT IND. VAR. STEPS#
        ITEM CONCON  I (0,0,60);
    ITEM NCON I = 0; # NUMBER OF CONCON ENTRIES # 
    # DEPENDENCY TREE BUILDER ITEMS    #
        ITEM LSM I=0;              # LAST SEQUENCE MARK ICF INDEX     # 
        ITEM NBI I=0;    # VALUE OF BI TO USE TO BEGIN NEXT SEQUENCE   #
        ITEM RPFN B;     # SET T BY PSTOS IF OPCODE IS A REPL INTO PFUN#
        ITEM LBS    I=0;       # LAST BADLYBEHAVED STORE INDEX        # 
        ITEM LPS    I=0;       # LAST PARAMETER STORE INDEX           # 
        ITEM LGS I=0;              # LAST GLOBAL STORE ICF INDEX      # 
        ITEM GUSES  I=0;       # GLOBAL USES LIST HEAD LINK           # 
        ITEM PUSES  I=0;       # PARAMETER USES LIST HEAD LINK        # 
        ITEM GSTORE I=0;       # GLOBAL STORES LIST HEAD LINK         # 
        ITEM LPLO I=0;       # LABEL PARAMETER LIST OFFSET            # 
        ITEM LPRC I=0;       # LABEL PARAMETER RETURN CODE            # 
        ITEM TIALP B=FALSE;  # THERE IS A LABEL PARAMETER             # 
        ITEM FULL B=FALSE;         # TRUE, WHEN ICFT IS FULL          # 
        ITEM PTRM B = FALSE; # TRUE WHEN "PTRM" ENTRY ENCOUNTERED     # 
        ITEM OPTERM B = FALSE; # TRUE IF SEQUENCE TERMINATING OPCODE  # 
           # CAUSED TERMINATION OF LAST SEQUENCE                      # 
        ITEM ACSTP I=0;            # ACCESS TYPE CODE                 # 
        ITEM NSM I=0;              # NEXT SEQUENCE MARK ICFT INDEX    # 
        ITEM LRL I=0;              # LAST REFERENCED LABEL ICF INDEX   #
        ITEM LSI I=-1;             # LAST SIGNIFICANT INST ICFT INDEX  #
        ITEM INVIL I=-1;           # INVI LIST HEAD LINK              # 
        ITEM BINVS I=-1;           # BAD INVS LIST HEAD LINK          # 
        ITEM GINVS I=-1;           # GOOD INVS LIST HEAD LINK         # 
        ITEM LOPLAB I=0;           # LOOP START LABEL ICFT INDEX      # 
        ITEM LABPRD I=0;           # LOPLAB PREDECESSOR ICFT INDEX    # 
        ITEM CLASS S:QCLAS; 
        ITEM OVRLAY B=FALSE;
        ITEM TIAF I=0;  # FUNCTION ENTRY POINT S.T. INDEX # 
        ITEM LABRET I=0;           # RETURN LABEL S.T. INDEX          # 
        ITEM EPILAB I=0;           # EPILOG GENERATED LABEL S.T. INDEX# 
        ITEM PLO I=0;              # PARAMETER LIST OFFSET            # 
        ITEM VO B=FALSE;           # TRUE IF VALUE OUTPUT PARAMETERS  # 
        ITEM TEMPA1 I=0;           # TEMP THAT CONTAINS A1 S.T. INDEX # 
        ITEM FVTEMP I=0;           # FUNCTION VALUE TEMP S.T. INDEX   # 
        ITEM RETEMP I=0;           # RETURN BRANCH TEMP S.T. INDEX    # 
        ITEM MARKCTR I=0; # COUNT OF BRANCHES AND REF. LABELS IN SEQ.  #
        ITEM AVAIL I=0;   # LOAD AVAILABILITY BIT VECTOR               #
        ITEM LASTODDSTUFF I=0;     #MARKER FOR USAGE OF ODD TYPES      # LCMISC 
          ITEM ARLIST = 0 ; #START OF ACCESSED ARRAYS LIST#              SOPT 
          ITEM LAS = 0 ;    #LAST ARRAY STORE#                           SOPT 
          ITEM MOPIT U= 0 ;     #FIRST CONTINUOUS AVAILABLE SEQUENCE#    SOPT 
ITEM ICFTPAD = ICFTPADINT ;   # NUMBER OF ICFT ENTRIES LEFT FOR INSERT #
        ITEM PREOPJP   B=F;        # TRUE IF PREVIOUS ICF INST WAS JUMP#
        ITEM DEADCODE  B=F;        # TRUE FROM UNCONDIT JP TO NEXT LABL#
        ITEM XNOJUMP   B=F;        # TRUE=CHECK IF JUMP IS TO NEXT INST#
        ITEM XLOAD     B=F;        # TRUE IF J IS EXPLICIT LOAD OF OPND#
        ITEM XOFFS     I=0;        #PTR TO OFFS OF LOAD INSTRUCTION    #
        ITEM XSUBS     I=0;        #PTR TO SUBS OF LOAD INSTRUCTION    #
        ITEM LOOPL  I=0;       # LOOP LIST HEAD LINK                  # 
        ITEM ATEMP  I=0;       # AVAILABLE TEMP LIST HEAD LINK        # 
        ITEM BTEMP  I=0;       # BUSY TEMP LIST HEAD LINK             # 
        ITEM FREEL  I=0;       # FREE LIST ITEMS HEAD LINK            # 
        ITEM SUCTI  I=0;        #  LAST USED SUCTI ENTRY               #
        ITEM NICFB  I=0;       # NUMBER OF WORDS IN ICFB              # 
        ITEM ICFBI  I=0;       # LAST ICFB WORD USED                  # 
         ITEM LASTOPTERM B;      # OPTERM  AT BEGINING OF THIS SEQ   #
END # COM88J #
          CONTROL LIST;      #COM88J# 
