*COMDECK COMPCMA
          CTEXT  COMPCMA - CENTRAL MEMORY AVAILABLE ON RECOVERY.
          SPACE  4
          IF     -DEF,QUAL$,1 
          QUAL   COMPCMA
*         COPYRIGHT CONTROL DATA SYSTEMS, INC. 1994.
          SPACE  4
***       CMA - CENTRAL MEMORY AVAILABLE
*         R. P. MANYIK.  08/18/75 
          SPACE  4
**        CMA BUILDS A TABLE OF ADDRESSES THAT OUTLINE THE AREAS OF CM
*         THAT CAN BE USED BY DEADSTART DIAGNOSTICS AND STILL LEAVE CM
*         INTACT FOR RECOVERY.  ONLY ONE AREA IS AVAILABLE, THAT IS THE 
*         AREA BETWEEN THE END OF THE LOW CORE TABLES (INTERCOM OR LIB) 
*         AND THE BEGINING OF THE RBT.
* 
*         TWO FORMS OF THE SUBROUTINE ARE DEFINED BASED ON THE PRESENCE 
*         OR ABSENCE OF A SYMBOL *LTAO*.  THIS COMDECK ONLY SUPORTS 
*         ASSEMBLY WITH *LTAO* NOT DEFINED. 
* 
*         THE TABLE OF ADDRESSES IS BUILT BEGINING AT THE LOCATION
*         POINTED TO BY THE A REGISTER WHEN CALLED. 
* 
*         THE TABLE IS IN THE FOLLOWING FORMAT: 
* 
*T        24/RA/100B OF FREE AREA 
*T,       24/FL/100B OF FREE AREA 
*T,       24/ZERO (TERMINATOR)
* 
*         NO FREE AREA IS RETURNED IF:  
* 
*             A) THE LIBRARY POINTER IS ZERO
*             B) AN INTERCOM AREA EXISTS BUT IS LESS THAN THE END OF
*                THE LIBRARY. 
*             C) A NEW CMR HAS BEEN LOADED BUT A RECOVERY HAS NOT BEEN
*                COMPLETED
*             D) THE FWA OF THE RBT IS NOT FLAGED CORRECTLY.
*             E) THE FL IS NOT POSITIVE 
*             F) THE RBT AREA IS LARGER THAN THE MACHINE SIZE 
* 
*         ENTRY  (A) = ADDRESS AT WHICH TO BUILD TABLE
* 
*         EXIT   (D.Z1) = FWA OF TABLE
*                IF NO FREE SPACE IS AVAILABLE THE FIRST TWO BYTES WILL 
*                BE ZERO, TERMANATING THE TABLE IMMEDIATLY. 
* 
*         USES   D.Z1, D.Z2,D.TO-D.T4 
* 
          IF     DEF,LATO,1 
          ERR    CALL FORMAT NOT SUPPORTED. 
  
CMA9      LDN    0           TERMINAL TABLE 
          STM    1,D.Z1 
          STM    3,D.Z1 
  
CMA       ENM    X           ENTRY - EXIT 
  
          STD    D.Z1 
          ADN    5           CLEAR TABLE
          STD    D.Z2 
CMA1      LDN    0
          STI    D.Z2 
          SOD    D.Z2 
          SBD    D.Z1 
          PJN  CMA1 
  
          LDK    P.LIB       BRING IN LIBRARY POINTERS
          CRD    D.T0 
          LDD    D.T0+C.DSFLAG CHECK FOR FRESH CMR
          LMC    7777B
          ZJK  CMA9 
          LDD    D.T0+2      SET RA = LWA OF LIB ROUNDED UP BY 100B 
          LPN    77B
          SHN    12 
          ADD    D.T0+3 
          ADN    77B
          SHN    -6 
          ZJK  CMA9          END OF LIB = 0 
          STM    1,D.Z1 
  
          LDK    P.INT       CHECK FOR INTERCOM 
          CRD    D.T0 
          LDD    D.T0+C.IFL 
          ZJN  CMA2          NO INTERCOM
          SBM    1,D.Z1 
          MJK  CMA9          INTERCOM LESS THAN LWA OF LIB
          RAM    1,D.Z1      SET RA TO LWA 0F INTERCOM AREA 
  
CMA2      LDK    P.RBT       CHECK RBT AREA 
          CRD    D.T0 
          LDD    D.T0+C.CMLWA 
          SBD    D.T0+3 
          MJK  CMA9          RBT LARGER THAN CM SIZE
          SBM    1,D.Z1 
          MJK  CMA9          FL LT RA 
          STM    3,D.Z1      STORE FL (LWA+1) 
  
          ADM    1,D.Z1      CHECK FOR PROPER FLAG
          SHN    6
          CRD    D.T0 
          LDN    4
          STD    D.Z2 
CMA3      LDM    D.T0,D.Z2
          LMM    CMAA,D.Z2
          NJK  CMA9          BAD COMPARE
          SOD    D.Z2 
          PJN    CMA3 
          UJK    CMAX 
  
CMAA      VFD    48/8H END RBT,12/-0
          SPACE  4
QUAL$     IF     -DEF,QUAL$,2 
          QUAL   *
CMA       EQU    /COMPCMA/CMA 
QUAL$     ENDIF 
          ENDX
