*COMDECK  COMDDMT - (DEBUG) DUMP TABLE ROUTINES.
          CTEXT  COMDDMT - (DEBUG) DUMP TABLE ROUTINES. 
  
  
          IF     -DEF,QUAL$,1 
          QUAL   COMDDMT
          BASE   D
 DAT      SPACE  4,10 
**        DAT - DUMP A TABLE. 
* 
* 
*         ENTRY  (A1,X1) = ADDR + CNTS OF TABLE ORIGIN (TT.) WORD 
*                (X2) = 42/7LNAME,18/ORDINAL OF TABLE 
* 
*         EXIT   NONE 
* 
*         USES   ALL
* 
*         CALLS  COD,DCM,PRIDP
  
  
 DAT8     RJ     DSY         DUMP SYMBOL TABLE
  
 DAT      SUBR               ** ENTRY/EXIT ** 
          SA3    =3R
          MX4    42 
          BX5    X4*X2       REMOVE ORDINAL 
          BX6    X5+X3       ADD BLANKS 
          SA6    DATB+2      TABLE NAME 10H FMT 
          SB5    A1+         (B5) = ADDR OF TABLE ORIGIN WORD 
          SA1    A1+N.TABLE  (X1) = LEN OF TABLE
          SA2    DATB 
          SA3    A2+B1
          BX6    X2 
          SA4    A3+B1
          SA6    SNAPLNE
          LX7    X3 
          SA7    A6+B1
          SA5    A4+B1
          BX6    X4 
          LX7    X5 
          SA6    A7+B1
          SA7    A6+B1
          RJ     =XCOD       CONVERT BINARY TO OCTAL DPC (TBL LEN)
          SA6    A7+B1
          MX7    0
          SA7    A6+B1       MARK EOL 
          SB4    B5          (B4) = ADDR OF TABLE ORIGIN WORD 
          PRIDP  SNAPLNE,,1 
          SA1    =10HSYM
          SA2    DATB+2      TABLE NAME 
          IX6    X1-X2
          ZR     X6,DAT8     IF SYMBOL TABLE TO BE DUMPED 
          SA2    B4          (X2) = ORIGIN (FWA) OF TABLE 
          MX3    0           (X3) = LWA (NULL)
          SA4    B4+N.TABLE  (X4) = LENGTH OF TABLE 
          ZR     X4,EXIT.    IF TABLE EMPTY -- AVOID DUMP 
          CALL   DCM=        DUMP CENTRAL MEMORY
          EQ     EXIT.
  
  
 DATB     DIS    2,      DUMP OF TABLE
          DATA   0           NAME OF TABLE 10H FMT
          DATA   10H LENGTH = 
*         DATA   10H NNNNNNB
 DMT      SPACE  4,10 
