IF PhB
AND phALast
THEN {
[ [
nextMacro: nextMacroBA,
macroJump: MacroJumpBA,
microCycleNext: MicroCycleNextBA,
pcNext: PCNextBA,
pcBusSrc: PCBusSrcB,
pcPipeSrc: PCPipeSrcBA,
kPadsIn: KPadsIn0BA,
push: Push0BA,
pop: Pop0BA,
x1ASrcSLimit: x1ASrcSLimitBA,
x2ASrcStatus: X2ASrcStatusBA,
x1ASrcStack: X1ASrcStackBA,
x1ADstSLimit: x1ADstSLimitBA,
x1ADstStatus: X1ADstStatusBA,
x1ADstStack: X1ADstStackBA,
xBusStackEldest: XBusStackEldestBA,
xBusStackL: XBusStackLBA,
aReg: [ASourceLtBA, ASourceRtBA, ASourceOffBA],
bReg: [BSourceLtBA, BSourceRtBA, BSourceOffBA],
cReg: [CSourceLtBA, CSourceRtBA, CSourceOffBA],
cRegIsField: C0IsFieldCtlBA,
lSource: [LSourceLtBA, LSourceRtBA],
sSource: [SSourceLtBA, SSourceRtBA],
popSa: PopSa0BA,
popSb: PopSb0BA,
pushSc: PushSc0BA,
x2ALitSource: X2ALitSourceBA,
kIsRtOp: KIsRtOp0BA,
fCtlIsRtOp: FCtlIsRtOp0BA,
aluOp: preEUAluOp0BA,
aluOpIsOp47: aluOpIs47BA,
condSel: preEUCondSel0BA,
condSelIsOp57: condSelIsOp57BA,
condEffect: EUCondEffect0BA,
dpCmnd: preDPCmnd0BA,
dpCmndIsRd: DPCmndRd0BA,
dpCmndSel: preDPCmndSel0BA,
clearTrapsEnbled: ClearTrapsEnbledBA,
clearUserMode: ClearUserModeBA
] ] ← IFUPLAInstrDecode.InstrDecodeProc[ [
state: MicroCycleAB,
instReady: InstReadyAB,
op: DragOpsCross.Inst[VAL[OpAB]],
alpha: AlphaAB,
beta: BetaAB,
pushPending: PushPendingAB,
popPending: PopPendingAB,
userMode: UserMode0AB ] ];
DPCmnd0BA ←
SELECT preDPCmndSel0BA
FROM
beta => LOOPHOLE[BetaAB],
ENDCASE => preDPCmnd0BA;
EUAluOp0BA ←
IF aluOpIs47BA
THEN LOOPHOLE[OpAB MOD 16] ELSE preEUAluOp0BA;
EUCondSel0BA ←
IF condSelIsOp57BA
THEN LOOPHOLE[OpAB MOD 8] ELSE preEUCondSel0BA;
X2ASrcLit0BA ← X2ALitSourceBA # none;
GetNextInstBA ← nextMacroBA=get;
InstStarting0BA ← MicroCycleAB=0;
phALast ← FALSE;
};