*COMDECK COMAIDP                                                        000150
 COMAIDP  CTEXT  COMAIDP - INTERACTIVE AND BATCH DEBUG PACKAGE MACROS.  000160
 COMAIDP  SPACE  4,8                                                    000170
          IF     -DEF,QUAL$,1                                           000180
          QUAL   COMAIDP                                                000190
          BASE   D                                                      000200
 COMAIDP  SPACE  4,8                                                    000210
**        COMAIDP - INTERACTIVE AND BATCH DEBUG PACKAGE MACROS.         000220
*                                                                       000230
*                                                                       000240
*                CONTAINS THE MACROS USED TO ACCESS THE ROUTINES IN     000250
*         *COMCIDP*--                                                   000260
*                                                                       000270
* NAME    BREAK  LL,UL,INC   TO PLACE A BREAKPOINT                      000280
* NAME    REG                TO PROVIDE A SNAPSHOT OF ALL REGISTERS     000290
* NAME    REG    (X1,X2,A4)  TO PROVIDE A SNAPSHOT OF SELECTED REGISTERS000300
* NAME    SNAP   FWA,LWA,LEN TO PROVIDE A SNAPSHOT OF CENTRAL MEMORY    000310
 BREAK    SPACE  4,8                                                    000320
**        BREAK - PLACE A BREAKPOINT.                                   000330
*                                                                       000340
*                                                                       000350
*                THIS MACRO DOES A RETURN JUMP TO THE INTERACTIVE       000360
*         DEBUG PACKAGE *IDP*.                                          000370
*                                                                       000380
* NAME    BREAK  LL,UL,INC                                              000390
*                                                                       000400
*         ENTRY  NAME = DISPLAY CODE (DPC) MESSAGE TO BE PRINTED WITH   000410
*                         EACH SNAP. (NR CHARS.LE.8)                    000420
*                LL   = LOWER LIMIT (DEFAULT=1)                         000430
*                UL   = UPPER LIMIT (DEFAULT=100)                       000440
*                NUSE =  USE BLOCK FLAG. IF *NUSE* IS NULL, THE PARA-   000450
*                          METER LIST EXISTS IN *USE DEBUG*, ELSE IS    000460
*                          ASSEMBLED AFTER *RJ*                         000470
*                UF   = A STRING OF USER SNAP FLAGS PROCESSED BY
*                       INSTALLER SUPPLIED USF= MACRO IF DESIRED. 
*                       USF= SHOULD GENERATE 1 WORD.
*                                                                       000480
*         EXIT   NONE                                                   000490
*                                                                       000500
*         USES   NONE                                                   000510
*                                                                       000520
*         CALLS  IDP=                                                   000530
                                                                        000540
                                                                        000550
          PURGMAC BREAK                                                 000560
                                                                        000570
          MACRO  BREAK,NAME,LL,UL,INC,NUSE,UF 
          LOCAL  '?ID#001,'?ID#004
          LOCAL  RTN                                                    000590
          LOCAL  APL                                                    000600
*                                                                       000610
 +        RJ     =XIDP=                                                 000620
 -        VFD    30/APL                                                 000630
*                                                                       000640
 #NUSE    IFC    EQ,/NUSE//                                             000650
          USE    DEBUG                                                  000660
*                                                                       000670
 #NUSE    ELSE                                                          000680
          EQ     RTN                                                    000690
 #NUSE    ENDIF                                                         000700
 APL      BSS    0                                                      000710
          FRK=   (NAME),LL,UL,INC                                       000720
* 
 '?ID#001 BSS 0 
          USF=   (UF) 
* 
 '?ID#002 IFNE *P,60D 
          IFNE *P,0,2 
          POS 0 
 '?ID#003 SKIP
* 
 '?ID#002 ENDIF 
 '?ID#004 BSS 0 
* 
          IFNE   '?ID#004-'?ID#001,1,2
 '?ID#003 ENDIF 
 P        ERR    *USF=* DID NOT GENERATE EXACTLY 60D BITS. "SEQUENCE" 
* 
          CON    0
*                                                                       000730
 #NUSE    IFC    EQ,/NUSE//                                             000740
          USE    *                                                      000750
*                                                                       000760
 #NUSE    ELSE                                                          000770
 RTN      BSS    0                                                      000780
 #NUSE    ENDIF                                                         000790
*                                                                       000800
 BREAK    ENDM                                                          000810
 FRK=     SPACE  4,8                                                    000820
