*DECK             ICFGEN
USETEXT   TSOURCE 
USETEXT   TCOM37Q 
USETEXT   TCOM39Q 
USETEXT   TCOM78Q 
USETEXT   TC7DECS 
PROC ICFGEN(P1,P2,P3);
                                        #ABSOLUTE ICF PTRS. BOOKKEEPS  #
                                        # THE ICF ARRAY AND POINTER.   #
BEGIN 
*CALL COMEX 
    ITEM P1 S:QICFOP,  #OPCD# 
         P2 I,         #OPN1# 
         P3 I;         #OPN2# 
    ITEM I1,
         I2;
    ITEM I3;
    $BEGIN                                                               JANDRE 
    BASED ARRAY BA[0:0]S(1);
    ITEM BB I (0,0,30); 
    XREF PROC FPICFE; 
    $END                                                                 JANDRE 
    XREF PROC PTICF;
    XDEF PROC ICINIT; 
    XDEF PROC ICFLSH; 
    $BEGIN                                                               JANDRE 
    P<BA>=LOC(ICFGEN);
    $END                                                                 JANDRE 
    I1=P2; I2=P3; 
    ICFPTR=ICFPTR-1;
ICF:  
    IF ICIX GQ ICCP THEN
        BEGIN 
        PTICF(IC,ICCP); 
        ICIX=0; 
        END 
    ICWD[ICIX]=0; 
    OPCD[ICIX]=P1;
    OPN1[ICIX]=I1;
    OPN2[ICIX]=I2;
    $BEGIN
    I3=BB[0];                                                            JANDRE 
    FPICFE(ICFPTR,ICIX,I3); 
    $END
    ICIX=ICIX+1;
    RETURN; 
ENTRY 
PROC ICFGNR(P1,P2,P3); #RELATIVE ICF PTRS#
    $BEGIN                                                               JANDRE 
    P<BA>=LOC(ICFGNR);
    $END                                                                 JANDRE 
    I1=P2; I2=P3; 
    ICFPTR=ICFPTR-1;
    IF I1 LS 0 THEN I1=ICFPTR-I1; 
    IF I2 LS 0 THEN I2=ICFPTR-I2; 
    GOTO ICF; 
CONTROL EJECT;
PROC ICINIT; #INITIALIZES PTRS# 
    BEGIN 
    ICIX=0; 
    ICFPTR=1; 
    END 
CONTROL EJECT;
PROC ICFLSH; #FLUSHES ICF BUFFER# 
    BEGIN 
          IF ICIX GR 0 THEN 
            PTICF ( IC , ICCP );
    ICIX=0; 
    END 
END 
TERM
