IFUPLAMainPipeControl: CEDAR DEFINITIONS = BEGIN MainPipeControlIn: TYPE = RECORD [ -- default must be zero reset: BOOL _ FALSE, dPReject: BOOL _ FALSE, dPFaulted: BOOL _ FALSE, protMicroCycle: BOOL _ FALSE, microExcptJmpBubble: BOOL _ FALSE, -- feedback stage2BAbort: BOOL _ FALSE, -- feedback stage1BHold: BOOL _ FALSE, condEffect1: CondEffect _ VAL[0], -- for detecting bubble in 1B condEffect2: CondEffect _ VAL[0], eUCondition2: BOOL _ FALSE, trapsEnbled2: BOOL _ FALSE, eStkOverflow2: BOOL _ FALSE, instStarting2: BOOL _ FALSE, rschWaiting2: BOOL _ FALSE, push2: BOOL _ FALSE, instFault2: BOOL _ FALSE, iStkNearlyFull: BOOL _ FALSE, x2ASrcLit1: BOOL _ FALSE]; MainPipeControlOut: TYPE = RECORD [ stage2A: NormalBubble _ normal, stage3A: NormalAbort _ normal, loadStage1: BOOL _ FALSE, loadStage2: BOOL _ FALSE, loadStage3: BOOL _ FALSE, x2ASrcLit2: BOOL _ FALSE, stage1BHolding: BOOL _ FALSE, notBcLoadStage1: BOOL _ FALSE, -- really just stage1BHolding again stage2B: NormalAbort _ normal, -- feedback stage2BAbort stage3BCPipe: NormalAbort _ normal, microExcptJmp: MicroExcptJmp _ none, -- feedback microExcptJmpBubble except: Exception _ [specialCode, none] ]; NormalBubble: TYPE = MACHINE DEPENDENT {normal(0), bubble(1)}; NormalAbort: TYPE = MACHINE DEPENDENT {normal(0), abort(1)}; CondEffect: TYPE = MACHINE DEPENDENT {macroTrap(0), macroJump, microJump, bubble(3)}; MicroExcptJmp: TYPE = MACHINE DEPENDENT { none(0), -- microcycle as proposed by instrDecode microJump(3), -- microcycle = 64 bubble(5), -- microcycle = 112 resetting(9), -- microcycle = 116 trap(17), -- microcycle = 120 cJump(33)}; -- microcycle = 124 Exception: TYPE = RECORD [type: ExceptType, code: ExceptCode _ none]; -- for Trap PC generator ExceptType: TYPE = MACHINE DEPENDENT {specialCode(0), condCode(3), dpFault(5)}; ExceptCode: TYPE = MACHINE DEPENDENT { none (0), ipFault (1), bubble (2), cJump (3), reseting (6), reset (7), iStkOFlow (8), eStkOFlow (9), rschlWait (0AH), trapCycle1 (0BH)}; END. ŽIFUPLAMainPipeControl.mesa Copyright c 1984 by Xerox Corporation. All rights reserved. Last edited by McCreight, June 6, 1986 5:43:43 pm PDT Last edited by Curry, July 9, 1986 2:43:38 pm PDT PhB latched inputs PhB latched outputs PhA latched outputs A decoded enumerated type can be used to directly generate multiplex controls. The type can be coded as {0, 1} or {0, 1, 2, 4, 8 ...} or {0, 3, 5, 9, 17 ...}. The first and last cases have the advantage that zero can be used a default multiplex control (lsb = 0 => no other bit is true). In all cases it's possible to name the bits and/or their inverses using the enumerated type element names. Κo˜šΠbl™Jšœ<™Jšœžœžœž œ˜=Jšœ žœžœž œ1˜UJ˜šœžœžœž œ˜)Jšœ  (˜3Jšœ ˜ Jšœ  ˜Jšœ ˜"Jšœ  ˜Jšœ  ˜ —J˜šœ žœž˜Jšœ- ˜E—Jšœ žœžœž œ+˜Ošœ žœžœž œ˜'Jšœ ˜ Jšœ ˜ Jšœ ˜ Jšœ ˜ Jšœ˜Jšœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ˜—J™šœN™NJšœO™OJšœ€™€Jšœj™j—J™—Jšžœ˜J˜—…—PM