DIRECTORY TamarinTopLevel, TamarinBlocks USING [Adder, Shifter, PriorityEncoder, LogicalUnit], TamarinOps USING [FourBitIndex, ThreeBitIndex, SevenBitIndex, Word]; TamarinTopLevelImpl: CEDAR PROGRAM IMPORTS TamarinBlocks EXPORTS TamarinTopLevel = BEGIN OPEN TamarinOps, TamarinBlocks; UnitNotImplemented: SIGNAL [selectedUnit: ThreeBitIndex] = CODE; ExecutionUnits: PUBLIC PROC [euControl: SevenBitIndex, d1, d2: Word] RETURNS [result: Word, overFlow, carry, gt: BOOL] ~ { selectedUnit: ThreeBitIndex _ LOOPHOLE[euControl, NAT]/16; euOp: FourBitIndex _ euControl MOD 16; [result, overFlow, carry, gt] _ Adder[euOp, d1, d2]; SELECT LOOPHOLE[selectedUnit, EuUnits] FROM NOP => NULL; Adder => NULL; -- Have already done it LU => result _ LogicalUnit[euOp, d1, d2]; Shifter => result _ Shifter[d1, d2, 4]; Prior => result _ PriorityEncoder[d1]; ENDCASE => SIGNAL UnitNotImplemented[euOp]; RETURN [result, overFlow, carry, gt]; }; END. ΨTamarinTopLevelImpl.mesa Copyright Σ 1987 by Xerox Corporation. All rights reserved. April 6, 1987 Last Edited by: Ross March 4, 1987 9:31:58 am PST Do the adder all of the time to set up the condition bits ΚX˜™Icode™