<> <> <> DIRECTORY Dragon, DragOpsCross, DragonMicroPLA, Rope; DragonIFU: CEDAR DEFINITIONS = BEGIN DragOpTable: TYPE = REF DragOpTableArray; DragOpTableArray: TYPE = ARRAY Dragon.HexByte OF Rope.ROPE _ ALL[NIL]; GenDragOpTable: PROC RETURNS[name:DragOpTable]; AluLt: TYPE = {aRam, r1, r3} _ aRam; AluRt: TYPE = {bRam, k, r1, r3} _ bRam; Store1: TYPE = {bRam, r1, r3} _ bRam; Result2: TYPE = { r1, r3} _ r1; Store3: TYPE = {s2, r3} _ s2; Result3: TYPE = {rdata, r2} _ r2; IsRdCmd, IsWtCmd, IsFPCmd: PROC[cmnd:Dragon.PBusCommands] RETURNS[BOOL]; PRtoByte: PROC[pr:DragOpsCross.ProcessorRegister] RETURNS [byte:Dragon.HexByte]; BytetoPR: PROC[byte:Dragon.HexByte] RETURNS [pr:DragOpsCross.ProcessorRegister]; noStore: Dragon.HexByte = LOOPHOLE[DragOpsCross.ProcessorRegister[euJunk]]; const0: Dragon.HexByte = LOOPHOLE[DragOpsCross.ProcessorRegister[euConstant]]; Level1: TYPE = RECORD [ a: Dragon.HexByte _ const0, b: Dragon.HexByte _ const0, aluLt: AluLt _ aRam, aluRt: AluRt _ bRam, store1: Store1 _ bRam, ka: Dragon.HexWord _ 0, aluOp: Dragon.ALUOps _ Or, condSel: Dragon.CondSelects _ False, condOp: DragonMicroPLA.CondEffect _ microJump, result2: Result2 _ r1, store3: Store3 _ s2, euPBus: Dragon.PBusCommands _ NoOp, result3: Result3 _ r2, c: Dragon.HexByte _ noStore, iStackOp: DragonMicroPLA.IStackPostEffect _ none, iTrapOp: DragonMicroPLA.ITrapPostEffect _ none, p: Dragon.HexWord _ 0, l: Dragon.HexByte _ 0, s: Dragon.HexByte _ 0 ]; Level2: TYPE = RECORD [ ka: Dragon.HexWord _ 0, aluOp: Dragon.ALUOps _ Or, condSel: Dragon.CondSelects _ False, condOp: DragonMicroPLA.CondEffect _ microJump, result2: Result2 _ r1, store3: Store3 _ s2, euPBus: Dragon.PBusCommands _ NoOp, result3: Result3 _ r2, c: Dragon.HexByte _ noStore, iStackOp: DragonMicroPLA.IStackPostEffect _ none, iTrapOp: DragonMicroPLA.ITrapPostEffect _ none, p: Dragon.HexWord _ 0, l: Dragon.HexByte _ 0, s: Dragon.HexByte _ 0 ]; Level3: TYPE = RECORD [ euPBus: Dragon.PBusCommands _ NoOp, result3: Result3 _ r2, c: Dragon.HexByte _ noStore, iStackOp: DragonMicroPLA.IStackPostEffect _ none, iTrapOp: DragonMicroPLA.ITrapPostEffect _ none, p: Dragon.HexWord _ 0, l: Dragon.HexByte _ 0, s: Dragon.HexByte _ 0 ]; END.