X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.core%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fcore%2Fcomponents%2FCoreMux.java;h=5b4220a54604ba0c90cb156b3a3e90ffc53a7fba;hb=8bed58cd47f4e53a0a83e066d38864aa6875502f;hp=b85168d61c29cf8b4ef02c046134a1db61b1046a;hpb=0a04a4ed66ecebd4254541c4977599f6052c115a;p=Mograsim.git diff --git a/net.mograsim.logic.core/src/net/mograsim/logic/core/components/CoreMux.java b/net.mograsim.logic.core/src/net/mograsim/logic/core/components/CoreMux.java index b85168d6..5b4220a5 100644 --- a/net.mograsim.logic.core/src/net/mograsim/logic/core/components/CoreMux.java +++ b/net.mograsim.logic.core/src/net/mograsim/logic/core/components/CoreMux.java @@ -6,6 +6,8 @@ import java.util.Collections; import java.util.List; import net.mograsim.logic.core.timeline.Timeline; +import net.mograsim.logic.core.timeline.TimelineEventHandler; +import net.mograsim.logic.core.types.BitVector; import net.mograsim.logic.core.wires.CoreWire; import net.mograsim.logic.core.wires.CoreWire.ReadEnd; import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd; @@ -66,17 +68,16 @@ public class CoreMux extends BasicCoreComponent } @Override - public void compute() + public TimelineEventHandler compute() { int selectValue; - if (!select.hasNumericValue() || (selectValue = (int) select.getUnsignedValue()) >= inputs.length) + if (!select.getValues().isBinary() || (selectValue = (int) select.getValues().getUnsignedValueLong()) >= inputs.length) { - out.clearSignals(); - return; + return e -> out.clearSignals(); } - ReadEnd active = inputs[selectValue]; - out.feedSignals(active.getValues()); + BitVector activeValues = inputs[selectValue].getValues(); + return e -> out.feedSignals(activeValues); } @Override