MachineParms: DEFINITIONS = { BitOrder: TYPE = {msBit, lsBit}; WordOrder: TYPE = {msWord, lsWord}; bitOrder: BitOrder = msBit; wordOrder: WordOrder = msWord; bitsPerAU: NAT = 32; -- AU = "addressing unit" logBitsPerAU: NAT = 5; bitsPerByte: NAT = 8; maxByte: NAT = 0FFh; bitsPerChar: NAT = 8; maxChar: NAT = 0FFh; logBitsPerChar: NAT = BITS[[0..bitsPerChar)]; newLineChar: CHAR = 015C; bitsPerWord: NAT = 32; -- bits per word (native arithmetic) maxWord: CARD = 0FFFFFFFFh; logBitsPerWord: NAT = 5; bitsPerLongWord: NAT = 32; maxLongWord: CARD = 0FFFFFFFFh; logBitsPerLongWord: NAT = 5; bitsPerReal: NAT = 32; bitsPerPtr: NAT = 32; bitsPerLongPtr: NAT = 32; bitsPerPort: NAT = 2*bitsPerWord; -- obsolete! bitsPerProc: NAT = 32; bitsPerProcess: NAT = wordsPerProcess*bitsPerWord; bitsPerProgram: NAT = bitsPerWord; bitsPerRef: NAT = 32; bitsPerSignal: NAT = bitsPerProc; wordsPerProcess: NAT = 1; processNil: ARRAY [0..wordsPerProcess) OF CARD32 = ALL[0]; wordsPerCondVar: NAT = 4; bitsPerCondVar: NAT = wordsPerCondVar*bitsPerWord; condVarInit: ARRAY [0..wordsPerCondVar) OF CARD32 = ALL[0]; wordsPerMonLock: NAT = 3; bitsPerMonLock: NAT = wordsPerMonLock*bitsPerWord; monLockInit: ARRAY [0..wordsPerMonLock) OF CARD32 = ALL[0]; bitsPerStringBound: NAT = 16; bitsPerLink: NAT = bitsPerPtr; fastBytes: BOOL = FALSE; packedFields: BOOL = TRUE; PackedBitCount: TYPE = [1..bitsPerLongWord]; packedFieldSize: ARRAY PackedBitCount OF NAT = [ 01, 02, 04, 04, 08, 08, 08, 08, 16, 16, 16, 16, 16, 16, 16, 16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32]; Alignments: ARRAY AlignmentIndex OF NAT = [32]; AlignmentIndex: TYPE = [0..0]; }. ξ DragonParms.mesa Copyright Σ 1986, 1987, 1991 by Xerox Corporation. All rights reserved. Russ Atkinson (RRA) January 29, 1988 2:53:56 pm PST These definitions cover the Xerox Dragon architecture. msBit => bit N is more significant than bit N+1 in a word (PrincOps, Dragon, Motorola 680x0, IBM 360, Sparc) lsBit => bit N+1 is more significant than bit N in a word (PDP-11, VAX, Intel 80x86) msWord => word N is more significant than word N+1 in multi-word arithmetic lsWord => word N+1 is more significant than word N in multi-word arithmetic For BITS[REAL] on the target. For pointers into local and global frames. For all other pointers. StringBody has fields length & maxlength which must be unsigned[bitsPerStringBound]. STRING = POINTER TO StringBody. TEXT has fields length & maxlength which must be of type [0..2**bitsPerStringBound-1), and the fields must occupy bitsPerStringBound bits each. This length is used for imports/exports links. TRUE iff there is fast random access to bytes Κ–(cedarcode) style•NewlineDelimiter ™codešœ™Kšœ Οeœ=™HK™3—K˜šΟn œΟk œ˜K˜K™6K™šœ Ÿœ˜ šœ9™9K™2—šœ9™9K™—K™—šœ Ÿœ˜#KšœK™KKšœK™KK™—˜K˜—šœ˜K˜—šœ ŸœΟc˜.KšœŸœ˜—K˜šœ Ÿœ˜Kšœ Ÿœ˜—šœ Ÿœ˜Kšœ Ÿœ˜KšœŸœŸœ˜-K˜Kšœ Ÿœ˜—K˜šœ Ÿœ $˜;Kšœ Ÿœ˜KšœŸœ˜K˜—šœŸœ˜Kšœ Ÿœ˜KšœŸœ˜K˜—–1.5 in tabStopsšœ Ÿœ˜K–1.5 in tabStopsšœŸœŸœ™—K–1.5 in tabStops˜–1.5 in tabStopsšœ Ÿœ˜K–1.5 in tabStops™*—–1.5 in tabStopsšœŸœ˜K–1.5 in tabStops™—K–1.5 in tabStops˜K–1.5 in tabStopsšœ Ÿœ  ˜/K–1.5 in tabStopsšœ Ÿœ˜K–1.5 in tabStopsšœŸœ˜2K–1.5 in tabStopsšœŸœ˜"K–1.5 in tabStopsšœ Ÿœ˜K–1.5 in tabStopsšœŸœ˜!K˜–1.5 in tabStopsšœŸœ˜K–1.5 in tabStopsš œ ŸœŸœŸœŸœ˜:K–1.5 in tabStops˜—K–1.5 in tabStopsšœŸœ˜–1.5 in tabStopsšœŸœ˜2K–1.5 in tabStopsš œ ŸœŸœŸœŸœ˜;—K–1.5 in tabStops˜K–1.5 in tabStopsšœŸœ˜–1.5 in tabStopsšœŸœ˜2K–1.5 in tabStopsš œ ŸœŸœŸœŸœ˜;—K–1.5 in tabStops˜šœŸœ˜Kšœ7Οzœ6™uKšœ™K˜—šœ Ÿœ˜Kšœ.™.K˜—šœ ŸœŸœ˜K™-K™—KšœŸœŸœ˜KšœŸœ˜,šœŸœŸœŸœ˜0Kšœ˜Kšœ˜Kšœ˜Kšœ ˜ —K˜šž œŸœŸœŸœ˜/KšœŸœ ˜K˜—Kšœ˜K˜——…—„‘