IFUAsmFetchControler:
CEDAR
PROGRAM
IMPORTS CDFrame, Commander, IFUAsm, IFUPW, IFUPWControl
EXPORTS IFUAsm =
BEGIN OPEN IFUAsm, IFUPWControl, CDF: CDFrame;
module: ROPE ← "IFUAsmFetchControler";
FetchRdDecodeProc:
CDF.ExpandProc =
{new ← MakePLA["FetchRdDecode", static, BA, B, BA, B, Ac, design]};
FetchWtDecodeProc:
CDF.ExpandProc =
{new ← MakePLA["FetchWtDecode", static, AB, A, AB, A, Bc, design]};
FetchControlProc:
CDF.ExpandProc =
{new ← MakePLA["FetchControl", static, BA, B, BA, A, AB, design, 0, 2]};
FetchPreDecodeProc:
CDF.ExpandProc =
{new ← MakePLA["FetchPreDecode", static, AB, A, AB, A, AB, design, 0, 2]};
FetchControler:
PUBLIC Frame ←
IFUPW.
NFS[module, y,
LIST[
IFUPWControl.DriverFill[],
CDF.NewExpandFrame["FetchRdDecode", FetchRdDecodeProc],
IFUPWControl.DriverFill[],
CDF.NewExpandFrame["FetchWtDecode", FetchWtDecodeProc],
IFUPWControl.DriverFill[],
IFUPW.
NFS["
FetchIndexingFillx", x,
LIST[
CDF.Glue[l: ext, r: conn],
IFUPW.
NFS["
FetchIndexing", y,
LIST[
IFUPWControl.DriverFill[],
CDF.Glue[b: conn, t: conn, r:diff],
FetchIndexing,
CDF.Glue[b: conn, t: conn, r:diff],
IFUPWControl.DriverFill[] ]] ]],
IFUPWControl.DriverFill[],
CDF.NewExpandFrame["FetchControl", FetchControlProc],
IFUPWControl.DriverFill[],
CDF.NewExpandFrame["FetchPreDecode", FetchPreDecodeProc],
IFUPWControl.DriverFill[] ] ];
FetchControlerCT: Commander.CommandProc =
{IFUPW.AssembleFrame[IFUAsm.RefDesign[], FetchControler, cmd ] };
FetchControlerCD:
IFUPW.PWUserProc =
{RETURN[CDF.FrameToObject[FetchControler, design]]};
Commander.Register [proc: FetchControlerCT, key: module];
IFUPW.Register [userProc: FetchControlerCD, name: module];
END.