**        FRK= - GENERATE FREQUENCY PARAMETER LIST.                     000830
*                                                                       000840
*                                                                       000850
*         FRK=   (NAME),LL,UL,INC                                       000860
*                                                                       000870
*         ENTRY  NAME =  DISPLAY CODE (DPC) MESSAGE TO BE PRINTED WITH  000880
*                          EACH SNAP. (NR CHARS.LE.8)                   000890
*                LL   =  LOWER LIMIT (DEFAULT=1)                        000900
*                UL   =  UPPER LIMIT (DEFAULT=100)                      000910
*                INC  =  INCREMENT (DEFAULT=1)                          000920
*                          LL, UL, AND INC ARE THE SNAP FREQUENCY PAR-  000930
*                          AMETERS AND ARE RELATED AS FOLLOWS--  THE 1ST000940
*                          SNAP PRINTED WILL OCCUR THE LLTH TIME THIS   000950
*                          SNAP IS EXECUTED. THE 2ND SNAP PRINTED WILL  000960
*                          OCCUR THE (LL+INC)TH TIME THIS SNAP IS EXEC- 000970
*                          UTED, AND SO ON. THE LAST SNAP PRINTED WILL  000980
*                          OCCUR THE ULTH TIME THIS SNAP IS EXECUTED.   000990
*                                                                       001000
*         EXIT   NONE                                                   001010
*                                                                       001020
*         USES   NONE                                                   001030
*                                                                       001040
*         CALLS  NONE                                                   001050
                                                                        001060
                                                                        001070
          PURGMAC FRK=                                                  001080
                                                                        001090
 FRK=     MACRO  NAME,LL,UL,INC                                         001100
          CON    LL  1                                                  001110
          CON    UL  100                                                001120
          CON    INC 1                                                  001130
 .1       IFC    EQ,/NAME//                                             001140
          CON    0                                                      001150
 .1       ELSE                                                          001160
          CON    10H_NAME                                               001170
 .1       ENDIF                                                         001180
          CON    0                                                      001190
*                            USED BY *FRK=/TSNAP* TO KEEP SNAP COUNT    001200
 FRK=     ENDM                                                          001210
 REG      SPACE  4,8                                                    001220
**        REG - REGISTER SNAPSHOT.                                      001230
*                                                                       001240
*                                                                       001250
* NAME    REG    RG,LL,UL,INC,NUSE,UF                                   001260
*                                                                       001270
*         REG                                                           001280
*         REG    (X1,B3,A4)                                             001290
*         REG    NOREG                                                  001300
*                                                                       001310
*         ENTRY  NAME =  DISPLAY CODE (DPC) MESSAGE TO BE PRINTED WITH  001320
*                          EACH SNAP. (NR CHARS.LE.8)                   001330
*                     =  NULL IF NO SNAP HEADER                         001340
*                RG   =  NULL IF ALL REGISTERS ARE TO BE DUMPED         001350
*                     =  A LIST OF THE REGISTERS (ENCLOSED IN PARENS)   001360
*                          DESIRED TO BE DUMPED                         001370
*                     =  NON-REGISTER/NON-NULL IF NO REGISTERS TO BE    001380
*                          DUMPED                                       001390
*                LL   =  LOWER LIMIT (DEFAULT=1)                        001400
*                UL   =  UPPER LIMIT (DEFAULT=100)                      001410
*                NUSE =  USE BLOCK FLAG. IF *NUSE* IS NULL, THE PARA-   001420
*                          METER LIST EXISTS IN *USE DEBUG*, ELSE IS    001430
*                          ASSEMBLED AFTER *RJ*                         001440
*                UF   =  A STRING OF USER SNAP FLAGS PROCESSED BY       001450
*                        INSTALLER SUPPLIED USF= MACRO IF DESIRED.      001460
*                        USF= SHOULD GENERATE 1 WORD.                   001470
*                                                                       001480
*         EXIT   NONE                                                   001490
*                                                                       001500
*         USES   NONE                                                   001510
*                                                                       001520
*         CALLS  FRK=,REG=,RGR=,USF=(IF DEF)                            001530
                                                                        001540
                                                                        001550
          PURGMAC REG                                                   001560
                                                                        001570
          MACRO  REG,NAME,RG,LL,UL,INC,NUSE,UF                          001580
          LOCAL  '?ID#001,'?ID#004                                      001590
          LOCAL  RTN                                                    001600
          LOCAL  APL                                                    001610