**        DMT - DUMP TABLES.
* 
* 
*                CALLED BY *DUMPT* MACRO. 
* 
*         ENTRY  LOWER HALF OF *RJ DMT=* WORD HAS FWA OF PARAMETER LIST-
* +       RJ     DMT= 
* -       VFD    30/FWA OF PARAMETER LIST 
* 
*         PARAMETER LIST EXISTS IN LOCAL BLOCK *USE DEBUG*, AS SET UP 
*         BY *DUMPT* MACRO.  (SEE *TSTEXT*) --
* 
*         VFD    60/LOWER LIMIT (LL)
*         VFD    60/UPPER LIMIT (UL)
*         VFD    60/INCREMENT (INC) 
*         VFD    60/10HSNAP NAME   (OR .ZR. IF NO NAME) 
*         VFD    60/0        (USED BY *FRK* TO KEEP SNAP COUNT) 
*         VFD    42/7LTN1,18/0
*                 . 
*                 . 
*         VFD    42/7LTNN,18/0
*         VFD    60/0        END OF TABLE MARK
* 
*                WHERE TN1,...,TNN ARE THE NAMES OF TABLES IN THE 
*                NAMES TABLE (SEE *TABLES* MACRO IN *TABLES*).
* 
*         EXIT   NONE 
* 
*         USES   NONE        (ALL REGISTERS ARE SAVED AND RESTORED) 
* 
*         CALLS  DAT,FRK,HDR,RSR=,SOB,SVR=
  
  
 DMT=     SUBR   =           ** ENTRY/EXIT ** 
          RJ     SVR=        SAVE ALL REGISTERS 
          SX1    3           SET TO *EXECUTIVE IS /DMT=/* 
          RJ     SOB         SET OUTPUT BIT FLAGS 
          SA4    DMT= 
          LX4    30 
          SA5    X4-1        (A5,X5) = ADDR + CNTS OF CALLING *RJ*
          SX6    X5          (X6) = FWA OF PARAMETER LIST 
          SA6    FW=IDPL
          RJ     FRK         CHECK FREQUENCY PARAMETERS 
          ZR     X5,DMT3     IF NO DUMP THIS TIME 
          RJ     HDR         OUTPUT HEADING 
          SX2    X5+SN=DMT-1 (X2+1) = ADDR OF 1ST TABLE PARAMETER WORD
  
**        PICK UP NEXT *DUMPT* PARAMETER LIST ENTRY.
  
 DMT2     SX6    X2+B1
          SA1    X6          (X1) = 42/7LTABLENAME,18/0 
          SA6    FW=IDPL     RESET START OF PARAMETER LIST
          ZR     X1,DMT3     IF NO MORE TABLES TO DUMP
  
          MX0    42 
          SB6    =XNAMES     (B6) = FWA OF TABLE NAME WORDS 
          CALL   SKT         SEARCH TABLE FOR MATCH 
          ZR     X2,"BLOWUP" IF UNKNOW TABLE ON DUMPT MACRO 
  
          SA1    X2+ORIGINS  (A1,X1) = ADDR + CNTS OF TABLE ORIGIN WORD 
          RJ     DAT         DUMP A TABLE 
          SA2    FW=IDPL     ADDRESS OF NEXT PARAMETER
          EQ     DMT2        LOOP FOR NEXT... 
  
 DMT3     RJ     RSR=        RESTORE ALL REGISTERS
          EQ     EXIT.
 DSY      EJECT  4,10 
**        DSY - DUMP SYMBOL TABLE.
  
  
 DSY      SUBR
          SA1    IDPFLG 
          MX0    -1 
          LX1    -/IDP/IDF.IDOP 
          BX2    -X0*X1      (X2) = 1 IF WRITING INTERACTIVELY
          SX6    X2+SNAPLNE 
          SB6    X2+DSYB     SKIP 10 COLUMNS IF INTERACTIVE 
          SA6    DSYC 
          SB2    DSYB+DSYBL  (B2) = LWA+1 OF HEADER 
          PRIDP  B6,B2-B6    LIST HEADING 
          SB5    B0          (B5) = SYMTAB ENTRY ORDINAL
          BX5    0           (X5) = SYMTAB WORD INDEX 
 DSY2     SB6    SNAPLNE
          SX1    X5 
          RJ     COD         CONVERT WORD INDEX 
          SX2    1R+&1R 
          LX2    B2 
          BX6    X6-X2
          LX6    3*6         -+12345--- 
          SA6    B6 
          SX1    B5          CONVERT ORDINAL
          RJ     COD
          SA2    =XT.SYM
          MX7    7*6
          SB3    X5          (B3) = WORD INDEX
          LX6    5*6         12345----- 
          BX4    X7*X6       12345--... 
          SA5    X2+B3       (X5) = SYMTAB WORD WA
          SB7    X5          (B7) = HASH CHAIN LINK 
          LX5    3*6         DEFG123ABC 
          BX6    -X7*X5      .......ABC 
          MX3    4*6
          BX0    X3*X5       DEFG...... 
          BX1    X6+X4       12345--ABC 
          RJ     ZTB         ZEROES TO BLANKS 
          SA6    B6+B1
          SX1    B7 
          RJ     COD         CONVERT HASH LINK
          MX3    -6*6 
          BX2    -X3*X6      ....-12345 
          IX1    X2+X0       DEFG-12345 
          RJ     ZTB
          SA6    B6+2 
  
          =A5    A5+WB.W     (X5) = SYMTAB WORD WB
          MX2    -2          LEVN 
          LX5    -45
          BX4    -X2*X5      (X4) = LEVEL NUMBER
          LX5    45-47
          SX0    X4+1R0-1R   CONVERT LEVEL NUMBER 
          MX7    -13         PTRF 
          BX1    -X7*X5 
          LX0    6
          RJ     COD         CONVERT POINTER FIELD
          LX6    4*6
          IX7    X6+X0       -12345--L- 
          SA7    A6+B1
          LX5    47-33       RB/FPNO/FUNI 
          MX2    -12
          BX1    -X2*X5 
          LX5    33-0 
          MX4    -3 
          BX3    -X4*X5 
          SB7    X3          (B7) = MODE
          RJ     COD         CONVERT RB/FPNO/FUNI 
          LX6    6*6
          SA6    A7+B1
          LX5    0-3
          SB3    A5          SAVE (B3) = (A5) 
          BX1    X5 
          RJ     WOD         CONVERT ALL OF WORD WB 
          SA1    A6          FUNI------ 
          MX2    6*6
          LX7    4*6         5678901234 
          BX1    X2*X1       ABCD--.... 
          BX3    -X2*X7      ......1234 
          BX7    X2*X7       567890.... 
          SA4    DSYA+B7     ......--M- 
          BX6    X1+X3
          SA6    A6          FUNI---1234
          BX7    X4+X7       567890--M- 
          SA7    A6+B1
  
          =A5    B3-WB.W+WC.W      FETCH (X5) = SYMTAB WORD WC
          MX3    -12         (X3) = BASE
          LX5    -48
          BX1    -X3*X5      (X1) = EQUIV CLASS BASE
          RJ     COD         CONVERT OCTAL
          MX2    7*6
          LX6    5*6         -BASE----- 
          BX0    X2*X6       -BASE--... 
          MX4    -18
          LX5    48-30
          BX1    -X4*X5      (X1) = CHARACTER LENGTH
          RJ     COD         CONVERT OCTAL
          LX6    7*6         456----123 
          MX2    7*6
          BX3    -X2*X6      .......123 
          BX7    X0+X3       -BASE--123 
          SA7    A7+B1
          LX5    30-28
          MX4    -2 
          BX1    -X4*X5 
          SX3    X1+1R0-1R   CONVERT CHARACTER TYPE 
          LX3    4*6         .....C.... 
          IX6    X6+X3       456--C-123 
          BX0    X2*X6       456--C-... 
          LX5    28-24
          MX4    -4 
          BX1    -X4*X5      (X1) = BEGINNING CHARACTER POSITION
          SA2    =3R  0 
          IX6    X2+X1       .......--P 
          BX7    X6+X0       456--C---P 
          SA7    A7+B1
          LX5    24-0 
          MX4    -24
          BX1    -X4*X5      (X1) = WC.RA 
          RJ     COD         CONVERT OCTAL
          SA6    A7+B1       --12345678 
          MX7    0
          SX5    B5+B1       ADVANCE ORDINAL
          SA2    DSYC 
          SA7    A6+B1       MARK END OF LINE 
          SB6    X2 
          PRIDP  B6,A7-B6 
          SB5    X5          (B5) = ORDINAL 
          SA2    =XT=SYM
          LX3    X5,B1
          IX5    X3+X5       (X5) = INDEX 
          IX7    X5-X2
          MI     X7,DSY2     IF INDEX .LT. LENGTH 
          EQ     EXIT.
  
 DSYA     BSS 
          LOC    0
 M.UNIV   CON    4R  0       CHAMELEON
 M.LOG    CON    4R  L       LOGICAL
 M.INT    CON    4R  I       INTEGER
 M.REAL   CON    4R  R       REAL 
 M.DBL    CON    4R  D       DOUBLE 
 M.CPLX   CON    4R  Z       COMPLEX
          CON    4R  6       BOOLEAN
          CON    4R  7       CHARACTER
          LOC    *O 
  
 DSYB     DIS    5,  INDEX   ORDNL  SYMBOL  CHAIN  PTRF LV BASE 
          DIS    4,CLASS   M  FUNI    CLEN  C BCP    RELADD 
          CON    0
 DSYBL    =      *-DSYB 
  
 DSYC     CON    SNAPLNE     FWA OF LINE TO OUTPUT
 ST=DMT   SPACE  4,10 
**        HERE TO PROCESS *DUMPT T1,T2,...,TN*. 
  
  
 ST=DMT   SX6    A5 
          SA6    IDPSA5      SAVE (A5) = NEXT TOKEN ADDR
  
 ST=DMT2  SA5    X6 
          MX0    7*CHAR 
          ZR     X5,IDP=MN   IF EOS ENCOUNTERED 
          SX6    X5-/IDP/O.VAR
          NZ     X6,ST=DMT3  IF NOT A NAME TOKEN
          BX1    X0*X5
          RJ     =XSFN       SPACE FILL NAME
          BX1    X6          (X1) = 10HTABLE NAME 
          SB6    =XNAMES     (B6) = FWA OF TABLE NAME WORDS 
          RJ     SKT         SEARCH TABLE FOR MATCH 
          ZR     X2,ST=DMT3  IF NO FIND 
          SA1    X2+ORIGINS  (A1,X1) = ADDR + CNTS OF TABLE ORIGIN WORD 
          RJ     DAT         DUMP A TABLE 
  
 ST=DMT3  SA1    IDPSA5 
          SX6    X1+B1
          SA6    A1 
          EQ     ST=DMT2
 QUAL$    SPACE  4,10 
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 DAT      EQU    /COMDDMT/DAT 
 DMT=     EQU    /COMDDMT/DMT=
 ST=DMT   EQU    /COMDDMT/ST=DMT
 QUAL$    ENDIF 
          BASE   *
  
 COMDDMT  ENDX
