X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=net.mograsim.logic.model.am2900%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fam2900%2Fcomponents%2FModelinc12.java;fp=net.mograsim.logic.model.am2900%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fam2900%2Fcomponents%2FModelinc12.java;h=0000000000000000000000000000000000000000;hb=97761fb820e53b41f0cc021bf50fdca4da0c79c8;hp=05d2eee59f1071f19baf02e3f292f478eeaf547f;hpb=df4cab4f2dbf42102659c013599266e07be2d249;p=Mograsim.git diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc12.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc12.java deleted file mode 100644 index 05d2eee5..00000000 --- a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc12.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.mograsim.logic.model.am2900.components; - -import static net.mograsim.logic.core.types.Bit.U; -import static net.mograsim.logic.core.types.Bit.X; -import static net.mograsim.logic.core.types.Bit.Z; -import static net.mograsim.logic.core.types.Bit.ZERO; - -import java.util.Arrays; -import java.util.Map; - -import net.mograsim.logic.core.types.Bit; -import net.mograsim.logic.core.wires.CoreWire.ReadEnd; -import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd; -import net.mograsim.logic.model.model.LogicModelModifiable; -import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent; -import net.mograsim.logic.model.model.wires.Pin; -import net.mograsim.logic.model.model.wires.PinUsage; -import net.mograsim.logic.model.serializing.IndirectModelComponentCreator; -import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position; - -public class Modelinc12 extends SimpleRectangularHardcodedModelComponent -{ - public Modelinc12(LogicModelModifiable model, String name) - { - super(model, "inc12", name, "Incrementer", false); - setSize(40, 20); - addPin(new Pin(model, this, "A", 12, PinUsage.INPUT, 20, 20), Position.TOP); - addPin(new Pin(model, this, "CI", 1, PinUsage.INPUT, 40, 10), Position.LEFT); - addPin(new Pin(model, this, "Y", 12, PinUsage.OUTPUT, 20, 0), Position.BOTTOM); - - init(); - } - - @Override - public Object recalculate(Object lastState, Map readEnds, Map readWriteEnds) - { - Bit[] ABits = readEnds.get("A").getValues().getBits(); - Bit CIVal = readEnds.get("CI").getValue(); - Bit[] YBits = new Bit[12]; - if (CIVal == X) - Arrays.fill(YBits, X); - else if (CIVal == U) - Arrays.fill(YBits, U); - else if (CIVal == Z) - Arrays.fill(YBits, X); - else if (CIVal == ZERO) - YBits = ABits; - else - { - Bit carry = Bit.ONE; - // TODO extract to helper. This code almost also exists in ModelAm2910RegCntr. - for (int i = 11; i >= 0; i--) - { - Bit a = ABits[i]; - YBits[i] = a.xor(carry); - carry = a.and(carry); - } - } - readWriteEnds.get("Y").feedSignals(YBits); - return null; - } - - static - { - IndirectModelComponentCreator.setComponentSupplier(Modelinc12.class.getCanonicalName(), (m, p, n) -> new Modelinc12(m, n)); - } -} \ No newline at end of file