ORCA-Pascal/Tool.Interface/MemoryMgr.pas

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.