IFUAsmRightColumn.mesa
Copyright c 1985 by Xerox Corporation. All rights reserved.
Last Edited by Curry, January 23, 1986 4:47:19 pm PST
DIRECTORY
CD,
CDFrame,
CDOrient,
Commander,
Dragon,
IFUAsm,
IFUPW,
IFUPWControl,
REFBit,
Rope;
IFUAsmRightColumn: CEDAR PROGRAM
IMPORTS CDFrame, Commander, IFUAsm, IFUPW, IFUPWControl, REFBit
EXPORTS IFUAsm =
BEGIN OPEN IFUAsm;
module: Rope.ROPE ← "IFUAsmRightColumn";
PassLtB:  TYPE = RECORD[
auConnected:  BOOL,
euCondition2:  BOOL,
dpFault:    Dragon.PBusFaults];
PassRtBA: TYPE = RECORD[
euAluLeftSrc1:   Dragon.ALULeftSources,
euAluRightSrc1:   Dragon.ALURightSources,
euStore2ASrc1:   Dragon.Store2ASources,
euSt3AisCBus2:   BOOL,
euRes3AisCBus2:  BOOL,
euWriteField3:   BOOL];
PassRtAB: TYPE = RECORD[
euAluOp2:    Dragon.ALUOps,
euCondSel2:    Dragon.CondSelects,
euRes3BisPBus3:   BOOL,
euWriteToPBus3:  BOOL,
dpCmnd3:    Dragon.PBusCommands];
RightColumnProc: CDFrame.ExpandProc = {
IFUAsm.MainControl.orient ← CDOrient.mirrorX;
IFUAsm.InstrDecode.orient ← CDOrient.mirrorX;
new ← IFUPW.NFS[module, y, LIST[
CDFrame.Glue[t:ext, b:conn],
MainControl,
CDFrame.Glue[t:ext, b: conn],
InstrDecode,
CDFrame.Glue[t:ext, b:conn],
IFUPW.NFS["PassLtB", x, LIST[
CDFrame.Glue[l: ext, r: conn, tDir: vertical],
IFUPWControl.RefToDriverFrame[
name: "PassLtBDr", xory: y, data: NIL, unordered: TRUE,
refRec: REFBit.NEWFromName["IFUAsmRightColumn.PassLtB"],
initial: [drDir: out, dualOut: FALSE, in:[pos, B], ref: [pos, B], out: [pos, BA]] ] ],
CDOrient.mirrorX],
IFUPW.NFS["PassRtB", x, LIST[
CDFrame.Glue[l: ext, r: conn, tDir: vertical],
IFUPWControl.RefToDriverFrame[
name: "PassRtBADr", xory: y, data: NIL, unordered: TRUE,
refRec: REFBit.NEWFromName["IFUAsmRightColumn.PassRtBA"],
initial: [drDir: in, dualOut: FALSE, in:[pos, BA], ref: [pos, B], out: [pos, BA]] ] ],
CDOrient.mirrorX],
IFUPW.NFS["PassRtAB", x, LIST[
CDFrame.Glue[l: ext, r: conn, tDir: vertical],
IFUPWControl.RefToDriverFrame[
name: "PassRtABDr", xory: y, data: NIL, unordered: TRUE,
refRec: REFBit.NEWFromName["IFUAsmRightColumn.PassRtAB"],
initial: [drDir: out, dualOut: FALSE, in:[pos, AB], ref: [pos, A], out: [pos, AB]] ] ],
CDOrient.mirrorX],
CDFrame.Glue[t:conn, b:ext]
] ]};
RightColumn: PUBLIC IFUPW.Frame ← CDFrame.NewExpandFrame[ module, RightColumnProc ];
RightColumnCT: Commander.CommandProc =
{IFUPW.AssembleFrame[IFUAsm.RefDesign[], RightColumn, cmd ] };
Commander.Register  [proc:   RightColumnCT, key: module];
END.