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 POINT OF A ROUTINE WHICH * HAS THE FOLLOWING CALLING SEQUENCE: * RETURNS: A = FWAM * B = LWAM * * * JSB * DEF SEG# SEGMENT NUMBER (POSITIVE) * SEG# < #SEGS * * RETURNS: B = ADDRESS OF THE REFERENCED SEGMENT'S * (SEG#) NAME (5 CHARACTERS) * * DEF 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