2017-10-21 23:40:19 +00:00
|
|
|
/********************************************
|
|
|
|
*
|
|
|
|
* Memory Manager
|
|
|
|
*
|
|
|
|
* Copyright Apple Computer, Inc.1986-91
|
|
|
|
* All Rights Reserved
|
|
|
|
*
|
|
|
|
* Copyright 1992, Byte Works, Inc.
|
|
|
|
*
|
|
|
|
********************************************/
|
|
|
|
|
|
|
|
#ifndef __TYPES__
|
|
|
|
#include <TYPES.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef __MEMORY__
|
|
|
|
#define __MEMORY__
|
|
|
|
|
|
|
|
/* Error Codes */
|
|
|
|
#define memErr 0x0201 /* unable to allocate block */
|
|
|
|
#define emptyErr 0x0202 /* illegal operation, empty handle */
|
|
|
|
#define notEmptyErr 0x0203 /* an empty handle was expected for this operation */
|
|
|
|
#define lockErr 0x0204 /* illegal operation on a locked block */
|
|
|
|
#define purgeErr 0x0205 /* attempt to purge an unpurgable block */
|
|
|
|
#define handleErr 0x0206 /* an invalid handle was given */
|
|
|
|
#define idErr 0x0207 /* an invalid owner ID was given */
|
|
|
|
#define attrErr 0x0208 /* operation illegal on block with given attributes */
|
|
|
|
|
|
|
|
/* Handle Attribute Bits */
|
|
|
|
#define attrNoPurge 0x0000 /* Not purgeable */
|
|
|
|
#define attrBank 0x0001 /* fixed bank */
|
|
|
|
#define attrAddr 0x0002 /* fixed address */
|
|
|
|
#define attrPage 0x0004 /* page aligned */
|
|
|
|
#define attrNoSpec 0x0008 /* may not use special memory */
|
|
|
|
#define attrNoCross 0x0010 /* may not cross banks */
|
|
|
|
#define attrPurge1 0x0100 /* Purge level 1 */
|
|
|
|
#define attrPurge2 0x0200 /* Purge level 2 */
|
|
|
|
#define attrPurge3 0x0300 /* Purge level 3 */
|
|
|
|
#define attrPurge 0x0300 /* test or set both purge bits */
|
|
|
|
#define attrHandle 0x1000 /* block of master pointers */
|
|
|
|
#define attrSystem 0x2000 /* system handle */
|
|
|
|
#define attrFixed 0x4000 /* not movable */
|
|
|
|
#define attrLocked 0x8000 /* locked */
|
|
|
|
|
|
|
|
extern pascal void MMBootInit(void) inline(0x0102,dispatcher);
|
|
|
|
extern pascal Word MMStartUp(void) inline(0x0202,dispatcher);
|
|
|
|
extern pascal void MMShutDown(Word) inline(0x0302,dispatcher);
|
|
|
|
extern pascal Word MMVersion(void) inline(0x0402,dispatcher);
|
|
|
|
extern pascal void MMReset(void) inline(0x0502,dispatcher);
|
|
|
|
extern pascal Boolean MMStatus(void) inline(0x0602,dispatcher);
|
|
|
|
extern pascal void BlockMove(Pointer, Pointer, LongWord) inline(0x2B02,dispatcher);
|
|
|
|
extern pascal void CheckHandle(Handle) inline(0x1E02,dispatcher);
|
|
|
|
extern pascal void CompactMem(void) inline(0x1F02,dispatcher);
|
|
|
|
extern pascal void DisposeAll(Word) inline(0x1102,dispatcher);
|
|
|
|
extern pascal void DisposeHandle(Handle) inline(0x1002,dispatcher);
|
|
|
|
extern pascal Handle FindHandle(Pointer) inline(0x1A02,dispatcher);
|
|
|
|
extern pascal LongWord FreeMem(void) inline(0x1B02,dispatcher);
|
|
|
|
extern pascal LongWord GetHandleSize(Handle) inline(0x1802,dispatcher);
|
|
|
|
extern pascal void HandToHand(Handle, Handle, LongWord) inline(0x2A02,dispatcher);
|
|
|
|
extern pascal void HandToPtr(Handle, Pointer, LongWord) inline(0x2902,dispatcher);
|
|
|
|
extern pascal void HLock(Handle) inline(0x2002,dispatcher);
|
|
|
|
extern pascal void HLockAll(Word) inline(0x2102,dispatcher);
|
|
|
|
extern pascal void HUnlock(Handle) inline(0x2202,dispatcher);
|
|
|
|
extern pascal void HUnlockAll(Word) inline(0x2302,dispatcher);
|
|
|
|
extern pascal LongWord MaxBlock(void) inline(0x1C02,dispatcher);
|
|
|
|
extern pascal Handle NewHandle(LongWord, Word, Word, Pointer) inline(0x0902,dispatcher);
|
|
|
|
extern pascal void PtrToHand(Pointer, Handle, LongWord) inline(0x2802,dispatcher);
|
|
|
|
extern pascal void PurgeAll(Word) inline(0x1302,dispatcher);
|
|
|
|
extern pascal void PurgeHandle(Handle) inline(0x1202,dispatcher);
|
|
|
|
extern pascal void ReAllocHandle(LongWord, Word, Word, Pointer, Handle) inline(0x0A02,dispatcher);
|
|
|
|
extern pascal void RestoreHandle(Handle) inline(0x0B02,dispatcher);
|
|
|
|
extern pascal void SetHandleSize(LongWord, Handle) inline(0x1902,dispatcher);
|
|
|
|
extern pascal void SetPurge(Word, Handle) inline(0x2402,dispatcher);
|
|
|
|
extern pascal void SetPurgeAll(Word, Word) inline(0x2502,dispatcher);
|
|
|
|
extern pascal LongWord TotalMem(void) inline(0x1D02,dispatcher);
|
|
|
|
|
|
|
|
extern pascal void AddToOOMQueue(Pointer) inline(0x0C02,dispatcher);
|
|
|
|
extern pascal LongWord RealFreeMem(void) inline(0x2F02,dispatcher);
|
|
|
|
extern pascal void RemoveFromOOMQueue(Pointer) inline(0x0D02,dispatcher);
|
|
|
|
|
|
|
|
extern pascal Word SetHandleID(Word, Handle) inline(0x3002,dispatcher);
|
|
|
|
|
|
|
|
#endif
|