-- file: PackCode.mesa
-- Edited by Sweet, 27-Jan-81 13:31:52
-- Edited by Lewis, October 20, 1980 3:14 PM
-- Edited by Levin, September 8, 1982 4:34 pm
DIRECTORY
PackageSymbols USING [WordIndex],
PieceTable USING [PieceIndex],
Segments USING [FHandle];
PackCode: DEFINITIONS =
BEGIN
Address: TYPE = [0..77777B]; -- max of 32K
WordIndex: TYPE = PackageSymbols.WordIndex;
NullWordIndex: WordIndex = LAST[WordIndex];
SeenModuleRecord: TYPE = RECORD [
seen: BOOLEAN ← FALSE,
newOffset: Address ← NULL, -- of entry vector within segment
newPiece: PieceTable.PieceIndex ← NULL, -- of beginning of vector
oldCodeFile: Segments.FHandle ← NULL,
oldCodePosition: LONG CARDINAL ← NULL,
newConstants: LONG POINTER ← NIL]; -- to new constant values
PackError: SIGNAL [reason: Problem];
Problem: TYPE = {InvalidCodeOffset, SegmentTooBig, StrangeJI, nonZeroBase};
-- implemented in PackCodeImpl
ComputeCodePlacement: PUBLIC PROC;
WriteBcdToFile: PUBLIC PROC;
WriteCodeToBcdFile: PUBLIC PROC;
-- implemented in PackagerBcdTabDriver
InitBcdTab: PROC;
FinalizeBcdTab: PROC;
END.