boot3/Interfaces/PInterfaces/Memory.p
Elliot Nunn 5b0f0cc134 Bring in CubeE sources
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included.

The Tools directory, containing mostly junk, is also excluded.
2017-12-26 10:02:57 +08:00

270 lines
8.0 KiB
OpenEdge ABL

{
Created: Saturday, July 27, 1991 at 9:41 PM
Memory.p
Pascal Interface to the Macintosh Libraries
Copyright Apple Computer, Inc. 1985-1992
All rights reserved
Change History (most recent first):
<10> 10/16/92 DTY Add BlockMoveData.
<9> 7/30/91 JL Updated Copyright.
<8> 3/1/91 ngk Fixed double semicolon syntax error that DSG refuses to fix.
<7> 1/27/91 LN Checked in Database generate file from DSG.
<6> 12/14/90 dba <JDR> add Translate24To32, low-level memory control routines,
and debugger support routines; also use more UNIV
<5> 11/5/90 DFH Added new names for Temporary Memory calls.
<4> 11/4/90 dba add calls and spellings that were previously only in the C .h
file: ApplicationZone, MaxBlockSys, NewEmptyHandleSys, HLockHi,
TempNewHandle, CompactMemSys, PurgeMemSys, FreeMemSys,
ReserveMem, ReserveMemSys, MaxMemSys, DisposePtr, DisposeHandle,
ReallocateHandle
<3> 10/3/90 JAL Added Inlines after extensive code review.
** 1.1 ngk 05/17/1989 Added NewHandleSys, NewPtrSys, etc interface
** 1.0 CCH 11/17/1988 Adding to EASE.
}
{$IFC UNDEFINED UsingIncludes}
{$SETC UsingIncludes := 0}
{$ENDC}
{$IFC NOT UsingIncludes}
UNIT Memory;
INTERFACE
{$ENDC}
{$IFC UNDEFINED UsingMemory}
{$SETC UsingMemory := 1}
{$I+}
{$SETC MemoryIncludes := UsingIncludes}
{$SETC UsingIncludes := 1}
{$IFC UNDEFINED UsingTypes}
{$I $$Shell(PInterfaces)Types.p}
{$ENDC}
{$SETC UsingIncludes := MemoryIncludes}
CONST
maxSize = $800000; {Max data block size is 8 megabytes}
defaultPhysicalEntryCount = 8;
{ values returned from the GetPageState function }
kPageInMemory = 0;
kPageOnDisk = 1;
kNotPaged = 2;
TYPE
Size = LONGINT; { size of a block in bytes }
THz = ^Zone;
Zone = RECORD
bkLim: Ptr;
purgePtr: Ptr;
hFstFree: Ptr;
zcbFree: LONGINT;
gzProc: ProcPtr;
moreMast: INTEGER;
flags: INTEGER;
cntRel: INTEGER;
maxRel: INTEGER;
cntNRel: INTEGER;
maxNRel: INTEGER;
cntEmpty: INTEGER;
cntHandles: INTEGER;
minCBFree: LONGINT;
purgeProc: ProcPtr;
sparePtr: Ptr;
allocPtr: Ptr;
heapData: INTEGER;
END;
MemoryBlock = RECORD
address: Ptr;
count: LONGINT;
END;
LogicalToPhysicalTable = RECORD
logical: MemoryBlock;
physical: ARRAY [0..defaultPhysicalEntryCount - 1] OF MemoryBlock;
END;
PageState = INTEGER;
StatusRegisterContents = INTEGER;
FUNCTION GetApplLimit: Ptr;
INLINE $2EB8,$0130;
FUNCTION GetZone: THz;
INLINE $A11A,$2E88;
FUNCTION SystemZone: THz;
INLINE $2EB8,$02A6;
FUNCTION ApplicZone: THz;
INLINE $2EB8,$02AA;
FUNCTION ApplicationZone: THz;
INLINE $2EB8,$02AA;
FUNCTION NewHandle(byteCount: Size): Handle;
FUNCTION NewHandleSys(byteCount: Size): Handle;
FUNCTION NewHandleClear(byteCount: Size): Handle;
FUNCTION NewHandleSysClear(byteCount: Size): Handle;
FUNCTION HandleZone(h: Handle): THz;
FUNCTION RecoverHandle(p: Ptr): Handle;
FUNCTION NewPtr(byteCount: Size): Ptr;
FUNCTION NewPtrSys(byteCount: Size): Ptr;
FUNCTION NewPtrClear(byteCount: Size): Ptr;
FUNCTION NewPtrSysClear(byteCount: Size): Ptr;
FUNCTION PtrZone(p: Ptr): THz;
FUNCTION GZSaveHnd: Handle;
INLINE $2EB8,$0328;
FUNCTION TopMem: Ptr;
INLINE $2EB8,$0108;
FUNCTION MaxBlock: LONGINT;
FUNCTION MaxBlockSys: LONGINT;
FUNCTION StackSpace: LONGINT;
FUNCTION NewEmptyHandle: Handle;
FUNCTION NewEmptyHandleSys: Handle;
PROCEDURE HLock(h: Handle);
INLINE $205F,$A029;
PROCEDURE HUnlock(h: Handle);
INLINE $205F,$A02A;
PROCEDURE HPurge(h: Handle);
INLINE $205F,$A049;
PROCEDURE HNoPurge(h: Handle);
INLINE $205F,$A04A;
PROCEDURE HLockHi(h: Handle);
INLINE $205F,$A064,$A029;
FUNCTION StripAddress(theAddress: UNIV Ptr): Ptr;
{$IFC SystemSixOrLater }
INLINE $201F,$A055,$2E80;
{$ENDC}
FUNCTION Translate24To32(addr24: UNIV Ptr): Ptr;
INLINE $201F,$A091,$2E80;
FUNCTION TempNewHandle(logicalSize: Size;VAR resultCode: OSErr): Handle;
INLINE $3F3C,$001D,$A88F;
FUNCTION TempMaxMem(VAR grow: Size): Size;
INLINE $3F3C,$0015,$A88F;
FUNCTION TempFreeMem: LONGINT;
INLINE $3F3C,$0018,$A88F;
{ Temporary Memory routines renamed, but obsolete, in System 7.0 and later. }
PROCEDURE TempHLock(h: Handle;VAR resultCode: OSErr);
INLINE $3F3C,$001E,$A88F;
PROCEDURE TempHUnlock(h: Handle;VAR resultCode: OSErr);
INLINE $3F3C,$001F,$A88F;
PROCEDURE TempDisposeHandle(h: Handle;VAR resultCode: OSErr);
INLINE $3F3C,$0020,$A88F;
FUNCTION TempTopMem: Ptr;
INLINE $3F3C,$0016,$A88F;
{ Temporary Memory routines as they were known before System 7.0. }
FUNCTION MFMaxMem(VAR grow: Size): Size;
INLINE $3F3C,$0015,$A88F;
FUNCTION MFFreeMem: LONGINT;
INLINE $3F3C,$0018,$A88F;
FUNCTION MFTempNewHandle(logicalSize: Size;VAR resultCode: OSErr): Handle;
INLINE $3F3C,$001D,$A88F;
PROCEDURE MFTempHLock(h: Handle;VAR resultCode: OSErr);
INLINE $3F3C,$001E,$A88F;
PROCEDURE MFTempHUnlock(h: Handle;VAR resultCode: OSErr);
INLINE $3F3C,$001F,$A88F;
PROCEDURE MFTempDisposHandle(h: Handle;VAR resultCode: OSErr);
INLINE $3F3C,$0020,$A88F;
FUNCTION MFTopMem: Ptr;
INLINE $3F3C,$0016,$A88F;
PROCEDURE InitApplZone;
INLINE $A02C;
PROCEDURE InitZone(pgrowZone: ProcPtr;cmoreMasters: INTEGER;limitPtr: UNIV Ptr;
startPtr: UNIV Ptr);
PROCEDURE SetZone(hz: THz);
INLINE $205F,$A01B;
FUNCTION CompactMem(cbNeeded: Size): Size;
FUNCTION CompactMemSys(cbNeeded: Size): Size;
PROCEDURE PurgeMem(cbNeeded: Size);
INLINE $201F,$A04D;
PROCEDURE PurgeMemSys(cbNeeded: Size);
INLINE $201F,$A44D;
FUNCTION FreeMem: LONGINT;
INLINE $A01C,$2E80;
FUNCTION FreeMemSys: LONGINT;
INLINE $A41C,$2E80;
PROCEDURE ResrvMem(cbNeeded: Size);
INLINE $201F,$A040;
PROCEDURE ReserveMem(cbNeeded: Size);
INLINE $201F,$A040;
PROCEDURE ReserveMemSys(cbNeeded: Size);
INLINE $201F,$A440;
FUNCTION MaxMem(VAR grow: Size): Size;
FUNCTION MaxMemSys(VAR grow: Size): Size;
PROCEDURE SetGrowZone(growZone: ProcPtr);
INLINE $205F,$A04B;
PROCEDURE SetApplLimit(zoneLimit: UNIV Ptr);
INLINE $205F,$A02D;
PROCEDURE MoveHHi(h: Handle);
INLINE $205F,$A064;
PROCEDURE DisposPtr(p: Ptr);
INLINE $205F,$A01F;
PROCEDURE DisposePtr(p: Ptr);
INLINE $205F,$A01F;
FUNCTION GetPtrSize(p: Ptr): Size;
PROCEDURE SetPtrSize(p: Ptr;newSize: Size);
PROCEDURE DisposHandle(h: Handle);
INLINE $205F,$A023;
PROCEDURE DisposeHandle(h: Handle);
INLINE $205F,$A023;
FUNCTION GetHandleSize(h: Handle): Size;
PROCEDURE SetHandleSize(h: Handle;newSize: Size);
PROCEDURE EmptyHandle(h: Handle);
INLINE $205F,$A02B;
PROCEDURE ReallocHandle(h: Handle;byteCount: Size);
PROCEDURE ReallocateHandle(h: Handle;byteCount: Size);
PROCEDURE HSetRBit(h: Handle);
INLINE $205F,$A067;
PROCEDURE HClrRBit(h: Handle);
INLINE $205F,$A068;
PROCEDURE MoreMasters;
INLINE $A036;
PROCEDURE BlockMove(srcPtr: UNIV Ptr;destPtr: UNIV Ptr;byteCount: Size);
PROCEDURE BlockMoveData(srcPtr: UNIV Ptr;destPtr: UNIV Ptr;byteCount: Size);
FUNCTION MemError: OSErr;
INLINE $3EB8,$0220;
PROCEDURE PurgeSpace(VAR total: LONGINT;VAR contig: LONGINT);
FUNCTION HGetState(h: Handle): SignedByte;
PROCEDURE HSetState(h: Handle;flags: SignedByte);
PROCEDURE SetApplBase(startPtr: UNIV Ptr);
INLINE $205F,$A057;
PROCEDURE MaxApplZone;
INLINE $A063;
FUNCTION HoldMemory(address: UNIV Ptr;count: LONGINT): OSErr;
FUNCTION UnholdMemory(address: UNIV Ptr;count: LONGINT): OSErr;
FUNCTION LockMemory(address: UNIV Ptr;count: LONGINT): OSErr;
FUNCTION LockMemoryContiguous(address: UNIV Ptr;count: LONGINT): OSErr;
FUNCTION UnlockMemory(address: UNIV Ptr;count: LONGINT): OSErr;
FUNCTION GetPhysical(VAR addresses: LogicalToPhysicalTable;VAR physicalEntryCount: LONGINT): OSErr;
FUNCTION DeferUserFn(userFunction: ProcPtr;argument: UNIV Ptr): OSErr;
FUNCTION DebuggerGetMax: LONGINT;
INLINE $7000,$A08D,$2E80;
PROCEDURE DebuggerEnter;
INLINE $7001,$A08D;
PROCEDURE DebuggerExit;
INLINE $7002,$A08D;
PROCEDURE DebuggerPoll;
INLINE $7003,$A08D;
FUNCTION GetPageState(address: UNIV Ptr): PageState;
INLINE $205F,$7004,$A08D,$3E80;
FUNCTION PageFaultFatal: BOOLEAN;
INLINE $7005,$A08D,$1E80;
FUNCTION DebuggerLockMemory(address: UNIV Ptr;count: LONGINT): OSErr;
FUNCTION DebuggerUnlockMemory(address: UNIV Ptr;count: LONGINT): OSErr;
FUNCTION EnterSupervisorMode: StatusRegisterContents;
INLINE $7008,$A08D,$3E80;
{$ENDC} { UsingMemory }
{$IFC NOT UsingIncludes}
END.
{$ENDC}