sys7.1-doc-wip/OS/MemoryMgr/MemoryMgrPriv.a
2019-07-27 22:37:48 +08:00

188 lines
7.3 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;
; File: MemoryMgrPriv.a
;
; Contains: Definitions for Macintosh Assembly Language Memory Manager
;
; Supports multiple heap zones with mixed relocatable and non-relocatable
; storage blocks.
;
; Reorganized from code designed and written by Bud Tribble, 27-Nov-81,
; and maintained and modified by Angeline Lo, Larry Kenyon,
; and Andy Hertzfeld.
;
; Written by: Bud Tribble
;
; Copyright: © 1983-1992 by Apple Computer, Inc., all rights reserved.
;
; Change History (most recent first):
;
; <2> 3/4/92 kc Add pVMGlobals equate.
; <1> 10/2/91 JSM first checked in
; <0> 10/1/91 JSM Created from HeapDefs.a.
;
; Modification history from HeapDefs.a below:
;
; <3> 9/30/91 JSM Dont use is32BitClean conditional, all future ROMs will be.
; <2> 9/16/91 JSM Add header.
; <1.4> 7/15/89 CSL Added equ NRBbit.
; <1.3> 3/22/89 CSL moved EQUS MMPRAMloc, MMFlags, and bit settings for MMFlags to
; Private.a.
; <1.2> 2/28/89 CSL Added Jump vector offsets for 24/32 bit memory manager
; <1.1> 11/10/88 CCH Fixed Header.
; <1.0> 11/9/88 CCH Adding to EASE.
; <1.0> 2/10/88 BBM Adding file for the first time into EASE…
; <C102> 8/2/86 WRL Changed the default System Zone size to 6k (same as default
; Application Zone size) so that we can allow it to grow
; dynamically during system startup to accommodate an arbitrary
; number of device drivers.
; 4/18/85 JTC Added flag SmartSetSize to control new strategy. <18Apr85>
; 4/14/85 JTC Added flag GrowDown to flag application zone growth downwards.
; <14Apr85>
; 3/11/85 JTC Cut sys heap back to 14.5K, a la, SysHeapSize
; 1/29/85 JTC Added FNGZResrv=3, FGZAlways=2 flag bits, even though shouldn't
; be here UUUGGGGHHHHHHHHHHH
; 1/25/85 LAK Removed equates which were moved to SysEqu.Text.
; 8/12/83 LAK Added ClearBit equate.
; 7/30/83 LAK Added equates for PurgePtr and AllocPtr. Also added equates for
; Flags byte: FNSelCompct,FNoRvrAlloc,FNSelPurge,FRelAtEnd.
; 7/18/83 LAK Removed FreeList stuff completely; removed TLock, TPurge;
; removed Trap macro and check hook offsets.
; 6/21/83 MPH Put FreeList code under assembly switch: FList.
; 6/17/83 MPH Removed moveRelProc from Heap object, inserted spare.
; 6/10/83 MPH Removed Definition of Nil, use Nil from GrafTypes.
; 3/29/83 MPH added purgeProc and moverelProc entries to zone object.
; 3/20/83 MPH changed memory size constants to support 512 K byte machine;
; added PtrMask and HandleMask to allow garbage in high byte of
; ptrs or handles passed to memory manager; removed "checking"
; conditional from ChkZone macro.
; 2/17/83 LAK added dfltStackSize for defltApplLimit.
;
BLANKS ON
STRING ASIS
FNGZResrv EQU 3
FGZAlways EQU 2
; These constants control conditional assembly.
RAMTest EQU 0 ;special RAM nonsense <10May85>
GrowDown EQU 0 ;permit ApplZone downward growth <14Apr85>
SmartSetSize EQU 1 ;try smarter stratey <18Apr85>
;Checking .Equ 0 ;check arguments and data structures
;Statistics .Equ 0 ;gather statistics on usage
;Robust .Equ 0 ;enables super-robust internal checks
;CountMPs .Equ 0 ;enables counting of master pointers
;DfltFlags .Equ 0 ;Checking is on when zone is init'd
MinZone EQU HeapData+(4*MinFree)+(8*dfltMasters)
;Minimum size for Applic. Zone
;
; Heap Zone Default Sizes
;
SysZoneSize EQU $1800 ; default System Zone size <C102>
AppZoneSize EQU $1800 ; default Application Zone size <C102>
;----------------------------------------------------------------------
; Macros
;
MACRO ;Get theZone into a register
GetZ
MOVE.L theZone,&Syslst[1]
ENDM
MACRO ;Set theZone with a register's value
SetZ
MOVE.L &Syslst[1],theZone
ENDM
MACRO
Equal
IF Checking THEN
Move.L &Syslst[1],-(SP)
Move.L &Syslst[2],-(SP)
JSR EqualCheck
ENDIF
ENDM
MACRO
Even
IF Checking THEN
MOVE.L &Syslst[1],-(SP)
JSR EvenCheck
ENDIF
ENDM
MACRO
Range
IF Checking THEN
MOVE.L &Syslst[1],-(SP)
MOVE.L &Syslst[2],-(SP)
MOVE.L &Syslst[3],-(SP)
JSR RangeCheck
ENDIF
ENDM
pVMGlobals EQU $B78 ; VM Globals
NRBbit EQU $06 ; non-rel. block bit in first byte block header <v1.4>
Zone32Flag EQU $1E ; flag to indicate if zone is 32 bit or 24 bit <v1.2>
Is32Zone EQU $01 ; value for Zone32Flag to indicate 32 bit
Is24Zone EQU $00 ; value for Zone32Flag to indicate 24 bit
ZoneJumpV EQU $20 ; offset to jump vector in zone header <v1.2>
JSetApplBase EQU 0 ; ( 0) jump vector offset <v1.2>
JInitApplZone EQU JSetApplBase+4 ; ( 4) jump vector offset <v1.2>
JInitZone EQU JInitApplZone+4 ; ( 8) jump vector offset <v1.2>
JGetZone EQU JInitZone+4 ; ( C) jump vector offset <v1.2>
JSetZone EQU JGetZone+4 ; (10) jump vector offset <v1.2>
JMaxBlock EQU JSetZone+4 ; (14) jump vector offset <v1.2>
JPurgeSpace EQU JMaxBlock+4 ; (18) jump vector offset <v1.2>
JCompactMem EQU JPurgeSpace+4 ; (1C) jump vector offset <v1.2>
JPurgeMem EQU JCompactMem+4 ; (20) jump vector offset <v1.2>
JFreeMem EQU JPurgeMem+4 ; (24) jump vector offset <v1.2>
JResrvMem EQU JFreeMem+4 ; (28) jump vector offset <v1.2>
JMaxMem EQU JResrvMem+4 ; (2C) jump vector offset <v1.2>
JSetGrowZone EQU JMaxMem+4 ; (30) jump vector offset <v1.2>
JSetApplLimit EQU JSetGrowZone+4 ; (34) jump vector offset <v1.2>
JStackSpace EQU JSetApplLimit+4 ; (38) jump vector offset <v1.2>
JMaxApplZone EQU JStackSpace+4 ; (3C) jump vector offset <v1.2>
JNewPtr EQU JMaxApplZone+4 ; (40) jump vector offset <v1.2>
JDisposePtr EQU JNewPtr+4 ; (44) jump vector offset <v1.2>
JGetPtrSize EQU JDisposePtr+4 ; (48) jump vector offset <v1.2>
JSetPtrSize EQU JGetPtrSize+4 ; (4C) jump vector offset <v1.2>
JPtrZone EQU JSetPtrSize+4 ; (50) jump vector offset <v1.2>
JNwHandle EQU JPtrZone+4 ; (54) jump vector offset <v1.2>
JNewEmptyHandle EQU JNwHandle+4 ; (58) jump vector offset <v1.2>
JDsposeHandle EQU JNewEmptyHandle+4 ; (5C) jump vector offset <v1.2>
JGetHandleSize EQU JDsposeHandle+4 ; (60) jump vector offset <v1.2>
JSetHandleSize EQU JGetHandleSize+4 ; (64) jump vector offset <v1.2>
JHandleZone EQU JSetHandleSize+4 ; (68) jump vector offset <v1.2>
JRecoverHandle EQU JHandleZone+4 ; (6C) jump vector offset <v1.2>
JEmptyHandle EQU JRecoverHandle+4 ; (70) jump vector offset <v1.2>
JReAllocHandle EQU JEmptyHandle+4 ; (74) jump vector offset <v1.2>
JHlock EQU JReAllocHandle+4 ; (78) jump vector offset <v1.2>
JHUnlock EQU JHlock+4 ; (7C) jump vector offset <v1.2>
JHPurge EQU JHUnlock+4 ; (80) jump vector offset <v1.2>
JHNoPurge EQU JHPurge+4 ; (84) jump vector offset <v1.2>
JHRSRC EQU JHNoPurge+4 ; (88) jump vector offset <v1.2>
JHNoRSRC EQU JHRSRC+4 ; (8C) jump vector offset <v1.2>
JHGetFlags EQU JHNoRSRC+4 ; (90) jump vector offset <v1.2>
JHSetFlags EQU JHGetFlags+4 ; (94) jump vector offset <v1.2>
JMoreMasters EQU JHSetFlags+4 ; (98) jump vector offset <v1.2>
JMoveHHi EQU JMoreMasters+4 ; (9C) jump vector offset <v1.2>