-- TestCompiler.model
-- last edited by Satterthwaite, August 10, 1983 10:31 am

LET @OSBasics.modelBcd IN
LET [
Feedback: TYPE~@Feedback.bcd[],
IO: TYPE~@IO.bcd[],
KernelFile: TYPE~@KernelFile.bcd[],
ProcessorFace: TYPE~@ProcessorFace.bcd[],
TemporarySpecialExecOps: TYPE~@TemporarySpecialExecOps.bcd[]
] IN
LAMBDA [
 DirectoryImpl: Directory,
ExecImpl: Exec,
FileImpl: File,
FileStreamImpl: FileStream,
HeapImpl: Heap,
InlineImpl: Inline,
IOImpl: IO,
KernelFileImpl: KernelFile,
LongStringImpl: LongString,
ProcessorFaceImpl: ProcessorFace,
RuntimeImpl: Runtime,
SpaceImpl: Space,
StreamImpl: Stream,
StringImpl: String,
TimeImpl: Time,
TTYImpl: TTY,
VolumeImpl: Volume
] => [] IN
REC [

&options: STRING~"j-b-n-cs";

-- these were compiled with a different compiler version; don't recompile now
--Strings: TYPE~@LongStrings.mesa!2579451954*[]*[];
Strings: TYPE~@Strings.bcd!424b22933b34[--LongStringImpl--];
StringsImpl: Strings~NIL;
--Table: TYPE~@Table.mesa!2577115106*["j-b-n-cs"]*[];
Table: TYPE~@Table.bcd!636777ceaa73[];
--BcdDefs: TYPE~@BcdDefs.mesa!2565550795*[]*[];
BcdDefs: TYPE~@BcdDefs.bcd!d3001303ab9e[];
--BcdOps: TYPE~@BcdOps.mesa!2563405009*[]*[];
BcdOps: TYPE~@BcdOps.bcd!99cd6a18f9fd[];

FileSegment: TYPE~@FileSegment.mesa!2550689766*[]*[];
Symbols: TYPE~@Symbols.mesa!2591895789*[]*[];
Literals: TYPE~@Literals.mesa!2591823743*[]*[];
Tree: TYPE~@Tree.mesa!2591824100*[]*[];
SymbolSegment: TYPE~@SymbolSegment.mesa!2591823663*[]*[];
PackageSymbols: TYPE~@PackageSymbols.mesa!2513695236*[]*[];
Alloc: TYPE~@Alloc.mesa!2585849506*[]*[];
SymbolOps: TYPE~@SymbolOps.mesa!2591827562*[]*[];
RCMap: TYPE~@RCMap.mesa!2542132963*[]*[];
RTBcd: TYPE~@RTBcd.mesa!2562263325*[]*[];
LiteralOps: TYPE~@LiteralOps.mesa!2591889369*[]*[];
TreeOps: TYPE~@ProtoTreeOps.mesa!2588520733*[]*[];
SymLiteralOps: TYPE~@SymLiteralOps.mesa!2596729968*[]*[];
OSMiscOps: TYPE~@OSMiscOps.mesa!2585846758*[]*[];
OSMiscOpsImpl: OSMiscOps~@OSMiscOpsImpl.mesa!2585847230*[]*[];
CharIO: TYPE~@CharIO.mesa!2585844909*[]*[];
CharIOImpl: CharIO~@CharIOImpl.mesa!2585845746*[]*[];
Real: TYPE~@IeeeFloat.mesa!2569172539*[]*[];
RealImpl: Real~@IeeePack.mesa!2569172695*[]*[];
AllocImpl: Alloc~@AllocImpl.mesa!2585851003*[]*[];

[SymbolPack: TYPE, SymbolPackImplA: SymbolPack, SymbolOpsImpl1: SymbolOps]~
 @SymbolPack.mesa!2591827548*[]*[];
SymbolTable: TYPE~@SymbolTable.mesa!2568557625*[]*[];
SymbolOpsImpl: SymbolOps~
SymbolOpsImpl1 + @SymbolPackExt.mesa!2591828083*[]*[own~SymbolPackImplA];
SymbolTableImpl: SymbolTable~REC [
[SymbolPack: TYPE, SymbolPackImplB: SymbolPack]~@SymbolPack.mesa!2591827548*[]*[];
SymbolTableImpl: SymbolTable~@SymbolCache.mesa!2591914617*[]*[
initial~SymbolPackImplB]
].SymbolTableImpl;

TreeOpsImpl: TreeOps~@TreePack.mesa!2588521035*[]*[];
LiteralOpsImpl: LiteralOps~@LiteralPack.mesa!2591892424*[]*[];

Types: TYPE~@Types.mesa!2557178921*[]*[];
TypesImpl: Types~@TypePack.mesa!2591830311*[]*[];
FileParms: TYPE~@FileParms.mesa!2563230620*[]*[];
Copier: TYPE~@Copier.mesa!2591889584*[]*[];
CopierImpl: Copier~
 @SymbolCopier.mesa!2599061757*[]*[ownSymbols~SymbolPackImplA] +
 @FilePack.mesa!2591892428*[]*[own~SymbolPackImplA];
[ComData: TYPE, dataPtr: ComData]~@ComData.mesa!2601305731*[]*[];
SymLiteralOpsImpl: SymLiteralOps~@SymLiteralPack.mesa!2596742933*[]*[];
CompilerOps: TYPE~@CompilerOps.mesa!2601306490*[]*[];
CompilerUtil: TYPE~@CompilerUtil.mesa!2588518198*[]*[];
Log: TYPE~@Log.mesa!2591889518*[]*[];
ErrorTable: TYPE~@ErrorTable.mesa!2550173109*[]*[];
LogImpl: Log~@LogPack.mesa!2591831374*[]*[];

Pass1: CompilerUtil ~ REC [
 ParseTable: TYPE~@ParseTable.mesa!2598192502*[]*[];
 P1: TYPE~@P1.mesa!2591887183*[]*[];
 [Control: CompilerUtil, Driver: P1]~@Pass1.mesa!2591887280*[]*[];
 Scanner: P1~@Scanner.mesa!2598807614*[]*[];
 Parser: P1~@ProtoParser.mesa!2588287864*[]*[];
 TreeBuilder: P1~@Pass1T.mesa!2598192460*[]*[];
 P1Impl: P1~Driver+Scanner+Parser+TreeBuilder].Control;

Pass2: CompilerUtil~@Pass2.mesa!2592239378*[]*[];

Pass3: CompilerUtil ~ REC [
 A3: TYPE~@A3.mesa!2594674509*[]*[];
 P3: TYPE~@P3.mesa!2585847379*[]*[];
 P3S: TYPE~@P3S.mesa!2585847462*[]*[];
 A3Impl: A3~
  @Attr3a.mesa!2594675060*[]*[] + @Attr3b.mesa!2588522281*[]*[];
 [Pass3: TYPE, passPtr: Pass3, Control: CompilerUtil]~@Pass3.mesa!2596730423*[]*[];
 Pass3B: P3~@Pass3B.mesa!2591830809*[]*[];
 Pass3D: P3~@Pass3D.mesa!2598538635*[]*[];
 Pass3I: P3~@Pass3I.mesa!2603838022*[]*[];
 Pass3M: P3~@Pass3M.mesa!2598884473*[]*[];
 [Pass3S: P3,P3SImpl1: P3S]~@Pass3S.mesa!2590691423*[]*[];
 Pass3V: P3~@Pass3V.mesa!2593552472*[]*[];
 [Pass3Xa: P3,P3SImpl2: P3S]~@Pass3Xa.mesa!2594674364*[]*[];
 [Pass3Xb: P3,P3SImpl3: P3S]~@Pass3Xb.mesa!2593552410*[]*[];
 Pass3Xc: P3~@Pass3Xc.mesa!2585778528*[]*[];
 P3Impl: P3~Pass3B+Pass3D+Pass3I+Pass3M+Pass3S+Pass3V+Pass3Xa+Pass3Xb+Pass3Xc;
 P3SImpl: P3S~P3SImpl1+P3SImpl2+P3SImpl3].Control;

Pass3P: CompilerUtil~@Pass3P.mesa!2602949868*[]*[];

Pass4: CompilerUtil ~ REC [
 P4: TYPE~@P4.mesa!2603999609*[]*[];
 [Pass4: TYPE, passPtr: Pass4, Control: CompilerUtil]~@Pass4.mesa!2582484186*[]*[];
 P4Impl: P4~
  @Pass4B.mesa!2601306169*[]*[] +
  @Pass4D.mesa!2601495131*[]*[] +
  @Pass4L.mesa!2592259771*[]*[] +
  @Pass4S.mesa!2598561226*[]*[] +
  @Pass4Ops.mesa!2598561397*[]*[] +
  @Pass4Xa.mesa!2603999452*[]*[] +
  @Pass4Xb.mesa!2603999678*[]*[] +
  @Pass4Xc.mesa!2600959998*[]*[];
 ReplOps: TYPE~@ReplOps.mesa!2582486178*[]*[];
 ReplOpsImpl: ReplOps~@ReplPack.mesa!2591830934*[]*[]
 ].Control;

Pass5: CompilerUtil ~ REC [
MPtr: ComData~dataPtr;

-- architecture definitions
 Mopcodes: TYPE~@Mopcodes.bcd!636766e29fc3[];
 MiscAlpha: TYPE~@MiscAlpha.bcd!6365802eaa5f[];
 SDDefs: TYPE~@SDDefs.bcd!63643b269e9f[];
 RTSD: TYPE~@RTSD.mesa!2569873867*[]*[];

 CodeDefs: TYPE~@CodeDefs.mesa!2584297921*[]*[];
 P5: TYPE~@P5.mesa!2584400782*[]*[];
 P5L: TYPE~@P5L.mesa!2569781625*[]*[];
 P5S: TYPE~@P5S.mesa!2556124833*[]*[];
 P5U: TYPE~@P5U.mesa!2584298094*[]*[];
 Stack: TYPE~@Stack.mesa!2582582028*[]*[];
 Counting: TYPE~@Counting.mesa!2590511737*[]*[];
 FOpCodes: TYPE~@FOpCodes.mesa!2569173585*[]*[];
 OpCodeParams: TYPE~@OpCodeParams.mesa!2533681227*[]*[];
 OpTableDefs: TYPE~@OpTableDefs.mesa!2582580330*[]*[];
 [Code: TYPE, CPtr: Code, Control: CompilerUtil]~@Code.mesa!2582580523*[]*[];
 P5UImpl: P5U~@CgenUtil.mesa!2588523021*[]*[];
 [CodeDefsImpl2: CodeDefs, P5Impl1: P5]~@Temp.mesa!2582583348*[]*[];
 [VarUtils: P5L, CodeDefsImpl3: CodeDefs]~@VarUtils.mesa!2582581665*[]*[];
 [VarBasics: P5L, CodeDefsImpl4: CodeDefs]~@VarBasics.mesa!2588523156*[]*[];
 [VarMove: P5L, CodeDefsImpl5: CodeDefs]~@VarMove.mesa!2582583377*[]*[];
 P5LImpl: P5L~VarBasics+VarMove+VarUtils;
 [P5Impl2: P5, P5SImpl1: P5S]~@Driver.mesa!2582581951*[]*[];
 OpTableDefsImpl: OpTableDefs~@OpTable.mesa!2598476783*[]*[];
 P5Impl3: P5~@FOpTable.mesa!2582582203*[]*[];
 [CodeDefsImpl7: CodeDefs, P5SImpl2: P5S]~@Address.mesa!2584481069*[]*[];
 StackImpl: Stack~@StackImpl.mesa!2591648263*[]*[LCPtr~CPtr];
 [CodeDefsImpl9: CodeDefs, P5Impl4: P5, P5SImpl3: P5S]~@Flow.mesa!2588523288*[]*[];
 [CodeDefsImpl10: CodeDefs, P5Impl5: P5, P5SImpl4: P5S]~@Calls.mesa!2594568816*[]*[];
 [CodeDefsImpl11: CodeDefs, P5Impl6: P5, P5SImpl5: P5S]~@Store.mesa!2584401424*[]*[];
 [CountingImpl: Counting,CodeDefsImpl12: CodeDefs]~@CountingImpl.mesa!2597694608*
  []*[];
 [CodeDefsImpl13: CodeDefs,P5Impl7: P5]~@Constructor.mesa!2598459180*[]*[];
 [CodeDefsImpl14: CodeDefs,P5Impl8: P5]~@Expression.mesa!2603054489*[]*[];
 [CodeDefsImpl15: CodeDefs,P5Impl9: P5]~@FlowExpression.mesa!2582582187*[]*[];
 [CodeDefsImpl16: CodeDefs,P5Impl10: P5]~@Statement.mesa!2588523795*[]*[];
 [CodeDefsImpl17: CodeDefs,P5Impl11: P5]~@Selection.mesa!2588266494*[]*[];
 [CodeDefsImpl18: CodeDefs,P5Impl12: P5]~@OutCode.mesa!2588525533*[]*[];
 Final ~ REC [
  P5F: TYPE~@P5F.mesa!2581270869*[]*[];
  PeepholeDefs: TYPE~@PeepholeDefs.mesa!2581273018*[]*[];
  Peephole ~ REC [
  [CodeDefsImplP: CodeDefs,P5ImplQ: P5, PeepholeQ: PeepholeDefs]~
  @PeepholeQ.mesa!2582582246*[]*[];
  [P5ImplU: P5, PeepholeU: PeepholeDefs]~@PeepholeU.mesa!2582585920*[]*[];
  PeepholeZ: PeepholeDefs~@PeepholeZ.mesa!2582586072*[]*[];
  PeepholeDefsImpl: PeepholeDefs~PeepholeQ+PeepholeU+PeepholeZ;
  P5ImplP: P5~P5ImplQ+P5ImplU];
  PeepholeDefsImpl: PeepholeDefs~Peephole.PeepholeDefsImpl;
  [CodeDefsImplF0: CodeDefs, DJumps: P5F]~@DJumps.mesa!2582581938*[]*[];
  [CodeDefsImplF1: CodeDefs, CrossJump: P5F]~@CrossJump.mesa!2582580643*[]*[];
  [CodeDefsImplF2: CodeDefs,P5Impl13: P5, Final: P5F]~@Final.mesa!2582581988*[]*[];
  P5FImpl: P5F~DJumps+CrossJump+Final;
  CodeDefsImplF: CodeDefs~
  Peephole.CodeDefsImplP+CodeDefsImplF0+CodeDefsImplF1+CodeDefsImplF2;
  P5ImplF: P5~Peephole.P5ImplP+P5Impl13];
 CodeDefsImpl: CodeDefs~
  CodeDefsImpl2+CodeDefsImpl3+CodeDefsImpl4+CodeDefsImpl5+CodeDefsImpl7+
  CodeDefsImpl9+CodeDefsImpl10+CodeDefsImpl11+CodeDefsImpl12+CodeDefsImpl13+
  CodeDefsImpl14+CodeDefsImpl15+CodeDefsImpl16+CodeDefsImpl17+CodeDefsImpl18+
  Final.CodeDefsImplF;
 P5Impl: P5~P5Impl1+P5Impl2+P5Impl3+P5Impl4+P5Impl5+P5Impl6+P5Impl7+P5Impl8+
  P5Impl9+P5Impl10+P5Impl11+P5Impl12+Final.P5ImplF;
 P5SImpl: P5S~P5SImpl1+P5SImpl2+P5SImpl3+P5SImpl4+P5SImpl5
 ].Control;

BcdOutput: CompilerUtil ~ REC [
 TypeStrings: TYPE~@TypeStrings.mesa!2598552508*[]*[];
 TypeStringsImpl: TypeStrings~@TypeStringsImpl.mesa!2598552680*[]*[];
 RCMapOps: TYPE~@RCMapOps.mesa!2591914765*[]*[];
 RCMapOpsImpl: RCMapOps~@RCMapBuilderImpl.mesa!2594744304*[]*[];
 ObjectOut: CompilerUtil~@ObjectOut.mesa!2600962053*[]*[]
 ].ObjectOut;

--CBinary: TYPE~@CBinary.mesa!2465269358*[]*[];
CBinary: TYPE~@CBinary.bcd[];
CBinaryImpl: CBinary ~ @MesaTab.bcd[]+@ErrorTab.bcd[]+ @DebugTab.bcd[];
CommandUtil: TYPE~@CommandUtil.mesa!2585845958*[]*[];
CommandUtilImpl: CommandUtil~@CommandPack.mesa!2585846832*[]*[];
FileParmOps: TYPE~@FileParmOps.mesa!2571775962*[]*[];
FileParmOpsImpl: FileParmOps~@FileParmPack.mesa!2585852895*[]*[];
[CompilerOpsImpl: CompilerOps, Sequencer: CompilerUtil]~
@Sequencer.mesa!2601415671*[]*[ownSymbols~SymbolPackImplA];
DebugTable: TYPE~@DebugTable.mesa!2550173137*[]*[];
Debug: CompilerUtil~@Debug.mesa!2594743918*[]*[];
CompilerUtilImpl: CompilerUtil~
Sequencer+Pass1+Pass2+Pass3+Pass3P+Pass4+Pass5+BcdOutput+Debug;

[ExecOpsImpl: ExecOps, TemporarySpecialExecOpsImpl: TemporarySpecialExecOps]~
 @Interface.mesa!2599085762*[]*[];
TestC: CONTROL~@TestCompilerImpl.mesa!2582044959*[]*[]
]