COMCMTM 
COMMON
          CTEXT  COMCMTM - MANAGED TABLE MACROS.
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4
***       COMCMTM - MANAGED TABLE MACROS. 
*         G. R. MANSFIELD.  70/12/14. 
          SPACE  4
***              COMCMTM CONTAINS MACROS FOR GENERATION, ALLOCATION 
*         AND PROCESSING OF MANAGED TABLES.  COMCMTM IS INTENDED FOR
*         USE WITH COMCMTP. 
 MACREF   SPACE  4,10 
**        MACREF - GENERATE MACRO SYMBOLIC REFERENCE TABLE LISTING. 
* 
*         CAUSES THE MACRO NAME TO BE LISTED IN THE SYMBOLIC
*         REFERENCE TABLE UNDER THE QUALIFIER *MACRO$*. 
* 
*         MACREF MNAME
*                MNAME    MACRO NAME FOR REFERENCE TABLE. 
  
  
          PURGMAC MACREF
  
 MACREF   MACRO  N
  QUAL MACRO$ 
N SET * 
  QUAL *
  ENDM
 ADDWRD   SPACE  4
***       ADDWRD - ADD WORD TO MANAGED TABLE. 
* 
* 
*         ADDWRD TABLE,REG
*         ENTRY  *TABLE* = TABLE NUMBER.
*                *REG* = REGISTER NAME OR EXPRESSION FOR WORD TO ADD. 
*         USES   A0, X1.
*         CALLS  ADW. 
  
  
 ADDWRD   MACRO  A,B
  MACREF ADDWRD 
          IFC    NE,$X1$B$,1
          BX1    B
          R=     A0,A 
          RJ     ADW
          ENDM
 ALLOC    SPACE  4
***       ALLOC - ALLOCATE TABLE SPACE. 
* 
* 
*         ALLOC  TABLE,WORDS
*         ENTRY  *TABLE* = TABLE NUMBER.
*                *WORDS* = WORD COUNT OF TABLE. 
  
  
 ALLOC    MACRO  A,B
  MACREF ALLOC
          R=     X1,B 
          R=     A0,A 
          RJ     ATS
          ENDM
 SEARCH   SPACE  4
***       SEARCH - SEARCH MANAGED TABLE.
* 
* 
*         SEARCH TNAM,ENTRY,MASK
*         ENTRY  *TNAM* = TABLE NAME. 
*                *ENTRY* = ENTRY TO SEARCH FOR. 
*                *MASK* = SEARCH MASK IN (X0).
*                IF *MASK* IS NOT PRESENT, MASK IS ALL BITS.
* 
*         CALLS  EQS OR MES.
  
  
 SEARCH   MACRO  TNAM,ENTRY,MASK
  MACREF SEARCH 
          R=     A0,TNAM
          R=     B7,C.TNAM
          IFC    NE,$X6$ENTRY$,1
          BX6    ENTRY
          IFC    EQ,$MASK$$ 
          RJ     EQS
          ELSE   1
          RJ     MES
          ENDM
 TABLE    SPACE  4
***       TABLE - GENERATE MANAGED TABLE. 
* 
* 
*         TABLE  TNAME,COUNT,EQUIV
*         ENTRY  *TNAME* = TABLE NAME.
*                *COUNT* = WORD COUNT/ENTRY (1 IF NOT SPECIFIED)
*                *EQUIV* = EQUIVALENT TABLE NAME.  THIS ALLOWS CERTAIN
*                            TABLES TO BE USED BY DIFFERENT PROCESSORS. 
*         EXIT   *F.TNAM* IS NAME OF WORD CONTAINING THE TABLE FWA. 
*                *L.TNAM* IS NAME OF WORD CONTAINING THE TABLE LENGTH.
*                *C.TNAM* IS WORD COUNT PER ENTRY.
  
  
 NTAB     SET    0
  
          MACRO  TABLE,TNAM,COUNT,EQUIV 
  MACREF TABLE
          VFD    6/TNAM,18/C.TNAM,18/L.TNAM,18/F.TNAM 
          ORG    *-1
 C.TNAM   EQU    COUNT 1
          IFC    EQ,$EQUIV$$
 TNAM     EQU    NTAB 
 NTAB     SET    NTAB+1 
 TABLES   RMT 
          ORG    FTAB+TNAM
 F.TNAM   CON    MEML+TNAM
          ORG    LTAB+TNAM
 L.TNAM   CON    0
          ORG    LTAB+NTAB
 TABLES   RMT 
  
          ELSE
 TNAM     EQU    EQUIV
 TABLES   RMT 
 F.TNAM   EQU    F.EQUIV
 L.TNAM   EQU    L.EQUIV
 TABLES   RMT 
  
          ENDIF 
          ENDM
 TABLES   SPACE  4
*         REMAINDER OF TABLE MANAGER STORAGE. 
  
  
 TABLES   RMT 
 MU       CON    0           MEMORY USED
 LM       CON    MEML        LOW MEMORY ADDRESS 
 TN       CON    NTAB+1      NUMBER OF MANAGED TABLES 
 TO       CON    TOV         ADDRESS OF TABLE OVERFLOW PROCESSOR
 FTAB     BSS    0           TABLE ADDRESSES
  
 TEND     EQU    NTAB        DUMMY TABLE
 NTAB     SET    NTAB+1 
          ORG    FTAB+TEND
 F.TEND   CON    MEML+TEND   DUMMY TABLE
 LTAB     BSS    0           TABLE LENGTHS
          ORG    LTAB+TEND
 L.TEND   CON    0
 TABLES   RMT 
          SPACE  4
          ENDX
