IFUAsmStackControler.mesa
Copyright c 1985 by Xerox Corporation. All rights reserved.
Last Edited by Curry, January 23, 1986 6:51:41 pm PST
IFUAsmStackControler:
CEDAR
PROGRAM
IMPORTS CDFrame, Commander, IFUAsm, IFUPW, IFUPWControl, IO, PLAOps, REFBit
EXPORTS IFUAsm =
BEGIN OPEN IFUAsm, IFUPWControl, CDF: CDFrame;
module: ROPE ← "IFUAsmStackControler";
StackControlProc:
CDF.ExpandProc = {
decode, aControl, bControl: Frame;
plaType: TYPE = {aCnt, bCnt, dec};
frm: INT ← 0;
max: INT ← 0;
plas: ARRAY plaType OF PLAOps.PLA;
ins: REF ← REFBit.NEWFromName["IFUPLAStackControlx.StackControlIn"];
drs, sb: Frame;
sb ← CDF.Glue[t: conn, r: conn];
drs ← RefToDriverFrame
[name: "StackInDrs", xory: y, data:
NIL, unordered:
FALSE, refRec: ins,
initial: [drDir: in, dualOut: TRUE, in: [pos, BA], ref: [pos, B], out: [pos, BA]] ];
plas[dec] ← PLAOps.ReadPLAFile["IFUPLAStackDecode.ttt"];
plas[bCnt] ← PLAOps.ReadPLAFile["IFUPLAStackBControl.ttt"];
plas[aCnt] ← PLAOps.ReadPLAFile["IFUPLAStackAControl.ttt"];
decode ← DrivenPLA[
DrPLA["Decode", plas[dec], decoder, BA, B, Ac], design, 0, 2, FALSE, 16];
aControl ← DrivenPLA[
DrPLA["AControl", plas[aCnt], static, BA, A, AB], design, 2, 1, TRUE];
bControl ← DrivenPLA[
DrPLA["BControl", plas[bCnt], static, BA, B, BA], design, 2, 1, TRUE];
new ←
IFUPW.
NFS["StackControl",
x,
LIST[
CDF.Glue[l: ext, r: conn],
IFUPW.
NFS["Data",
y,
LIST[
IFUPW.NFS["StackDecodeFill", x, LIST[decode[0], decode[1]]],
IFUPW.NFS["StackIn", x, LIST[CDF.Glue[t:conn, b:conn, r:conn], drs ]],
IFUPW.
NFS["StackBot2",
x,
LIST[
IFUPW.
NFS["StackBot1",
x,
LIST[
CDF.Glue[l: ext, r: conn],
IFUPW.
NFS["StackBot0",
y,
LIST[
aControl[0],
bControl[0] ]] ]],
IFUPW.
NFS["StackBot",
y,
LIST[
aControl[1],
bControl[1] ]]
]] ]] ]] };
StackControl: Frame ←
CDF.NewExpandFrame["Control", StackControlProc];
StackControler:
PUBLIC Frame ←
IFUPW.
NFS[module, y,
LIST[
IFUPWControl.DriverFill[],
StackControl,
IFUPWControl.DriverFill[],
CDF.Glue[t:conn, b:conn, r:diff],
StackIndexing
] ];
StackControlerCT: Commander.CommandProc =
{IFUPW.AssembleFrame[IFUAsm.RefDesign[], StackControler, cmd ] };
StackControlerCD:
IFUPW.PWUserProc =
{RETURN[CDF.FrameToObject[StackControler, design]]};
Commander.Register [proc: StackControlerCT, key: module];
IFUPW.Register [userProc: StackControlerCD, name: module];
END.