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