IFUPLAMainPipeControl: CEDAR DEFINITIONS = BEGIN MainPipeControlIn: TYPE = RECORD [ -- default must be zero reset: BOOL _ FALSE, dPReject: BOOL _ FALSE, dPFaulting: 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, trapsEnabled2: BOOL _ FALSE, eStkOverflow2: BOOL _ FALSE, instStarting2: BOOL _ FALSE, reschedule: BOOL _ FALSE, rschWaitingIn: BOOL _ FALSE, push2: BOOL _ FALSE, instFault2: BOOL _ FALSE, iStkNearlyFull: BOOL _ FALSE, rschClearIn: BOOL _ FALSE ]; -- from output MainPipeControlOut: TYPE = RECORD [ stage2A: NormalBubble _ normal, stage3A: NormalAbort _ normal, loadStage1: BOOL _ FALSE, loadStage2: BOOL _ FALSE, loadStage3: BOOL _ FALSE, stage1BHolding: BOOL _ FALSE, notBcLoadStage1: BOOL _ FALSE, -- really just stage1BHolding again stage2B: NormalAbort _ normal, -- to input next phase (abort) stage3BCPipe: NormalAbort _ normal, microExcptJmp: MicroExcptJmp _ none, -- to input next phase (bubble) except: Exception _ [specialCode, none], rschClear: BOOL _ FALSE, -- to input same phase rschWaiting: BOOL _ FALSE ]; -- to input next phase 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)}; fixedMicroJump: [0..256) = 48; MicroExcptJmp: TYPE = MACHINE DEPENDENT { none(0), -- microcycle = CurrentCycle MOD 128 bubble(3), -- microcycle = CurrentCycle MOD 128 + 128 microJump(5), -- microcycle = 48 = fixedMicroJump resetting(9), -- microcycle = 112 trap(17), -- microcycle = 116 cJump(33)}; -- microcycle = 120 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, September 14, 1986 2:28:18 pm PDT Don Curry March 9, 1987 5:04:14 pm PST PhB latched inputs PhA 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. Κ€˜šΠbl™Jšœ<™Jšœžœžœž œ˜=Jšœ žœžœž œ1˜UJ˜Jšœ˜šœžœžœž œ˜)Jšœ  $˜/Jšœ  *˜6Jšœ œ˜1Jšœ ˜"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˜—…— Š