*COMDECK  CCGDBGM 
          CTEXT  CCGDBGM - CCG DEBUG MACROS 
  
**        PRINT - PRINT THE CONTENTS OF A LIST OF LOCATIONS.
* 
* 
*         PRINT  LAB,FMT,(LIST) 
* 
*         LAB - STATEMENT PRINTED IF *LAB* MENTIONED ON A *TRACER* LIST 
*                IF BLANK, THEN UNCONDITIONALLY PRINT.
*         FMT - PARENTHESIED FORTRAN FORMAT 
*         LIST - PARENTHESIZED LIST OF NAMES AND OR REGISTERS TO BE 
*                PRINTED. 
* 
*         SAMPLE CALL --
*         PRINT XXX,(* SIP,IIP =*,2I6),(SIP,IIP)   WILL PRODUCE - 
*         XXX SIP,IIP = NNNNNN NNNNNN 
* 
*         THIS MACRO IS FOR INTERNAL DEBUGGING ONLY ( TEST MODE ).
  
  
          PURGMAC   PRINT 
  
 PRINT    MACRO  LAB,FMT,LIST,NS
          LOCAL  APL,LFMT 
 .P       IFC    NE,/LAB//,2
 .P       IF     -DEF,)LAB,1
 .P       IF     DEF,/DEBUG/LAB 
          USE    DEBUG
 APL      CON    =XOUTPUT#
          CON    LFMT 
          IRP    LIST 
          IF     REG,LIST,4 
 L        MICRO  1,1,/LIST/ 
 N        MICRO  2,1,/LIST/ 
          VFD    12/2,30/1S6,18/=XSV="L"+"N"
          SKIP   1
          VFD    12/2,30/1S6,18/LIST
          IRP 
 LFMT     CON    0
          DIS    ,$(* LAB *,FMT)$ 
          USE    *
          IFC    NE,/NS/NOSAVE/,1 
          RJ     =XSVR= 
          SA1    APL
          RJ     =XOUTCI. 
          IFC    NE,/NS/NOSAVE/,1 
          RJ     =XRSR= 
 .P       ENDIF 
 PRINT    ENDM
 TRACER   SPACE  3,14 
**        TRACER - DEFINE ROUTINES/PHASES TO BE TRACED. 
* 
*         TRACER (RTN1,...,RTNI)
  
 TRACER   MACRO  P
          QUAL   DEBUG
          IRP    P
 P        EQU    1
          IRP 
          QUAL   *
          ENDM
 TRACE    SPACE  3
**        TRACE - CONDITIONALLY SNAP CONTENTS OF SPECIFIED TABLE. 
*         CALL -
*         TRACE  LAB,TBL,BLK
* 
*         LAB - SNAP LABEL THAT IS TO BE SPECIFIED ON *TRACER* LIST 
*                TO ACTIVATE THE PRINTOUT.
*         TBL -  IF NOT = RLIST, THEN NAME OF TABLE ( FWA,LEN = O.TBL,
*                L.TBL ) TO BE PRINTED IN OCTAL FORMAT. 
*                IF = RLIST , THEN CALL *DMPRLST* TO PRINT THE TABLE. 
*                TABLE PRINTED OUT IS *TXT* IF *BLK* IS NOT SPECIFIED,
*                ELSE *BLK*.
  
 TRACE    MACRO  RTN,TBL,BLK
 T        IF     DEF,/DEBUG/RTN 
          IRP    TBL
 TB       IFC    NE,/TBL/RLIST/,2 
          SNAPT  TBL,TBL-RTN
 TB       ELSE   1
 BLK      SNAPRL RTN
          IRP 
 T        ENDIF 
          ENDM
 SNAPRL   SPACE  3,14 
**        SNAPRL - INTERPRETIVE DUMP OF AN *IL* INSTRUCTION SEQUENCE
  
          PURGMAC  SNAPRL 
          MACRO  SNAPRL,BLK,L,LL,UL,INC 
          LOCAL  X,Y
          RJ     =XSVR= 
          SA1    X
          IFC    EQ,//BLK/,2
          SA2    =XO$TXT
          ELSE   1
          SA2    =XO$BLK
          BX6    X2 
          SA6    X+1
          RJ     =XDMPRLST
          RJ     =XRSR= 
          USE    DEBUG
 X        CON    Y
          IFC    EQ,//BLK/,2
          CON    0,=XL$TXT,0
          ELSE   1
          CON    0,=XL$BLK,0
 Y        SNAPCTRS (L BLK),LL,UL,INC
          USE    *
 SNAPRL   ENDM
  
 SNAPCTRS MACRO  L,LL,UL,INC
          CON    0,10H L
          CON    LL 1 
          CON    UL 200 
          CON    INC 1
 SNAPCTRS ENDM
 DCALL    SPACE  3,24 
**        DCALL - CALL TO DEBUGGING ROUTINE CODED IN FTN OR SYMPL.
* 
*         DCALL ROUTINE,(PARAMLIST) 
* 
*         [X] IS THE CONTENTS OF X. 
*         CONSTANTS MUST BE WRITTEN AS =X  ( =3 ).
  
 DCALL    MACRO  RTN,P
          LOCAL  APL
          RJ     =XSVR= 
          USE    DEBUG
 APL      BSS    0
          NOREF  .N 
 .N       SET    0
* 
          IRP    P
 .1       MICRO  1,1,/P/
          IFC    EQ,/".1"/[/
 .1       MICRO  2,,]_P_] 
          USE    *
          SA2    =X".1" 
          SX6    X2+
          SA6    APL+.N 
          USE    DEBUG
          BSS    1
          ELSE   4
          IFC    EQ,/".1"/=/,2
          VFD    42/,18/P 
          SKIP   1
          VFD    42/,18/=X_P
 .N       SET    .N+1 
          IRP 
* 
          DATA   0
          USE    *
* 
          SA1    APL
          RJ     =X_RTN 
          RJ     =XRSR= 
 DCALL    ENDM
 REGSNAP  SPACE  3,14 
**        REGSNAP - SNAP REGISTERS AT ENTRY POINTS. 
* 
*         ACTIVATES REGISTER SNAP AT EACH ENTRY POINT DEFINED WITH THE
*         -ENTRY.- MACRO AND NAMED ON THE -REGSNAP- CALL CARD.
*         THE SNAP COUNT IS LIMITED TO 100D PER ENTRY POINT BY THE
*         -REGS- DEBUG MACRO. 
* 
* 
*         REGSNAP   (NAME1,NAME2,...,NAMEN) 
* 
*         ENTRY  *NAMEK* = NAME OF ENTRY POINT TO BE SNAPPED
* 
*         EXIT   SNAP ACTIVATED 
* 
*         USES   NONE 
* 
*         CALLS  NONE 
  
  
          PURGMAC   REGSNAP 
  
 REGSNAP  MACRO  P
          IRP    P
 )P       =      1           DEFINE SYMBOL
          IRP 
 REGSNAP  ENDM
 SNAPT    SPACE  3,12 
**        SNAPT - SNAP A TABLE WITH POINTERS O.TBL AND L.TBL. 
  
          PURGMAC   SNAPT 
  
 SNAPT    MACRO  TBL,BCD
 BCD      SNAP   *O$TBL,,*L$TBL,NOREGS
 SNAPT    ENDM
  
          ENDX