*                                                                       001620
 +        RJ     =XREG=                                                 001630
 -        VFD    30/APL                                                 001640
*                                                                       001650
 #NUSE    IFC    EQ,/NUSE//                                             001660
          USE    DEBUG                                                  001670
*                                                                       001680
 #NUSE    ELSE                                                          001690
          EQ     RTN                                                    001700
 #NUSE    ENDIF                                                         001710
 APL      BSS    0                                                      001720
          FRK=   (NAME),LL,UL,INC                                       001730
 '?ID#001 BSS 0                                                         001740
          USF=   (UF)                                                   001750
*                                                                       001760
 '?ID#002 IFNE *P,60D                                                   001770
          IFNE *P,0,2                                                   001780
          POS 0                                                         001790
 '?ID#003 SKIP                                                          001800
*                                                                       001810
 '?ID#002 ENDIF                                                         001820
 '?ID#004 BSS 0                                                         001830
*                                                                       001840
          IFNE   '?ID#004-'?ID#001,1,2                                  001850
 '?ID#003 ENDIF                                                         001860
 P        ERR    *USF=* DID NOT GENERATE EXACTLY 60D BITS. "SEQUENCE"   001870
*                                                                       001880
          RGR=   (RG)                                                   001890
*                                                                       001900
 #NUSE    IFC    EQ,/NUSE//                                             001910
          USE    *                                                      001920
*                                                                       001930
 #NUSE    ELSE                                                          001940
 RTN      BSS    0                                                      001950
 #NUSE    ENDIF                                                         001960
*                                                                       001970
 REG      ENDM                                                          001980
                                                                        001990
          PURGMAC REGS                                                  002000
 REGS     OPSYN  REG                                                    002010
 RGR=     SPACE  4,8                                                    002020
**        RGR= - GENERATE REGISTER PARAMETER LIST.                      002030
*                                                                       002040
*                                                                       002050
*                SEE *DSR/COMCIDP*.                                     002060
*                                                                       002070
*         RGR=   RG                                                     002080
*                                                                       002090
*         RGR=                                                          002100
*         RGR=   (X1,X2,A3,B4)                                          002110
*         RGR=   NOREG                                                  002120
*                                                                       002130
*         ENTRY  RG   =  NULL IF ALL REGISTERS ARE TO BE DUMPED         002140
*                     =  A LIST OF THE REGISTERS (ENCLOSED IN PARENS)   002150
*                          DESIRED TO BE DUMPED                         002160
*                     =  NON-REGISTER/NON-NULL IF NO REGISTERS TO BE    002170
*                          DUMPED                                       002180
*                                                                       002190
*         EXIT   NONE                                                   002200
*                                                                       002210
*         USES   NONE                                                   002220
*                                                                       002230
*         CALLS  NONE                                                   002240
                                                                        002250
                                                                        002260
          PURGMAC RGR=                                                  002270
                                                                        002280
 RGR=     MACRO  RG                                                     002290
*                                                                       002300
 .1       IFC    EQ,/RG//                                               002310
          DATA   -1                                                     002320
 .1       ELSE                                                          002330
*                                                                       002340
 .2       IRP    RG                                                     002350
 .3       IF     -REG,RG                                                002360
          DATA   0                                                      002370
 .3       ELSE                                                          002380
 .T       MICRO  1,1,/RG/                                               002390
 .R       MICRO  2,1,/RG/                                               002400
          VFD    60/=XIDP=SV_".T"+".R"                                  002410
 .3       ENDIF                                                         002420
 .2       IRP                                                           002430
*                                                                       002440
          DATA   0                                                      002450
 .1       ENDIF                                                         002460
*                                                                       002470
 RGR=     ENDM                                                          002480
 SNAP     SPACE  4,8                                                    002490
