Google
 

Trailing-Edge - PDP-10 Archives - BB-H580E-SB_1985 - mmangu.mac
There are 6 other files named mmangu.mac in the archive. Click here to see a list.
; UPD ID= 3368 on 1/30/81 at 9:02 AM by WRIGHT                          
IFNDEF TOPS20,<TOPS20==1>
UNIVERSAL MMANGU - Memory manager definitions
SUBTTL	D. Wright

	SEARCH	COPYRT
	SALL

COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1976, 1985
;ALL RIGHTS RESERVED.
;
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
;ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH LICENSE.

.DIREC .NOBIN	;Don't make a .REL file

;Calling interface:

;Flags for INITMU:
MM%UXS==1B0	;Use extended sections
		;i.e. if possible, will return addresses of free
		;locations in extended sections

MM%CRM==1B1	;This module has the ability to cut back memory if
		; some other module has need of it.
		;T3 and T4 contain global addresses of routines to call
		; to return memory usage, and cut back core, respectively.

;Re: MM%CRM.
;The routine to return memory usage works like this:
;Call:
;	1/ -1
;Return:
;	1/ number of pages used (total)
;	2/ number of pages that can be released
;
;The routine to cut back core works like this:
;Call:
;	1/ -1
;	2/ number of pages to release
;Return:
;	1/ status 0=ok, 1=can't release

;Flag for FINFRE
MM%GSS==1B0	;GET PAGES IN SAME SECTION AS CALLER
		;If not set, all sections get equal treatment

MM%NCL==1B1	;Don't bother to clear the block
		; (The default is to make the pages exist and contain all 0's)
SUBTTL	INTERNAL BLOCKS FOR EACH MODULE

;For every registered module, this routine has a block
; structured as followed:

.MNNXT==0	;Address of next module block, or 0
.MNNAM==1	;Sixbit name
.MNNFL==2	;Flags
.MNARU==3	;Address of routine to return memory usage
.MNACB==4	;Address of routine to cut back core
.MNSIZ==5	;Size of block

MNPPAG==<^D512/.MNSIZ> ;NUMBER OF BLOCKS THAT WILL FIT ON A PAGE

SUBTTL	INTERNAL BLOCKS FOR EACH SECTION

;For every non-zero section, this routine has a block
; structured as followed:

.MSNXT==0	;Address of next section block, or 0
.MSSCN==1	;Section number
.MSPGD==2	;Page data (1 bit for each page, =0 if not in use)
.MSSIZ==.MSPGD+<^D512/^D36>+1+1	;Total size of block

;Each page of storage needed for the section blocks looks like this:

.MSPNX==0	;Address of next section-block page
.MSNSH==1	;Number of sections defined here
.MSSSB==2	;Start of section blocks

;The first page of section blocks is pointed to by "PTRLSS"

;MSPPAG is the number of section blocks that will fit on a page
MSPPAG==<<^D512-.MSSSB>/.MSSIZ>

END