mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-25 09:30:50 +00:00
188 lines
7.3 KiB
Plaintext
188 lines
7.3 KiB
Plaintext
;
|
||
; 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 Don’t 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>
|
||
|
||
|
||
|