**        SNAP - SNAPSHOT OF REGISTERS AND CORE.                        002500
*                                                                       002510
*                                                                       002520
* NAME    SNAP   FWA,LWA,LNG,RG,LL,UL,INC,NUSE,UF                       002530
*         SNAP   *FWA,,**LNG,(X1,X2,B5,A1)                              002540
*                                                                       002550
*         ENTRY  NAME =  DISPLAY CODE (DPC) MESSAGE TO BE PRINTED WITH  002560
*                          EACH SNAP. (NR CHARS.LE.8)                   002570
*                     =  NULL IF NO SNAP HEADER                         002580
*                FWA  =  FWA OF CORE TO BE DUMPED. THIS PARAMETER MUST  002590
*                          APPEAR IF A CORE DUMP IS DESIRED.            002600
*                LWA  =  LWA OF CORE TO BE DUMPED. (OPTIONAL)           002610
*                LNG  =  NR OF WORDS TO BE DUMPED. *LWA* AND *LNG* ARE  002620
*                          RELATED AS FOLLOWS--  DUMP IS FROM           002630
*                          FWA TO FWA+LNG UNLESS LNG IS NULL OR ZERO.   002640
*                          IN THAT CASE, DUMP IS FROM FWA TO LWA.       002650
*                RG   =  NULL IF ALL REGISTERS ARE TO BE DUMPED         002660
*                     =  A LIST OF THE REGISTERS (ENCLOSED IN PARENS)   002670
*                          DESIRED TO BE DUMPED                         002680
*                     =  NON-REGISTER/NON-NULL IF NO REGISTERS TO BE    002690
*                          DUMPED                                       002700
*                LL   =  LOWER LIMIT (DEFAULT=1)                        002710
*                UL   =  UPPER LIMIT (DEFAULT=100)                      002720
*                INC  =  INCREMENT (DEFAULT=1)                          002730
*                NUSE =  USE BLOCK FLAG. IF *NUSE* IS NULL, THE PARA-   002740
*                          METER LIST EXISTS IN *USE DEBUG*, ELSE IS    002750
*                          ASSEMBLED AFTER *RJ*                         002760
*                UF   =  A STRING OF USER SNAP FLAGS PROCESSED BY       002770
*                        INSTALLER SUPPLIED USF= MACRO IF DESIRED.      002780
*                        USF= SHOULD GENERATE 1 WORD.                   002790
*                                                                       002800
*         NOTES-- AN INDIRECT ADDRESSING SYNTAX IS PROVIDED FOR THE FWA,002810
*         LWA, AND LNG PARAMETERS. ANY OF THESE PARAMETERS PRECEDED BY  002820
*         AN ASTERICK (*) DENOTES ONE LEVEL OF INDIRECT ADDRESSING.     002830
*         N LEVELS OF INDIRECT ADDRESSING ARE POSSIBLE (N.LE.2**21-1)   002840
*         BY STACKING ASTERICKS. (E.G.  SNAP  **X1,***LWA)              002850
*                                                                       002860
*                A SINGLE REGISTER OR AN ADDRESS EXPRESSION CAN BE USED 002870
*         FOR THE FWA, LWA, OR LNG PARAMETER, BUT A MIX (E.G. SNAP X1+1)002880
*         IS NOT ALLOWED.                                               002890
*                                                                       002900
*         EXIT   NONE                                                   002910
*                                                                       002920
*         USES   NONE        (ALL REGISTERS ARE SAVED AND RESTORED)     002930
*                                                                       002940
*         CALLS  FRK=,RGR=,SNG=,SNP=,USF=(IF DEF)                       002950
                                                                        002960
                                                                        002970
          PURGMAC SNAP                                                  002980
                                                                        002990
          MACRO  SNAP,NAME,FWA,LWA,LNG,RG,LL,UL,INC,NUSE,UF             003000
          LOCAL  '?ID#005,'?ID#008                                      003010
          LOCAL  RTN                                                    003020
          LOCAL  APL                                                    003030
*                                                                       003040
 +        RJ     =XSNP=                                                 003050
 -        VFD    30/APL                                                 003060
*                                                                       003070
 #NUSE    IFC    EQ,/NUSE//                                             003080
          USE    DEBUG                                                  003090
*                                                                       003100
 #NUSE    ELSE                                                          003110
          EQ     RTN                                                    003120
 #NUSE    ENDIF                                                         003130
 APL      BSS    0                                                      003140
          FRK=   (NAME),LL,UL,INC                                       003150
          SNG=   (FWA)                                                  003160
          SNG=   (LWA)                                                  003170
          SNG=   (LNG)                                                  003180
 '?ID#005 BSS 0                                                         003190
          USF=   (UF)                                                   003200
*                                                                       003210
 '?ID#006 IFNE *P,60D                                                   003220
          IFNE *P,0,2                                                   003230
          POS 0                                                         003240
 '?ID#007 SKIP                                                          003250
*                                                                       003260
 '?ID#006 ENDIF                                                         003270
 '?ID#008 BSS 0                                                         003280
*                                                                       003290
          IFNE   '?ID#008-'?ID#005,1,2                                  003300
 '?ID#007 ENDIF                                                         003310
 P        ERR    *USF= DID NOT GENERATE EXACTLY 60D BITS. "SEQUENCE"    003320
