*COMDECK  GPOCOM
 CLCM     TITLE  CLCM - COROUTINE LOOP CONTROL MACRO
**        CLCM - COROUTINE LOOP CONTROL MACRO 
* 
*         CLCM   ROUTINE,(BSW-FLAGS)
* 
*         CALL *ROUTINE* FROM *PCC* IF *BSW-FLAGS* " 0 , FOR EACH BLOCK 
*         IN THE REGION ( *SCR* ) BEING PROCESSED.
*         IF *FIELDS* IS ABSENT, THEN CALL *ROUTINE* UNCONDITIONALLY. 
  
 CLCM     MACRO  RTN,FIELDS 
          LOCAL  CCW
          SX7    =X_RTN 
  
          IFC    EQ,/FIELDS//,2 
          SX5    0
          ELSE   4
          SA5    CCW
          USE    CLCM 
 CCW      BFMW   BS,(FIELDS)
          USE    *
  
          RJ     =XPCC
          ENDM
 FBVA     SPACE  2
**        FBVA - FORM BLOCK BIT VECTOR ADDRESS
* 
*         ENTRY  (BN) = REGISTER WITH *BI* INDEX OF BLOCK 
* 
*         EXIT   (X7) = BVA = O.BVT + BVI[BIT(BN)]
*                (X4) = BIT(BN) 
*                (B2) = VL = BVL + 1
  
 FBVA     MACRO  BN 
          R=     B3,BN
          SA1    O.BVT
          SA2    BVL
          SA3    O.BIT
          SB2    X2+B1       VL = BVL + 1 
          SA4    X3+B3       BIT(BN)
          LX4    -BI.BVIP 
          IX7    X1+X4       BVA = O.BVT + BVI[BIT(BN)] 
          LX4    BI.BVIP
          ENDM
 PRNTABV  SPACE  2
**        PRNTABV - PRINT A BIT VECTOR
* 
*         PRNTABV  LAB,(LIST OF VECTOR ADDRESS"S) 
  
 PRNTABV  MACRO  LAB,BVA
          IF     DEF,/DEBUG/LAB,3 
          IRP    BVA
          DCALL  PRNTABV,(=5L BVA ,[_BVA_]) 
          IRP 
          ENDM
 MICROS   SPACE  3
*         SOME POPULAR REGISTER ASSIGNMENTS 
  
 TB       MICRO  1,,/B7/     O.SEQ + 3
 RN       MICRO  1,,/-X0*/   R-NUMBER EXTRACTOR MASK
 EXIT     SPACE  3,14 
*         E. - NODE NUMBER TO *BIT* INDEX TRANSITION TABLE FORMAT 
  
          DESCRIBE E.,60
 SCR      DEFINE 1           IN *SCR* 
 JP       DEFINE 1           SUCC REACHED BY A *JP* EDGE
 ALLP     DEFINE 1           ALL PRED OF EXIT NODE IN *SCR* 
 NPRED    DEFINE 9           N.PRED IN SCR OF SUCCESSOR NODE
 PRED     DEFINE 15          *BI* OF FIRST PRED IN SCR TO REACH SUCC
 LINK     DEFINE 18          LINK TO NEXT ON SUCC LIST
 BI       DEFINE 15          *BIT* INDEX OF NODE NUMBER I 
 PS       SPACE  3,14 
**        PS. - POST STORE INFO FORMAT ( *PSI* )
* 
*         FIRST WORD OF A *PSI* ENTRY IS THE NUMBER OF POST STORES. 
*         THE REMAINNG WORDS SPECIFY THE VARIABLES TO BE STORED OUT AND 
*         THE REGISTERS THAT THEY ARE IN. 
  
          DESCRIBE PS.,60 
 REG      DEFINE 6           REGISTER NUMBER THAT VAR IS IN ( *SO* ORDER
 UDI      DEFINE 18          UDI INDEX OF VARIABLE
 CAIH     DEFINE 36          BASE/BIAS OF SYMBOL
 IIT      EJECT 
**        IIT - INCREMENT INFO TABLE
* 
*         *IIT* CONSISTS OF 3 LISTS - 
* 
*         A) THE LIST OF *RD* INCREMENT VALUES
*                HBP OF THE LINK WORD OF THE *RD* POINTS TO *IIT* 
*         (IIT) = 12/P(TYPE),48/VAL 
*                TYPE        VALUE
*                0           S    RI,VAL
*                1           LD   RI,VAL  , VAL = 12/IN[R1],36/CAIH[R2] 
*                2           LD   RI,VAL , AND AN   XMTC
*                3           TLD  RI,VAL
*                4           TLD  RI,VAL  , AND AN XMTC 
* 
*         B) THE INTEGER POLYNOMIAL INFORMATION LIST, WHICH CONSISTS OF 
*         A POLYNOMIAL INFORMATION WORD ( *PI* ), FOLLOWED BY THE 
*         INCREMENT FORMULA AND THE POLYNOMIAL FORMULA.  A FORMULA
*         CONSISTS OF TWO HEADER WORDS ( *IA* AND *IB* ), FOLLOWED
*         BY INSTRUCTIONS ( 4 WORDS/INST ) WHICH DEFINE IT. 
  
          DESCRIBE PI.,60 
 MIP      DEFINE 1           MARKED *IP*
          DEFINE 5
 CN       DEFINE 18          CLASS NUMBER OF SET OF SIMILAR *IP"S*
 CA       DEFINE 18          CA OF IP THIS *IP* IS SIMILAR TO 
 LF       DEFINE 18          LINK FOWARD ( REL TO *O.IIT* ) 
  
          DESCRIBE IA.,60 
 NWD      DEFINE 12          P(N.WDS IN FORMULA) , INCLUDES HEADER WDS
          DEFINE 12 
 CA       DEFINE 18          CA OF *IP* 
 UDI      DEFINE 18          *UDI* INDEX OF INTEGER VARIABLE *LD* 
  
          DESCRIBE IB.,60 
 NLD      DEFINE 12          P(N.LD"S IN FORMULA) 
          DEFINE 30 
 ILD      DEFINE 18          *RI* OF *LD* OF *RD* VAR IN EXPRESSION 
  
*         C) A LIST OF POLYNOMIAL INCREMENT VALUES AT THE POINT 
*         OF A *RD*.
*         THIS LIST CONSISTS OF 2 WORDS / ENTRY, TERMINATED BY A 0 WORD 
* 
*         WORD 1 = 60/CA OF *TST* THAT IS BEGIN INCREMENTED 
*         WORD 2 = 12/TYPE,48/VAL OF INCREMENT , AS IN LIST A . 
* 
*         THE FORMAT OF THE LINK WORD OF THE *RD* IS
*                12/P(N.PI),12/,18/STC,18/INDEX TO LIST IN *IIT*
 COMMON   TITLE  GPO/GRA COMMON VARIABLES 
