-- P5L.mesa, modified by Sweet, December 4, 1979 11:32 AM DIRECTORY AltoDefs: FROM "altodefs", CodeDefs: FROM "codedefs", Symbols: FROM "symbols", Tree: FROM "tree"; P5L: DEFINITIONS = BEGIN OPEN Symbols, CodeDefs; -- from VarUtils AdjustComponent: PROCEDURE [var: POINTER TO VarComponent, rSei: RecordSEIndex, fSei: ISEIndex, tBits: CARDINAL]; AllLoaded: PROCEDURE [r: VarIndex, junkOk: BOOLEAN ← FALSE] RETURNS [BOOLEAN]; ComponentForLex: PROCEDURE [l: Lexeme, allowFields: BOOLEAN ← FALSE] RETURNS [VarComponent]; ComponentForSE: PROCEDURE [sei: ISEIndex] RETURNS [var: VarComponent]; CopyLex: PROCEDURE [l: Lexeme] RETURNS [Lexeme]; CopyToTemp: PROCEDURE [r: VarIndex, tsei: ISEIndex ← ISENull] RETURNS [var: VarComponent, sei: ISEIndex]; CopyVarItem: PROCEDURE [r: VarIndex] RETURNS [rr: VarIndex]; EasilyLoadable: PROCEDURE [var: VarComponent, dir: MoveDirection] RETURNS [evar: VarComponent]; EasyToLoad: PROCEDURE [var: VarComponent, dir: MoveDirection] RETURNS [BOOLEAN]; FieldOfComponent: PROCEDURE [var: POINTER TO VarComponent, wd, bd, wSize, bSize: CARDINAL ← 0]; FieldOfComponentOnly: PROCEDURE [var: POINTER TO VarComponent, wd, bd, wSize, bSize: CARDINAL ← 0]; FieldOfVar: PROCEDURE [r: VarIndex, wd, bd, wSize, bSize: CARDINAL ← 0]; FieldOfVarOnly: PROCEDURE [r: VarIndex, wd, bd, wSize, bSize: CARDINAL ← 0]; GenVarItem: PROCEDURE [tag: VarTag] RETURNS [r: VarIndex]; InCode: PROCEDURE [r: VarIndex] RETURNS [BOOLEAN]; LongVarAddress: PROCEDURE [r: VarIndex] RETURNS [BOOLEAN]; ModComponent: PROCEDURE [var: POINTER TO VarComponent, wd, bd: CARDINAL ← 0]; NormalizeExp: PROCEDURE [r: VarIndex, tempsei: ISEIndex ← ISENull, codeOk: BOOLEAN ← FALSE] RETURNS [nwords: CARDINAL, long: BOOLEAN, tsei: ISEIndex]; NormalLex: PROCEDURE [nwords: CARDINAL, long, code: BOOLEAN ← FALSE] RETURNS [Lexeme]; OVarItem: PROCEDURE [var: VarComponent] RETURNS [r: VarIndex]; ReleaseLex: PROCEDURE [lex: Lexeme]; ReleaseVarItem: PROCEDURE [r: VarIndex]; ReusableCopies: PROCEDURE [r: VarIndex, dir: MoveDirection, stackOk: BOOLEAN ← TRUE] RETURNS [r1, r2: VarIndex]; TOSAddrLex: PROCEDURE [size: CARDINAL, long: BOOLEAN ← FALSE] RETURNS [bdo Lexeme]; TOSCodeAddrLex: PROCEDURE [size: CARDINAL] RETURNS [bdo Lexeme]; TOSComponent: PROCEDURE [size: CARDINAL ← 1] RETURNS [VarComponent]; TOSLex: PROCEDURE [size: CARDINAL ← 1] RETURNS [Lexeme]; VarAddressEasy: PROCEDURE [r: VarIndex] RETURNS [BOOLEAN]; VarAlignment: PROCEDURE [r: VarIndex, dir: MoveDirection] RETURNS [bd, bSize: [0..AltoDefs.wordlength), wSize: CARDINAL]; VarFinal: PROCEDURE; VarForLex: PROCEDURE [l: Lexeme] RETURNS [r: VarIndex]; VarInit: PROCEDURE; VarStackWords: PROCEDURE [r: VarIndex] RETURNS [nW: CARDINAL]; -- from VarBasics AddrComponent: PROCEDURE [var: VarComponent] RETURNS [avar: VarComponent]; AddrForVar: PROCEDURE [r: VarIndex, codeOk: BOOLEAN ← FALSE] RETURNS [avar: VarComponent]; BaseComponent: PROCEDURE [lvl: ContextLevel] RETURNS [VarComponent]; GenAdd: PROCEDURE [delta: UNSPECIFIED, long: BOOLEAN ← FALSE]; GenAnd: PROCEDURE [delta: UNSPECIFIED]; GenRFC: PROCEDURE [wd: CARDINAL, bd: [0..16), len: [1..16]]; GenShift: PROCEDURE [delta: UNSPECIFIED]; LoadAddress: PROCEDURE [r: VarIndex, codeOk: BOOLEAN ← FALSE] RETURNS [long: BOOLEAN]; LoadBoth: PROCEDURE [atC1, atC2: POINTER TO VarComponent, abelian: BOOLEAN]; LoadSum: PROCEDURE [atB, atD: POINTER TO VarComponent] RETURNS [bpSize: [1..2]]; MakeBo: PROCEDURE [r: VarIndex] RETURNS [bor: BoVarIndex]; MakeComponent: PROCEDURE [r: VarIndex, allowFields: BOOLEAN ← FALSE] RETURNS [var: VarComponent]; VarVarAssign: PROCEDURE [to, from: VarIndex, isexp: BOOLEAN] RETURNS [l: Lexeme]; Words: PROCEDURE [w: CARDINAL, b: [0..AltoDefs.wordlength)] RETURNS [CARDINAL]; -- from VarMove LoadComponent: PROCEDURE [var: VarComponent]; LoadVar: PROCEDURE [r: VarIndex]; StoreComponent: PROCEDURE [var: VarComponent]; StoreVar: PROCEDURE [r: VarIndex]; END...