file XMesaCmplr21DefsA.mesa for use with AR 359
359
XMesaCmplr21DefsA: DEFINITIONS = {
maxPagesInVM: CARDINAL = 1024;
PageNumber: TYPE = CARDINAL[0..maxPagesInVM);
PageOffset: TYPE = PageNumber;
PageCount: TYPE = PageNumber;
Interval: TYPE = RECORD [
pointer: POINTER,
count: PageCount
];
nullInterval: Interval = [pointer: NIL, count: 0];
Access: TYPE = {readWrite, readOnly};
Life: TYPE = {alive, dead};
Pathname: TYPE = MACHINE DEPENDENT RECORD [
length: CARD16,
maxlength: CARD16,
text: PACKED ARRAY [0..1024) OF CHAR];
File : TYPE = RECORD [
host: CARD32,
path: Pathname];
Window: TYPE = RECORD [
file: File,
base: PageNumber,
count: PageCount];
Map: PROCEDURE [ window: Window, usage: Usage ← unknownUsage,
class: Class ← file,
access: Access ← readWrite, life: Life ← alive, mustBeAligned: BOOLEANFALSE]
RETURNS [mapUnit: Interval];
Usage: TYPE = [0..2048);
unknownUsage: Usage = 0;
Class: TYPE = MACHINE DEPENDENT{
unknown(0), code(1), globalFrame(2), localFrame(3), zone(4), file(5), data(6),
spareA(7), spareB(8), resident(31)};
nullFile: File = [host: 0, path: nullPathname];
nullPathname: Pathname = [length: 0, maxlength: 0,
text: ALL [0C]];
ScratchMap: PROCEDURE [count: PageCount, usage: Usage ← unknownUsage, mustBeAligned: BOOLEANFALSE]
RETURNS [pointer: POINTER] = INLINE {
RETURN[
Map[window: [file: nullFile, base: NULL, count: count], usage: usage, class: data, access: readWrite, life: dead, mustBeAligned: mustBeAligned].mapUnit.pointer]};
}.