*         THE FOLLOWING LOCATIONS ARE SHARED BETWEEN *GPO* AND *GRA*
  
          USE    /GPOGRA/ 
 O.UDT    BSS    1           FWA OF *UDI* IN LOW CORE 
 L.UDT    BSS    1           LENGTH 
 O.MVL    BSS    1           FWA OF MARKED VAR LIST ( IN *UDT* )
  
*         ADDRESS"S OF SPECIAL BIT VECTORS
  
 DVA      BSS    1           REGION *DEF* VECTOR
 LUV      BSS    1           LOOP USEAGE VECTOR 
 UVA      BSS    1           REGION *USE* VECTOR
 LXA      BSS    1           REGION *LIVE EXIT* VECTOR
  
 LEA      BSS    1           REGION *LIVE ENTRY* VECTOR 
 MDA      BSS    1           *MOVABLE DEFS* 
 SVA      BSS    1           SCRATCH VECTOR 
 N.SBV    EQU    *-DVA       N. SPECIAL BIT VECTORS 
*                        WSC
 M.PL     CON    100B        MAX *PIT* LENGTH 
  
 EMF      CON    2           FP/LVL EXPANSION MODE ( *CBB* ARGUMENT ) 
 ITL      BSS    1           INITIAL *TET* LENGTH 
 MRA      VFD    36/,24/-0   MACHINE REGISTERS AVAILABLE ( 8/X,8/A,8/B )
 LGL      BSS    1           LP GEN LBL, LL=LP LBL 42/GEN LBL-LL,18/LL
  
*                           ?FWA OF CLEARED CELLS 
 N.HB     BSS    1           N. HOLDING BLOCKS IN LOOP ( =0 IF INNERMOST
 XRF      BSS    1           "0 IF LOOP CONTAINS EXTERNAL REFS
  
 LCV      BSS    1           18/UDI,36/CAIH OF LOOP CONTROL VAR 
          BSS    1           REGNO THAT IT IS IN
 LUL      BSS    1           LOOP UPPER LIMIT IN *IIT A* FORMAT 
          BSS    1           REGNO THAT IT IS IN
 LIH      BSS    2           IH OF LOOP LABEL / *R2* WORD OF *LAB*
 N.LJ     BSS    1           N. JPX"S THAT REF LOOP LABEL 
 LTT      BSS    1           LOOP TEST TYPE, =0 IF NO TEST REPLACEMENT
*                            =1 , TEST IS  IF( LCV @ LUL ) GO TO LIH
*                        FXI
 O.ENL    BSS    1           FWA OF EXIT NODE LIST IN *BTT* 
 N.ENL    BSS    1           N. EXIT NODES
 EPSI     BSS    1           N. EXIT NODES THAT ARE FALL THROUGH
*                        CBB
 MAXW     BSS    1           MAX *REG WIDTH* OF REGION
 N.EBB    BSS    1           N. EXTENDED BASIC BLOCKS IN REGION 
  
 PL       BSS    1           *PIT* LENGTH AT START OF BLOCK 
 STP      BSS    1           "0 IF SOME *IP* IS A FUNCTION OF THE*LCV*
 N.CLC    EQU    *-N.HB     'END OF ZEROED CELLS REGION 
          USE    0