*                                                                       003330
          RGR=   (RG)                                                   003340
*                                                                       003350
 #NUSE    IFC    EQ,/NUSE//                                             003360
          USE    *                                                      003370
*                                                                       003380
 #NUSE    ELSE                                                          003390
 RTN      BSS    0                                                      003400
 #NUSE    ENDIF                                                         003410
*                                                                       003420
 SNAP     ENDM                                                          003430
 SNG=     SPACE  4,8                                                    003440
**        SNG= - GENERATE INDIRECT/ADDRESS FIELDS.                      003450
*                                                                       003460
*                                                                       003470
*         GENERATES--                                                   003480
*                                                                       003490
*         VFD    18/0                                                   003500
*         VFD    21/NR OF LEVELS OF INDIRECT ADDRESSING (0=DIRECT)      003510
*         VFD    21/ADDRESS AT BEGINNING OF INDIRECT CHAIN              003520
*                                                                       003530
*         SNG=   (*ADDR)                                                003540
*                                                                       003550
*         ENTRY  *        =  A LEVEL OF INDIRECT ADDRESSING.            003560
*                              NO * MEANS DIRECT ADDRESSING.            003570
*                              E.G. *ADDR MEANS THE CONTENTS OF ADDR    003580
*                              CONTAIN AN ADDRESS THAT IS TO BE USED BY 003590
*                              SNAP UTILITY.                            003600
*                ADDR     =  THE BEGINNING OF THE ADDRESS CHAIN.        003610
                                                                        003620
                                                                        003630
          PURGMAC SNG=                                                  003640
                                                                        003650
 SNG=     MACRO  ARG                                                    003660
 .9       SET    -1                                                     003670
 +        VFD    18/0                                                   003680
*                                                                       003690
 .D       DUP    -1                                                     003700
 .9       SET    .9+1                                                   003710
 .1       MICRO  .9+1,1,/ARG/                                           003720
          IFC    NE,/".1"/*/,1                                          003730
          STOPDUP                                                       003740
 .D       ENDD                                                          003750
*                                                                       003760
 .2       MICRO  .9+1,,/ARG/                                            003770
*                                                                       003780
 #RG      IF     REG,".2"                                               003790
          IFEQ   .9,0,1                                                 003800
 .9       SET    .9+1                                                   003810
 .3       MICRO  1,1,/".2"/                                             003820
 .4       MICRO  2,1,/".2"/                                             003830
 .2       MICRO  1,,/=XIDP=SV".3"+".4"/                                 003840
*                                                                       003850
 #RG      ELSE                                                          003860
 .5       MICRO  1,2,/".2"/                                             003870
          IFC    EQ,/".5"/=X/,1                                         003880
 .2       MICRO  3,,/".2"/                                              003890
          IF     -DEF,".2",1                                            003900
          SKIP   1                                                      003910
          IF     -ABS,".2",1                                            003920
 .2       MICRO  1,,/=X".2"/                                            003930
 #RG      ENDIF                                                         003940
*                                                                       003950
          VFD    21/.9                                                  003960
          VFD    21/".2"                                                003970
 SNG=     ENDM                                                          003980
 USF=     SPACE  4,8                                                    003990
**        USF= - GENERATE USER FLAG PARAMETER CELL.                     004000
*                                                                       004010
*                                                                       004020
*         THIS IS A DUMMY TO CREATE A ZERO WORD IF THE USER             004030
*         DOES NOT DESIRE OWN CODE.                                     004040
*                                                                       004050
*         USF=   USF                                                    004060
*                                                                       004070
*         ENTRY  USF  = ANY LEGAL STRING OF CHARACTERS                  004080
*                                                                       004090
*         EXIT   NONE                                                   004100
*                                                                       004110
*         USES   NONE                                                   004120
*                                                                       004130
*         CALLS  NONE                                                   004140
                                                                        004150
 .1       IF     -MAC,USF=                                              004160
 USF=     MACRO  USF                                                    004170
          CON    0                                                      004180
 USF=     ENDM                                                          004190
 .1       ENDIF                                                         004200
 COMAIDP  SPACE  4,8                                                    004210
          BASE   *                                                      004220
 QUAL$    IF     -DEF,QUAL$                                             004230
          QUAL   *                                                      004240
 QUAL$    ENDIF                                                         004250
 COMAIDP  ENDX                                                          004260
