ASMB,L,C
        HED COMPILER LIBRARY - GET MAIN MEMORY
* 
*************************************************************** 
* (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977.  ALL RIGHTS     * 
* RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE-  * 
* REPRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * 
* OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.   * 
*************************************************************** 
* 
*   SOURCE:  92060-18061
* 
* 
* 
        NAM GMM.C,7 92060-16103 780921 REV. 1901 $CLIB
      EXT COR.A,ID.AD 
        ENT GMM.C 
* 
*  THIS COMPILER LIBRARY ROUTINE SCANS THE CALLER-PROVIDED SEGMENTS'
*  ID SEGMENTS AND RETURNS THE AMOUNT OF MAIN MEMORY BETWEEN THE
*  HIGHEST USED AND THE END OF MAIN MEMORY.  THIS IS THE AREA THAT
*  MAY BE USED AS SYMBOL TABLE AREA BY THE CALLER.
* 
*       CALLING SEQUENCE:  JSB GMM.C
*                          DEF #SEGS     NUMBER OF SEGMENTS 
*                          DEF <ENTRY>   ENTRY POINT OF A ROUTINE WHICH 
*                                        HAS THE FOLLOWING CALLING SEQUENCE:
*                RETURNS:  A = FWAM 
*                          B = LWAM 
* 
* 
*                          JSB <ENTRY>
*                          DEF SEG#      SEGMENT NUMBER  (POSITIVE) 
*                                          SEG# < #SEGS 
* 
*                RETURNS:  B = ADDRESS OF THE REFERENCED SEGMENT'S
*                              (SEG#) NAME (5 CHARACTERS) 
* 
*     DEF <ENTRY>  not required if #SEGS is zero
* 
GMM.C NOP           ENTRY 
      LDA XEQT      SET MINIMUM ADDRESS 
      JSB COR.A       AS MAIN'S FWAM
      STA CMIN
      LDA GMM.C,I 
      LDA A,I       GET # OF SEGMENTS 
      CMA,INA,SZA,RSS    AND TEST FOR COMPLETION
      JMP DONE
* 
      STA NSEG
      ISZ GMM.C     STEP TO  ADDRESS OF TRANSLATOR
      LDA GMM.C,I   SAVE SEGMENT TRANSFER 
      STA ENTRY       ADDRESS 
      CLA           INITIALIZE CALL NUMBER
      STA SEG#
NEXT  JSB ENTRY,I   GET NAME OF SEGMENT 
      DEF SEG#
* 
      JSB ID.AD     GET SEGMENT'S ADDRESS 
      SZB,RSS       IF NONE, SKIP IT
      JMP NOID
* 
      LDA B         GET FWAM
      JSB COR.A 
      STA B         COMPARE TO CURRENT FWAM 
      CMB,INB 
      ADB CMIN      IF HIGHER,
      SSB             SET NEW FWAM
      STA CMIN
NOID  ISZ SEG#      INCREMENT SEGMENT # 
      ISZ NSEG        AND COUNT IT
      JMP NEXT      TRY NEXT SEGMENT
* 
DONE  LDB BKLWA     B=LWAM
      LDA CMIN      A=FWAM
      ISZ GMM.C 
      JMP GMM.C,I   EXIT
* 
BKLWA EQU 1777B 
XEQT  EQU 1717B 
A     EQU 0 
B     EQU 1 
CMIN  NOP 
ENTRY NOP 
NSEG  NOP 
SEG#  NOP 
      END 
                                                                                              