-- file SakuraUtil.Mesa
-- last modified by Satterthwaite, October 7, 1980 10:57 AM
-- last edit by Russ Atkinson, 29-May-81 15:07:23
-- last edit by Suzuki, 27-Jul-81 13:50:29
DIRECTORY
SakuraOps: TYPE USING [TableId],
IOStream: TYPE USING [Handle],
SakuraTree: TYPE USING [Link, Map, Scan],
Rope: TYPE USING [Ref];
SakuraUtil: DEFINITIONS =
BEGIN OPEN Tree: SakuraTree;
-- binary table management
TableId: TYPE = SakuraOps.TableId;
AcquireTable: PROC [SakuraOps.TableId] RETURNS [LONG POINTER];
ReleaseTable: PROC [SakuraOps.TableId];
-- compiler passes
PassIndex: TYPE = {utilities, pass1, pass2, pass3, pass3p, pass4, pass5, debug};
PrefillSymbols: PROC;
P1Unit: PROC RETURNS [BOOLEAN];
P2Unit: Tree.Map;
P3Unit: Tree.Map;
P3Postlude: PROC [expand: BOOLEAN];
P4Unit: Tree.Scan;
P5module: PROC;
-- object output
StartObjectFile: PROC [IOStream.Handle];
EndObjectFile: PROC [update: BOOLEAN];
TableOut: PROC;
NextFilePage: PROC RETURNS [CARDINAL];
StartBCD: PROC;
ReadBCDOffset: PROC RETURNS [CARDINAL];
ReadBCDIndex: PROC RETURNS [LONG CARDINAL];
AppendBCDWord: PROC [word: UNSPECIFIED];
AppendBCDWords: PROC [addr: POINTER, n: CARDINAL];
AppendBCDString: PROC [s: STRING];
UpdateBCDWords: PROC [offset: CARDINAL, addr: POINTER, n: CARDINAL];
EndBCD: PROC;
-- debugging
PrintTree: PROC [Tree.Link];
PrintBodies: PROC;
PrintSymbols: PROC;
-- printing
PutDecimal: PROC [st: IOStream.Handle, x: LONG INTEGER];
PutRope: PROC [st: IOStream.Handle, r: Rope.Ref];
PrettyPrint: PROC [Tree.Link];
-- swapping control
MakeSwappable: PROC [module: PROGRAM, pass: PassIndex];
Pass1, Pass2, Pass3, Pass3P, Pass4, Code: PROGRAM;
END.