X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.model.am2900%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fam2900%2Fcomponents%2FModelinc.java;fp=plugins%2Fnet.mograsim.logic.model.am2900%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fam2900%2Fcomponents%2FModelinc.java;h=0000000000000000000000000000000000000000;hb=ba036f231e1b5e9221de72eda1d706c7c57a3e50;hp=981c8488dcf31689812757c70f706f5ff790815f;hpb=92ef68de7afb4f0e7f9c211c8ef297ffc1e9a341;p=Mograsim.git diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc.java deleted file mode 100644 index 981c8488..00000000 --- a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc.java +++ /dev/null @@ -1,78 +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.IdentifyParams; -import net.mograsim.logic.model.serializing.IndirectModelComponentCreator; -import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position; - -public class Modelinc extends SimpleRectangularHardcodedModelComponent -{ - private final int logicWidth; - - public Modelinc(LogicModelModifiable model, String name, int logicWidth) - { - super(model, "inc", name, "Incrementer", false); - this.logicWidth = logicWidth; - setSize(40, 20); - addPin(new Pin(model, this, "A", logicWidth, 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", logicWidth, 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[logicWidth]; - 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 = logicWidth - 1; i >= 0; i--) - { - Bit a = ABits[i]; - YBits[i] = a.xor(carry); - carry = a.and(carry); - } - } - readWriteEnds.get("Y").feedSignals(YBits); - return null; - } - - @Override - public Integer getParamsForSerializing(IdentifyParams idParams) - { - return logicWidth; - } - - static - { - IndirectModelComponentCreator.setComponentSupplier(Modelinc.class.getCanonicalName(), - (m, p, n) -> new Modelinc(m, n, p.getAsInt())); - } -} \ No newline at end of file