126 lines
4.1 KiB
ObjectPascal
126 lines
4.1 KiB
ObjectPascal
{$keep 'MemoryMgr'}
|
|
unit MemoryMgr;
|
|
interface
|
|
|
|
{********************************************************
|
|
*
|
|
* Memory Manager Interface File
|
|
*
|
|
* Other USES Files Needed: Common
|
|
*
|
|
* Other Tool Sets Needed: Tool Locator
|
|
*
|
|
* Copyright 1987-1992
|
|
* By the Byte Works, Inc.
|
|
* All Rights Reserved
|
|
*
|
|
*********************************************************}
|
|
|
|
uses
|
|
Common;
|
|
|
|
const
|
|
attrNoPurge = $0000; (* not purgeable *)
|
|
attrBank = $0001; (* fixed bank *)
|
|
attrAddr = $0002; (* fixed address *)
|
|
attrPage = $0004; (* page aligned *)
|
|
attrNoSpec = $0008; (* may not use special memory *)
|
|
attrNoCross = $0010; (* may not cross bank boundary *)
|
|
attrPurge1 = $0100; (* purge level 1 *)
|
|
attrPurge2 = $0200; (* purge level 2 *)
|
|
attrPurge3 = $0300; (* purge level 3 *)
|
|
attrPurge = $0300; (* test or set both purge bits *)
|
|
attrHandle = $1000; (* block of handles - reserved for MM *)
|
|
attrSystem = $2000; (* system handle - reserved for MM *)
|
|
attrFixed = $4000; (* fixed block *)
|
|
attrLocked = $8000; (* locked block *)
|
|
|
|
type
|
|
OOMHeader = record
|
|
reserved: longint;
|
|
version: integer; (* must be zero *)
|
|
signature: integer; (* set to $A55A *)
|
|
end;
|
|
|
|
|
|
procedure MMBootInit; tool ($02, $01); (* WARNING: an application should
|
|
NEVER make this call *)
|
|
|
|
function MMStartUp: integer; tool ($02, $02);
|
|
|
|
procedure MMShutDown (userID: integer); tool ($02, $03);
|
|
|
|
function MMVersion: integer; tool ($02, $04);
|
|
|
|
procedure MMReset; tool ($02, $05); (* WARNING: an application should
|
|
NEVER make this call *)
|
|
|
|
function MMStatus: boolean; tool ($02, $06);
|
|
|
|
procedure AddToOOMQueue (var headerPtr: OOMHeader); tool ($02, $0C);
|
|
|
|
procedure BlockMove (sourcPtr, destPtr: ptr; count: longint); tool ($02, $2B);
|
|
|
|
procedure CheckHandle (theHandle: handle); tool ($02, $1E);
|
|
|
|
procedure CompactMem; tool ($02, $1F);
|
|
|
|
procedure DisposeAll (userID: integer); tool ($02, $11);
|
|
|
|
procedure DisposeHandle (theHandle: handle); tool ($02, $10);
|
|
|
|
function FindHandle (memLocation: ptr): handle; tool ($02, $1A);
|
|
|
|
function FreeMem: longint; tool ($02, $1B);
|
|
|
|
function GetHandleSize (theHandle: handle): longint; tool ($02, $18);
|
|
|
|
procedure HandToHand (sourceHandle, destHandle: handle; count: longint);
|
|
tool ($02, $2A);
|
|
|
|
procedure HandToPtr (sourceHandle: handle; destPtr: ptr; count: longint);
|
|
tool ($02, $29);
|
|
|
|
procedure HLock (theHandle: handle); tool ($02, $20);
|
|
|
|
procedure HLockAll (userID: integer); tool ($02, $21);
|
|
|
|
procedure HUnLock (theHandle: handle); tool ($02, $22);
|
|
|
|
procedure HUnLockAll (userID: integer); tool ($02, $23);
|
|
|
|
function MaxBlock: longint; tool ($02, $1C);
|
|
|
|
function NewHandle (blockSize: longint; userID, memAttributes: integer;
|
|
memLocation: univ ptr): handle; tool ($02, $09);
|
|
|
|
procedure PtrToHand (srcPtr: ptr; theHandle: handle; count: longint);
|
|
tool ($02, $28);
|
|
|
|
procedure PurgeAll (userID: integer); tool ($02, $13);
|
|
|
|
procedure PurgeHandle (theHandle: handle); tool ($02, $12);
|
|
|
|
function RealFreeMem: longint; tool ($02, $2F);
|
|
|
|
procedure ReAllocHandle (blockSize: longint; userID, memAttributes: integer;
|
|
memLocation: ptr; theHandle: handle); tool ($02, $0A);
|
|
|
|
procedure RemoveFromOOMQueue (var headerPtr: OOMHeader); tool ($02, $0D);
|
|
|
|
procedure RestoreHandle (theHandle: handle); tool ($02, $0B);
|
|
|
|
function SetHandleID (newID: integer; theHandle: handle): integer;
|
|
tool ($02, $30);
|
|
|
|
procedure SetHandleSize (newSize: longint; theHandle: handle); tool ($02, $19);
|
|
|
|
procedure SetPurge (purgeLevel: integer; theHandle: handle); tool ($02, $24);
|
|
|
|
procedure SetPurgeAll (purgeLevel, userID: integer); tool ($02, $25);
|
|
|
|
function TotalMem: longint; tool ($02, $1D);
|
|
|
|
implementation
|
|
end.
|