-- ExecStorage.mesa -- Edited by Levin, September 9, 1980 5:17 PM -- Edited by Brotz, October 16, 1980 11:10 AM DIRECTORY FSPDefs, LaurelExecImpDefs, SegmentDefs, Storage, SystemDefs; ExecStorage: PROGRAM IMPORTS FSPDefs, SegmentDefs, realSystemDefs: SystemDefs EXPORTS SystemDefs, Storage, LaurelExecImpDefs = PUBLIC BEGIN -- Interface for Laurel Executive clientPages: CARDINAL; clientWords: CARDINAL; -- SystemDefs Interface for Laurel Client BCDs AllocatePages: PROCEDURE [npages: CARDINAL] RETURNS [base: POINTER] = BEGIN base _ realSystemDefs.AllocatePages[npages]; clientPages _ clientPages + npages; END; AllocateResidentPages, Pages: PROCEDURE [npages: CARDINAL] RETURNS [base: POINTER] = BEGIN base _ realSystemDefs.AllocateResidentPages[npages]; clientPages _ clientPages + npages; END; FreePages, FreeSegment, FreeWords: PROCEDURE [base: POINTER] = BEGIN clientPages _ clientPages - SegmentDefs.VMtoDataSegment[base].pages; realSystemDefs.FreePages[base]; END; AllocateSegment: PROCEDURE [nwords: CARDINAL] RETURNS [base: POINTER] = BEGIN base _ realSystemDefs.AllocateSegment[nwords]; clientPages _ clientPages + SegmentDefs.VMtoDataSegment[base].pages; END; AllocateResidentSegment, Words: PROCEDURE [nwords: CARDINAL] RETURNS [base: POINTER] = BEGIN base _ realSystemDefs.AllocateResidentSegment[nwords]; clientPages _ clientPages + SegmentDefs.VMtoDataSegment[base].pages; END; SegmentSize: PROCEDURE [base: POINTER] RETURNS [nwords: CARDINAL] = {RETURN[realSystemDefs.SegmentSize[base]]}; AllocateHeapNode, Node: PROCEDURE [nwords: CARDINAL] RETURNS [p: POINTER] = BEGIN p _ realSystemDefs.AllocateHeapNode[nwords]; clientWords _ clientWords + FSPDefs.NodeSize[p]; END; FreeHeapNode, Free: PROCEDURE [p: POINTER] = BEGIN clientWords _ clientWords - FSPDefs.NodeSize[p]; realSystemDefs.FreeHeapNode[p]; END; AllocateHeapString, String: PROCEDURE [nchars: CARDINAL] RETURNS [STRING] = BEGIN s: STRING _ realSystemDefs.AllocateHeapString[nchars]; clientWords _ clientWords + FSPDefs.NodeSize[s]; RETURN[s] END; FreeHeapString, FreeString: PROCEDURE [s: STRING] = BEGIN clientWords _ clientWords - FSPDefs.NodeSize[s]; realSystemDefs.FreeHeapString[s]; END; CopyString: PROCEDURE [s: STRING, longer: CARDINAL _ 0] RETURNS [STRING] = BEGIN newS: STRING _ realSystemDefs.CopyString[s, longer]; IF newS ~= NIL THEN clientWords _ clientWords + FSPDefs.NodeSize[newS]; RETURN[newS] END; ExpandString: PROCEDURE [s: POINTER TO STRING, longer: CARDINAL] = BEGIN IF s^ ~= NIL THEN clientWords _ clientWords - FSPDefs.NodeSize[s^]; realSystemDefs.ExpandString[s, longer]; clientWords _ clientWords + FSPDefs.NodeSize[s^]; END; HeapZone: PROCEDURE RETURNS [FSPDefs.ZonePointer] = {RETURN[realSystemDefs.HeapZone[]]}; PruneHeap, Prune: PROCEDURE RETURNS [BOOLEAN] = {RETURN[realSystemDefs.PruneHeap[]]}; Even: PROCEDURE [u: UNSPECIFIED] RETURNS [UNSPECIFIED] = {RETURN[realSystemDefs.Even[u]]}; Quad: PROCEDURE [u: UNSPECIFIED] RETURNS [UNSPECIFIED] = {RETURN[realSystemDefs.Quad[u]]}; END. -- of ExecStorage --z20461(529)\f1