mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-26 16:49:18 +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>
|
|||
|
|
|||
|
|
|||
|
|