From 19ee1a7fdb06a1df65cd7df78fed935124496707 Mon Sep 17 00:00:00 2001 From: Daniel Kirschten Date: Fri, 21 Jun 2019 11:18:43 +0200 Subject: [PATCH] Pins are now accessed via name, not index --- net.mograsim.logic.ui/FullAdder.json | 42 +-- net.mograsim.logic.ui/HalfAdder.json | 54 +-- .../ui/examples/AtomicAm2901Example.java | 4 +- .../logic/ui/examples/JsonExample.java | 20 +- .../logic/ui/examples/RSLatchExample.java | 16 +- .../examples/SubmodelComponentTestbench.java | 8 +- .../components/AtomicAm2901NANDBased.java | 4 +- .../ui/model/components/GUIComponent.java | 30 +- .../components/GUICustomComponentCreator.java | 9 +- .../components/SimpleRectangularGUIGate.java | 21 +- .../SimpleRectangularSubmodelComponent.java | 133 +++---- .../model/components/SubmodelComponent.java | 111 +++--- .../components/SubmodelComponentParams.java | 3 +- .../components/mi/nandbased/GUI_rsLatch.java | 20 +- .../model/components/mi/nandbased/GUIand.java | 18 +- .../components/mi/nandbased/GUIand41.java | 42 +-- .../components/mi/nandbased/GUIandor414.java | 68 ++-- .../components/mi/nandbased/GUIdemux2.java | 48 +-- .../model/components/mi/nandbased/GUIdff.java | 36 +- .../components/mi/nandbased/GUIdlatch.java | 26 +- .../components/mi/nandbased/GUIdlatch4.java | 42 +-- .../components/mi/nandbased/GUIfulladder.java | 28 +- .../components/mi/nandbased/GUIhalfadder.java | 28 +- .../components/mi/nandbased/GUImux1.java | 26 +- .../components/mi/nandbased/GUImux1_4.java | 58 +-- .../components/mi/nandbased/GUInand3.java | 24 +- .../components/mi/nandbased/GUInot4.java | 40 +-- .../model/components/mi/nandbased/GUIor4.java | 52 +-- .../components/mi/nandbased/GUIor_4.java | 80 ++--- .../components/mi/nandbased/GUIram2.java | 300 ++++++++-------- .../components/mi/nandbased/GUIram4.java | 332 +++++++++--------- .../components/mi/nandbased/GUIsel2_4.java | 84 ++--- .../components/mi/nandbased/GUIsel3_4.java | 108 +++--- .../model/components/mi/nandbased/GUIxor.java | 26 +- .../am2901/GUIAm2901ALUFuncDecode.java | 49 ++- .../am2901/GUIAm2901ALUInclDecode.java | 142 ++++---- .../nandbased/am2901/GUIAm2901ALUOneBit.java | 68 ++-- .../nandbased/am2901/GUIAm2901DestDecode.java | 94 ++--- .../mi/nandbased/am2901/GUIAm2901QReg.java | 50 +-- .../am2901/GUIAm2901SourceDecode.java | 102 +++--- .../modeladapter/ViewLogicModelAdapter.java | 6 +- .../AtomicAm2901NANDBasedAdapter.java | 77 ++-- .../componentadapters/SimpleGateAdapter.java | 14 +- 43 files changed, 1258 insertions(+), 1285 deletions(-) diff --git a/net.mograsim.logic.ui/FullAdder.json b/net.mograsim.logic.ui/FullAdder.json index b24145f7..ff9724e5 100644 --- a/net.mograsim.logic.ui/FullAdder.json +++ b/net.mograsim.logic.ui/FullAdder.json @@ -9,7 +9,7 @@ mograsim version: 0.1.0 "x": 0.0, "y": 5.0 }, - "name": "Input pin #0", + "name": "A", "logicWidth": 1 }, { @@ -17,7 +17,7 @@ mograsim version: 0.1.0 "x": 0.0, "y": 15.0 }, - "name": "Input pin #1", + "name": "B", "logicWidth": 1 }, { @@ -25,7 +25,7 @@ mograsim version: 0.1.0 "x": 0.0, "y": 25.0 }, - "name": "Input pin #2", + "name": "C", "logicWidth": 1 }, { @@ -33,7 +33,7 @@ mograsim version: 0.1.0 "x": 35.0, "y": 5.0 }, - "name": "Output pin #0", + "name": "Y", "logicWidth": 1 }, { @@ -41,7 +41,7 @@ mograsim version: 0.1.0 "x": 35.0, "y": 15.0 }, - "name": "Output pin #1", + "name": "Z", "logicWidth": 1 } ], @@ -77,74 +77,74 @@ mograsim version: 0.1.0 { "pin1": { "compId": 0, - "pinIndex": 0 + "pinName": "A" }, "pin2": { "compId": 2, - "pinIndex": 0 + "pinName": "A" }, "path": [] }, { "pin1": { "compId": 0, - "pinIndex": 1 + "pinName": "B" }, "pin2": { "compId": 1, - "pinIndex": 0 + "pinName": "A" } }, { "pin1": { "compId": 0, - "pinIndex": 2 + "pinName": "C" }, "pin2": { "compId": 1, - "pinIndex": 1 + "pinName": "B" } }, { "pin1": { "compId": 1, - "pinIndex": 2 + "pinName": "Y" }, "pin2": { "compId": 2, - "pinIndex": 1 + "pinName": "B" } }, { "pin1": { "compId": 1, - "pinIndex": 3 + "pinName": "_Z" }, "pin2": { "compId": 3, - "pinIndex": 2 + "pinName": "B" }, "path": [] }, { "pin1": { "compId": 2, - "pinIndex": 2 + "pinName": "Y" }, "pin2": { "compId": 0, - "pinIndex": 3 + "pinName": "Y" }, "path": [] }, { "pin1": { "compId": 2, - "pinIndex": 3 + "pinName": "_Z" }, "pin2": { "compId": 3, - "pinIndex": 1 + "pinName": "A" }, "path": [ { @@ -168,11 +168,11 @@ mograsim version: 0.1.0 { "pin1": { "compId": 3, - "pinIndex": 0 + "pinName": "Y" }, "pin2": { "compId": 0, - "pinIndex": 4 + "pinName": "Z" } } ] diff --git a/net.mograsim.logic.ui/HalfAdder.json b/net.mograsim.logic.ui/HalfAdder.json index b1e8f85d..e9b9f744 100644 --- a/net.mograsim.logic.ui/HalfAdder.json +++ b/net.mograsim.logic.ui/HalfAdder.json @@ -33,7 +33,7 @@ mograsim version: 0.1.0 "x": 35.0, "y": 15.0 }, - "name": "Z", + "name": "_Z", "logicWidth": 1 } ], @@ -101,22 +101,22 @@ mograsim version: 0.1.0 { "pin1": { "compId": 0, - "pinIndex": 0 + "pinName": "A" }, "pin2": { "compId": 5, - "pinIndex": 0 + "pinName": "" }, "path": [] }, { "pin1": { "compId": 5, - "pinIndex": 0 + "pinName": "" }, "pin2": { "compId": 2, - "pinIndex": 1 + "pinName": "A" }, "path": [ { @@ -128,11 +128,11 @@ mograsim version: 0.1.0 { "pin1": { "compId": 5, - "pinIndex": 0 + "pinName": "" }, "pin2": { "compId": 1, - "pinIndex": 1 + "pinName": "A" }, "path": [ { @@ -144,22 +144,22 @@ mograsim version: 0.1.0 { "pin1": { "compId": 0, - "pinIndex": 1 + "pinName": "B" }, "pin2": { "compId": 6, - "pinIndex": 0 + "pinName": "" }, "path": [] }, { "pin1": { "compId": 6, - "pinIndex": 0 + "pinName": "" }, "pin2": { "compId": 3, - "pinIndex": 2 + "pinName": "B" }, "path": [ { @@ -171,11 +171,11 @@ mograsim version: 0.1.0 { "pin1": { "compId": 6, - "pinIndex": 0 + "pinName": "" }, "pin2": { "compId": 1, - "pinIndex": 2 + "pinName": "B" }, "path": [ { @@ -187,22 +187,22 @@ mograsim version: 0.1.0 { "pin1": { "compId": 1, - "pinIndex": 0 + "pinName": "Y" }, "pin2": { "compId": 7, - "pinIndex": 0 + "pinName": "" }, "path": [] }, { "pin1": { "compId": 7, - "pinIndex": 0 + "pinName": "" }, "pin2": { "compId": 0, - "pinIndex": 3 + "pinName": "_Z" }, "path": [ { @@ -218,11 +218,11 @@ mograsim version: 0.1.0 { "pin1": { "compId": 7, - "pinIndex": 0 + "pinName": "" }, "pin2": { "compId": 2, - "pinIndex": 2 + "pinName": "B" }, "path": [ { @@ -234,11 +234,11 @@ mograsim version: 0.1.0 { "pin1": { "compId": 7, - "pinIndex": 0 + "pinName": "" }, "pin2": { "compId": 3, - "pinIndex": 1 + "pinName": "A" }, "path": [ { @@ -250,11 +250,11 @@ mograsim version: 0.1.0 { "pin1": { "compId": 2, - "pinIndex": 0 + "pinName": "Y" }, "pin2": { "compId": 4, - "pinIndex": 1 + "pinName": "A" }, "path": [ { @@ -270,11 +270,11 @@ mograsim version: 0.1.0 { "pin1": { "compId": 3, - "pinIndex": 0 + "pinName": "Y" }, "pin2": { "compId": 4, - "pinIndex": 2 + "pinName": "B" }, "path": [ { @@ -290,11 +290,11 @@ mograsim version: 0.1.0 { "pin1": { "compId": 4, - "pinIndex": 0 + "pinName": "Y" }, "pin2": { "compId": 0, - "pinIndex": 2 + "pinName": "Y" }, "path": [] } diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/AtomicAm2901Example.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/AtomicAm2901Example.java index 39ee8fc4..b0edc15b 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/AtomicAm2901Example.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/AtomicAm2901Example.java @@ -27,13 +27,13 @@ public class AtomicAm2901Example { GUIManualSwitch sw = new GUIManualSwitch(model); sw.moveTo(0, 20 * i); - new GUIWire(model, am2901.getPins().get(i), sw.getOutputPin()); + new GUIWire(model, am2901.getPin(am2901.inputNames.get(i)), sw.getOutputPin()); } for (int i = 0; i < am2901.outputNames.size(); i++) { GUIBitDisplay bd = new GUIBitDisplay(model); bd.moveTo(200, 20 * i); - new GUIWire(model, am2901.getPins().get(am2901.inputNames.size() + i), bd.getInputPin()); + new GUIWire(model, am2901.getPin(am2901.outputNames.get(i)), bd.getInputPin()); } } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/JsonExample.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/JsonExample.java index eb3833ba..9596a693 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/JsonExample.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/JsonExample.java @@ -92,12 +92,12 @@ public class JsonExample GUIBitDisplay bdZ = new GUIBitDisplay(model); bdZ.moveTo(90, 30); - new GUIWire(model, swA.getOutputPin(), adder.getInputPins().get(0)); - new GUIWire(model, swB.getOutputPin(), adder.getInputPins().get(1)); - new GUIWire(model, swC.getOutputPin(), adder.getInputPins().get(2)); + new GUIWire(model, swA.getOutputPin(), adder.getPin("A")); + new GUIWire(model, swB.getOutputPin(), adder.getPin("B")); + new GUIWire(model, swC.getOutputPin(), adder.getPin("C")); - new GUIWire(model, adder.getOutputPins().get(0), bdY.getInputPin()); - new GUIWire(model, adder.getOutputPins().get(1), bdZ.getInputPin()); + new GUIWire(model, adder.getPin("Y"), bdY.getInputPin()); + new GUIWire(model, adder.getPin("Z"), bdZ.getInputPin()); SubmodelComponent adder2 = GUICustomComponentCreator.create(model, pC, ""); @@ -114,11 +114,11 @@ public class JsonExample bdZ = new GUIBitDisplay(model); bdZ.moveTo(90, 85); - new GUIWire(model, swA.getOutputPin(), adder2.getPins().get(0)); - new GUIWire(model, swB.getOutputPin(), adder2.getPins().get(1)); - new GUIWire(model, swC.getOutputPin(), adder2.getPins().get(2)); + new GUIWire(model, swA.getOutputPin(), adder.getPin("A")); + new GUIWire(model, swB.getOutputPin(), adder.getPin("B")); + new GUIWire(model, swC.getOutputPin(), adder.getPin("C")); - new GUIWire(model, adder2.getPins().get(3), bdY.getInputPin()); - new GUIWire(model, adder2.getPins().get(4), bdZ.getInputPin()); + new GUIWire(model, adder.getPin("Y"), bdY.getInputPin()); + new GUIWire(model, adder.getPin("Z"), bdZ.getInputPin()); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/RSLatchExample.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/RSLatchExample.java index 084db687..0758afb9 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/RSLatchExample.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/RSLatchExample.java @@ -26,29 +26,29 @@ public class RSLatchExample GUIOrGate or1 = new GUIOrGate(model, 1); or1.moveTo(160, 102.5); - new GUIWire(model, rIn.getOutputPin(), or1.getInputPins().get(0)); + new GUIWire(model, rIn.getOutputPin(), or1.getPin("A")); GUIOrGate or2 = new GUIOrGate(model, 1); or2.moveTo(160, 192.5); - new GUIWire(model, sIn.getOutputPin(), or2.getInputPins().get(1)); + new GUIWire(model, sIn.getOutputPin(), or2.getPin("B")); GUINotGate not1 = new GUINotGate(model, 1); not1.moveTo(200, 107.5); - new GUIWire(model, or1.getOutputPin(), not1.getInputPins().get(0)); + new GUIWire(model, or1.getPin("Y"), not1.getPin("A")); GUINotGate not2 = new GUINotGate(model, 1); not2.moveTo(200, 197.5); - new GUIWire(model, or2.getOutputPin(), not2.getInputPins().get(0)); + new GUIWire(model, or2.getPin("Y"), not2.getPin("A")); WireCrossPoint p1 = new WireCrossPoint(model, 1); p1.moveCenterTo(250, 112.5); - new GUIWire(model, not1.getOutputPin(), p1); - new GUIWire(model, p1, or2.getInputPins().get(0), new Point(250, 130), new Point(140, 185), new Point(140, 197.5)); + new GUIWire(model, not1.getPin("Y"), p1); + new GUIWire(model, p1, or2.getPin("A"), new Point(250, 130), new Point(140, 185), new Point(140, 197.5)); WireCrossPoint p2 = new WireCrossPoint(model, 1); p2.moveCenterTo(250, 202.5); - new GUIWire(model, not2.getOutputPin(), p2); - new GUIWire(model, p2, or1.getInputPins().get(1), new Point(250, 185), new Point(140, 130), new Point(140, 117.5)); + new GUIWire(model, not2.getPin("Y"), p2); + new GUIWire(model, p2, or1.getPin("B"), new Point(250, 185), new Point(140, 130), new Point(140, 117.5)); WireCrossPoint o1 = new WireCrossPoint(model, 1); o1.moveCenterTo(270, 112.5); diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java index 681b3b3a..7218fecc 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java @@ -21,17 +21,17 @@ public class SubmodelComponentTestbench SimpleRectangularSubmodelComponent comp = new GUIAm2901ALUInclDecode(model); comp.moveTo(100, 0); - for (int i = 0; i < comp.getInputPins().size(); i++) + for (int i = 0; i < comp.getInputPinNames().size(); i++) { GUIManualSwitch sw = new GUIManualSwitch(model); sw.moveTo(0, 20 * i); - new GUIWire(model, comp.getInputPins().get(i), sw.getOutputPin()); + new GUIWire(model, comp.getPin(comp.getInputPinNames().get(i)), sw.getOutputPin()); } - for (int i = 0; i < comp.getOutputPins().size(); i++) + for (int i = 0; i < comp.getOutputPinNames().size(); i++) { GUIBitDisplay bd = new GUIBitDisplay(model); bd.moveTo(200, 20 * i); - new GUIWire(model, comp.getOutputPins().get(i), bd.getInputPin()); + new GUIWire(model, comp.getPin(comp.getOutputPinNames().get(i)), bd.getInputPin()); } } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/AtomicAm2901NANDBased.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/AtomicAm2901NANDBased.java index b74f733a..c11c605c 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/AtomicAm2901NANDBased.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/AtomicAm2901NANDBased.java @@ -23,9 +23,9 @@ public class AtomicAm2901NANDBased extends GUIComponent this.outputNames = List.of("Y1", "Y2", "Y3", "Y4", "F=0", "Cn+4", "OVR", "F3_ORAMn+3", "ORAMn", "OQn", "OQn+3"); setSize(50, inputNames.size() * 10); for (int i = 0; i < inputNames.size(); i++) - addPin(new Pin(this, "Input pin #" + i, 1, 0, 5 + 10 * i)); + addPin(new Pin(this, inputNames.get(i), 1, 0, 5 + 10 * i)); for (int i = 0; i < outputNames.size(); i++) - addPin(new Pin(this, "Output pin #" + i, 1, 50, 5 + 10 * i)); + addPin(new Pin(this, outputNames.get(i), 1, 50, 5 + 10 * i)); } @Override diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java index 7254d8bd..69b02bf9 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java @@ -1,8 +1,11 @@ package net.mograsim.logic.ui.model.components; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.function.Consumer; import java.util.function.Supplier; @@ -15,8 +18,8 @@ public abstract class GUIComponent { protected final ViewModelModifiable model; private final Rectangle bounds; - private final List pins; - protected final List pinsUnmodifiable; + private final Map pinsByName; + protected final Collection pinsUnmodifiable; private final List> componentMovedListeners; private final List> pinAddedListeners; @@ -31,8 +34,8 @@ public abstract class GUIComponent { this.model = model; this.bounds = new Rectangle(0, 0, 0, 0); - this.pins = new ArrayList<>(); - this.pinsUnmodifiable = Collections.unmodifiableList(pins); + this.pinsByName = new HashMap<>(); + this.pinsUnmodifiable = Collections.unmodifiableCollection(pinsByName.values()); this.componentMovedListeners = new ArrayList<>(); this.pinAddedListeners = new ArrayList<>(); @@ -46,7 +49,7 @@ public abstract class GUIComponent public void destroy() { - pins.forEach(p -> pinRemovedListeners.forEach(l -> l.accept(p))); + pinsByName.values().forEach(p -> pinRemovedListeners.forEach(l -> l.accept(p))); model.componentDestroyed(this); } @@ -76,13 +79,18 @@ public abstract class GUIComponent } /** - * Returns a list of pins of this component. + * Returns a collection of pins of this component. */ - public List getPins() + public Collection getPins() { return pinsUnmodifiable; } + public Pin getPin(String name) + { + return pinsByName.get(name); + } + // @formatter:off public void addComponentMovedListener (Consumer listener) {componentMovedListeners.add (listener);} public void addPinAddedListener (Consumer listener) {pinAddedListeners .add (listener);} @@ -119,15 +127,17 @@ public abstract class GUIComponent protected void addPin(Pin pin) { - pins.add(pin); + if (pinsByName.containsKey(pin.name)) + throw new IllegalArgumentException("Duplicate pin name: " + pin.name); + pinsByName.put(pin.name, pin); callPinAddedListeners(pin); pin.addRedrawListener(redrawListenerForSubcomponents); callRedrawListeners(); } - protected void removePin(Pin pin) + protected void removePin(String name) { - pins.remove(pin); + Pin pin = pinsByName.remove(name); callPinRemovedListeners(pin); pin.removeRedrawListener(redrawListenerForSubcomponents); callRedrawListeners(); diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUICustomComponentCreator.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUICustomComponentCreator.java index 9d040925..02b022a9 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUICustomComponentCreator.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUICustomComponentCreator.java @@ -85,13 +85,13 @@ public final class GUICustomComponentCreator int inputCount = ((Number) m.get(SimpleRectangularSubmodelComponent.kInCount)).intValue(); String[] inputNames = new String[inputCount]; for (int i = 0; i < inputCount; i++) - inputNames[i] = "Input pin #" + i; + inputNames[i] = params.interfacePins[i].name; rect.setInputPins(inputNames); int outputCount = ((Number) m.get(SimpleRectangularSubmodelComponent.kOutCount)).intValue(); String[] outputPins = new String[outputCount]; for (int i = 0; i < outputCount; i++) - outputPins[i] = "Output pin #" + i; + outputPins[i] = params.interfacePins[inputCount + i].name; rect.setOutputPins(outputPins); return rect; @@ -145,9 +145,8 @@ public final class GUICustomComponentCreator { InnerWireParams innerWire = params.innerWires[i]; new GUIWire(comp.submodelModifiable, - comp.submodelModifiable.getComponents().get(innerWire.pin1.compId).getPins().get(innerWire.pin1.pinIndex), - comp.submodelModifiable.getComponents().get(innerWire.pin2.compId).getPins().get(innerWire.pin2.pinIndex), - innerWire.path); + comp.submodelModifiable.getComponents().get(innerWire.pin1.compId).getPin(innerWire.pin1.pinName), + comp.submodelModifiable.getComponents().get(innerWire.pin2.compId).getPin(innerWire.pin2.pinName), innerWire.path); } } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException | SecurityException diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularGUIGate.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularGUIGate.java index cbb8ab7e..9058d2e0 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularGUIGate.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularGUIGate.java @@ -1,7 +1,6 @@ package net.mograsim.logic.ui.model.components; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import net.haspamelodica.swt.helper.gcs.GeneralGC; @@ -26,7 +25,6 @@ public class SimpleRectangularGUIGate extends GUIComponent private MovablePin outputPin; private final List inputPins; - private final List inputPinsUnmodifiable; protected SimpleRectangularGUIGate(ViewModelModifiable model, int logicWidth, String label, boolean isInverted) { @@ -38,7 +36,6 @@ public class SimpleRectangularGUIGate extends GUIComponent this.outputPin = new MovablePin(this, "Y", logicWidth, width, 0); addPin(outputPin); this.inputPins = new ArrayList<>(); - this.inputPinsUnmodifiable = Collections.unmodifiableList(inputPins); setInputCount(1); } @@ -48,35 +45,25 @@ public class SimpleRectangularGUIGate extends GUIComponent setSize(width, inputCount * pinDistance); if (oldInputCount > inputCount) while (inputPins.size() > inputCount) - removePin(inputPins.remove(inputCount)); + removePin(inputPins.remove(inputCount).name); else if (oldInputCount < inputCount) for (int i = oldInputCount; i < inputCount; i++) { - // TODO what for more than 26 input pins? - Pin pin = new Pin(this, "A" + i, logicWidth, 0, pinDistance / 2 + i * pinDistance); + // TODO what for more than 24 input pins? + Pin pin = new Pin(this, String.valueOf((char) ('A' + i)), logicWidth, 0, pinDistance / 2 + i * pinDistance); inputPins.add(pin); addPin(pin); } outputPin.setRelPos(width, inputCount * pinDistance / 2); } - public Pin getOutputPin() - { - return outputPin; - } - - public List getInputPins() - { - return inputPinsUnmodifiable; - } - @Override public void render(GeneralGC gc, Rectangle visibleRegion) { double posX = getBounds().x; double posY = getBounds().y; - double height = inputPins.size() * pinDistance; + double height = (getPins().size() - 1) * pinDistance; gc.drawRectangle(posX, posY, rectWidth, height); Font oldFont = gc.getFont(); Font labelFont = new Font(oldFont.getName(), fontHeight, oldFont.getStyle()); diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularSubmodelComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularSubmodelComponent.java index f28723d2..0c0bf301 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularSubmodelComponent.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularSubmodelComponent.java @@ -1,7 +1,9 @@ package net.mograsim.logic.ui.model.components; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -26,109 +28,66 @@ public class SimpleRectangularSubmodelComponent extends SubmodelComponent private final String label; protected final int logicWidth; - private final List inputSupermodelPins; - private final List inputSupermodelPinsUnmodifiable; - private final List outputSupermodelPins; - private final List outputSupermodelPinsUnmodifiable; - private final List inputSubmodelPins; - private final List inputSubmodelPinsUnmodifiable; - private final List outputSubmodelPins; - private final List outputSubmodelPinsUnmodifiable; + private final List inputPinNames; + private final List inputPinNamesUnmodifiable; + private final List outputPinNames; + private final List outputPinNamesUnmodifiable; protected SimpleRectangularSubmodelComponent(ViewModelModifiable model, int logicWidth, String label) { super(model); this.label = label; this.logicWidth = logicWidth; - this.inputSupermodelPins = new ArrayList<>(); - this.inputSupermodelPinsUnmodifiable = Collections.unmodifiableList(inputSupermodelPins); - this.outputSupermodelPins = new ArrayList<>(); - this.outputSupermodelPinsUnmodifiable = Collections.unmodifiableList(outputSupermodelPins); - this.inputSubmodelPins = new ArrayList<>(); - this.inputSubmodelPinsUnmodifiable = Collections.unmodifiableList(inputSubmodelPins); - this.outputSubmodelPins = new ArrayList<>(); - this.outputSubmodelPinsUnmodifiable = Collections.unmodifiableList(outputSubmodelPins); + this.inputPinNames = new ArrayList<>(); + this.inputPinNamesUnmodifiable = Collections.unmodifiableList(inputPinNames); + this.outputPinNames = new ArrayList<>(); + this.outputPinNamesUnmodifiable = Collections.unmodifiableList(outputPinNames); } protected void setInputPins(String... pinNames) { - int inputCount = pinNames.length; - int oldInputCount = inputSupermodelPins.size(); - double height = Math.max(inputCount, outputSupermodelPins.size()) * pinDistance; - super.setSize(width, height); - if (oldInputCount > inputCount) - while (inputSupermodelPins.size() > inputCount) - { - inputSubmodelPins.remove(inputCount); - super.removeSubmodelInterface(inputSupermodelPins.remove(inputCount)); - } - else if (oldInputCount < inputCount) - for (int i = oldInputCount; i < inputCount; i++) - { - Pin submodelPin = super.addSubmodelInterface(pinNames[i], logicWidth, 0, pinDistance / 2 + i * pinDistance); - inputSubmodelPins.add(submodelPin); - inputSupermodelPins.add(getSupermodelPin(submodelPin)); - } - for (int i = 0; i < Math.min(oldInputCount, inputCount); i++) - { - if (!inputSubmodelPins.get(i).name.equals(pinNames[i])) - { - super.removeSubmodelInterface(inputSupermodelPins.get(i)); - Pin submodelPin = super.addSubmodelInterface(pinNames[i], logicWidth, 0, pinDistance / 2 + i * pinDistance); - inputSubmodelPins.set(i, submodelPin); - inputSupermodelPins.set(i, getSupermodelPin(submodelPin)); - } - } + setIOPins(0, inputPinNames, outputPinNames, pinNames); } protected void setOutputPins(String... pinNames) { - int outputCount = pinNames.length; - int oldOutputCount = outputSupermodelPins.size(); - super.setSize(width, Math.max(inputSupermodelPins.size(), outputCount) * pinDistance); - if (oldOutputCount > outputCount) - while (outputSupermodelPins.size() > outputCount) - { - outputSubmodelPins.remove(outputCount); - super.removeSubmodelInterface(outputSupermodelPins.get(outputCount)); - } - else if (oldOutputCount < outputCount) - for (int i = oldOutputCount; i < outputCount; i++) - { - Pin submodelPin = super.addSubmodelInterface(pinNames[i], logicWidth, width, pinDistance / 2 + i * pinDistance); - outputSubmodelPins.add(submodelPin); - outputSupermodelPins.add(getSupermodelPin(submodelPin)); - } - for (int i = 0; i < Math.min(oldOutputCount, outputCount); i++) - { - if (!outputSubmodelPins.get(i).name.equals(pinNames[i])) - { - super.removeSubmodelInterface(outputSupermodelPins.get(i)); - Pin submodelPin = super.addSubmodelInterface(pinNames[i], logicWidth, width, pinDistance / 2 + i * pinDistance); - outputSubmodelPins.set(i, submodelPin); - outputSupermodelPins.set(i, getSupermodelPin(submodelPin)); - } - } + setIOPins(width, outputPinNames, inputPinNames, pinNames); } - public List getInputPins() + private void setIOPins(double relX, List pinNamesListThisSide, List pinNamesListOtherSide, String... newPinNames) { - return inputSupermodelPinsUnmodifiable; - } - - public List getOutputPins() - { - return outputSupermodelPinsUnmodifiable; + int inputCount = newPinNames.length; + List newPinNamesList = Arrays.asList(newPinNames); + if (new HashSet<>(newPinNamesList).size() != inputCount) + throw new IllegalArgumentException("Pin names contain duplicates"); + for (String pinName : newPinNamesList) + if (pinNamesListOtherSide.contains(pinName)) + throw new IllegalArgumentException("Can't add pin. There is a pin on the other side with the same name: " + pinName); + super.setSize(width, Math.max(inputCount, pinNamesListOtherSide.size()) * pinDistance); + for (int i = 0; i < inputCount; i++) + { + String pinName = newPinNames[i]; + int oldPinIndex = pinNamesListThisSide.indexOf(pinName); + if (oldPinIndex == -1) + super.addSubmodelInterface(pinName, logicWidth, relX, pinDistance / 2 + i * pinDistance); + else + getSupermodelMovablePin(pinName).setRelPos(relX, pinDistance / 2 + i * pinDistance); + } + for (String pinName : pinNamesListThisSide) + if (!newPinNamesList.contains(pinName)) + super.removeSubmodelInterface(pinName); + pinNamesListThisSide.clear(); + pinNamesListThisSide.addAll(newPinNamesList); } - protected List getInputSubmodelPins() + public List getInputPinNames() { - return inputSubmodelPinsUnmodifiable; + return inputPinNamesUnmodifiable; } - protected List getOutputSubmodelPins() + public List getOutputPinNames() { - return outputSubmodelPinsUnmodifiable; + return outputPinNamesUnmodifiable; } @Override @@ -142,15 +101,15 @@ public class SimpleRectangularSubmodelComponent extends SubmodelComponent Point textExtent = gc.textExtent(label); gc.drawText(label, posX + (getBounds().width - textExtent.x) / 2, posY + (getBounds().height - textExtent.y) / 2, true); gc.setFont(new Font(oldFont.getName(), pinNameFontHeight, oldFont.getStyle())); - for (int i = 0; i < inputSupermodelPins.size(); i++) + for (int i = 0; i < inputPinNames.size(); i++) { - String pinName = inputSupermodelPins.get(i).name; + String pinName = inputPinNames.get(i); textExtent = gc.textExtent(pinName); gc.drawText(pinName, posX + pinNameMargin, posY + i * pinDistance + (pinDistance - textExtent.y) / 2, true); } - for (int i = 0; i < outputSupermodelPins.size(); i++) + for (int i = 0; i < outputPinNames.size(); i++) { - String pinName = outputSupermodelPins.get(i).name; + String pinName = outputPinNames.get(i); textExtent = gc.textExtent(pinName); gc.drawText(pinName, posX + width - textExtent.x - pinNameMargin, posY + i * pinDistance + (pinDistance - textExtent.y) / 2, true); @@ -171,8 +130,8 @@ public class SimpleRectangularSubmodelComponent extends SubmodelComponent ret.type = SimpleRectangularSubmodelComponent.class.getSimpleName(); Map m = new TreeMap<>(); m.put(kLabel, label); - m.put(kInCount, inputSupermodelPins.size()); - m.put(kOutCount, outputSupermodelPins.size()); + m.put(kInCount, inputPinNames.size()); + m.put(kOutCount, outputPinNames.size()); m.put(kLogicWidth, logicWidth); ret.specialized = m; return ret; @@ -186,7 +145,7 @@ public class SimpleRectangularSubmodelComponent extends SubmodelComponent } @Override - protected void removeSubmodelInterface(Pin supermodelPin) + protected void removeSubmodelInterface(String name) { throw new UnsupportedOperationException( "Can't remove submodel interfaces of a SimpleRectangularSubmodelComponent directly, call setInputPins / setOutputPins instead"); diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java index cfa505ee..27699bd9 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java @@ -28,10 +28,12 @@ public abstract class SubmodelComponent extends GUIComponent { protected final ViewModelModifiable submodelModifiable; public final ViewModel submodel; - private final Map submodelPinsPerSupermodelPin; - private final Map submodelPinsPerSupermodelPinUnmodifiable; - private final Map supermodelPinsPerSubmodelPin; - private final Map supermodelPinsPerSubmodelPinUnmodifiable; + private final Map submodelPins; + private final Map submodelMovablePinsUnmodifiable; + private final Map submodelUnmovablePinsUnmodifiable; + private final Map supermodelPins; + private final Map supermodelMovablePinsUnmodifiable; + private final Map supermodelUnmovablePinsUnmodifiable; private final SubmodelInterface submodelInterface; private double submodelScale; @@ -44,10 +46,12 @@ public abstract class SubmodelComponent extends GUIComponent super(model); this.submodelModifiable = new ViewModelModifiable(); this.submodel = submodelModifiable; - this.submodelPinsPerSupermodelPin = new HashMap<>(); - this.submodelPinsPerSupermodelPinUnmodifiable = Collections.unmodifiableMap(submodelPinsPerSupermodelPin); - this.supermodelPinsPerSubmodelPin = new HashMap<>(); - this.supermodelPinsPerSubmodelPinUnmodifiable = Collections.unmodifiableMap(supermodelPinsPerSubmodelPin); + this.submodelPins = new HashMap<>(); + this.submodelMovablePinsUnmodifiable = Collections.unmodifiableMap(submodelPins); + this.submodelUnmovablePinsUnmodifiable = Collections.unmodifiableMap(submodelPins); + this.supermodelPins = new HashMap<>(); + this.supermodelMovablePinsUnmodifiable = Collections.unmodifiableMap(supermodelPins); + this.supermodelUnmovablePinsUnmodifiable = Collections.unmodifiableMap(supermodelPins); this.submodelInterface = new SubmodelInterface(submodelModifiable); this.submodelScale = 1; @@ -62,8 +66,8 @@ public abstract class SubmodelComponent extends GUIComponent { this.submodelScale = submodelScale; - for (Entry e : supermodelPinsPerSubmodelPin.entrySet()) - e.getKey().setRelPos(e.getValue().getRelX() * submodelScale, e.getValue().getRelY() * submodelScale); + for (Entry e : supermodelPins.entrySet()) + getSubmodelMovablePin(e.getKey()).setRelPos(e.getValue().getRelX() * submodelScale, e.getValue().getRelY() * submodelScale); requestRedraw();// needed if there is no submodel interface pin } @@ -79,69 +83,83 @@ public abstract class SubmodelComponent extends GUIComponent protected Pin addSubmodelInterface(String name, int logicWidth, double relX, double relY) { MovablePin submodelPin = new MovablePin(submodelInterface, name, logicWidth, relX / submodelScale, relY / submodelScale); - submodelInterface.addPin(submodelPin); - MovablePin supermodelPin = new MovablePin(this, name, logicWidth, relX, relY); + + submodelPin.addPinMovedListener(p -> + { + double newRelX = p.getRelX() * submodelScale; + double newRelY = p.getRelY() * submodelScale; + if (supermodelPin.getRelX() != newRelX || supermodelPin.getRelY() != newRelY) + supermodelPin.setRelPos(newRelX, newRelY); + }); + supermodelPin.addPinMovedListener(p -> + { + double newRelX = p.getRelX() / submodelScale; + double newRelY = p.getRelY() / submodelScale; + if (submodelPin.getRelX() != newRelX || submodelPin.getRelY() != newRelY) + submodelPin.setRelPos(newRelX, newRelY); + }); + + submodelInterface.addPin(submodelPin); super.addPin(supermodelPin); - submodelPinsPerSupermodelPin.put(supermodelPin, submodelPin); - supermodelPinsPerSubmodelPin.put(submodelPin, supermodelPin); + submodelPins.put(name, submodelPin); + supermodelPins.put(name, supermodelPin); // no need to call requestRedraw() because addPin() will request a redraw return submodelPin; } - protected void moveSubmodelInterface(Pin supermodelPin, double relX, double relY) + protected void removeSubmodelInterface(String name) { - MovablePin submodelPin = getSubmodelMovablePin(supermodelPin); - MovablePin supermodelPinMovable = getSupermodelMovablePin(submodelPin); + super.removePin(name); + Pin submodelPin = getSubmodelMovablePin(name); + submodelInterface.removePin(submodelPin.name); - submodelPin.setRelPos(relX / submodelScale, relY / submodelScale); - supermodelPinMovable.setRelPos(relX, relY); + submodelPins.remove(name); + supermodelPins.remove(name); - // no need to call requestRedraw() because setRelPos() will request a redraw + // no need to call requestRedraw() because removePin() will request a redraw } - protected void removeSubmodelInterface(Pin supermodelPin) + public Map getSubmodelPins() { - super.removePin(supermodelPin); - Pin submodelPin = getSubmodelMovablePin(supermodelPin); - submodelInterface.removePin(submodelPin); - - submodelPinsPerSupermodelPin.remove(supermodelPin); - supermodelPinsPerSubmodelPin.remove(submodelPin); + return submodelUnmovablePinsUnmodifiable; + } - // no need to call requestRedraw() because removePin() will request a redraw + public Pin getSubmodelPin(String name) + { + return getSubmodelMovablePin(name); } - public Map getSupermodelPinsPerSubmodelPin() + protected Map getSubmodelMovablePins() { - return supermodelPinsPerSubmodelPinUnmodifiable; + return submodelMovablePinsUnmodifiable; } - public Pin getSupermodelPin(Pin submodelPin) + protected MovablePin getSubmodelMovablePin(String name) { - return getSupermodelMovablePin(submodelPin); + return submodelPins.get(name); } - protected MovablePin getSupermodelMovablePin(Pin submodelPin) + public Map getSupermodelPins() { - return supermodelPinsPerSubmodelPin.get(submodelPin); + return supermodelUnmovablePinsUnmodifiable; } - public Map getSubmodelPinsPerSupermodelPin() + public Pin getSupermodelPin(String name) { - return submodelPinsPerSupermodelPinUnmodifiable; + return getSupermodelMovablePin(name); } - public Pin getSubmodelPin(Pin supermodelPin) + protected Map getSupermodelMovablePins() { - return getSubmodelMovablePin(supermodelPin); + return supermodelMovablePinsUnmodifiable; } - protected MovablePin getSubmodelMovablePin(Pin supermodelPin) + protected MovablePin getSupermodelMovablePin(String name) { - return submodelPinsPerSupermodelPin.get(supermodelPin); + return supermodelPins.get(name); } @Override @@ -209,10 +227,9 @@ public abstract class SubmodelComponent extends GUIComponent params.width = bounds.width; params.height = bounds.height; - List pinList = pinsUnmodifiable; - InterfacePinParams[] iPins = new InterfacePinParams[pinList.size()]; + InterfacePinParams[] iPins = new InterfacePinParams[getPins().size()]; int i = 0; - for (Pin p : pinList) + for (Pin p : getPins()) { InterfacePinParams iPinParams = new InterfacePinParams(); iPins[i] = iPinParams; @@ -240,7 +257,7 @@ public abstract class SubmodelComponent extends GUIComponent GUIComponent component = componentIt.next(); InnerComponentParams inner = new InnerComponentParams(); comps[i] = inner; - inner.logicWidth = component.getPins().get(0).logicWidth; // This could be done a little more elegantly + inner.logicWidth = component.getPins().iterator().next().logicWidth; // TODO This could be done a little more elegantly Rectangle bounds = component.getBounds(); inner.pos = new Point(bounds.x, bounds.y); inner.type = component.getIdentifier(); @@ -257,9 +274,9 @@ public abstract class SubmodelComponent extends GUIComponent wires[i] = inner; InnerPinParams pin1Params = new InnerPinParams(), pin2Params = new InnerPinParams(); - pin1Params.pinIndex = wire.getPin1().component.getPins().indexOf(wire.getPin1()); + pin1Params.pinName = wire.getPin1().name; pin1Params.compId = compList.indexOf(wire.getPin1().component); - pin2Params.pinIndex = wire.getPin2().component.getPins().indexOf(wire.getPin2()); + pin2Params.pinName = wire.getPin2().name; pin2Params.compId = compList.indexOf(wire.getPin2().component); inner.pin1 = pin1Params; inner.pin2 = pin2Params; @@ -277,7 +294,7 @@ public abstract class SubmodelComponent extends GUIComponent } @Override - protected void removePin(Pin pin) + protected void removePin(String name) { throw new UnsupportedOperationException("Can't remove pins of a SubmodelComponent directly, call removeSubmodelInterface instead"); } diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponentParams.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponentParams.java index f2403552..b166d577 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponentParams.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponentParams.java @@ -32,7 +32,8 @@ public class SubmodelComponentParams public static class InnerPinParams { - public int compId, pinIndex; + public int compId; + public String pinName; } public static class ComponentCompositionParams diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUI_rsLatch.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUI_rsLatch.java index e3818476..b42a05ff 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUI_rsLatch.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUI_rsLatch.java @@ -22,10 +22,10 @@ public class GUI_rsLatch extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin _S = getInputSubmodelPins().get(0); - Pin _R = getInputSubmodelPins().get(1); - Pin Q = getOutputSubmodelPins().get(0); - Pin _Q = getOutputSubmodelPins().get(1); + Pin _S = getSubmodelPin("_S"); + Pin _R = getSubmodelPin("_R"); + Pin Q = getSubmodelPin("Q"); + Pin _Q = getSubmodelPin("_Q"); GUINandGate nand1 = new GUINandGate(submodelModifiable, 1); GUINandGate nand2 = new GUINandGate(submodelModifiable, 1); @@ -38,12 +38,12 @@ public class GUI_rsLatch extends SimpleRectangularSubmodelComponent cp1.moveCenterTo(35, 17.5); cp2.moveCenterTo(65, 37.5); - new GUIWire(submodelModifiable, _S, nand1.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, _R, nand2.getInputPins().get(1), new Point(35, 37.5), new Point(35, 27.5)); - new GUIWire(submodelModifiable, nand1.getOutputPin(), cp1, new Point[0]); - new GUIWire(submodelModifiable, nand2.getOutputPin(), cp2, new Point(65, 22.5)); - new GUIWire(submodelModifiable, cp1, nand2.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cp2, nand1.getInputPins().get(1), new Point(65, 42.5), new Point(5, 42.5), new Point(5, 22.5)); + new GUIWire(submodelModifiable, _S, nand1.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, _R, nand2.getPin("B"), new Point(35, 37.5), new Point(35, 27.5)); + new GUIWire(submodelModifiable, nand1.getPin("Y"), cp1, new Point[0]); + new GUIWire(submodelModifiable, nand2.getPin("Y"), cp2, new Point(65, 22.5)); + new GUIWire(submodelModifiable, cp1, nand2.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cp2, nand1.getPin("B"), new Point(65, 42.5), new Point(5, 42.5), new Point(5, 22.5)); new GUIWire(submodelModifiable, cp1, Q, new Point(35, 17.5), new Point(35, 7.5), new Point(65, 7.5), new Point(65, 12.5)); new GUIWire(submodelModifiable, cp2, _Q, new Point[0]); } diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIand.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIand.java index cb7f6b68..018e9bb1 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIand.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIand.java @@ -22,9 +22,9 @@ public class GUIand extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin A = getInputSubmodelPins().get(0); - Pin B = getInputSubmodelPins().get(1); - Pin Y = getOutputSubmodelPins().get(0); + Pin A = getSubmodelPin("A"); + Pin B = getSubmodelPin("B"); + Pin Y = getSubmodelPin("Y"); GUINandGate nand = new GUINandGate(submodelModifiable, 1); GUINandGate not = new GUINandGate(submodelModifiable, 1); @@ -35,11 +35,11 @@ public class GUIand extends SimpleRectangularSubmodelComponent not.moveTo(50, 15); cp1.moveCenterTo(45, 25); - new GUIWire(submodelModifiable, A, nand.getInputPins().get(0)); - new GUIWire(submodelModifiable, B, nand.getInputPins().get(1)); - new GUIWire(submodelModifiable, nand.getOutputPin(), cp1, new Point[0]); - new GUIWire(submodelModifiable, cp1, not.getInputPins().get(0), new Point(45, 20)); - new GUIWire(submodelModifiable, cp1, not.getInputPins().get(1), new Point(45, 30)); - new GUIWire(submodelModifiable, not.getOutputPin(), Y); + new GUIWire(submodelModifiable, A, nand.getPin("A")); + new GUIWire(submodelModifiable, B, nand.getPin("B")); + new GUIWire(submodelModifiable, nand.getPin("Y"), cp1, new Point[0]); + new GUIWire(submodelModifiable, cp1, not.getPin("A"), new Point(45, 20)); + new GUIWire(submodelModifiable, cp1, not.getPin("B"), new Point(45, 30)); + new GUIWire(submodelModifiable, not.getPin("Y"), Y); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIand41.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIand41.java index 45ba337a..b97e39b7 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIand41.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIand41.java @@ -21,15 +21,15 @@ public class GUIand41 extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin A1 = getInputSubmodelPins().get(0); - Pin A2 = getInputSubmodelPins().get(1); - Pin A3 = getInputSubmodelPins().get(2); - Pin A4 = getInputSubmodelPins().get(3); - Pin B = getInputSubmodelPins().get(4); - Pin Y1 = getOutputSubmodelPins().get(0); - Pin Y2 = getOutputSubmodelPins().get(1); - Pin Y3 = getOutputSubmodelPins().get(2); - Pin Y4 = getOutputSubmodelPins().get(3); + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin B = getSubmodelPin("B"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); GUIand and1 = new GUIand(submodelModifiable); GUIand and2 = new GUIand(submodelModifiable); @@ -48,20 +48,20 @@ public class GUIand41 extends SimpleRectangularSubmodelComponent cpB3.moveCenterTo(25, 72.5); cpB4.moveCenterTo(25, 97.5); - new GUIWire(submodelModifiable, A1, and1.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, A2, and2.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, A3, and3.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, A4, and4.getInputPins().get(0), new Point[0]); + new GUIWire(submodelModifiable, A1, and1.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, A2, and2.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, A3, and3.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, A4, and4.getPin("A"), new Point[0]); new GUIWire(submodelModifiable, B, cpB4, new Point(25, 112.5)); - new GUIWire(submodelModifiable, cpB4, and4.getInputPins().get(1), new Point[0]); + new GUIWire(submodelModifiable, cpB4, and4.getPin("B"), new Point[0]); new GUIWire(submodelModifiable, cpB4, cpB3, new Point[0]); - new GUIWire(submodelModifiable, cpB3, and3.getInputPins().get(1), new Point[0]); + new GUIWire(submodelModifiable, cpB3, and3.getPin("B"), new Point[0]); new GUIWire(submodelModifiable, cpB3, cpB2, new Point[0]); - new GUIWire(submodelModifiable, cpB2, and2.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpB2, and1.getInputPins().get(1), new Point(25, 22.5)); - new GUIWire(submodelModifiable, and1.getOutputPins().get(0), Y1, new Point[0]); - new GUIWire(submodelModifiable, and2.getOutputPins().get(0), Y2, new Point[0]); - new GUIWire(submodelModifiable, and3.getOutputPins().get(0), Y3, new Point[0]); - new GUIWire(submodelModifiable, and4.getOutputPins().get(0), Y4, new Point[0]); + new GUIWire(submodelModifiable, cpB2, and2.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpB2, and1.getPin("B"), new Point(25, 22.5)); + new GUIWire(submodelModifiable, and1.getPin("Y"), Y1, new Point[0]); + new GUIWire(submodelModifiable, and2.getPin("Y"), Y2, new Point[0]); + new GUIWire(submodelModifiable, and3.getPin("Y"), Y3, new Point[0]); + new GUIWire(submodelModifiable, and4.getPin("Y"), Y4, new Point[0]); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIandor414.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIandor414.java index aa2c0768..cf5146b0 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIandor414.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIandor414.java @@ -20,19 +20,19 @@ public class GUIandor414 extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin C1 = getInputSubmodelPins().get(0); - Pin C2 = getInputSubmodelPins().get(1); - Pin C3 = getInputSubmodelPins().get(2); - Pin C4 = getInputSubmodelPins().get(3); - Pin A1 = getInputSubmodelPins().get(4); - Pin A2 = getInputSubmodelPins().get(5); - Pin A3 = getInputSubmodelPins().get(6); - Pin A4 = getInputSubmodelPins().get(7); - Pin B = getInputSubmodelPins().get(8); - Pin Y1 = getOutputSubmodelPins().get(0); - Pin Y2 = getOutputSubmodelPins().get(1); - Pin Y3 = getOutputSubmodelPins().get(2); - Pin Y4 = getOutputSubmodelPins().get(3); + Pin C1 = getSubmodelPin("C1"); + Pin C2 = getSubmodelPin("C2"); + Pin C3 = getSubmodelPin("C3"); + Pin C4 = getSubmodelPin("C4"); + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin B = getSubmodelPin("B"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); GUIand41 and = new GUIand41(submodelModifiable); GUIor_4 or = new GUIor_4(submodelModifiable); @@ -40,26 +40,26 @@ public class GUIandor414 extends SimpleRectangularSubmodelComponent and.moveTo(15, 137.5); or.moveTo(35, 37.5); - new GUIWire(submodelModifiable, A1, and.getInputPins().get(0), new Point(10, 112.5), new Point(10, 142.5)); - new GUIWire(submodelModifiable, A2, and.getInputPins().get(1), new Point(5, 137.5), new Point(5, 152.5)); - new GUIWire(submodelModifiable, A3, and.getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, A4, and.getInputPins().get(3), new Point(5, 187.5), new Point(5, 172.5)); - new GUIWire(submodelModifiable, B, and.getInputPins().get(4), new Point(10, 212.5), new Point(10, 182.5)); - new GUIWire(submodelModifiable, C1, or.getInputPins().get(0), new Point(10, 12.5), new Point(10, 42.5)); - new GUIWire(submodelModifiable, C2, or.getInputPins().get(1), new Point(5, 37.5), new Point(5, 52.5)); - new GUIWire(submodelModifiable, C3, or.getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, C4, or.getInputPins().get(3), new Point(5, 87.5), new Point(5, 72.5)); - new GUIWire(submodelModifiable, and.getOutputPins().get(0), or.getInputPins().get(4), new Point(70, 142.5), new Point(70, 120), - new Point(30, 120), new Point(30, 82.5)); - new GUIWire(submodelModifiable, and.getOutputPins().get(1), or.getInputPins().get(5), new Point(65, 152.5), new Point(65, 125), - new Point(25, 125), new Point(25, 92.5)); - new GUIWire(submodelModifiable, and.getOutputPins().get(2), or.getInputPins().get(6), new Point(60, 162.5), new Point(60, 130), - new Point(20, 130), new Point(20, 102.5)); - new GUIWire(submodelModifiable, and.getOutputPins().get(3), or.getInputPins().get(7), new Point(55, 172.5), new Point(55, 135), - new Point(15, 135), new Point(15, 112.5)); - new GUIWire(submodelModifiable, or.getOutputPins().get(0), Y1, new Point(75, 42.5), new Point(75, 12.5)); - new GUIWire(submodelModifiable, or.getOutputPins().get(1), Y2, new Point(80, 52.5), new Point(80, 37.5)); - new GUIWire(submodelModifiable, or.getOutputPins().get(2), Y3, new Point[0]); - new GUIWire(submodelModifiable, or.getOutputPins().get(3), Y4, new Point(80, 72.5), new Point(80, 87.5)); + new GUIWire(submodelModifiable, A1, and.getPin("A1"), new Point(10, 112.5), new Point(10, 142.5)); + new GUIWire(submodelModifiable, A2, and.getPin("A2"), new Point(5, 137.5), new Point(5, 152.5)); + new GUIWire(submodelModifiable, A3, and.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, A4, and.getPin("A4"), new Point(5, 187.5), new Point(5, 172.5)); + new GUIWire(submodelModifiable, B, and.getPin("B"), new Point(10, 212.5), new Point(10, 182.5)); + new GUIWire(submodelModifiable, C1, or.getPin("A1"), new Point(10, 12.5), new Point(10, 42.5)); + new GUIWire(submodelModifiable, C2, or.getPin("A2"), new Point(5, 37.5), new Point(5, 52.5)); + new GUIWire(submodelModifiable, C3, or.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, C4, or.getPin("A4"), new Point(5, 87.5), new Point(5, 72.5)); + new GUIWire(submodelModifiable, and.getPin("Y1"), or.getPin("B1"), new Point(70, 142.5), new Point(70, 120), new Point(30, 120), + new Point(30, 82.5)); + new GUIWire(submodelModifiable, and.getPin("Y2"), or.getPin("B2"), new Point(65, 152.5), new Point(65, 125), new Point(25, 125), + new Point(25, 92.5)); + new GUIWire(submodelModifiable, and.getPin("Y3"), or.getPin("B3"), new Point(60, 162.5), new Point(60, 130), new Point(20, 130), + new Point(20, 102.5)); + new GUIWire(submodelModifiable, and.getPin("Y4"), or.getPin("B4"), new Point(55, 172.5), new Point(55, 135), new Point(15, 135), + new Point(15, 112.5)); + new GUIWire(submodelModifiable, or.getPin("Y1"), Y1, new Point(75, 42.5), new Point(75, 12.5)); + new GUIWire(submodelModifiable, or.getPin("Y2"), Y2, new Point(80, 52.5), new Point(80, 37.5)); + new GUIWire(submodelModifiable, or.getPin("Y3"), Y3, new Point[0]); + new GUIWire(submodelModifiable, or.getPin("Y4"), Y4, new Point(80, 72.5), new Point(80, 87.5)); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdemux2.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdemux2.java index 172ca3a7..6d9057f5 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdemux2.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdemux2.java @@ -22,12 +22,12 @@ public class GUIdemux2 extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin S0 = getInputSubmodelPins().get(0); - Pin S1 = getInputSubmodelPins().get(1); - Pin Y00 = getOutputSubmodelPins().get(0); - Pin Y01 = getOutputSubmodelPins().get(1); - Pin Y10 = getOutputSubmodelPins().get(2); - Pin Y11 = getOutputSubmodelPins().get(3); + Pin S0 = getSubmodelPin("S0"); + Pin S1 = getSubmodelPin("S1"); + Pin Y00 = getSubmodelPin("Y00"); + Pin Y01 = getSubmodelPin("Y01"); + Pin Y10 = getSubmodelPin("Y10"); + Pin Y11 = getSubmodelPin("Y11"); GUINandGate notS0 = new GUINandGate(submodelModifiable, 1); GUINandGate notS1 = new GUINandGate(submodelModifiable, 1); @@ -62,27 +62,27 @@ public class GUIdemux2 extends SimpleRectangularSubmodelComponent new GUIWire(submodelModifiable, S0, cpS01, new Point[0]); new GUIWire(submodelModifiable, S1, cpS11, new Point[0]); - new GUIWire(submodelModifiable, cpS01, notS0.getInputPins().get(0), new Point(7.5, 7.5)); - new GUIWire(submodelModifiable, cpS11, notS1.getInputPins().get(0), new Point(5, 32.5)); + new GUIWire(submodelModifiable, cpS01, notS0.getPin("A"), new Point(7.5, 7.5)); + new GUIWire(submodelModifiable, cpS11, notS1.getPin("A"), new Point(5, 32.5)); new GUIWire(submodelModifiable, cpS01, cpS02, new Point[0]); new GUIWire(submodelModifiable, cpS11, cpS12, new Point[0]); - new GUIWire(submodelModifiable, cpS02, notS0.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpS12, notS1.getInputPins().get(1), new Point[0]); + new GUIWire(submodelModifiable, cpS02, notS0.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpS12, notS1.getPin("B"), new Point[0]); new GUIWire(submodelModifiable, cpS02, cpS03, new Point(7.5, 62.5)); new GUIWire(submodelModifiable, cpS12, cpS13, new Point(5, 67.5), new Point(32.5, 67.5)); - new GUIWire(submodelModifiable, notS0.getOutputPin(), cpNotS0, new Point[0]); - new GUIWire(submodelModifiable, notS1.getOutputPin(), cpNotS1, new Point[0]); - new GUIWire(submodelModifiable, cpNotS0, andY00.getInputPins().get(0), new Point(32.5, 7.5)); - new GUIWire(submodelModifiable, cpNotS1, andY00.getInputPins().get(1), new Point(35, 17.5)); - new GUIWire(submodelModifiable, cpS03, andY01.getInputPins().get(0), new Point(37.5, 32.5)); - new GUIWire(submodelModifiable, cpNotS1, andY01.getInputPins().get(1), new Point(35, 42.5)); - new GUIWire(submodelModifiable, cpNotS0, andY10.getInputPins().get(0), new Point(32.5, 57.5)); - new GUIWire(submodelModifiable, cpS13, andY10.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpS03, andY11.getInputPins().get(0), new Point(37.5, 82.5)); - new GUIWire(submodelModifiable, cpS13, andY11.getInputPins().get(1), new Point(32.5, 92.5)); - new GUIWire(submodelModifiable, andY00.getOutputPins().get(0), Y00); - new GUIWire(submodelModifiable, andY01.getOutputPins().get(0), Y01); - new GUIWire(submodelModifiable, andY10.getOutputPins().get(0), Y10); - new GUIWire(submodelModifiable, andY11.getOutputPins().get(0), Y11); + new GUIWire(submodelModifiable, notS0.getPin("Y"), cpNotS0, new Point[0]); + new GUIWire(submodelModifiable, notS1.getPin("Y"), cpNotS1, new Point[0]); + new GUIWire(submodelModifiable, cpNotS0, andY00.getPin("A"), new Point(32.5, 7.5)); + new GUIWire(submodelModifiable, cpNotS1, andY00.getPin("B"), new Point(35, 17.5)); + new GUIWire(submodelModifiable, cpS03, andY01.getPin("A"), new Point(37.5, 32.5)); + new GUIWire(submodelModifiable, cpNotS1, andY01.getPin("B"), new Point(35, 42.5)); + new GUIWire(submodelModifiable, cpNotS0, andY10.getPin("A"), new Point(32.5, 57.5)); + new GUIWire(submodelModifiable, cpS13, andY10.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpS03, andY11.getPin("A"), new Point(37.5, 82.5)); + new GUIWire(submodelModifiable, cpS13, andY11.getPin("B"), new Point(32.5, 92.5)); + new GUIWire(submodelModifiable, andY00.getPin("Y"), Y00); + new GUIWire(submodelModifiable, andY01.getPin("Y"), Y01); + new GUIWire(submodelModifiable, andY10.getPin("Y"), Y10); + new GUIWire(submodelModifiable, andY11.getPin("Y"), Y11); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdff.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdff.java index 33419069..40f33310 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdff.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdff.java @@ -22,10 +22,10 @@ public class GUIdff extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin C = getInputSubmodelPins().get(0); - Pin D = getInputSubmodelPins().get(1); - Pin Q = getOutputSubmodelPins().get(0); - Pin _Q = getOutputSubmodelPins().get(1); + Pin C = getSubmodelPin("C"); + Pin D = getSubmodelPin("D"); + Pin Q = getSubmodelPin("Q"); + Pin _Q = getSubmodelPin("_Q"); GUI_rsLatch _rsLatch1 = new GUI_rsLatch(submodelModifiable); GUInand3 nand3 = new GUInand3(submodelModifiable); @@ -47,19 +47,19 @@ public class GUIdff extends SimpleRectangularSubmodelComponent cp4.moveCenterTo(100, 45); new GUIWire(submodelModifiable, C, cp1, new Point[0]); - new GUIWire(submodelModifiable, cp1, _rsLatch1.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cp1, nand3.getInputPins().get(1), new Point(10, 55)); - new GUIWire(submodelModifiable, D, nand2.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, nand2.getOutputPin(), cp2, new Point(145, 70), new Point(145, 85), new Point(20, 85)); - new GUIWire(submodelModifiable, cp2, _rsLatch1.getInputPins().get(0), new Point(20, 15)); - new GUIWire(submodelModifiable, cp2, nand3.getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, _rsLatch1.getOutputPins().get(1), cp3, new Point(100, 25)); - new GUIWire(submodelModifiable, cp3, nand3.getInputPins().get(0), new Point(30, 35), new Point(30, 45)); - new GUIWire(submodelModifiable, cp3, _rsLatch2.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, nand3.getOutputPins().get(0), cp4, new Point[0]); - new GUIWire(submodelModifiable, cp4, _rsLatch2.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cp4, nand2.getInputPins().get(0), new Point(100, 65)); - new GUIWire(submodelModifiable, _rsLatch2.getOutputPins().get(0), Q); - new GUIWire(submodelModifiable, _rsLatch2.getOutputPins().get(1), _Q); + new GUIWire(submodelModifiable, cp1, _rsLatch1.getPin("_R"), new Point[0]); + new GUIWire(submodelModifiable, cp1, nand3.getPin("B"), new Point(10, 55)); + new GUIWire(submodelModifiable, D, nand2.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, nand2.getPin("Y"), cp2, new Point(145, 70), new Point(145, 85), new Point(20, 85)); + new GUIWire(submodelModifiable, cp2, _rsLatch1.getPin("_S"), new Point(20, 15)); + new GUIWire(submodelModifiable, cp2, nand3.getPin("C"), new Point[0]); + new GUIWire(submodelModifiable, _rsLatch1.getPin("_Q"), cp3, new Point(100, 25)); + new GUIWire(submodelModifiable, cp3, nand3.getPin("A"), new Point(30, 35), new Point(30, 45)); + new GUIWire(submodelModifiable, cp3, _rsLatch2.getPin("_S"), new Point[0]); + new GUIWire(submodelModifiable, nand3.getPin("Y"), cp4, new Point[0]); + new GUIWire(submodelModifiable, cp4, _rsLatch2.getPin("_R"), new Point[0]); + new GUIWire(submodelModifiable, cp4, nand2.getPin("A"), new Point(100, 65)); + new GUIWire(submodelModifiable, _rsLatch2.getPin("Q"), Q); + new GUIWire(submodelModifiable, _rsLatch2.getPin("_Q"), _Q); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdlatch.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdlatch.java index c8591943..f6246a44 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdlatch.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdlatch.java @@ -22,10 +22,10 @@ public class GUIdlatch extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin D = getInputSubmodelPins().get(0); - Pin E = getInputSubmodelPins().get(1); - Pin Q = getOutputSubmodelPins().get(0); - Pin _Q = getOutputSubmodelPins().get(1); + Pin D = getSubmodelPin("D"); + Pin E = getSubmodelPin("E"); + Pin Q = getSubmodelPin("Q"); + Pin _Q = getSubmodelPin("_Q"); GUINandGate nand1 = new GUINandGate(submodelModifiable, 1); GUINandGate nand2 = new GUINandGate(submodelModifiable, 1); @@ -40,15 +40,15 @@ public class GUIdlatch extends SimpleRectangularSubmodelComponent cp1.moveCenterTo(5, 37.5); cp2.moveCenterTo(35, 12.5); - new GUIWire(submodelModifiable, D, nand1.getInputPins().get(0)); + new GUIWire(submodelModifiable, D, nand1.getPin("A")); new GUIWire(submodelModifiable, E, cp1, new Point[0]); - new GUIWire(submodelModifiable, cp1, nand1.getInputPins().get(1), new Point(5, 17.5)); - new GUIWire(submodelModifiable, cp1, nand2.getInputPins().get(1), new Point(5, 42.5)); - new GUIWire(submodelModifiable, nand1.getOutputPin(), cp2, new Point[0]); - new GUIWire(submodelModifiable, cp2, nand2.getInputPins().get(0), new Point(35, 25), new Point(10, 25), new Point(10, 32.5)); - new GUIWire(submodelModifiable, cp2, _rsLatch.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, nand2.getOutputPin(), _rsLatch.getInputPins().get(1), new Point(40, 37.5), new Point(40, 22.5)); - new GUIWire(submodelModifiable, _rsLatch.getOutputPins().get(0), Q, new Point[0]); - new GUIWire(submodelModifiable, _rsLatch.getOutputPins().get(1), _Q); + new GUIWire(submodelModifiable, cp1, nand1.getPin("B"), new Point(5, 17.5)); + new GUIWire(submodelModifiable, cp1, nand2.getPin("B"), new Point(5, 42.5)); + new GUIWire(submodelModifiable, nand1.getPin("Y"), cp2, new Point[0]); + new GUIWire(submodelModifiable, cp2, nand2.getPin("A"), new Point(35, 25), new Point(10, 25), new Point(10, 32.5)); + new GUIWire(submodelModifiable, cp2, _rsLatch.getPin("_S"), new Point[0]); + new GUIWire(submodelModifiable, nand2.getPin("Y"), _rsLatch.getPin("_R"), new Point(40, 37.5), new Point(40, 22.5)); + new GUIWire(submodelModifiable, _rsLatch.getPin("Q"), Q, new Point[0]); + new GUIWire(submodelModifiable, _rsLatch.getPin("_Q"), _Q); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdlatch4.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdlatch4.java index 9ad80c43..440cfb40 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdlatch4.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIdlatch4.java @@ -21,15 +21,15 @@ public class GUIdlatch4 extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin D1 = getInputSubmodelPins().get(0); - Pin D2 = getInputSubmodelPins().get(1); - Pin D3 = getInputSubmodelPins().get(2); - Pin D4 = getInputSubmodelPins().get(3); - Pin C = getInputSubmodelPins().get(4); - Pin Q1 = getOutputSubmodelPins().get(0); - Pin Q2 = getOutputSubmodelPins().get(1); - Pin Q3 = getOutputSubmodelPins().get(2); - Pin Q4 = getOutputSubmodelPins().get(3); + Pin D1 = getSubmodelPin("D1"); + Pin D2 = getSubmodelPin("D2"); + Pin D3 = getSubmodelPin("D3"); + Pin D4 = getSubmodelPin("D4"); + Pin C = getSubmodelPin("C"); + Pin Q1 = getSubmodelPin("Q1"); + Pin Q2 = getSubmodelPin("Q2"); + Pin Q3 = getSubmodelPin("Q3"); + Pin Q4 = getSubmodelPin("Q4"); GUIdlatch dlatch1 = new GUIdlatch(submodelModifiable); GUIdlatch dlatch2 = new GUIdlatch(submodelModifiable); @@ -49,19 +49,19 @@ public class GUIdlatch4 extends SimpleRectangularSubmodelComponent cp4.moveCenterTo(15, 97.5); new GUIWire(submodelModifiable, C, cp4, new Point(15, 112.5)); - new GUIWire(submodelModifiable, cp4, dlatch4.getInputPins().get(1), new Point[0]); + new GUIWire(submodelModifiable, cp4, dlatch4.getPin("E"), new Point[0]); new GUIWire(submodelModifiable, cp4, cp3, new Point[0]); - new GUIWire(submodelModifiable, cp3, dlatch3.getInputPins().get(1), new Point[0]); + new GUIWire(submodelModifiable, cp3, dlatch3.getPin("E"), new Point[0]); new GUIWire(submodelModifiable, cp3, cp2, new Point[0]); - new GUIWire(submodelModifiable, cp2, dlatch2.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cp2, dlatch1.getInputPins().get(1), new Point(15, 22.5)); - new GUIWire(submodelModifiable, D1, dlatch1.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, D2, dlatch2.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, D3, dlatch3.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, D4, dlatch4.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, dlatch1.getOutputPins().get(0), Q1, new Point[0]); - new GUIWire(submodelModifiable, dlatch2.getOutputPins().get(0), Q2, new Point[0]); - new GUIWire(submodelModifiable, dlatch3.getOutputPins().get(0), Q3, new Point[0]); - new GUIWire(submodelModifiable, dlatch4.getOutputPins().get(0), Q4, new Point[0]); + new GUIWire(submodelModifiable, cp2, dlatch2.getPin("E"), new Point[0]); + new GUIWire(submodelModifiable, cp2, dlatch1.getPin("E"), new Point(15, 22.5)); + new GUIWire(submodelModifiable, D1, dlatch1.getPin("D"), new Point[0]); + new GUIWire(submodelModifiable, D2, dlatch2.getPin("D"), new Point[0]); + new GUIWire(submodelModifiable, D3, dlatch3.getPin("D"), new Point[0]); + new GUIWire(submodelModifiable, D4, dlatch4.getPin("D"), new Point[0]); + new GUIWire(submodelModifiable, dlatch1.getPin("Q"), Q1, new Point[0]); + new GUIWire(submodelModifiable, dlatch2.getPin("Q"), Q2, new Point[0]); + new GUIWire(submodelModifiable, dlatch3.getPin("Q"), Q3, new Point[0]); + new GUIWire(submodelModifiable, dlatch4.getPin("Q"), Q4, new Point[0]); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIfulladder.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIfulladder.java index 1f424a9d..12bddce7 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIfulladder.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIfulladder.java @@ -21,11 +21,11 @@ public class GUIfulladder extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin A = getInputSubmodelPins().get(0); - Pin B = getInputSubmodelPins().get(1); - Pin C = getInputSubmodelPins().get(2); - Pin Y = getOutputSubmodelPins().get(0); - Pin Z = getOutputSubmodelPins().get(1); + Pin A = getSubmodelPin("A"); + Pin B = getSubmodelPin("B"); + Pin C = getSubmodelPin("C"); + Pin Y = getSubmodelPin("Y"); + Pin Z = getSubmodelPin("Z"); GUIhalfadder halfBC = new GUIhalfadder(submodelModifiable); GUIhalfadder halfAY = new GUIhalfadder(submodelModifiable); @@ -35,14 +35,14 @@ public class GUIfulladder extends SimpleRectangularSubmodelComponent halfBC.moveTo(5, 40); nandZ.moveTo(57.5, 40); - new GUIWire(submodelModifiable, A, halfAY.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, B, halfBC.getInputPins().get(0)); - new GUIWire(submodelModifiable, C, halfBC.getInputPins().get(1)); - new GUIWire(submodelModifiable, halfBC.getOutputPins().get(0), halfAY.getInputPins().get(1)); - new GUIWire(submodelModifiable, halfBC.getOutputPins().get(1), nandZ.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, halfAY.getOutputPins().get(0), Y, new Point[0]); - new GUIWire(submodelModifiable, halfAY.getOutputPins().get(1), nandZ.getInputPins().get(0), new Point(82.5, 22.5), - new Point(82.5, 35), new Point(52.5, 35), new Point(52.5, 45)); - new GUIWire(submodelModifiable, nandZ.getOutputPin(), Z); + new GUIWire(submodelModifiable, A, halfAY.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, B, halfBC.getPin("A")); + new GUIWire(submodelModifiable, C, halfBC.getPin("B")); + new GUIWire(submodelModifiable, halfBC.getPin("Y"), halfAY.getPin("B")); + new GUIWire(submodelModifiable, halfBC.getPin("_Z"), nandZ.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, halfAY.getPin("Y"), Y, new Point[0]); + new GUIWire(submodelModifiable, halfAY.getPin("_Z"), nandZ.getPin("A"), new Point(82.5, 22.5), new Point(82.5, 35), + new Point(52.5, 35), new Point(52.5, 45)); + new GUIWire(submodelModifiable, nandZ.getPin("Y"), Z); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIhalfadder.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIhalfadder.java index ed05f89e..6d58f983 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIhalfadder.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIhalfadder.java @@ -22,10 +22,10 @@ public class GUIhalfadder extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin A = getInputSubmodelPins().get(0); - Pin B = getInputSubmodelPins().get(1); - Pin Y = getOutputSubmodelPins().get(0); - Pin _Z = getOutputSubmodelPins().get(1); + Pin A = getSubmodelPin("A"); + Pin B = getSubmodelPin("B"); + Pin Y = getSubmodelPin("Y"); + Pin _Z = getSubmodelPin("_Z"); GUINandGate nand_Z = new GUINandGate(submodelModifiable, 1); GUINandGate nandYA = new GUINandGate(submodelModifiable, 1); @@ -45,17 +45,17 @@ public class GUIhalfadder extends SimpleRectangularSubmodelComponent cp_Z.moveCenterTo(35, 25); new GUIWire(submodelModifiable, A, cpA, new Point[0]); - new GUIWire(submodelModifiable, cpA, nandYA.getInputPins().get(0), new Point(5, 7.5)); - new GUIWire(submodelModifiable, cpA, nand_Z.getInputPins().get(0), new Point(5, 20)); + new GUIWire(submodelModifiable, cpA, nandYA.getPin("A"), new Point(5, 7.5)); + new GUIWire(submodelModifiable, cpA, nand_Z.getPin("A"), new Point(5, 20)); new GUIWire(submodelModifiable, B, cpB, new Point[0]); - new GUIWire(submodelModifiable, cpB, nandYB.getInputPins().get(1), new Point(5, 42.5)); - new GUIWire(submodelModifiable, cpB, nand_Z.getInputPins().get(1), new Point(5, 30)); - new GUIWire(submodelModifiable, nand_Z.getOutputPin(), cp_Z, new Point[0]); + new GUIWire(submodelModifiable, cpB, nandYB.getPin("B"), new Point(5, 42.5)); + new GUIWire(submodelModifiable, cpB, nand_Z.getPin("B"), new Point(5, 30)); + new GUIWire(submodelModifiable, nand_Z.getPin("Y"), cp_Z, new Point[0]); new GUIWire(submodelModifiable, cp_Z, _Z, new Point(80, 25), new Point(80, 37.5)); - new GUIWire(submodelModifiable, cp_Z, nandYA.getInputPins().get(1), new Point(35, 17.5)); - new GUIWire(submodelModifiable, cp_Z, nandYB.getInputPins().get(0), new Point(35, 32.5)); - new GUIWire(submodelModifiable, nandYA.getOutputPin(), nandY.getInputPins().get(0), new Point(62.5, 12.5), new Point(62.5, 7.5)); - new GUIWire(submodelModifiable, nandYB.getOutputPin(), nandY.getInputPins().get(1), new Point(62.5, 37.5), new Point(62.5, 17.5)); - new GUIWire(submodelModifiable, nandY.getOutputPin(), Y, new Point[0]); + new GUIWire(submodelModifiable, cp_Z, nandYA.getPin("B"), new Point(35, 17.5)); + new GUIWire(submodelModifiable, cp_Z, nandYB.getPin("A"), new Point(35, 32.5)); + new GUIWire(submodelModifiable, nandYA.getPin("Y"), nandY.getPin("A"), new Point(62.5, 12.5), new Point(62.5, 7.5)); + new GUIWire(submodelModifiable, nandYB.getPin("Y"), nandY.getPin("B"), new Point(62.5, 37.5), new Point(62.5, 17.5)); + new GUIWire(submodelModifiable, nandY.getPin("Y"), Y, new Point[0]); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUImux1.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUImux1.java index 0b920d6c..9707e217 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUImux1.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUImux1.java @@ -22,10 +22,10 @@ public class GUImux1 extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") private void initSubmodelComponents() { - Pin S0 = getInputSubmodelPins().get(0); - Pin I0 = getInputSubmodelPins().get(1); - Pin I1 = getInputSubmodelPins().get(2); - Pin Y = getOutputSubmodelPins().get(0); + Pin S0 = getSubmodelPin("S0"); + Pin I0 = getSubmodelPin("I0"); + Pin I1 = getSubmodelPin("I1"); + Pin Y = getSubmodelPin("Y"); GUINandGate nandS0 = new GUINandGate(submodelModifiable, 1); GUINandGate nandI0 = new GUINandGate(submodelModifiable, 1); @@ -43,15 +43,15 @@ public class GUImux1 extends SimpleRectangularSubmodelComponent cp1.moveCenterTo(5, 22.5); new GUIWire(submodelModifiable, S0, cp0, new Point[0]); - new GUIWire(submodelModifiable, cp0, nandS0.getInputPins().get(0), new Point[0]); + new GUIWire(submodelModifiable, cp0, nandS0.getPin("A"), new Point[0]); new GUIWire(submodelModifiable, cp0, cp1, new Point[0]); - new GUIWire(submodelModifiable, cp1, nandS0.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, nandS0.getOutputPin(), nandI0.getInputPins().get(0)); - new GUIWire(submodelModifiable, I0, nandI0.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cp1, nandI1.getInputPins().get(0), new Point(5, 52.5)); - new GUIWire(submodelModifiable, I1, nandI1.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, nandI0.getOutputPin(), nandY.getInputPins().get(0)); - new GUIWire(submodelModifiable, nandI1.getOutputPin(), nandY.getInputPins().get(1)); - new GUIWire(submodelModifiable, nandY.getOutputPin(), Y); + new GUIWire(submodelModifiable, cp1, nandS0.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, nandS0.getPin("Y"), nandI0.getPin("A")); + new GUIWire(submodelModifiable, I0, nandI0.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cp1, nandI1.getPin("A"), new Point(5, 52.5)); + new GUIWire(submodelModifiable, I1, nandI1.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, nandI0.getPin("Y"), nandY.getPin("A")); + new GUIWire(submodelModifiable, nandI1.getPin("Y"), nandY.getPin("B")); + new GUIWire(submodelModifiable, nandY.getPin("Y"), Y); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUImux1_4.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUImux1_4.java index e648e1c9..479f66a9 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUImux1_4.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUImux1_4.java @@ -21,19 +21,19 @@ public class GUImux1_4 extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") private void initSubmodelComponents() { - Pin S0 = getInputSubmodelPins().get(0); - Pin I0_1 = getInputSubmodelPins().get(1); - Pin I0_2 = getInputSubmodelPins().get(2); - Pin I0_3 = getInputSubmodelPins().get(3); - Pin I0_4 = getInputSubmodelPins().get(4); - Pin I1_1 = getInputSubmodelPins().get(5); - Pin I1_2 = getInputSubmodelPins().get(6); - Pin I1_3 = getInputSubmodelPins().get(7); - Pin I1_4 = getInputSubmodelPins().get(8); - Pin Y1 = getOutputSubmodelPins().get(0); - Pin Y2 = getOutputSubmodelPins().get(1); - Pin Y3 = getOutputSubmodelPins().get(2); - Pin Y4 = getOutputSubmodelPins().get(3); + Pin S0 = getSubmodelPin("S0"); + Pin I0_1 = getSubmodelPin("I0_1"); + Pin I0_2 = getSubmodelPin("I0_2"); + Pin I0_3 = getSubmodelPin("I0_3"); + Pin I0_4 = getSubmodelPin("I0_4"); + Pin I1_1 = getSubmodelPin("I1_1"); + Pin I1_2 = getSubmodelPin("I1_2"); + Pin I1_3 = getSubmodelPin("I1_3"); + Pin I1_4 = getSubmodelPin("I1_4"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); GUImux1 mux1 = new GUImux1(submodelModifiable); GUImux1 mux2 = new GUImux1(submodelModifiable); @@ -53,24 +53,24 @@ public class GUImux1_4 extends SimpleRectangularSubmodelComponent cp3.moveCenterTo(25, 82.5); new GUIWire(submodelModifiable, S0, cp1, new Point[0]); - new GUIWire(submodelModifiable, cp1, mux1.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, I0_1, mux1.getInputPins().get(1), new Point(5, 37.5), new Point(5, 22.5)); - new GUIWire(submodelModifiable, I1_1, mux1.getInputPins().get(2), new Point(10, 137.5), new Point(10, 32.5)); - new GUIWire(submodelModifiable, mux1.getOutputPins().get(0), Y1, new Point[0]); + new GUIWire(submodelModifiable, cp1, mux1.getPin("S0"), new Point[0]); + new GUIWire(submodelModifiable, I0_1, mux1.getPin("I0"), new Point(5, 37.5), new Point(5, 22.5)); + new GUIWire(submodelModifiable, I1_1, mux1.getPin("I1"), new Point(10, 137.5), new Point(10, 32.5)); + new GUIWire(submodelModifiable, mux1.getPin("Y"), Y1, new Point[0]); new GUIWire(submodelModifiable, cp1, cp2, new Point[0]); - new GUIWire(submodelModifiable, cp2, mux2.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, I0_2, mux2.getInputPins().get(1), new Point(5, 62.5), new Point(5, 57.5)); - new GUIWire(submodelModifiable, I1_2, mux2.getInputPins().get(2), new Point(15, 162.5), new Point(15, 67.5)); - new GUIWire(submodelModifiable, mux2.getOutputPins().get(0), Y2); + new GUIWire(submodelModifiable, cp2, mux2.getPin("S0"), new Point[0]); + new GUIWire(submodelModifiable, I0_2, mux2.getPin("I0"), new Point(5, 62.5), new Point(5, 57.5)); + new GUIWire(submodelModifiable, I1_2, mux2.getPin("I1"), new Point(15, 162.5), new Point(15, 67.5)); + new GUIWire(submodelModifiable, mux2.getPin("Y"), Y2); new GUIWire(submodelModifiable, cp2, cp3, new Point[0]); - new GUIWire(submodelModifiable, cp3, mux3.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, I0_3, mux3.getInputPins().get(1), new Point(5, 87.5), new Point(5, 92.5)); - new GUIWire(submodelModifiable, I1_3, mux3.getInputPins().get(2), new Point(20, 187.5), new Point(20, 102.5)); - new GUIWire(submodelModifiable, mux3.getOutputPins().get(0), Y3); - new GUIWire(submodelModifiable, cp3, mux4.getInputPins().get(0), new Point(25, 117.5)); - new GUIWire(submodelModifiable, I0_4, mux4.getInputPins().get(1), new Point(5, 112.5), new Point(5, 127.5)); - new GUIWire(submodelModifiable, I1_4, mux4.getInputPins().get(2), new Point(25, 212.5), new Point(25, 137.5)); - new GUIWire(submodelModifiable, mux4.getOutputPins().get(0), Y4); + new GUIWire(submodelModifiable, cp3, mux3.getPin("S0"), new Point[0]); + new GUIWire(submodelModifiable, I0_3, mux3.getPin("I0"), new Point(5, 87.5), new Point(5, 92.5)); + new GUIWire(submodelModifiable, I1_3, mux3.getPin("I1"), new Point(20, 187.5), new Point(20, 102.5)); + new GUIWire(submodelModifiable, mux3.getPin("Y"), Y3); + new GUIWire(submodelModifiable, cp3, mux4.getPin("S0"), new Point(25, 117.5)); + new GUIWire(submodelModifiable, I0_4, mux4.getPin("I0"), new Point(5, 112.5), new Point(5, 127.5)); + new GUIWire(submodelModifiable, I1_4, mux4.getPin("I1"), new Point(25, 212.5), new Point(25, 137.5)); + new GUIWire(submodelModifiable, mux4.getPin("Y"), Y4); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInand3.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInand3.java index 10ee1e2f..f102c3ba 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInand3.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInand3.java @@ -22,10 +22,10 @@ public class GUInand3 extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin A = getInputSubmodelPins().get(0); - Pin B = getInputSubmodelPins().get(1); - Pin C = getInputSubmodelPins().get(2); - Pin Y = getOutputSubmodelPins().get(0); + Pin A = getSubmodelPin("A"); + Pin B = getSubmodelPin("B"); + Pin C = getSubmodelPin("C"); + Pin Y = getSubmodelPin("Y"); GUINandGate nandAB = new GUINandGate(submodelModifiable, 1); GUINandGate andAB = new GUINandGate(submodelModifiable, 1); @@ -38,13 +38,13 @@ public class GUInand3 extends SimpleRectangularSubmodelComponent nandABC.moveTo(62.5, 2.5); cpNandAB.moveCenterTo(32.5, 25); - new GUIWire(submodelModifiable, A, nandAB.getInputPins().get(0)); - new GUIWire(submodelModifiable, B, nandAB.getInputPins().get(1)); - new GUIWire(submodelModifiable, nandAB.getOutputPin(), cpNandAB, new Point[0]); - new GUIWire(submodelModifiable, cpNandAB, andAB.getInputPins().get(0), new Point(32.5, 20)); - new GUIWire(submodelModifiable, cpNandAB, andAB.getInputPins().get(1), new Point(32.5, 30)); - new GUIWire(submodelModifiable, andAB.getOutputPin(), nandABC.getInputPins().get(0), new Point(57.5, 25), new Point(57.5, 7.5)); - new GUIWire(submodelModifiable, C, nandABC.getInputPins().get(1), new Point(60, 62.5), new Point(60, 17.5)); - new GUIWire(submodelModifiable, nandABC.getOutputPin(), Y, new Point[0]); + new GUIWire(submodelModifiable, A, nandAB.getPin("A")); + new GUIWire(submodelModifiable, B, nandAB.getPin("B")); + new GUIWire(submodelModifiable, nandAB.getPin("Y"), cpNandAB, new Point[0]); + new GUIWire(submodelModifiable, cpNandAB, andAB.getPin("A"), new Point(32.5, 20)); + new GUIWire(submodelModifiable, cpNandAB, andAB.getPin("B"), new Point(32.5, 30)); + new GUIWire(submodelModifiable, andAB.getPin("Y"), nandABC.getPin("A"), new Point(57.5, 25), new Point(57.5, 7.5)); + new GUIWire(submodelModifiable, C, nandABC.getPin("B"), new Point(60, 62.5), new Point(60, 17.5)); + new GUIWire(submodelModifiable, nandABC.getPin("Y"), Y, new Point[0]); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInot4.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInot4.java index 75e6398e..e3db0103 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInot4.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInot4.java @@ -22,14 +22,14 @@ public class GUInot4 extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin A1 = getInputSubmodelPins().get(0); - Pin A2 = getInputSubmodelPins().get(1); - Pin A3 = getInputSubmodelPins().get(2); - Pin A4 = getInputSubmodelPins().get(3); - Pin Y1 = getOutputSubmodelPins().get(0); - Pin Y2 = getOutputSubmodelPins().get(1); - Pin Y3 = getOutputSubmodelPins().get(2); - Pin Y4 = getOutputSubmodelPins().get(3); + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); GUINandGate nand1 = new GUINandGate(submodelModifiable, 1); GUINandGate nand2 = new GUINandGate(submodelModifiable, 1); @@ -54,17 +54,17 @@ public class GUInot4 extends SimpleRectangularSubmodelComponent new GUIWire(submodelModifiable, A2, cp2, new Point[0]); new GUIWire(submodelModifiable, A3, cp3, new Point[0]); new GUIWire(submodelModifiable, A4, cp4, new Point[0]); - new GUIWire(submodelModifiable, cp1, nand1.getInputPins().get(0), new Point(15, 7.5)); - new GUIWire(submodelModifiable, cp2, nand2.getInputPins().get(0), new Point(15, 32.5)); - new GUIWire(submodelModifiable, cp3, nand3.getInputPins().get(0), new Point(15, 57.5)); - new GUIWire(submodelModifiable, cp4, nand4.getInputPins().get(0), new Point(15, 82.5)); - new GUIWire(submodelModifiable, cp1, nand1.getInputPins().get(1), new Point(15, 17.5)); - new GUIWire(submodelModifiable, cp2, nand2.getInputPins().get(1), new Point(15, 42.5)); - new GUIWire(submodelModifiable, cp3, nand3.getInputPins().get(1), new Point(15, 67.5)); - new GUIWire(submodelModifiable, cp4, nand4.getInputPins().get(1), new Point(15, 92.5)); - new GUIWire(submodelModifiable, nand1.getOutputPin(), Y1, new Point[0]); - new GUIWire(submodelModifiable, nand2.getOutputPin(), Y2, new Point[0]); - new GUIWire(submodelModifiable, nand3.getOutputPin(), Y3, new Point[0]); - new GUIWire(submodelModifiable, nand4.getOutputPin(), Y4, new Point[0]); + new GUIWire(submodelModifiable, cp1, nand1.getPin("A"), new Point(15, 7.5)); + new GUIWire(submodelModifiable, cp2, nand2.getPin("A"), new Point(15, 32.5)); + new GUIWire(submodelModifiable, cp3, nand3.getPin("A"), new Point(15, 57.5)); + new GUIWire(submodelModifiable, cp4, nand4.getPin("A"), new Point(15, 82.5)); + new GUIWire(submodelModifiable, cp1, nand1.getPin("B"), new Point(15, 17.5)); + new GUIWire(submodelModifiable, cp2, nand2.getPin("B"), new Point(15, 42.5)); + new GUIWire(submodelModifiable, cp3, nand3.getPin("B"), new Point(15, 67.5)); + new GUIWire(submodelModifiable, cp4, nand4.getPin("B"), new Point(15, 92.5)); + new GUIWire(submodelModifiable, nand1.getPin("Y"), Y1, new Point[0]); + new GUIWire(submodelModifiable, nand2.getPin("Y"), Y2, new Point[0]); + new GUIWire(submodelModifiable, nand3.getPin("Y"), Y3, new Point[0]); + new GUIWire(submodelModifiable, nand4.getPin("Y"), Y4, new Point[0]); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIor4.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIor4.java index 5c41b9b6..21d4c596 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIor4.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIor4.java @@ -22,11 +22,11 @@ public class GUIor4 extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin A1 = getInputSubmodelPins().get(0); - Pin A2 = getInputSubmodelPins().get(1); - Pin A3 = getInputSubmodelPins().get(2); - Pin A4 = getInputSubmodelPins().get(3); - Pin Y = getOutputSubmodelPins().get(0); + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin Y = getSubmodelPin("Y"); GUINandGate nandA1 = new GUINandGate(submodelModifiable, 1); GUINandGate nandA2 = new GUINandGate(submodelModifiable, 1); @@ -65,26 +65,26 @@ public class GUIor4 extends SimpleRectangularSubmodelComponent new GUIWire(submodelModifiable, A2, cpA2, new Point[0]); new GUIWire(submodelModifiable, A3, cpA3, new Point[0]); new GUIWire(submodelModifiable, A4, cpA4, new Point[0]); - new GUIWire(submodelModifiable, cpA1, nandA1.getInputPins().get(0), new Point(15, 20)); - new GUIWire(submodelModifiable, cpA2, nandA2.getInputPins().get(0), new Point(15, 70)); - new GUIWire(submodelModifiable, cpA3, nandA3.getInputPins().get(0), new Point(15, 120)); - new GUIWire(submodelModifiable, cpA4, nandA4.getInputPins().get(0), new Point(15, 170)); - new GUIWire(submodelModifiable, cpA1, nandA1.getInputPins().get(1), new Point(15, 30)); - new GUIWire(submodelModifiable, cpA2, nandA2.getInputPins().get(1), new Point(15, 80)); - new GUIWire(submodelModifiable, cpA3, nandA3.getInputPins().get(1), new Point(15, 130)); - new GUIWire(submodelModifiable, cpA4, nandA4.getInputPins().get(1), new Point(15, 180)); - new GUIWire(submodelModifiable, nandA1.getOutputPin(), or12.getInputPins().get(0)); - new GUIWire(submodelModifiable, nandA2.getOutputPin(), or12.getInputPins().get(1)); - new GUIWire(submodelModifiable, nandA3.getOutputPin(), or34.getInputPins().get(0)); - new GUIWire(submodelModifiable, nandA4.getOutputPin(), or34.getInputPins().get(1)); - new GUIWire(submodelModifiable, or12.getOutputPin(), cpOr12, new Point[0]); - new GUIWire(submodelModifiable, or34.getOutputPin(), cpOr34, new Point[0]); - new GUIWire(submodelModifiable, cpOr12, nor12.getInputPins().get(0), new Point(105, 45)); - new GUIWire(submodelModifiable, cpOr12, nor12.getInputPins().get(1), new Point(105, 55)); - new GUIWire(submodelModifiable, cpOr34, nor34.getInputPins().get(0), new Point(105, 145)); - new GUIWire(submodelModifiable, cpOr34, nor34.getInputPins().get(1), new Point(105, 155)); - new GUIWire(submodelModifiable, nor12.getOutputPin(), or1234.getInputPins().get(0)); - new GUIWire(submodelModifiable, nor34.getOutputPin(), or1234.getInputPins().get(1)); - new GUIWire(submodelModifiable, or1234.getOutputPin(), Y); + new GUIWire(submodelModifiable, cpA1, nandA1.getPin("A"), new Point(15, 20)); + new GUIWire(submodelModifiable, cpA2, nandA2.getPin("A"), new Point(15, 70)); + new GUIWire(submodelModifiable, cpA3, nandA3.getPin("A"), new Point(15, 120)); + new GUIWire(submodelModifiable, cpA4, nandA4.getPin("A"), new Point(15, 170)); + new GUIWire(submodelModifiable, cpA1, nandA1.getPin("B"), new Point(15, 30)); + new GUIWire(submodelModifiable, cpA2, nandA2.getPin("B"), new Point(15, 80)); + new GUIWire(submodelModifiable, cpA3, nandA3.getPin("B"), new Point(15, 130)); + new GUIWire(submodelModifiable, cpA4, nandA4.getPin("B"), new Point(15, 180)); + new GUIWire(submodelModifiable, nandA1.getPin("Y"), or12.getPin("A")); + new GUIWire(submodelModifiable, nandA2.getPin("Y"), or12.getPin("B")); + new GUIWire(submodelModifiable, nandA3.getPin("Y"), or34.getPin("A")); + new GUIWire(submodelModifiable, nandA4.getPin("Y"), or34.getPin("B")); + new GUIWire(submodelModifiable, or12.getPin("Y"), cpOr12, new Point[0]); + new GUIWire(submodelModifiable, or34.getPin("Y"), cpOr34, new Point[0]); + new GUIWire(submodelModifiable, cpOr12, nor12.getPin("A"), new Point(105, 45)); + new GUIWire(submodelModifiable, cpOr12, nor12.getPin("B"), new Point(105, 55)); + new GUIWire(submodelModifiable, cpOr34, nor34.getPin("A"), new Point(105, 145)); + new GUIWire(submodelModifiable, cpOr34, nor34.getPin("B"), new Point(105, 155)); + new GUIWire(submodelModifiable, nor12.getPin("Y"), or1234.getPin("A")); + new GUIWire(submodelModifiable, nor34.getPin("Y"), or1234.getPin("B")); + new GUIWire(submodelModifiable, or1234.getPin("Y"), Y); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIor_4.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIor_4.java index 9da8c8c5..e979cce6 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIor_4.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIor_4.java @@ -22,18 +22,18 @@ public class GUIor_4 extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin A1 = getInputSubmodelPins().get(0); - Pin A2 = getInputSubmodelPins().get(1); - Pin A3 = getInputSubmodelPins().get(2); - Pin A4 = getInputSubmodelPins().get(3); - Pin B1 = getInputSubmodelPins().get(4); - Pin B2 = getInputSubmodelPins().get(5); - Pin B3 = getInputSubmodelPins().get(6); - Pin B4 = getInputSubmodelPins().get(7); - Pin Y1 = getOutputSubmodelPins().get(0); - Pin Y2 = getOutputSubmodelPins().get(1); - Pin Y3 = getOutputSubmodelPins().get(2); - Pin Y4 = getOutputSubmodelPins().get(3); + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin B1 = getSubmodelPin("B1"); + Pin B2 = getSubmodelPin("B2"); + Pin B3 = getSubmodelPin("B3"); + Pin B4 = getSubmodelPin("B4"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); GUINandGate notA1 = new GUINandGate(submodelModifiable, 1); GUINandGate notA2 = new GUINandGate(submodelModifiable, 1); @@ -86,33 +86,33 @@ public class GUIor_4 extends SimpleRectangularSubmodelComponent new GUIWire(submodelModifiable, B2, cpB2, new Point[0]); new GUIWire(submodelModifiable, B3, cpB3, new Point[0]); new GUIWire(submodelModifiable, B4, cpB4, new Point[0]); - new GUIWire(submodelModifiable, cpA1, notA1.getInputPins().get(0), new Point(7.5, 7.5)); - new GUIWire(submodelModifiable, cpA1, notA1.getInputPins().get(1), new Point(7.5, 17.5)); - new GUIWire(submodelModifiable, cpA2, notA2.getInputPins().get(0), new Point(7.5, 32.5)); - new GUIWire(submodelModifiable, cpA2, notA2.getInputPins().get(1), new Point(7.5, 42.5)); - new GUIWire(submodelModifiable, cpA3, notA3.getInputPins().get(0), new Point(7.5, 57.5)); - new GUIWire(submodelModifiable, cpA3, notA3.getInputPins().get(1), new Point(7.5, 67.5)); - new GUIWire(submodelModifiable, cpA4, notA4.getInputPins().get(0), new Point(7.5, 82.5)); - new GUIWire(submodelModifiable, cpA4, notA4.getInputPins().get(1), new Point(7.5, 92.5)); - new GUIWire(submodelModifiable, cpB1, notB1.getInputPins().get(0), new Point(7.5, 107.5)); - new GUIWire(submodelModifiable, cpB1, notB1.getInputPins().get(1), new Point(7.5, 117.5)); - new GUIWire(submodelModifiable, cpB2, notB2.getInputPins().get(0), new Point(7.5, 132.5)); - new GUIWire(submodelModifiable, cpB2, notB2.getInputPins().get(1), new Point(7.5, 142.5)); - new GUIWire(submodelModifiable, cpB3, notB3.getInputPins().get(0), new Point(7.5, 157.5)); - new GUIWire(submodelModifiable, cpB3, notB3.getInputPins().get(1), new Point(7.5, 167.5)); - new GUIWire(submodelModifiable, cpB4, notB4.getInputPins().get(0), new Point(7.5, 182.5)); - new GUIWire(submodelModifiable, cpB4, notB4.getInputPins().get(1), new Point(7.5, 192.5)); - new GUIWire(submodelModifiable, notA1.getOutputPin(), nandY1.getInputPins().get(0), new Point(40, 12.5), new Point(40, 7.5)); - new GUIWire(submodelModifiable, notB1.getOutputPin(), nandY1.getInputPins().get(1), new Point(45, 112.5), new Point(45, 17.5)); - new GUIWire(submodelModifiable, notA2.getOutputPin(), nandY2.getInputPins().get(0), new Point(40, 37.5), new Point(40, 32.5)); - new GUIWire(submodelModifiable, notB2.getOutputPin(), nandY2.getInputPins().get(1), new Point(50, 137.5), new Point(50, 42.5)); - new GUIWire(submodelModifiable, notA3.getOutputPin(), nandY3.getInputPins().get(0), new Point(40, 62.5), new Point(40, 57.5)); - new GUIWire(submodelModifiable, notB3.getOutputPin(), nandY3.getInputPins().get(1), new Point(55, 162.5), new Point(55, 67.5)); - new GUIWire(submodelModifiable, notA4.getOutputPin(), nandY4.getInputPins().get(0), new Point(40, 87.5), new Point(40, 82.5)); - new GUIWire(submodelModifiable, notB4.getOutputPin(), nandY4.getInputPins().get(1), new Point(60, 187.5), new Point(60, 92.5)); - new GUIWire(submodelModifiable, nandY1.getOutputPin(), Y1, new Point[0]); - new GUIWire(submodelModifiable, nandY2.getOutputPin(), Y2, new Point[0]); - new GUIWire(submodelModifiable, nandY3.getOutputPin(), Y3, new Point[0]); - new GUIWire(submodelModifiable, nandY4.getOutputPin(), Y4, new Point[0]); + new GUIWire(submodelModifiable, cpA1, notA1.getPin("A"), new Point(7.5, 7.5)); + new GUIWire(submodelModifiable, cpA1, notA1.getPin("B"), new Point(7.5, 17.5)); + new GUIWire(submodelModifiable, cpA2, notA2.getPin("A"), new Point(7.5, 32.5)); + new GUIWire(submodelModifiable, cpA2, notA2.getPin("B"), new Point(7.5, 42.5)); + new GUIWire(submodelModifiable, cpA3, notA3.getPin("A"), new Point(7.5, 57.5)); + new GUIWire(submodelModifiable, cpA3, notA3.getPin("B"), new Point(7.5, 67.5)); + new GUIWire(submodelModifiable, cpA4, notA4.getPin("A"), new Point(7.5, 82.5)); + new GUIWire(submodelModifiable, cpA4, notA4.getPin("B"), new Point(7.5, 92.5)); + new GUIWire(submodelModifiable, cpB1, notB1.getPin("A"), new Point(7.5, 107.5)); + new GUIWire(submodelModifiable, cpB1, notB1.getPin("B"), new Point(7.5, 117.5)); + new GUIWire(submodelModifiable, cpB2, notB2.getPin("A"), new Point(7.5, 132.5)); + new GUIWire(submodelModifiable, cpB2, notB2.getPin("B"), new Point(7.5, 142.5)); + new GUIWire(submodelModifiable, cpB3, notB3.getPin("A"), new Point(7.5, 157.5)); + new GUIWire(submodelModifiable, cpB3, notB3.getPin("B"), new Point(7.5, 167.5)); + new GUIWire(submodelModifiable, cpB4, notB4.getPin("A"), new Point(7.5, 182.5)); + new GUIWire(submodelModifiable, cpB4, notB4.getPin("B"), new Point(7.5, 192.5)); + new GUIWire(submodelModifiable, notA1.getPin("Y"), nandY1.getPin("A"), new Point(40, 12.5), new Point(40, 7.5)); + new GUIWire(submodelModifiable, notB1.getPin("Y"), nandY1.getPin("B"), new Point(45, 112.5), new Point(45, 17.5)); + new GUIWire(submodelModifiable, notA2.getPin("Y"), nandY2.getPin("A"), new Point(40, 37.5), new Point(40, 32.5)); + new GUIWire(submodelModifiable, notB2.getPin("Y"), nandY2.getPin("B"), new Point(50, 137.5), new Point(50, 42.5)); + new GUIWire(submodelModifiable, notA3.getPin("Y"), nandY3.getPin("A"), new Point(40, 62.5), new Point(40, 57.5)); + new GUIWire(submodelModifiable, notB3.getPin("Y"), nandY3.getPin("B"), new Point(55, 162.5), new Point(55, 67.5)); + new GUIWire(submodelModifiable, notA4.getPin("Y"), nandY4.getPin("A"), new Point(40, 87.5), new Point(40, 82.5)); + new GUIWire(submodelModifiable, notB4.getPin("Y"), nandY4.getPin("B"), new Point(60, 187.5), new Point(60, 92.5)); + new GUIWire(submodelModifiable, nandY1.getPin("Y"), Y1, new Point[0]); + new GUIWire(submodelModifiable, nandY2.getPin("Y"), Y2, new Point[0]); + new GUIWire(submodelModifiable, nandY3.getPin("Y"), Y3, new Point[0]); + new GUIWire(submodelModifiable, nandY4.getPin("Y"), Y4, new Point[0]); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram2.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram2.java index 8517745d..f94ca923 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram2.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram2.java @@ -22,23 +22,23 @@ public class GUIram2 extends SimpleRectangularSubmodelComponent private void initSubmodelComponents() { //@formatter:off - Pin A0 = getInputSubmodelPins() .get(0); - Pin A1 = getInputSubmodelPins() .get(1); - Pin B0 = getInputSubmodelPins() .get(2); - Pin B1 = getInputSubmodelPins() .get(3); - Pin WE = getInputSubmodelPins() .get(4); - Pin D1 = getInputSubmodelPins() .get(5); - Pin D2 = getInputSubmodelPins() .get(6); - Pin D3 = getInputSubmodelPins() .get(7); - Pin D4 = getInputSubmodelPins() .get(8); - Pin QA1 = getOutputSubmodelPins().get(0); - Pin QA2 = getOutputSubmodelPins().get(1); - Pin QA3 = getOutputSubmodelPins().get(2); - Pin QA4 = getOutputSubmodelPins().get(3); - Pin QB1 = getOutputSubmodelPins().get(4); - Pin QB2 = getOutputSubmodelPins().get(5); - Pin QB3 = getOutputSubmodelPins().get(6); - Pin QB4 = getOutputSubmodelPins().get(7); + Pin A0 = getSubmodelPin("A0"); + Pin A1 = getSubmodelPin("A1"); + Pin B0 = getSubmodelPin("B0"); + Pin B1 = getSubmodelPin("B1"); + Pin WE = getSubmodelPin("WE"); + Pin D1 = getSubmodelPin("D1"); + Pin D2 = getSubmodelPin("D2"); + Pin D3 = getSubmodelPin("D3"); + Pin D4 = getSubmodelPin("D4"); + Pin QA1 = getSubmodelPin("QA1"); + Pin QA2 = getSubmodelPin("QA2"); + Pin QA3 = getSubmodelPin("QA3"); + Pin QA4 = getSubmodelPin("QA4"); + Pin QB1 = getSubmodelPin("QB1"); + Pin QB2 = getSubmodelPin("QB2"); + Pin QB3 = getSubmodelPin("QB3"); + Pin QB4 = getSubmodelPin("QB4"); GUIdemux2 demuxA = new GUIdemux2 (submodelModifiable); GUIdemux2 demuxB = new GUIdemux2 (submodelModifiable); @@ -137,139 +137,139 @@ public class GUIram2 extends SimpleRectangularSubmodelComponent cpQ311.moveCenterTo(120, 800); cpQ411.moveCenterTo(115, 810); - new GUIWire(submodelModifiable, A0, demuxA.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, A1, demuxA.getInputPins().get(1), new Point(10, 150), new Point(10, 60)); - new GUIWire(submodelModifiable, B0, demuxB.getInputPins().get(0), new Point( 5, 250), new Point( 5, 155)); - new GUIWire(submodelModifiable, B1, demuxB.getInputPins().get(1), new Point(10, 350), new Point(10, 165)); - new GUIWire(submodelModifiable, demuxB.getOutputPins().get(0), cpB00, new Point[0]); - new GUIWire(submodelModifiable, demuxB.getOutputPins().get(1), cpB01, new Point[0]); - new GUIWire(submodelModifiable, demuxB.getOutputPins().get(2), cpB10, new Point[0]); - new GUIWire(submodelModifiable, demuxB.getOutputPins().get(3), cpB11, new Point[0]); - new GUIWire(submodelModifiable, cpB00, weAndB.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpB01, weAndB.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpB10, weAndB.getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, cpB11, weAndB.getInputPins().get(3), new Point[0]); - new GUIWire(submodelModifiable, WE, weAndB.getInputPins().get(4), new Point(5, 450), new Point(5, 300), new Point(125, 300), new Point(125, 195)); - new GUIWire(submodelModifiable, weAndB.getOutputPins().get(0), cell00.getInputPins().get(4), new Point(185, 155), new Point(185, 250), new Point(30, 250), new Point(30, 370)); - new GUIWire(submodelModifiable, weAndB.getOutputPins().get(1), cell01.getInputPins().get(4), new Point(180, 165), new Point(180, 245), new Point(25, 245), new Point(25, 520)); - new GUIWire(submodelModifiable, weAndB.getOutputPins().get(2), cell10.getInputPins().get(4), new Point(175, 175), new Point(175, 240), new Point(20, 240), new Point(20, 670)); - new GUIWire(submodelModifiable, weAndB.getOutputPins().get(3), cell11.getInputPins().get(4), new Point(170, 185), new Point(170, 235), new Point(15, 235), new Point(15, 820)); - new GUIWire(submodelModifiable, D1, cpD1in , new Point[0]); - new GUIWire(submodelModifiable, D2, cpD2in , new Point[0]); - new GUIWire(submodelModifiable, D3, cpD3in , new Point[0]); - new GUIWire(submodelModifiable, D4, cpD4in , new Point(50, 850)); - new GUIWire(submodelModifiable, cpD101, cell00.getInputPins().get(0), new Point(35, 330)); - new GUIWire(submodelModifiable, cpD201, cell00.getInputPins().get(1), new Point(40, 340)); - new GUIWire(submodelModifiable, cpD301, cell00.getInputPins().get(2), new Point(45, 350)); - new GUIWire(submodelModifiable, cpD401, cell00.getInputPins().get(3), new Point(50, 360)); - new GUIWire(submodelModifiable, cpD101, cell01.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpD201, cell01.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpD301, cell01.getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, cpD401, cell01.getInputPins().get(3), new Point[0]); - new GUIWire(submodelModifiable, cpD101, cpD1in , new Point[0]); - new GUIWire(submodelModifiable, cpD1in, cpD110 , new Point[0]); - new GUIWire(submodelModifiable, cpD201, cpD210 , new Point[0]); - new GUIWire(submodelModifiable, cpD301, cpD310 , new Point[0]); - new GUIWire(submodelModifiable, cpD401, cpD410 , new Point[0]); - new GUIWire(submodelModifiable, cpD110, cell10.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpD210, cell10.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpD310, cell10.getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, cpD410, cell10.getInputPins().get(3), new Point[0]); - new GUIWire(submodelModifiable, cpD210, cpD2in , new Point[0]); - new GUIWire(submodelModifiable, cpD310, cpD3in , new Point[0]); - new GUIWire(submodelModifiable, cpD410, cpD4in , new Point[0]); - new GUIWire(submodelModifiable, cpD110, cell11.getInputPins().get(0), new Point(35, 780)); - new GUIWire(submodelModifiable, cpD2in, cell11.getInputPins().get(1), new Point(40, 790)); - new GUIWire(submodelModifiable, cpD3in, cell11.getInputPins().get(2), new Point(45, 800)); - new GUIWire(submodelModifiable, cpD4in, cell11.getInputPins().get(3), new Point[0]); - new GUIWire(submodelModifiable, cell00.getOutputPins().get(0), cpQ100, new Point[0]); - new GUIWire(submodelModifiable, cell00.getOutputPins().get(1), cpQ200, new Point[0]); - new GUIWire(submodelModifiable, cell00.getOutputPins().get(2), cpQ300, new Point[0]); - new GUIWire(submodelModifiable, cell00.getOutputPins().get(3), cpQ400, new Point[0]); - new GUIWire(submodelModifiable, cell01.getOutputPins().get(0), cpQ101, new Point[0]); - new GUIWire(submodelModifiable, cell01.getOutputPins().get(1), cpQ201, new Point[0]); - new GUIWire(submodelModifiable, cell01.getOutputPins().get(2), cpQ301, new Point[0]); - new GUIWire(submodelModifiable, cell01.getOutputPins().get(3), cpQ401, new Point[0]); - new GUIWire(submodelModifiable, cell10.getOutputPins().get(0), cpQ110, new Point[0]); - new GUIWire(submodelModifiable, cell10.getOutputPins().get(1), cpQ210, new Point[0]); - new GUIWire(submodelModifiable, cell10.getOutputPins().get(2), cpQ310, new Point[0]); - new GUIWire(submodelModifiable, cell10.getOutputPins().get(3), cpQ410, new Point[0]); - new GUIWire(submodelModifiable, cell11.getOutputPins().get(0), cpQ111, new Point[0]); - new GUIWire(submodelModifiable, cell11.getOutputPins().get(1), cpQ211, new Point[0]); - new GUIWire(submodelModifiable, cell11.getOutputPins().get(2), cpQ311, new Point[0]); - new GUIWire(submodelModifiable, cell11.getOutputPins().get(3), cpQ411, new Point[0]); - new GUIWire(submodelModifiable, demuxA.getOutputPins().get(0), andA00 .getInputPins().get(4), new Point(210, 50), new Point(210, 420)); - new GUIWire(submodelModifiable, demuxA.getOutputPins().get(1), andorA01.getInputPins().get(8), new Point(205, 60), new Point(205, 570)); - new GUIWire(submodelModifiable, demuxA.getOutputPins().get(2), andorA10.getInputPins().get(8), new Point(200, 70), new Point(200, 720)); - new GUIWire(submodelModifiable, demuxA.getOutputPins().get(3), andorA11.getInputPins().get(8), new Point(195, 80), new Point(195, 870)); - new GUIWire(submodelModifiable, cpB00 , andB00 .getInputPins().get(4), new Point(110, 370)); - new GUIWire(submodelModifiable, cpB01 , andorB01.getInputPins().get(8), new Point(105, 520)); - new GUIWire(submodelModifiable, cpB10 , andorB10.getInputPins().get(8), new Point(100, 670)); - new GUIWire(submodelModifiable, cpB11 , andorB11.getInputPins().get(8), new Point(95, 820)); - new GUIWire(submodelModifiable, cpQ100, andA00 .getInputPins().get(0), new Point(130, 380)); - new GUIWire(submodelModifiable, cpQ200, andA00 .getInputPins().get(1), new Point(125, 390)); - new GUIWire(submodelModifiable, cpQ300, andA00 .getInputPins().get(2), new Point(120, 400)); - new GUIWire(submodelModifiable, cpQ400, andA00 .getInputPins().get(3), new Point(115, 410)); - new GUIWire(submodelModifiable, cpQ101, andorA01.getInputPins().get(4), new Point(130, 530)); - new GUIWire(submodelModifiable, cpQ201, andorA01.getInputPins().get(5), new Point(125, 540)); - new GUIWire(submodelModifiable, cpQ301, andorA01.getInputPins().get(6), new Point(120, 550)); - new GUIWire(submodelModifiable, cpQ401, andorA01.getInputPins().get(7), new Point(115, 560)); - new GUIWire(submodelModifiable, cpQ110, andorA10.getInputPins().get(4), new Point(130, 680)); - new GUIWire(submodelModifiable, cpQ210, andorA10.getInputPins().get(5), new Point(125, 690)); - new GUIWire(submodelModifiable, cpQ310, andorA10.getInputPins().get(6), new Point(120, 700)); - new GUIWire(submodelModifiable, cpQ410, andorA10.getInputPins().get(7), new Point(115, 710)); - new GUIWire(submodelModifiable, cpQ111, andorA11.getInputPins().get(4), new Point(130, 830)); - new GUIWire(submodelModifiable, cpQ211, andorA11.getInputPins().get(5), new Point(125, 840)); - new GUIWire(submodelModifiable, cpQ311, andorA11.getInputPins().get(6), new Point(120, 850)); - new GUIWire(submodelModifiable, cpQ411, andorA11.getInputPins().get(7), new Point(115, 860)); - new GUIWire(submodelModifiable, cpQ100, andB00 .getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpQ200, andB00 .getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpQ300, andB00 .getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, cpQ400, andB00 .getInputPins().get(3), new Point[0]); - new GUIWire(submodelModifiable, cpQ101, andorB01.getInputPins().get(4), new Point[0]); - new GUIWire(submodelModifiable, cpQ201, andorB01.getInputPins().get(5), new Point[0]); - new GUIWire(submodelModifiable, cpQ301, andorB01.getInputPins().get(6), new Point[0]); - new GUIWire(submodelModifiable, cpQ401, andorB01.getInputPins().get(7), new Point[0]); - new GUIWire(submodelModifiable, cpQ110, andorB10.getInputPins().get(4), new Point[0]); - new GUIWire(submodelModifiable, cpQ210, andorB10.getInputPins().get(5), new Point[0]); - new GUIWire(submodelModifiable, cpQ310, andorB10.getInputPins().get(6), new Point[0]); - new GUIWire(submodelModifiable, cpQ410, andorB10.getInputPins().get(7), new Point[0]); - new GUIWire(submodelModifiable, cpQ111, andorB11.getInputPins().get(4), new Point[0]); - new GUIWire(submodelModifiable, cpQ211, andorB11.getInputPins().get(5), new Point[0]); - new GUIWire(submodelModifiable, cpQ311, andorB11.getInputPins().get(6), new Point[0]); - new GUIWire(submodelModifiable, cpQ411, andorB11.getInputPins().get(7), new Point[0]); - new GUIWire(submodelModifiable, andA00 .getOutputPins().get(0), andorA01.getInputPins().get(0), new Point(290, 380), new Point(290, 445), new Point(230, 445), new Point(230, 490)); - new GUIWire(submodelModifiable, andA00 .getOutputPins().get(1), andorA01.getInputPins().get(1), new Point(285, 390), new Point(285, 440), new Point(225, 440), new Point(225, 500)); - new GUIWire(submodelModifiable, andA00 .getOutputPins().get(2), andorA01.getInputPins().get(2), new Point(280, 400), new Point(280, 435), new Point(220, 435), new Point(220, 510)); - new GUIWire(submodelModifiable, andA00 .getOutputPins().get(3), andorA01.getInputPins().get(3), new Point(275, 410), new Point(275, 430), new Point(215, 430), new Point(215, 520)); - new GUIWire(submodelModifiable, andorA01.getOutputPins().get(0), andorA10.getInputPins().get(0), new Point(290, 490), new Point(290, 595), new Point(230, 595), new Point(230, 640)); - new GUIWire(submodelModifiable, andorA01.getOutputPins().get(1), andorA10.getInputPins().get(1), new Point(285, 500), new Point(285, 590), new Point(225, 590), new Point(225, 650)); - new GUIWire(submodelModifiable, andorA01.getOutputPins().get(2), andorA10.getInputPins().get(2), new Point(280, 510), new Point(280, 585), new Point(220, 585), new Point(220, 660)); - new GUIWire(submodelModifiable, andorA01.getOutputPins().get(3), andorA10.getInputPins().get(3), new Point(275, 520), new Point(275, 580), new Point(215, 580), new Point(215, 670)); - new GUIWire(submodelModifiable, andorA10.getOutputPins().get(0), andorA11.getInputPins().get(0), new Point(290, 640), new Point(290, 745), new Point(230, 745), new Point(230, 790)); - new GUIWire(submodelModifiable, andorA10.getOutputPins().get(1), andorA11.getInputPins().get(1), new Point(285, 650), new Point(285, 740), new Point(225, 740), new Point(225, 800)); - new GUIWire(submodelModifiable, andorA10.getOutputPins().get(2), andorA11.getInputPins().get(2), new Point(280, 660), new Point(280, 735), new Point(220, 735), new Point(220, 810)); - new GUIWire(submodelModifiable, andorA10.getOutputPins().get(3), andorA11.getInputPins().get(3), new Point(275, 670), new Point(275, 730), new Point(215, 730), new Point(215, 820)); - new GUIWire(submodelModifiable, andorA11.getOutputPins().get(0), QA1 , new Point(300, 790), new Point(300, 50)); - new GUIWire(submodelModifiable, andorA11.getOutputPins().get(1), QA2 , new Point(305, 800), new Point(305, 150)); - new GUIWire(submodelModifiable, andorA11.getOutputPins().get(2), QA3 , new Point(310, 810), new Point(310, 250)); - new GUIWire(submodelModifiable, andorA11.getOutputPins().get(3), QA4 , new Point(315, 820), new Point(315, 350)); - new GUIWire(submodelModifiable, andB00 .getOutputPins().get(0), andorB01.getInputPins().get(0), new Point(190, 330), new Point(190, 430), new Point(130, 430), new Point(130, 440)); - new GUIWire(submodelModifiable, andB00 .getOutputPins().get(1), andorB01.getInputPins().get(1), new Point(185, 340), new Point(185, 425), new Point(125, 425), new Point(125, 450)); - new GUIWire(submodelModifiable, andB00 .getOutputPins().get(2), andorB01.getInputPins().get(2), new Point(180, 350), new Point(180, 420), new Point(120, 420), new Point(120, 460)); - new GUIWire(submodelModifiable, andB00 .getOutputPins().get(3), andorB01.getInputPins().get(3), new Point(175, 360), new Point(175, 415), new Point(115, 415), new Point(115, 470)); - new GUIWire(submodelModifiable, andorB01.getOutputPins().get(0), andorB10.getInputPins().get(0), new Point(190, 440), new Point(190, 580), new Point(130, 580), new Point(130, 590)); - new GUIWire(submodelModifiable, andorB01.getOutputPins().get(1), andorB10.getInputPins().get(1), new Point(185, 450), new Point(185, 575), new Point(125, 575), new Point(125, 600)); - new GUIWire(submodelModifiable, andorB01.getOutputPins().get(2), andorB10.getInputPins().get(2), new Point(180, 460), new Point(180, 570), new Point(120, 570), new Point(120, 610)); - new GUIWire(submodelModifiable, andorB01.getOutputPins().get(3), andorB10.getInputPins().get(3), new Point(175, 470), new Point(175, 565), new Point(115, 565), new Point(115, 620)); - new GUIWire(submodelModifiable, andorB10.getOutputPins().get(0), andorB11.getInputPins().get(0), new Point(190, 590), new Point(190, 730), new Point(130, 730), new Point(130, 740)); - new GUIWire(submodelModifiable, andorB10.getOutputPins().get(1), andorB11.getInputPins().get(1), new Point(185, 600), new Point(185, 725), new Point(125, 725), new Point(125, 750)); - new GUIWire(submodelModifiable, andorB10.getOutputPins().get(2), andorB11.getInputPins().get(2), new Point(180, 610), new Point(180, 720), new Point(120, 720), new Point(120, 760)); - new GUIWire(submodelModifiable, andorB10.getOutputPins().get(3), andorB11.getInputPins().get(3), new Point(175, 620), new Point(175, 715), new Point(115, 715), new Point(115, 770)); - new GUIWire(submodelModifiable, andorB11.getOutputPins().get(0), QB1 , new Point(190, 740), new Point(190, 880), new Point(325, 880), new Point(325, 450)); - new GUIWire(submodelModifiable, andorB11.getOutputPins().get(1), QB2 , new Point(185, 750), new Point(185, 885), new Point(330, 885), new Point(330, 550)); - new GUIWire(submodelModifiable, andorB11.getOutputPins().get(2), QB3 , new Point(180, 760), new Point(180, 890), new Point(335, 890), new Point(335, 650)); - new GUIWire(submodelModifiable, andorB11.getOutputPins().get(3), QB4 , new Point(175, 770), new Point(175, 895), new Point(340, 895), new Point(340, 750)); + new GUIWire(submodelModifiable, A0, demuxA.getPin("S0"), new Point[0]); + new GUIWire(submodelModifiable, A1, demuxA.getPin("S1"), new Point(10, 150), new Point(10, 60)); + new GUIWire(submodelModifiable, B0, demuxB.getPin("S0"), new Point( 5, 250), new Point( 5, 155)); + new GUIWire(submodelModifiable, B1, demuxB.getPin("S1"), new Point(10, 350), new Point(10, 165)); + new GUIWire(submodelModifiable, demuxB.getPin("Y00"), cpB00, new Point[0]); + new GUIWire(submodelModifiable, demuxB.getPin("Y01"), cpB01, new Point[0]); + new GUIWire(submodelModifiable, demuxB.getPin("Y10"), cpB10, new Point[0]); + new GUIWire(submodelModifiable, demuxB.getPin("Y11"), cpB11, new Point[0]); + new GUIWire(submodelModifiable, cpB00, weAndB.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpB01, weAndB.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpB10, weAndB.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpB11, weAndB.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, WE, weAndB.getPin("B"), new Point(5, 450), new Point(5, 300), new Point(125, 300), new Point(125, 195)); + new GUIWire(submodelModifiable, weAndB.getPin("Y1"), cell00.getPin("C"), new Point(185, 155), new Point(185, 250), new Point(30, 250), new Point(30, 370)); + new GUIWire(submodelModifiable, weAndB.getPin("Y2"), cell01.getPin("C"), new Point(180, 165), new Point(180, 245), new Point(25, 245), new Point(25, 520)); + new GUIWire(submodelModifiable, weAndB.getPin("Y3"), cell10.getPin("C"), new Point(175, 175), new Point(175, 240), new Point(20, 240), new Point(20, 670)); + new GUIWire(submodelModifiable, weAndB.getPin("Y4"), cell11.getPin("C"), new Point(170, 185), new Point(170, 235), new Point(15, 235), new Point(15, 820)); + new GUIWire(submodelModifiable, D1, cpD1in , new Point[0]); + new GUIWire(submodelModifiable, D2, cpD2in , new Point[0]); + new GUIWire(submodelModifiable, D3, cpD3in , new Point[0]); + new GUIWire(submodelModifiable, D4, cpD4in , new Point(50, 850)); + new GUIWire(submodelModifiable, cpD101, cell00.getPin("D1"), new Point(35, 330)); + new GUIWire(submodelModifiable, cpD201, cell00.getPin("D2"), new Point(40, 340)); + new GUIWire(submodelModifiable, cpD301, cell00.getPin("D3"), new Point(45, 350)); + new GUIWire(submodelModifiable, cpD401, cell00.getPin("D4"), new Point(50, 360)); + new GUIWire(submodelModifiable, cpD101, cell01.getPin("D1"), new Point[0]); + new GUIWire(submodelModifiable, cpD201, cell01.getPin("D2"), new Point[0]); + new GUIWire(submodelModifiable, cpD301, cell01.getPin("D3"), new Point[0]); + new GUIWire(submodelModifiable, cpD401, cell01.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, cpD101, cpD1in , new Point[0]); + new GUIWire(submodelModifiable, cpD1in, cpD110 , new Point[0]); + new GUIWire(submodelModifiable, cpD201, cpD210 , new Point[0]); + new GUIWire(submodelModifiable, cpD301, cpD310 , new Point[0]); + new GUIWire(submodelModifiable, cpD401, cpD410 , new Point[0]); + new GUIWire(submodelModifiable, cpD110, cell10.getPin("D1"), new Point[0]); + new GUIWire(submodelModifiable, cpD210, cell10.getPin("D2"), new Point[0]); + new GUIWire(submodelModifiable, cpD310, cell10.getPin("D3"), new Point[0]); + new GUIWire(submodelModifiable, cpD410, cell10.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, cpD210, cpD2in , new Point[0]); + new GUIWire(submodelModifiable, cpD310, cpD3in , new Point[0]); + new GUIWire(submodelModifiable, cpD410, cpD4in , new Point[0]); + new GUIWire(submodelModifiable, cpD110, cell11.getPin("D1"), new Point(35, 780)); + new GUIWire(submodelModifiable, cpD2in, cell11.getPin("D2"), new Point(40, 790)); + new GUIWire(submodelModifiable, cpD3in, cell11.getPin("D3"), new Point(45, 800)); + new GUIWire(submodelModifiable, cpD4in, cell11.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, cell00.getPin("Q1"), cpQ100, new Point[0]); + new GUIWire(submodelModifiable, cell00.getPin("Q2"), cpQ200, new Point[0]); + new GUIWire(submodelModifiable, cell00.getPin("Q3"), cpQ300, new Point[0]); + new GUIWire(submodelModifiable, cell00.getPin("Q4"), cpQ400, new Point[0]); + new GUIWire(submodelModifiable, cell01.getPin("Q1"), cpQ101, new Point[0]); + new GUIWire(submodelModifiable, cell01.getPin("Q2"), cpQ201, new Point[0]); + new GUIWire(submodelModifiable, cell01.getPin("Q3"), cpQ301, new Point[0]); + new GUIWire(submodelModifiable, cell01.getPin("Q4"), cpQ401, new Point[0]); + new GUIWire(submodelModifiable, cell10.getPin("Q1"), cpQ110, new Point[0]); + new GUIWire(submodelModifiable, cell10.getPin("Q2"), cpQ210, new Point[0]); + new GUIWire(submodelModifiable, cell10.getPin("Q3"), cpQ310, new Point[0]); + new GUIWire(submodelModifiable, cell10.getPin("Q4"), cpQ410, new Point[0]); + new GUIWire(submodelModifiable, cell11.getPin("Q1"), cpQ111, new Point[0]); + new GUIWire(submodelModifiable, cell11.getPin("Q2"), cpQ211, new Point[0]); + new GUIWire(submodelModifiable, cell11.getPin("Q3"), cpQ311, new Point[0]); + new GUIWire(submodelModifiable, cell11.getPin("Q4"), cpQ411, new Point[0]); + new GUIWire(submodelModifiable, demuxA.getPin("Y00"), andA00 .getPin("B"), new Point(210, 50), new Point(210, 420)); + new GUIWire(submodelModifiable, demuxA.getPin("Y01"), andorA01.getPin("B"), new Point(205, 60), new Point(205, 570)); + new GUIWire(submodelModifiable, demuxA.getPin("Y10"), andorA10.getPin("B"), new Point(200, 70), new Point(200, 720)); + new GUIWire(submodelModifiable, demuxA.getPin("Y11"), andorA11.getPin("B"), new Point(195, 80), new Point(195, 870)); + new GUIWire(submodelModifiable, cpB00 , andB00 .getPin("B"), new Point(110, 370)); + new GUIWire(submodelModifiable, cpB01 , andorB01.getPin("B"), new Point(105, 520)); + new GUIWire(submodelModifiable, cpB10 , andorB10.getPin("B"), new Point(100, 670)); + new GUIWire(submodelModifiable, cpB11 , andorB11.getPin("B"), new Point(95, 820)); + new GUIWire(submodelModifiable, cpQ100, andA00 .getPin("A1"), new Point(130, 380)); + new GUIWire(submodelModifiable, cpQ200, andA00 .getPin("A2"), new Point(125, 390)); + new GUIWire(submodelModifiable, cpQ300, andA00 .getPin("A3"), new Point(120, 400)); + new GUIWire(submodelModifiable, cpQ400, andA00 .getPin("A4"), new Point(115, 410)); + new GUIWire(submodelModifiable, cpQ101, andorA01.getPin("A1"), new Point(130, 530)); + new GUIWire(submodelModifiable, cpQ201, andorA01.getPin("A2"), new Point(125, 540)); + new GUIWire(submodelModifiable, cpQ301, andorA01.getPin("A3"), new Point(120, 550)); + new GUIWire(submodelModifiable, cpQ401, andorA01.getPin("A4"), new Point(115, 560)); + new GUIWire(submodelModifiable, cpQ110, andorA10.getPin("A1"), new Point(130, 680)); + new GUIWire(submodelModifiable, cpQ210, andorA10.getPin("A2"), new Point(125, 690)); + new GUIWire(submodelModifiable, cpQ310, andorA10.getPin("A3"), new Point(120, 700)); + new GUIWire(submodelModifiable, cpQ410, andorA10.getPin("A4"), new Point(115, 710)); + new GUIWire(submodelModifiable, cpQ111, andorA11.getPin("A1"), new Point(130, 830)); + new GUIWire(submodelModifiable, cpQ211, andorA11.getPin("A2"), new Point(125, 840)); + new GUIWire(submodelModifiable, cpQ311, andorA11.getPin("A3"), new Point(120, 850)); + new GUIWire(submodelModifiable, cpQ411, andorA11.getPin("A4"), new Point(115, 860)); + new GUIWire(submodelModifiable, cpQ100, andB00 .getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpQ200, andB00 .getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpQ300, andB00 .getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpQ400, andB00 .getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, cpQ101, andorB01.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpQ201, andorB01.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpQ301, andorB01.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpQ401, andorB01.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, cpQ110, andorB10.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpQ210, andorB10.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpQ310, andorB10.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpQ410, andorB10.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, cpQ111, andorB11.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpQ211, andorB11.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpQ311, andorB11.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpQ411, andorB11.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, andA00 .getPin("Y1"), andorA01.getPin("C1"), new Point(290, 380), new Point(290, 445), new Point(230, 445), new Point(230, 490)); + new GUIWire(submodelModifiable, andA00 .getPin("Y2"), andorA01.getPin("C2"), new Point(285, 390), new Point(285, 440), new Point(225, 440), new Point(225, 500)); + new GUIWire(submodelModifiable, andA00 .getPin("Y3"), andorA01.getPin("C3"), new Point(280, 400), new Point(280, 435), new Point(220, 435), new Point(220, 510)); + new GUIWire(submodelModifiable, andA00 .getPin("Y4"), andorA01.getPin("C4"), new Point(275, 410), new Point(275, 430), new Point(215, 430), new Point(215, 520)); + new GUIWire(submodelModifiable, andorA01.getPin("Y1"), andorA10.getPin("C1"), new Point(290, 490), new Point(290, 595), new Point(230, 595), new Point(230, 640)); + new GUIWire(submodelModifiable, andorA01.getPin("Y2"), andorA10.getPin("C2"), new Point(285, 500), new Point(285, 590), new Point(225, 590), new Point(225, 650)); + new GUIWire(submodelModifiable, andorA01.getPin("Y3"), andorA10.getPin("C3"), new Point(280, 510), new Point(280, 585), new Point(220, 585), new Point(220, 660)); + new GUIWire(submodelModifiable, andorA01.getPin("Y4"), andorA10.getPin("C4"), new Point(275, 520), new Point(275, 580), new Point(215, 580), new Point(215, 670)); + new GUIWire(submodelModifiable, andorA10.getPin("Y1"), andorA11.getPin("C1"), new Point(290, 640), new Point(290, 745), new Point(230, 745), new Point(230, 790)); + new GUIWire(submodelModifiable, andorA10.getPin("Y2"), andorA11.getPin("C2"), new Point(285, 650), new Point(285, 740), new Point(225, 740), new Point(225, 800)); + new GUIWire(submodelModifiable, andorA10.getPin("Y3"), andorA11.getPin("C3"), new Point(280, 660), new Point(280, 735), new Point(220, 735), new Point(220, 810)); + new GUIWire(submodelModifiable, andorA10.getPin("Y4"), andorA11.getPin("C4"), new Point(275, 670), new Point(275, 730), new Point(215, 730), new Point(215, 820)); + new GUIWire(submodelModifiable, andorA11.getPin("Y1"), QA1 , new Point(300, 790), new Point(300, 50)); + new GUIWire(submodelModifiable, andorA11.getPin("Y2"), QA2 , new Point(305, 800), new Point(305, 150)); + new GUIWire(submodelModifiable, andorA11.getPin("Y3"), QA3 , new Point(310, 810), new Point(310, 250)); + new GUIWire(submodelModifiable, andorA11.getPin("Y4"), QA4 , new Point(315, 820), new Point(315, 350)); + new GUIWire(submodelModifiable, andB00 .getPin("Y1"), andorB01.getPin("C1"), new Point(190, 330), new Point(190, 430), new Point(130, 430), new Point(130, 440)); + new GUIWire(submodelModifiable, andB00 .getPin("Y2"), andorB01.getPin("C2"), new Point(185, 340), new Point(185, 425), new Point(125, 425), new Point(125, 450)); + new GUIWire(submodelModifiable, andB00 .getPin("Y3"), andorB01.getPin("C3"), new Point(180, 350), new Point(180, 420), new Point(120, 420), new Point(120, 460)); + new GUIWire(submodelModifiable, andB00 .getPin("Y4"), andorB01.getPin("C4"), new Point(175, 360), new Point(175, 415), new Point(115, 415), new Point(115, 470)); + new GUIWire(submodelModifiable, andorB01.getPin("Y1"), andorB10.getPin("C1"), new Point(190, 440), new Point(190, 580), new Point(130, 580), new Point(130, 590)); + new GUIWire(submodelModifiable, andorB01.getPin("Y2"), andorB10.getPin("C2"), new Point(185, 450), new Point(185, 575), new Point(125, 575), new Point(125, 600)); + new GUIWire(submodelModifiable, andorB01.getPin("Y3"), andorB10.getPin("C3"), new Point(180, 460), new Point(180, 570), new Point(120, 570), new Point(120, 610)); + new GUIWire(submodelModifiable, andorB01.getPin("Y4"), andorB10.getPin("C4"), new Point(175, 470), new Point(175, 565), new Point(115, 565), new Point(115, 620)); + new GUIWire(submodelModifiable, andorB10.getPin("Y1"), andorB11.getPin("C1"), new Point(190, 590), new Point(190, 730), new Point(130, 730), new Point(130, 740)); + new GUIWire(submodelModifiable, andorB10.getPin("Y2"), andorB11.getPin("C2"), new Point(185, 600), new Point(185, 725), new Point(125, 725), new Point(125, 750)); + new GUIWire(submodelModifiable, andorB10.getPin("Y3"), andorB11.getPin("C3"), new Point(180, 610), new Point(180, 720), new Point(120, 720), new Point(120, 760)); + new GUIWire(submodelModifiable, andorB10.getPin("Y4"), andorB11.getPin("C4"), new Point(175, 620), new Point(175, 715), new Point(115, 715), new Point(115, 770)); + new GUIWire(submodelModifiable, andorB11.getPin("Y1"), QB1 , new Point(190, 740), new Point(190, 880), new Point(325, 880), new Point(325, 450)); + new GUIWire(submodelModifiable, andorB11.getPin("Y2"), QB2 , new Point(185, 750), new Point(185, 885), new Point(330, 885), new Point(330, 550)); + new GUIWire(submodelModifiable, andorB11.getPin("Y3"), QB3 , new Point(180, 760), new Point(180, 890), new Point(335, 890), new Point(335, 650)); + new GUIWire(submodelModifiable, andorB11.getPin("Y4"), QB4 , new Point(175, 770), new Point(175, 895), new Point(340, 895), new Point(340, 750)); //@formatter:on } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram4.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram4.java index 601dffa0..419836ba 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram4.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIram4.java @@ -22,27 +22,27 @@ public class GUIram4 extends SimpleRectangularSubmodelComponent private void initSubmodelComponents() { //@formatter:off - Pin A0 = getInputSubmodelPins() .get( 0); - Pin A1 = getInputSubmodelPins() .get( 1); - Pin A2 = getInputSubmodelPins() .get( 2); - Pin A3 = getInputSubmodelPins() .get( 3); - Pin B0 = getInputSubmodelPins() .get( 4); - Pin B1 = getInputSubmodelPins() .get( 5); - Pin B2 = getInputSubmodelPins() .get( 6); - Pin B3 = getInputSubmodelPins() .get( 7); - Pin WE = getInputSubmodelPins() .get( 8); - Pin D1 = getInputSubmodelPins() .get( 9); - Pin D2 = getInputSubmodelPins() .get(10); - Pin D3 = getInputSubmodelPins() .get(11); - Pin D4 = getInputSubmodelPins() .get(12); - Pin QA1 = getOutputSubmodelPins().get( 0); - Pin QA2 = getOutputSubmodelPins().get( 1); - Pin QA3 = getOutputSubmodelPins().get( 2); - Pin QA4 = getOutputSubmodelPins().get( 3); - Pin QB1 = getOutputSubmodelPins().get( 4); - Pin QB2 = getOutputSubmodelPins().get( 5); - Pin QB3 = getOutputSubmodelPins().get( 6); - Pin QB4 = getOutputSubmodelPins().get( 7); + Pin A0 = getSubmodelPin("A0"); + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin B0 = getSubmodelPin("B0"); + Pin B1 = getSubmodelPin("B1"); + Pin B2 = getSubmodelPin("B2"); + Pin B3 = getSubmodelPin("B3"); + Pin WE = getSubmodelPin("WE"); + Pin D1 = getSubmodelPin("D1"); + Pin D2 = getSubmodelPin("D2"); + Pin D3 = getSubmodelPin("D3"); + Pin D4 = getSubmodelPin("D4"); + Pin QA1 =getSubmodelPin("QA1"); + Pin QA2 =getSubmodelPin("QA2"); + Pin QA3 =getSubmodelPin("QA3"); + Pin QA4 =getSubmodelPin("QA4"); + Pin QB1 =getSubmodelPin("QB1"); + Pin QB2 =getSubmodelPin("QB2"); + Pin QB3 =getSubmodelPin("QB3"); + Pin QB4 =getSubmodelPin("QB4"); GUIdemux2 demuxA = new GUIdemux2 (submodelModifiable); GUIdemux2 demuxB = new GUIdemux2 (submodelModifiable); @@ -133,151 +133,151 @@ public class GUIram4 extends SimpleRectangularSubmodelComponent cpAB3in.moveCenterTo( 50, 650); cpAB4in.moveCenterTo( 55, 750); - new GUIWire(submodelModifiable, A0, demuxA.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, A1, demuxA.getInputPins().get(1), new Point(10, 150), new Point(10, 60)); - new GUIWire(submodelModifiable, B0, demuxB.getInputPins().get(0), new Point( 5, 450), new Point( 5, 155)); - new GUIWire(submodelModifiable, B1, demuxB.getInputPins().get(1), new Point(10, 550), new Point(10, 165)); - new GUIWire(submodelModifiable, demuxB.getOutputPins().get(0), cpB00, new Point[0]); - new GUIWire(submodelModifiable, demuxB.getOutputPins().get(1), cpB01, new Point[0]); - new GUIWire(submodelModifiable, demuxB.getOutputPins().get(2), cpB10, new Point[0]); - new GUIWire(submodelModifiable, demuxB.getOutputPins().get(3), cpB11, new Point[0]); - new GUIWire(submodelModifiable, cpB00, weAndB.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpB01, weAndB.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpB10, weAndB.getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, cpB11, weAndB.getInputPins().get(3), new Point[0]); - new GUIWire(submodelModifiable, WE, weAndB.getInputPins().get(4), new Point(15, 850), new Point(15, 195)); - new GUIWire(submodelModifiable, weAndB.getOutputPins().get(0), cell00.getInputPins().get(4), new Point(290, 155), new Point(290, 230), new Point(35, 230), new Point(35, 375)); - new GUIWire(submodelModifiable, weAndB.getOutputPins().get(1), cell01.getInputPins().get(4), new Point(285, 165), new Point(285, 225), new Point(30, 225), new Point(30, 525)); - new GUIWire(submodelModifiable, weAndB.getOutputPins().get(2), cell10.getInputPins().get(4), new Point(280, 175), new Point(280, 220), new Point(25, 220), new Point(25, 675)); - new GUIWire(submodelModifiable, weAndB.getOutputPins().get(3), cell11.getInputPins().get(4), new Point(275, 185), new Point(275, 215), new Point(20, 215), new Point(20, 825)); - new GUIWire(submodelModifiable, cpAB101, cpAB1in , new Point[0]); - new GUIWire(submodelModifiable, cpAB1in, cell00.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpAB201, cpAB2in , new Point[0]); - new GUIWire(submodelModifiable, cpAB2in, cell00.getInputPins().get(1), new Point(45, 345)); - new GUIWire(submodelModifiable, cpAB301, cell00.getInputPins().get(2), new Point(50, 355)); - new GUIWire(submodelModifiable, cpAB401, cell00.getInputPins().get(3), new Point(55, 365)); - new GUIWire(submodelModifiable, cpAB101, cell01.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpAB201, cell01.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpAB301, cell01.getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, cpAB401, cell01.getInputPins().get(3), new Point[0]); - new GUIWire(submodelModifiable, cpAB101, cpAB110 , new Point[0]); - new GUIWire(submodelModifiable, cpAB201, cpAB210 , new Point[0]); - new GUIWire(submodelModifiable, cpAB301, cpAB3in , new Point[0]); - new GUIWire(submodelModifiable, B2, cpAB3in , new Point[0]); - new GUIWire(submodelModifiable, cpAB3in, cpAB310 , new Point[0]); - new GUIWire(submodelModifiable, cpAB401, cpAB410 , new Point[0]); - new GUIWire(submodelModifiable, cpAB110, cell10.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpAB210, cell10.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpAB310, cell10.getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, cpAB410, cell10.getInputPins().get(3), new Point[0]); - new GUIWire(submodelModifiable, cpAB110, cell11.getInputPins().get(0), new Point(40, 785)); - new GUIWire(submodelModifiable, cpAB210, cell11.getInputPins().get(1), new Point(45, 795)); - new GUIWire(submodelModifiable, cpAB310, cell11.getInputPins().get(2), new Point(50, 805)); - new GUIWire(submodelModifiable, cpAB410, cpAB4in , new Point[0]); - new GUIWire(submodelModifiable, cpAB4in, cell11.getInputPins().get(3), new Point(55, 815)); - new GUIWire(submodelModifiable, A2, cpAB1in , new Point(40, 250)); - new GUIWire(submodelModifiable, A3, cpAB2in , new Point[0]); - new GUIWire(submodelModifiable, B3, cpAB4in , new Point[0]); - new GUIWire(submodelModifiable, cpD_101, cell00.getInputPins().get(5), new Point(60, 385)); - new GUIWire(submodelModifiable, cpD_201, cell00.getInputPins().get(6), new Point(65, 395)); - new GUIWire(submodelModifiable, cpD_301, cell00.getInputPins().get(7), new Point(70, 405)); - new GUIWire(submodelModifiable, cpD_401, cell00.getInputPins().get(8), new Point(75, 415)); - new GUIWire(submodelModifiable, cpD_101, cell01.getInputPins().get(5), new Point[0]); - new GUIWire(submodelModifiable, cpD_201, cell01.getInputPins().get(6), new Point[0]); - new GUIWire(submodelModifiable, cpD_301, cell01.getInputPins().get(7), new Point[0]); - new GUIWire(submodelModifiable, cpD_401, cell01.getInputPins().get(8), new Point[0]); - new GUIWire(submodelModifiable, cpD_101, cpD_110 , new Point[0]); - new GUIWire(submodelModifiable, cpD_201, cpD_210 , new Point[0]); - new GUIWire(submodelModifiable, cpD_301, cpD_310 , new Point[0]); - new GUIWire(submodelModifiable, cpD_401, cpD_410 , new Point[0]); - new GUIWire(submodelModifiable, cpD_110, cell10.getInputPins().get(5), new Point[0]); - new GUIWire(submodelModifiable, cpD_210, cell10.getInputPins().get(6), new Point[0]); - new GUIWire(submodelModifiable, cpD_310, cell10.getInputPins().get(7), new Point[0]); - new GUIWire(submodelModifiable, cpD_410, cell10.getInputPins().get(8), new Point[0]); - new GUIWire(submodelModifiable, cpD_110, cpD_111 , new Point[0]); - new GUIWire(submodelModifiable, cpD_210, cpD_211 , new Point[0]); - new GUIWire(submodelModifiable, cpD_310, cpD_311 , new Point[0]); - new GUIWire(submodelModifiable, cpD_410, cpD_411 , new Point[0]); - new GUIWire(submodelModifiable, cpD_111, cell11.getInputPins().get(5), new Point[0]); - new GUIWire(submodelModifiable, cpD_211, cell11.getInputPins().get(6), new Point[0]); - new GUIWire(submodelModifiable, cpD_311, cell11.getInputPins().get(7), new Point[0]); - new GUIWire(submodelModifiable, cpD_411, cell11.getInputPins().get(8), new Point[0]); - new GUIWire(submodelModifiable, D1, cpD_111 , new Point(60, 950)); - new GUIWire(submodelModifiable, D2, cpD_211 , new Point(65, 1050)); - new GUIWire(submodelModifiable, D3, cpD_311 , new Point(70, 1150)); - new GUIWire(submodelModifiable, D4, cpD_411 , new Point(75, 1250)); - new GUIWire(submodelModifiable, demuxA.getOutputPins().get(0), andA00 .getInputPins().get(4), new Point(135, 50), new Point(135, 370)); - new GUIWire(submodelModifiable, demuxA.getOutputPins().get(1), andorA01.getInputPins().get(8), new Point(130, 60), new Point(130, 520)); - new GUIWire(submodelModifiable, demuxA.getOutputPins().get(2), andorA10.getInputPins().get(8), new Point(125, 70), new Point(125, 670)); - new GUIWire(submodelModifiable, demuxA.getOutputPins().get(3), andorA11.getInputPins().get(8), new Point(120, 80), new Point(120, 820)); - new GUIWire(submodelModifiable, cpB00 , andB00 .getInputPins().get(4), new Point(230, 420)); - new GUIWire(submodelModifiable, cpB01 , andorB01.getInputPins().get(8), new Point(225, 570)); - new GUIWire(submodelModifiable, cpB10 , andorB10.getInputPins().get(8), new Point(220, 720)); - new GUIWire(submodelModifiable, cpB11 , andorB11.getInputPins().get(8), new Point(215, 870)); - new GUIWire(submodelModifiable, cell00.getOutputPins().get(4), andB00 .getInputPins().get(0), new Point(140, 375), new Point(140, 380)); - new GUIWire(submodelModifiable, cell00.getOutputPins().get(5), andB00 .getInputPins().get(1), new Point(140, 385), new Point(140, 390)); - new GUIWire(submodelModifiable, cell00.getOutputPins().get(6), andB00 .getInputPins().get(2), new Point(140, 395), new Point(140, 400)); - new GUIWire(submodelModifiable, cell00.getOutputPins().get(7), andB00 .getInputPins().get(3), new Point(140, 405), new Point(140, 410)); - new GUIWire(submodelModifiable, cell01.getOutputPins().get(4), andorB01.getInputPins().get(4), new Point(140, 525), new Point(140, 530)); - new GUIWire(submodelModifiable, cell01.getOutputPins().get(5), andorB01.getInputPins().get(5), new Point(140, 535), new Point(140, 540)); - new GUIWire(submodelModifiable, cell01.getOutputPins().get(6), andorB01.getInputPins().get(6), new Point(140, 545), new Point(140, 550)); - new GUIWire(submodelModifiable, cell01.getOutputPins().get(7), andorB01.getInputPins().get(7), new Point(140, 555), new Point(140, 560)); - new GUIWire(submodelModifiable, cell10.getOutputPins().get(4), andorB10.getInputPins().get(4), new Point(140, 675), new Point(140, 680)); - new GUIWire(submodelModifiable, cell10.getOutputPins().get(5), andorB10.getInputPins().get(5), new Point(140, 685), new Point(140, 690)); - new GUIWire(submodelModifiable, cell10.getOutputPins().get(6), andorB10.getInputPins().get(6), new Point(140, 695), new Point(140, 700)); - new GUIWire(submodelModifiable, cell10.getOutputPins().get(7), andorB10.getInputPins().get(7), new Point(140, 705), new Point(140, 710)); - new GUIWire(submodelModifiable, cell11.getOutputPins().get(4), andorB11.getInputPins().get(4), new Point(140, 825), new Point(140, 830)); - new GUIWire(submodelModifiable, cell11.getOutputPins().get(5), andorB11.getInputPins().get(5), new Point(140, 835), new Point(140, 840)); - new GUIWire(submodelModifiable, cell11.getOutputPins().get(6), andorB11.getInputPins().get(6), new Point(140, 845), new Point(140, 850)); - new GUIWire(submodelModifiable, cell11.getOutputPins().get(7), andorB11.getInputPins().get(7), new Point(140, 855), new Point(140, 860)); - new GUIWire(submodelModifiable, cell00.getOutputPins().get(0), andA00 .getInputPins().get(0), new Point(140, 335), new Point(140, 330)); - new GUIWire(submodelModifiable, cell00.getOutputPins().get(1), andA00 .getInputPins().get(1), new Point(140, 345), new Point(140, 340)); - new GUIWire(submodelModifiable, cell00.getOutputPins().get(2), andA00 .getInputPins().get(2), new Point(140, 355), new Point(140, 350)); - new GUIWire(submodelModifiable, cell00.getOutputPins().get(3), andA00 .getInputPins().get(3), new Point(140, 365), new Point(140, 360)); - new GUIWire(submodelModifiable, cell01.getOutputPins().get(0), andorA01.getInputPins().get(4), new Point(140, 485), new Point(140, 480)); - new GUIWire(submodelModifiable, cell01.getOutputPins().get(1), andorA01.getInputPins().get(5), new Point(140, 495), new Point(140, 490)); - new GUIWire(submodelModifiable, cell01.getOutputPins().get(2), andorA01.getInputPins().get(6), new Point(140, 505), new Point(140, 500)); - new GUIWire(submodelModifiable, cell01.getOutputPins().get(3), andorA01.getInputPins().get(7), new Point(140, 515), new Point(140, 510)); - new GUIWire(submodelModifiable, cell10.getOutputPins().get(0), andorA10.getInputPins().get(4), new Point(140, 635), new Point(140, 630)); - new GUIWire(submodelModifiable, cell10.getOutputPins().get(1), andorA10.getInputPins().get(5), new Point(140, 645), new Point(140, 640)); - new GUIWire(submodelModifiable, cell10.getOutputPins().get(2), andorA10.getInputPins().get(6), new Point(140, 655), new Point(140, 650)); - new GUIWire(submodelModifiable, cell10.getOutputPins().get(3), andorA10.getInputPins().get(7), new Point(140, 665), new Point(140, 660)); - new GUIWire(submodelModifiable, cell11.getOutputPins().get(0), andorA11.getInputPins().get(4), new Point(140, 785), new Point(140, 780)); - new GUIWire(submodelModifiable, cell11.getOutputPins().get(1), andorA11.getInputPins().get(5), new Point(140, 795), new Point(140, 790)); - new GUIWire(submodelModifiable, cell11.getOutputPins().get(2), andorA11.getInputPins().get(6), new Point(140, 805), new Point(140, 800)); - new GUIWire(submodelModifiable, cell11.getOutputPins().get(3), andorA11.getInputPins().get(7), new Point(140, 815), new Point(140, 810)); - new GUIWire(submodelModifiable, andB00 .getOutputPins().get(0), andorB01.getInputPins().get(0), new Point(305, 380), new Point(305, 445), new Point(245, 445), new Point(245, 490)); - new GUIWire(submodelModifiable, andB00 .getOutputPins().get(1), andorB01.getInputPins().get(1), new Point(300, 390), new Point(300, 440), new Point(240, 440), new Point(240, 500)); - new GUIWire(submodelModifiable, andB00 .getOutputPins().get(2), andorB01.getInputPins().get(2), new Point(295, 400), new Point(295, 435), new Point(235, 435), new Point(235, 510)); - new GUIWire(submodelModifiable, andB00 .getOutputPins().get(3), andorB01.getInputPins().get(3), new Point(290, 410), new Point(290, 430), new Point(230, 430), new Point(230, 520)); - new GUIWire(submodelModifiable, andorB01.getOutputPins().get(0), andorB10.getInputPins().get(0), new Point(305, 490), new Point(305, 595), new Point(245, 595), new Point(245, 640)); - new GUIWire(submodelModifiable, andorB01.getOutputPins().get(1), andorB10.getInputPins().get(1), new Point(300, 500), new Point(300, 590), new Point(240, 590), new Point(240, 650)); - new GUIWire(submodelModifiable, andorB01.getOutputPins().get(2), andorB10.getInputPins().get(2), new Point(295, 510), new Point(295, 585), new Point(235, 585), new Point(235, 660)); - new GUIWire(submodelModifiable, andorB01.getOutputPins().get(3), andorB10.getInputPins().get(3), new Point(290, 520), new Point(290, 580), new Point(230, 580), new Point(230, 670)); - new GUIWire(submodelModifiable, andorB10.getOutputPins().get(0), andorB11.getInputPins().get(0), new Point(305, 640), new Point(305, 745), new Point(245, 745), new Point(245, 790)); - new GUIWire(submodelModifiable, andorB10.getOutputPins().get(1), andorB11.getInputPins().get(1), new Point(300, 650), new Point(300, 740), new Point(240, 740), new Point(240, 800)); - new GUIWire(submodelModifiable, andorB10.getOutputPins().get(2), andorB11.getInputPins().get(2), new Point(295, 660), new Point(295, 735), new Point(235, 735), new Point(235, 810)); - new GUIWire(submodelModifiable, andorB10.getOutputPins().get(3), andorB11.getInputPins().get(3), new Point(290, 670), new Point(290, 730), new Point(230, 730), new Point(230, 820)); - new GUIWire(submodelModifiable, andorB11.getOutputPins().get(0), QB1 , new Point(330, 790), new Point(330, 450)); - new GUIWire(submodelModifiable, andorB11.getOutputPins().get(1), QB2 , new Point(335, 800), new Point(335, 550)); - new GUIWire(submodelModifiable, andorB11.getOutputPins().get(2), QB3 , new Point(340, 810), new Point(340, 650)); - new GUIWire(submodelModifiable, andorB11.getOutputPins().get(3), QB4 , new Point(345, 820), new Point(345, 750)); - new GUIWire(submodelModifiable, andA00 .getOutputPins().get(0), andorA01.getInputPins().get(0), new Point(210, 330), new Point(210, 430), new Point(150, 430), new Point(150, 440)); - new GUIWire(submodelModifiable, andA00 .getOutputPins().get(1), andorA01.getInputPins().get(1), new Point(205, 340), new Point(205, 425), new Point(145, 425), new Point(145, 450)); - new GUIWire(submodelModifiable, andA00 .getOutputPins().get(2), andorA01.getInputPins().get(2), new Point(200, 350), new Point(200, 420), new Point(140, 420), new Point(140, 460)); - new GUIWire(submodelModifiable, andA00 .getOutputPins().get(3), andorA01.getInputPins().get(3), new Point(195, 360), new Point(195, 415), new Point(135, 415), new Point(135, 470)); - new GUIWire(submodelModifiable, andorA01.getOutputPins().get(0), andorA10.getInputPins().get(0), new Point(210, 440), new Point(210, 580), new Point(150, 580), new Point(150, 590)); - new GUIWire(submodelModifiable, andorA01.getOutputPins().get(1), andorA10.getInputPins().get(1), new Point(205, 450), new Point(205, 575), new Point(145, 575), new Point(145, 600)); - new GUIWire(submodelModifiable, andorA01.getOutputPins().get(2), andorA10.getInputPins().get(2), new Point(200, 460), new Point(200, 570), new Point(140, 570), new Point(140, 610)); - new GUIWire(submodelModifiable, andorA01.getOutputPins().get(3), andorA10.getInputPins().get(3), new Point(195, 470), new Point(195, 565), new Point(135, 565), new Point(135, 620)); - new GUIWire(submodelModifiable, andorA10.getOutputPins().get(0), andorA11.getInputPins().get(0), new Point(210, 590), new Point(210, 730), new Point(150, 730), new Point(150, 740)); - new GUIWire(submodelModifiable, andorA10.getOutputPins().get(1), andorA11.getInputPins().get(1), new Point(205, 600), new Point(205, 725), new Point(145, 725), new Point(145, 750)); - new GUIWire(submodelModifiable, andorA10.getOutputPins().get(2), andorA11.getInputPins().get(2), new Point(200, 610), new Point(200, 720), new Point(140, 720), new Point(140, 760)); - new GUIWire(submodelModifiable, andorA10.getOutputPins().get(3), andorA11.getInputPins().get(3), new Point(195, 620), new Point(195, 715), new Point(135, 715), new Point(135, 770)); - new GUIWire(submodelModifiable, andorA11.getOutputPins().get(0), QA1 , new Point(210, 740), new Point(210, 880), new Point(310, 880), new Point(310, 50)); - new GUIWire(submodelModifiable, andorA11.getOutputPins().get(1), QA2 , new Point(205, 750), new Point(205, 885), new Point(315, 885), new Point(315, 150)); - new GUIWire(submodelModifiable, andorA11.getOutputPins().get(2), QA3 , new Point(200, 760), new Point(200, 890), new Point(320, 890), new Point(320, 250)); - new GUIWire(submodelModifiable, andorA11.getOutputPins().get(3), QA4 , new Point(195, 770), new Point(195, 895), new Point(325, 895), new Point(325, 350)); + new GUIWire(submodelModifiable, A0, demuxA.getPin("S0"), new Point[0]); + new GUIWire(submodelModifiable, A1, demuxA.getPin("S1"), new Point(10, 150), new Point(10, 60)); + new GUIWire(submodelModifiable, B0, demuxB.getPin("S0"), new Point( 5, 450), new Point( 5, 155)); + new GUIWire(submodelModifiable, B1, demuxB.getPin("S1"), new Point(10, 550), new Point(10, 165)); + new GUIWire(submodelModifiable, demuxB.getPin("Y00"), cpB00, new Point[0]); + new GUIWire(submodelModifiable, demuxB.getPin("Y01"), cpB01, new Point[0]); + new GUIWire(submodelModifiable, demuxB.getPin("Y10"), cpB10, new Point[0]); + new GUIWire(submodelModifiable, demuxB.getPin("Y11"), cpB11, new Point[0]); + new GUIWire(submodelModifiable, cpB00, weAndB.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpB01, weAndB.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, cpB10, weAndB.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, cpB11, weAndB.getPin("A4"), new Point[0]); + new GUIWire(submodelModifiable, WE, weAndB.getPin("B"), new Point(15, 850), new Point(15, 195)); + new GUIWire(submodelModifiable, weAndB.getPin("Y1"), cell00.getPin("WE"), new Point(290, 155), new Point(290, 230), new Point(35, 230), new Point(35, 375)); + new GUIWire(submodelModifiable, weAndB.getPin("Y2"), cell01.getPin("WE"), new Point(285, 165), new Point(285, 225), new Point(30, 225), new Point(30, 525)); + new GUIWire(submodelModifiable, weAndB.getPin("Y3"), cell10.getPin("WE"), new Point(280, 175), new Point(280, 220), new Point(25, 220), new Point(25, 675)); + new GUIWire(submodelModifiable, weAndB.getPin("Y4"), cell11.getPin("WE"), new Point(275, 185), new Point(275, 215), new Point(20, 215), new Point(20, 825)); + new GUIWire(submodelModifiable, cpAB101, cpAB1in , new Point[0]); + new GUIWire(submodelModifiable, cpAB1in, cell00.getPin("A0"), new Point[0]); + new GUIWire(submodelModifiable, cpAB201, cpAB2in , new Point[0]); + new GUIWire(submodelModifiable, cpAB2in, cell00.getPin("A1"), new Point(45, 345)); + new GUIWire(submodelModifiable, cpAB301, cell00.getPin("B0"), new Point(50, 355)); + new GUIWire(submodelModifiable, cpAB401, cell00.getPin("B1"), new Point(55, 365)); + new GUIWire(submodelModifiable, cpAB101, cell01.getPin("A0"), new Point[0]); + new GUIWire(submodelModifiable, cpAB201, cell01.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpAB301, cell01.getPin("B0"), new Point[0]); + new GUIWire(submodelModifiable, cpAB401, cell01.getPin("B1"), new Point[0]); + new GUIWire(submodelModifiable, cpAB101, cpAB110 , new Point[0]); + new GUIWire(submodelModifiable, cpAB201, cpAB210 , new Point[0]); + new GUIWire(submodelModifiable, cpAB301, cpAB3in , new Point[0]); + new GUIWire(submodelModifiable, B2 , cpAB3in , new Point[0]); + new GUIWire(submodelModifiable, cpAB3in, cpAB310 , new Point[0]); + new GUIWire(submodelModifiable, cpAB401, cpAB410 , new Point[0]); + new GUIWire(submodelModifiable, cpAB110, cell10.getPin("A0"), new Point[0]); + new GUIWire(submodelModifiable, cpAB210, cell10.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, cpAB310, cell10.getPin("B0"), new Point[0]); + new GUIWire(submodelModifiable, cpAB410, cell10.getPin("B1"), new Point[0]); + new GUIWire(submodelModifiable, cpAB110, cell11.getPin("A0"), new Point(40, 785)); + new GUIWire(submodelModifiable, cpAB210, cell11.getPin("A1"), new Point(45, 795)); + new GUIWire(submodelModifiable, cpAB310, cell11.getPin("B0"), new Point(50, 805)); + new GUIWire(submodelModifiable, cpAB410, cpAB4in , new Point[0]); + new GUIWire(submodelModifiable, cpAB4in, cell11.getPin("B1"), new Point(55, 815)); + new GUIWire(submodelModifiable, A2, cpAB1in , new Point(40, 250)); + new GUIWire(submodelModifiable, A3, cpAB2in , new Point[0]); + new GUIWire(submodelModifiable, B3, cpAB4in , new Point[0]); + new GUIWire(submodelModifiable, cpD_101, cell00.getPin("D1"), new Point(60, 385)); + new GUIWire(submodelModifiable, cpD_201, cell00.getPin("D2"), new Point(65, 395)); + new GUIWire(submodelModifiable, cpD_301, cell00.getPin("D3"), new Point(70, 405)); + new GUIWire(submodelModifiable, cpD_401, cell00.getPin("D4"), new Point(75, 415)); + new GUIWire(submodelModifiable, cpD_101, cell01.getPin("D1"), new Point[0]); + new GUIWire(submodelModifiable, cpD_201, cell01.getPin("D2"), new Point[0]); + new GUIWire(submodelModifiable, cpD_301, cell01.getPin("D3"), new Point[0]); + new GUIWire(submodelModifiable, cpD_401, cell01.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, cpD_101, cpD_110 , new Point[0]); + new GUIWire(submodelModifiable, cpD_201, cpD_210 , new Point[0]); + new GUIWire(submodelModifiable, cpD_301, cpD_310 , new Point[0]); + new GUIWire(submodelModifiable, cpD_401, cpD_410 , new Point[0]); + new GUIWire(submodelModifiable, cpD_110, cell10.getPin("D1"), new Point[0]); + new GUIWire(submodelModifiable, cpD_210, cell10.getPin("D2"), new Point[0]); + new GUIWire(submodelModifiable, cpD_310, cell10.getPin("D3"), new Point[0]); + new GUIWire(submodelModifiable, cpD_410, cell10.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, cpD_110, cpD_111 , new Point[0]); + new GUIWire(submodelModifiable, cpD_210, cpD_211 , new Point[0]); + new GUIWire(submodelModifiable, cpD_310, cpD_311 , new Point[0]); + new GUIWire(submodelModifiable, cpD_410, cpD_411 , new Point[0]); + new GUIWire(submodelModifiable, cpD_111, cell11.getPin("D1"), new Point[0]); + new GUIWire(submodelModifiable, cpD_211, cell11.getPin("D2"), new Point[0]); + new GUIWire(submodelModifiable, cpD_311, cell11.getPin("D3"), new Point[0]); + new GUIWire(submodelModifiable, cpD_411, cell11.getPin("D4"), new Point[0]); + new GUIWire(submodelModifiable, D1, cpD_111 , new Point(60, 950)); + new GUIWire(submodelModifiable, D2, cpD_211 , new Point(65, 1050)); + new GUIWire(submodelModifiable, D3, cpD_311 , new Point(70, 1150)); + new GUIWire(submodelModifiable, D4, cpD_411 , new Point(75, 1250)); + new GUIWire(submodelModifiable, demuxA.getPin("Y00"), andA00 .getPin("B"), new Point(135, 50), new Point(135, 370)); + new GUIWire(submodelModifiable, demuxA.getPin("Y01"), andorA01.getPin("B"), new Point(130, 60), new Point(130, 520)); + new GUIWire(submodelModifiable, demuxA.getPin("Y10"), andorA10.getPin("B"), new Point(125, 70), new Point(125, 670)); + new GUIWire(submodelModifiable, demuxA.getPin("Y11"), andorA11.getPin("B"), new Point(120, 80), new Point(120, 820)); + new GUIWire(submodelModifiable, cpB00, andB00 .getPin("B"), new Point(230, 420)); + new GUIWire(submodelModifiable, cpB01, andorB01.getPin("B"), new Point(225, 570)); + new GUIWire(submodelModifiable, cpB10, andorB10.getPin("B"), new Point(220, 720)); + new GUIWire(submodelModifiable, cpB11, andorB11.getPin("B"), new Point(215, 870)); + new GUIWire(submodelModifiable, cell00.getPin("QB1"), andB00 .getPin("A1"), new Point(140, 375), new Point(140, 380)); + new GUIWire(submodelModifiable, cell00.getPin("QB2"), andB00 .getPin("A2"), new Point(140, 385), new Point(140, 390)); + new GUIWire(submodelModifiable, cell00.getPin("QB3"), andB00 .getPin("A3"), new Point(140, 395), new Point(140, 400)); + new GUIWire(submodelModifiable, cell00.getPin("QB4"), andB00 .getPin("A4"), new Point(140, 405), new Point(140, 410)); + new GUIWire(submodelModifiable, cell01.getPin("QB1"), andorB01.getPin("A1"), new Point(140, 525), new Point(140, 530)); + new GUIWire(submodelModifiable, cell01.getPin("QB2"), andorB01.getPin("A2"), new Point(140, 535), new Point(140, 540)); + new GUIWire(submodelModifiable, cell01.getPin("QB3"), andorB01.getPin("A3"), new Point(140, 545), new Point(140, 550)); + new GUIWire(submodelModifiable, cell01.getPin("QB4"), andorB01.getPin("A4"), new Point(140, 555), new Point(140, 560)); + new GUIWire(submodelModifiable, cell10.getPin("QB1"), andorB10.getPin("A1"), new Point(140, 675), new Point(140, 680)); + new GUIWire(submodelModifiable, cell10.getPin("QB2"), andorB10.getPin("A2"), new Point(140, 685), new Point(140, 690)); + new GUIWire(submodelModifiable, cell10.getPin("QB3"), andorB10.getPin("A3"), new Point(140, 695), new Point(140, 700)); + new GUIWire(submodelModifiable, cell10.getPin("QB4"), andorB10.getPin("A4"), new Point(140, 705), new Point(140, 710)); + new GUIWire(submodelModifiable, cell11.getPin("QB1"), andorB11.getPin("A1"), new Point(140, 825), new Point(140, 830)); + new GUIWire(submodelModifiable, cell11.getPin("QB2"), andorB11.getPin("A2"), new Point(140, 835), new Point(140, 840)); + new GUIWire(submodelModifiable, cell11.getPin("QB3"), andorB11.getPin("A3"), new Point(140, 845), new Point(140, 850)); + new GUIWire(submodelModifiable, cell11.getPin("QB4"), andorB11.getPin("A4"), new Point(140, 855), new Point(140, 860)); + new GUIWire(submodelModifiable, cell00.getPin("QA1"), andA00 .getPin("A1"), new Point(140, 335), new Point(140, 330)); + new GUIWire(submodelModifiable, cell00.getPin("QA2"), andA00 .getPin("A2"), new Point(140, 345), new Point(140, 340)); + new GUIWire(submodelModifiable, cell00.getPin("QA3"), andA00 .getPin("A3"), new Point(140, 355), new Point(140, 350)); + new GUIWire(submodelModifiable, cell00.getPin("QA4"), andA00 .getPin("A4"), new Point(140, 365), new Point(140, 360)); + new GUIWire(submodelModifiable, cell01.getPin("QA1"), andorA01.getPin("A1"), new Point(140, 485), new Point(140, 480)); + new GUIWire(submodelModifiable, cell01.getPin("QA2"), andorA01.getPin("A2"), new Point(140, 495), new Point(140, 490)); + new GUIWire(submodelModifiable, cell01.getPin("QA3"), andorA01.getPin("A3"), new Point(140, 505), new Point(140, 500)); + new GUIWire(submodelModifiable, cell01.getPin("QA4"), andorA01.getPin("A4"), new Point(140, 515), new Point(140, 510)); + new GUIWire(submodelModifiable, cell10.getPin("QA1"), andorA10.getPin("A1"), new Point(140, 635), new Point(140, 630)); + new GUIWire(submodelModifiable, cell10.getPin("QA2"), andorA10.getPin("A2"), new Point(140, 645), new Point(140, 640)); + new GUIWire(submodelModifiable, cell10.getPin("QA3"), andorA10.getPin("A3"), new Point(140, 655), new Point(140, 650)); + new GUIWire(submodelModifiable, cell10.getPin("QA4"), andorA10.getPin("A4"), new Point(140, 665), new Point(140, 660)); + new GUIWire(submodelModifiable, cell11.getPin("QA1"), andorA11.getPin("A1"), new Point(140, 785), new Point(140, 780)); + new GUIWire(submodelModifiable, cell11.getPin("QA2"), andorA11.getPin("A2"), new Point(140, 795), new Point(140, 790)); + new GUIWire(submodelModifiable, cell11.getPin("QA3"), andorA11.getPin("A3"), new Point(140, 805), new Point(140, 800)); + new GUIWire(submodelModifiable, cell11.getPin("QA4"), andorA11.getPin("A4"), new Point(140, 815), new Point(140, 810)); + new GUIWire(submodelModifiable, andB00 .getPin("Y1"), andorB01.getPin("C1"), new Point(305, 380), new Point(305, 445), new Point(245, 445), new Point(245, 490)); + new GUIWire(submodelModifiable, andB00 .getPin("Y2"), andorB01.getPin("C2"), new Point(300, 390), new Point(300, 440), new Point(240, 440), new Point(240, 500)); + new GUIWire(submodelModifiable, andB00 .getPin("Y3"), andorB01.getPin("C3"), new Point(295, 400), new Point(295, 435), new Point(235, 435), new Point(235, 510)); + new GUIWire(submodelModifiable, andB00 .getPin("Y4"), andorB01.getPin("C4"), new Point(290, 410), new Point(290, 430), new Point(230, 430), new Point(230, 520)); + new GUIWire(submodelModifiable, andorB01.getPin("Y1"), andorB10.getPin("C1"), new Point(305, 490), new Point(305, 595), new Point(245, 595), new Point(245, 640)); + new GUIWire(submodelModifiable, andorB01.getPin("Y2"), andorB10.getPin("C2"), new Point(300, 500), new Point(300, 590), new Point(240, 590), new Point(240, 650)); + new GUIWire(submodelModifiable, andorB01.getPin("Y3"), andorB10.getPin("C3"), new Point(295, 510), new Point(295, 585), new Point(235, 585), new Point(235, 660)); + new GUIWire(submodelModifiable, andorB01.getPin("Y4"), andorB10.getPin("C4"), new Point(290, 520), new Point(290, 580), new Point(230, 580), new Point(230, 670)); + new GUIWire(submodelModifiable, andorB10.getPin("Y1"), andorB11.getPin("C1"), new Point(305, 640), new Point(305, 745), new Point(245, 745), new Point(245, 790)); + new GUIWire(submodelModifiable, andorB10.getPin("Y2"), andorB11.getPin("C2"), new Point(300, 650), new Point(300, 740), new Point(240, 740), new Point(240, 800)); + new GUIWire(submodelModifiable, andorB10.getPin("Y3"), andorB11.getPin("C3"), new Point(295, 660), new Point(295, 735), new Point(235, 735), new Point(235, 810)); + new GUIWire(submodelModifiable, andorB10.getPin("Y4"), andorB11.getPin("C4"), new Point(290, 670), new Point(290, 730), new Point(230, 730), new Point(230, 820)); + new GUIWire(submodelModifiable, andorB11.getPin("Y1"), QB1 , new Point(330, 790), new Point(330, 450)); + new GUIWire(submodelModifiable, andorB11.getPin("Y2"), QB2 , new Point(335, 800), new Point(335, 550)); + new GUIWire(submodelModifiable, andorB11.getPin("Y3"), QB3 , new Point(340, 810), new Point(340, 650)); + new GUIWire(submodelModifiable, andorB11.getPin("Y4"), QB4 , new Point(345, 820), new Point(345, 750)); + new GUIWire(submodelModifiable, andA00 .getPin("Y1"), andorA01.getPin("C1"), new Point(210, 330), new Point(210, 430), new Point(150, 430), new Point(150, 440)); + new GUIWire(submodelModifiable, andA00 .getPin("Y2"), andorA01.getPin("C2"), new Point(205, 340), new Point(205, 425), new Point(145, 425), new Point(145, 450)); + new GUIWire(submodelModifiable, andA00 .getPin("Y3"), andorA01.getPin("C3"), new Point(200, 350), new Point(200, 420), new Point(140, 420), new Point(140, 460)); + new GUIWire(submodelModifiable, andA00 .getPin("Y4"), andorA01.getPin("C4"), new Point(195, 360), new Point(195, 415), new Point(135, 415), new Point(135, 470)); + new GUIWire(submodelModifiable, andorA01.getPin("Y1"), andorA10.getPin("C1"), new Point(210, 440), new Point(210, 580), new Point(150, 580), new Point(150, 590)); + new GUIWire(submodelModifiable, andorA01.getPin("Y2"), andorA10.getPin("C2"), new Point(205, 450), new Point(205, 575), new Point(145, 575), new Point(145, 600)); + new GUIWire(submodelModifiable, andorA01.getPin("Y3"), andorA10.getPin("C3"), new Point(200, 460), new Point(200, 570), new Point(140, 570), new Point(140, 610)); + new GUIWire(submodelModifiable, andorA01.getPin("Y4"), andorA10.getPin("C4"), new Point(195, 470), new Point(195, 565), new Point(135, 565), new Point(135, 620)); + new GUIWire(submodelModifiable, andorA10.getPin("Y1"), andorA11.getPin("C1"), new Point(210, 590), new Point(210, 730), new Point(150, 730), new Point(150, 740)); + new GUIWire(submodelModifiable, andorA10.getPin("Y2"), andorA11.getPin("C2"), new Point(205, 600), new Point(205, 725), new Point(145, 725), new Point(145, 750)); + new GUIWire(submodelModifiable, andorA10.getPin("Y3"), andorA11.getPin("C3"), new Point(200, 610), new Point(200, 720), new Point(140, 720), new Point(140, 760)); + new GUIWire(submodelModifiable, andorA10.getPin("Y4"), andorA11.getPin("C4"), new Point(195, 620), new Point(195, 715), new Point(135, 715), new Point(135, 770)); + new GUIWire(submodelModifiable, andorA11.getPin("Y1"), QA1 , new Point(210, 740), new Point(210, 880), new Point(310, 880), new Point(310, 50)); + new GUIWire(submodelModifiable, andorA11.getPin("Y2"), QA2 , new Point(205, 750), new Point(205, 885), new Point(315, 885), new Point(315, 150)); + new GUIWire(submodelModifiable, andorA11.getPin("Y3"), QA3 , new Point(200, 760), new Point(200, 890), new Point(320, 890), new Point(320, 250)); + new GUIWire(submodelModifiable, andorA11.getPin("Y4"), QA4 , new Point(195, 770), new Point(195, 895), new Point(325, 895), new Point(325, 350)); //@formatter:on } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIsel2_4.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIsel2_4.java index f20bbb11..b2ba1539 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIsel2_4.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIsel2_4.java @@ -22,20 +22,20 @@ public class GUIsel2_4 extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin SA = getInputSubmodelPins().get(0); - Pin SB = getInputSubmodelPins().get(1); - Pin A1 = getInputSubmodelPins().get(2); - Pin A2 = getInputSubmodelPins().get(3); - Pin A3 = getInputSubmodelPins().get(4); - Pin A4 = getInputSubmodelPins().get(5); - Pin B1 = getInputSubmodelPins().get(6); - Pin B2 = getInputSubmodelPins().get(7); - Pin B3 = getInputSubmodelPins().get(8); - Pin B4 = getInputSubmodelPins().get(9); - Pin Y1 = getOutputSubmodelPins().get(0); - Pin Y2 = getOutputSubmodelPins().get(1); - Pin Y3 = getOutputSubmodelPins().get(2); - Pin Y4 = getOutputSubmodelPins().get(3); + Pin SA = getSubmodelPin("SA"); + Pin SB = getSubmodelPin("SB"); + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin B1 = getSubmodelPin("B1"); + Pin B2 = getSubmodelPin("B2"); + Pin B3 = getSubmodelPin("B3"); + Pin B4 = getSubmodelPin("B4"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); GUINandGate nandA1 = new GUINandGate(submodelModifiable, 1); GUINandGate nandA2 = new GUINandGate(submodelModifiable, 1); @@ -76,39 +76,39 @@ public class GUIsel2_4 extends SimpleRectangularSubmodelComponent cpA3.moveCenterTo(7.5, 117.5); cpB3.moveCenterTo(5, 142.5); - new GUIWire(submodelModifiable, A1, nandA1.getInputPins().get(0), new Point(15, 62.5), new Point(15, 7.5)); - new GUIWire(submodelModifiable, A2, nandA2.getInputPins().get(0), new Point(17.5, 87.5), new Point(17.5, 57.5)); - new GUIWire(submodelModifiable, A3, nandA3.getInputPins().get(0), new Point(17.5, 112.5), new Point(17.5, 107.5)); - new GUIWire(submodelModifiable, A4, nandA4.getInputPins().get(0), new Point(17.5, 137.5), new Point(17.5, 157.5)); - new GUIWire(submodelModifiable, B1, nandB1.getInputPins().get(0), new Point(10, 162.5), new Point(10, 32.5)); - new GUIWire(submodelModifiable, B2, nandB2.getInputPins().get(0), new Point(12.5, 187.5), new Point(12.5, 82.5)); - new GUIWire(submodelModifiable, B3, nandB3.getInputPins().get(0), new Point(15, 212.5), new Point(15, 132.5)); - new GUIWire(submodelModifiable, B4, nandB4.getInputPins().get(0), new Point(10, 237.5), new Point(10, 182.5)); + new GUIWire(submodelModifiable, A1, nandA1.getPin("A"), new Point(15, 62.5), new Point(15, 7.5)); + new GUIWire(submodelModifiable, A2, nandA2.getPin("A"), new Point(17.5, 87.5), new Point(17.5, 57.5)); + new GUIWire(submodelModifiable, A3, nandA3.getPin("A"), new Point(17.5, 112.5), new Point(17.5, 107.5)); + new GUIWire(submodelModifiable, A4, nandA4.getPin("A"), new Point(17.5, 137.5), new Point(17.5, 157.5)); + new GUIWire(submodelModifiable, B1, nandB1.getPin("A"), new Point(10, 162.5), new Point(10, 32.5)); + new GUIWire(submodelModifiable, B2, nandB2.getPin("A"), new Point(12.5, 187.5), new Point(12.5, 82.5)); + new GUIWire(submodelModifiable, B3, nandB3.getPin("A"), new Point(15, 212.5), new Point(15, 132.5)); + new GUIWire(submodelModifiable, B4, nandB4.getPin("A"), new Point(10, 237.5), new Point(10, 182.5)); new GUIWire(submodelModifiable, SA, cpA1); new GUIWire(submodelModifiable, SB, cpB1); new GUIWire(submodelModifiable, cpA1, cpA2); - new GUIWire(submodelModifiable, cpA1, nandA1.getInputPins().get(1)); + new GUIWire(submodelModifiable, cpA1, nandA1.getPin("B")); new GUIWire(submodelModifiable, cpA2, cpA3); - new GUIWire(submodelModifiable, cpA2, nandA2.getInputPins().get(1)); - new GUIWire(submodelModifiable, cpA3, nandA3.getInputPins().get(1)); - new GUIWire(submodelModifiable, cpA3, nandA4.getInputPins().get(1), new Point(7.5, 167.5)); + new GUIWire(submodelModifiable, cpA2, nandA2.getPin("B")); + new GUIWire(submodelModifiable, cpA3, nandA3.getPin("B")); + new GUIWire(submodelModifiable, cpA3, nandA4.getPin("B"), new Point(7.5, 167.5)); new GUIWire(submodelModifiable, cpB1, cpB2); - new GUIWire(submodelModifiable, cpB1, nandB1.getInputPins().get(1)); + new GUIWire(submodelModifiable, cpB1, nandB1.getPin("B")); new GUIWire(submodelModifiable, cpB2, cpB3); - new GUIWire(submodelModifiable, cpB2, nandB2.getInputPins().get(1)); - new GUIWire(submodelModifiable, cpB3, nandB3.getInputPins().get(1)); - new GUIWire(submodelModifiable, cpB3, nandB4.getInputPins().get(1), new Point(5, 192.5)); - new GUIWire(submodelModifiable, nandA1.getOutputPin(), nandY1.getInputPins().get(0), new Point(42.5, 12.5), new Point(42.5, 7.5)); - new GUIWire(submodelModifiable, nandB1.getOutputPin(), nandY1.getInputPins().get(1), new Point(45, 37.5), new Point(45, 17.5)); - new GUIWire(submodelModifiable, nandA2.getOutputPin(), nandY2.getInputPins().get(0), new Point(47.5, 62.5), new Point(47.5, 32.5)); - new GUIWire(submodelModifiable, nandB2.getOutputPin(), nandY2.getInputPins().get(1), new Point(50, 87.5), new Point(50, 42.5)); - new GUIWire(submodelModifiable, nandA3.getOutputPin(), nandY3.getInputPins().get(0), new Point(52.5, 112.5), new Point(52.5, 57.5)); - new GUIWire(submodelModifiable, nandB3.getOutputPin(), nandY3.getInputPins().get(1), new Point(55, 137.5), new Point(55, 67.5)); - new GUIWire(submodelModifiable, nandA4.getOutputPin(), nandY4.getInputPins().get(0), new Point(57.5, 162.5), new Point(57.5, 82.5)); - new GUIWire(submodelModifiable, nandB4.getOutputPin(), nandY4.getInputPins().get(1), new Point(60, 187.5), new Point(60, 92.5)); - new GUIWire(submodelModifiable, nandY1.getOutputPin(), Y1, new Point[0]); - new GUIWire(submodelModifiable, nandY2.getOutputPin(), Y2, new Point[0]); - new GUIWire(submodelModifiable, nandY3.getOutputPin(), Y3, new Point[0]); - new GUIWire(submodelModifiable, nandY4.getOutputPin(), Y4, new Point[0]); + new GUIWire(submodelModifiable, cpB2, nandB2.getPin("B")); + new GUIWire(submodelModifiable, cpB3, nandB3.getPin("B")); + new GUIWire(submodelModifiable, cpB3, nandB4.getPin("B"), new Point(5, 192.5)); + new GUIWire(submodelModifiable, nandA1.getPin("Y"), nandY1.getPin("A"), new Point(42.5, 12.5), new Point(42.5, 7.5)); + new GUIWire(submodelModifiable, nandB1.getPin("Y"), nandY1.getPin("B"), new Point(45, 37.5), new Point(45, 17.5)); + new GUIWire(submodelModifiable, nandA2.getPin("Y"), nandY2.getPin("A"), new Point(47.5, 62.5), new Point(47.5, 32.5)); + new GUIWire(submodelModifiable, nandB2.getPin("Y"), nandY2.getPin("B"), new Point(50, 87.5), new Point(50, 42.5)); + new GUIWire(submodelModifiable, nandA3.getPin("Y"), nandY3.getPin("A"), new Point(52.5, 112.5), new Point(52.5, 57.5)); + new GUIWire(submodelModifiable, nandB3.getPin("Y"), nandY3.getPin("B"), new Point(55, 137.5), new Point(55, 67.5)); + new GUIWire(submodelModifiable, nandA4.getPin("Y"), nandY4.getPin("A"), new Point(57.5, 162.5), new Point(57.5, 82.5)); + new GUIWire(submodelModifiable, nandB4.getPin("Y"), nandY4.getPin("B"), new Point(60, 187.5), new Point(60, 92.5)); + new GUIWire(submodelModifiable, nandY1.getPin("Y"), Y1, new Point[0]); + new GUIWire(submodelModifiable, nandY2.getPin("Y"), Y2, new Point[0]); + new GUIWire(submodelModifiable, nandY3.getPin("Y"), Y3, new Point[0]); + new GUIWire(submodelModifiable, nandY4.getPin("Y"), Y4, new Point[0]); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIsel3_4.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIsel3_4.java index 5892e046..dd342c91 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIsel3_4.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIsel3_4.java @@ -22,25 +22,25 @@ public class GUIsel3_4 extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin SA = getInputSubmodelPins().get(0); - Pin SB = getInputSubmodelPins().get(1); - Pin SC = getInputSubmodelPins().get(2); - Pin A1 = getInputSubmodelPins().get(3); - Pin A2 = getInputSubmodelPins().get(4); - Pin A3 = getInputSubmodelPins().get(5); - Pin A4 = getInputSubmodelPins().get(6); - Pin B1 = getInputSubmodelPins().get(7); - Pin B2 = getInputSubmodelPins().get(8); - Pin B3 = getInputSubmodelPins().get(9); - Pin B4 = getInputSubmodelPins().get(10); - Pin C1 = getInputSubmodelPins().get(11); - Pin C2 = getInputSubmodelPins().get(12); - Pin C3 = getInputSubmodelPins().get(13); - Pin C4 = getInputSubmodelPins().get(14); - Pin Y1 = getOutputSubmodelPins().get(0); - Pin Y2 = getOutputSubmodelPins().get(1); - Pin Y3 = getOutputSubmodelPins().get(2); - Pin Y4 = getOutputSubmodelPins().get(3); + Pin SA = getSubmodelPin("SA"); + Pin SB = getSubmodelPin("SB"); + Pin SC = getSubmodelPin("SC"); + Pin A1 = getSubmodelPin("A1"); + Pin A2 = getSubmodelPin("A2"); + Pin A3 = getSubmodelPin("A3"); + Pin A4 = getSubmodelPin("A4"); + Pin B1 = getSubmodelPin("B1"); + Pin B2 = getSubmodelPin("B2"); + Pin B3 = getSubmodelPin("B3"); + Pin B4 = getSubmodelPin("B4"); + Pin C1 = getSubmodelPin("C1"); + Pin C2 = getSubmodelPin("C2"); + Pin C3 = getSubmodelPin("C3"); + Pin C4 = getSubmodelPin("C4"); + Pin Y1 = getSubmodelPin("Y1"); + Pin Y2 = getSubmodelPin("Y2"); + Pin Y3 = getSubmodelPin("Y3"); + Pin Y4 = getSubmodelPin("Y4"); GUIsel2_4 sel2_4 = new GUIsel2_4(submodelModifiable); GUInot4 not4 = new GUInot4(submodelModifiable); @@ -71,44 +71,42 @@ public class GUIsel3_4 extends SimpleRectangularSubmodelComponent cpSC2.moveCenterTo(30, 635); cpSC3.moveCenterTo(30, 685); - new GUIWire(submodelModifiable, SA, sel2_4.getInputPins().get(0), new Point(25, 25), new Point(25, 255)); - new GUIWire(submodelModifiable, SB, sel2_4.getInputPins().get(1), new Point(20, 75), new Point(20, 265)); - new GUIWire(submodelModifiable, A1, sel2_4.getInputPins().get(2), new Point(15, 175), new Point(15, 275)); - new GUIWire(submodelModifiable, A2, sel2_4.getInputPins().get(3), new Point(10, 225), new Point(10, 285)); - new GUIWire(submodelModifiable, A3, sel2_4.getInputPins().get(4), new Point(5, 275), new Point(5, 295)); - new GUIWire(submodelModifiable, A4, sel2_4.getInputPins().get(5), new Point(5, 325), new Point(5, 305)); - new GUIWire(submodelModifiable, B1, sel2_4.getInputPins().get(6), new Point(10, 375), new Point(10, 315)); - new GUIWire(submodelModifiable, B2, sel2_4.getInputPins().get(7), new Point(15, 425), new Point(15, 325)); - new GUIWire(submodelModifiable, B3, sel2_4.getInputPins().get(8), new Point(20, 475), new Point(20, 335)); - new GUIWire(submodelModifiable, B4, sel2_4.getInputPins().get(9), new Point(25, 525), new Point(25, 345)); - new GUIWire(submodelModifiable, sel2_4.getOutputPins().get(0), not4.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, sel2_4.getOutputPins().get(1), not4.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, sel2_4.getOutputPins().get(2), not4.getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, sel2_4.getOutputPins().get(3), not4.getInputPins().get(3), new Point[0]); + new GUIWire(submodelModifiable, SA, sel2_4.getPin("SA"), new Point(25, 25), new Point(25, 255)); + new GUIWire(submodelModifiable, SB, sel2_4.getPin("SB"), new Point(20, 75), new Point(20, 265)); + new GUIWire(submodelModifiable, A1, sel2_4.getPin("A1"), new Point(15, 175), new Point(15, 275)); + new GUIWire(submodelModifiable, A2, sel2_4.getPin("A2"), new Point(10, 225), new Point(10, 285)); + new GUIWire(submodelModifiable, A3, sel2_4.getPin("A3"), new Point(5, 275), new Point(5, 295)); + new GUIWire(submodelModifiable, A4, sel2_4.getPin("A4"), new Point(5, 325), new Point(5, 305)); + new GUIWire(submodelModifiable, B1, sel2_4.getPin("B1"), new Point(10, 375), new Point(10, 315)); + new GUIWire(submodelModifiable, B2, sel2_4.getPin("B2"), new Point(15, 425), new Point(15, 325)); + new GUIWire(submodelModifiable, B3, sel2_4.getPin("B3"), new Point(20, 475), new Point(20, 335)); + new GUIWire(submodelModifiable, B4, sel2_4.getPin("B4"), new Point(25, 525), new Point(25, 345)); + new GUIWire(submodelModifiable, sel2_4.getPin("Y1"), not4.getPin("A1"), new Point[0]); + new GUIWire(submodelModifiable, sel2_4.getPin("Y2"), not4.getPin("A2"), new Point[0]); + new GUIWire(submodelModifiable, sel2_4.getPin("Y3"), not4.getPin("A3"), new Point[0]); + new GUIWire(submodelModifiable, sel2_4.getPin("Y4"), not4.getPin("A4"), new Point[0]); new GUIWire(submodelModifiable, SC, cpSC1, new Point(30, 125)); - new GUIWire(submodelModifiable, cpSC1, nandC1.getInputPins().get(1), new Point[0]); + new GUIWire(submodelModifiable, cpSC1, nandC1.getPin("B"), new Point[0]); new GUIWire(submodelModifiable, cpSC1, cpSC2, new Point(30, 125)); - new GUIWire(submodelModifiable, cpSC2, nandC2.getInputPins().get(1), new Point[0]); + new GUIWire(submodelModifiable, cpSC2, nandC2.getPin("B"), new Point[0]); new GUIWire(submodelModifiable, cpSC2, cpSC3, new Point(30, 125)); - new GUIWire(submodelModifiable, cpSC3, nandC3.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpSC3, nandC4.getInputPins().get(1), new Point(30, 735)); - new GUIWire(submodelModifiable, C1, nandC1.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, C2, nandC2.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, C3, nandC3.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, C4, nandC4.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, not4.getOutputPins().get(0), nandY1.getInputPins().get(0), new Point(115, 255), new Point(115, 20)); - new GUIWire(submodelModifiable, not4.getOutputPins().get(1), nandY2.getInputPins().get(0), new Point(120, 265), new Point(120, 70)); - new GUIWire(submodelModifiable, not4.getOutputPins().get(2), nandY3.getInputPins().get(0), new Point(125, 275), - new Point(125, 120)); - new GUIWire(submodelModifiable, not4.getOutputPins().get(3), nandY4.getInputPins().get(0), new Point(130, 285), - new Point(130, 170)); - new GUIWire(submodelModifiable, nandC1.getOutputPin(), nandY1.getInputPins().get(1), new Point(135, 580), new Point(135, 30)); - new GUIWire(submodelModifiable, nandC2.getOutputPin(), nandY2.getInputPins().get(1), new Point(140, 630), new Point(140, 80)); - new GUIWire(submodelModifiable, nandC3.getOutputPin(), nandY3.getInputPins().get(1), new Point(145, 680), new Point(145, 130)); - new GUIWire(submodelModifiable, nandC4.getOutputPin(), nandY4.getInputPins().get(1), new Point(150, 730), new Point(150, 180)); - new GUIWire(submodelModifiable, nandY1.getOutputPin(), Y1, new Point[0]); - new GUIWire(submodelModifiable, nandY2.getOutputPin(), Y2, new Point[0]); - new GUIWire(submodelModifiable, nandY3.getOutputPin(), Y3, new Point[0]); - new GUIWire(submodelModifiable, nandY4.getOutputPin(), Y4, new Point[0]); + new GUIWire(submodelModifiable, cpSC3, nandC3.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpSC3, nandC4.getPin("B"), new Point(30, 735)); + new GUIWire(submodelModifiable, C1, nandC1.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, C2, nandC2.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, C3, nandC3.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, C4, nandC4.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, not4.getPin("Y1"), nandY1.getPin("A"), new Point(115, 255), new Point(115, 20)); + new GUIWire(submodelModifiable, not4.getPin("Y2"), nandY2.getPin("A"), new Point(120, 265), new Point(120, 70)); + new GUIWire(submodelModifiable, not4.getPin("Y3"), nandY3.getPin("A"), new Point(125, 275), new Point(125, 120)); + new GUIWire(submodelModifiable, not4.getPin("Y4"), nandY4.getPin("A"), new Point(130, 285), new Point(130, 170)); + new GUIWire(submodelModifiable, nandC1.getPin("Y"), nandY1.getPin("B"), new Point(135, 580), new Point(135, 30)); + new GUIWire(submodelModifiable, nandC2.getPin("Y"), nandY2.getPin("B"), new Point(140, 630), new Point(140, 80)); + new GUIWire(submodelModifiable, nandC3.getPin("Y"), nandY3.getPin("B"), new Point(145, 680), new Point(145, 130)); + new GUIWire(submodelModifiable, nandC4.getPin("Y"), nandY4.getPin("B"), new Point(150, 730), new Point(150, 180)); + new GUIWire(submodelModifiable, nandY1.getPin("Y"), Y1, new Point[0]); + new GUIWire(submodelModifiable, nandY2.getPin("Y"), Y2, new Point[0]); + new GUIWire(submodelModifiable, nandY3.getPin("Y"), Y3, new Point[0]); + new GUIWire(submodelModifiable, nandY4.getPin("Y"), Y4, new Point[0]); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIxor.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIxor.java index c8adf057..d3568e49 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIxor.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUIxor.java @@ -22,9 +22,9 @@ public class GUIxor extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin A = getInputSubmodelPins().get(0); - Pin B = getInputSubmodelPins().get(1); - Pin Y = getOutputSubmodelPins().get(0); + Pin A = getSubmodelPin("A"); + Pin B = getSubmodelPin("B"); + Pin Y = getSubmodelPin("Y"); GUINandGate nandAB = new GUINandGate(submodelModifiable, 1); GUINandGate nandYA = new GUINandGate(submodelModifiable, 1); @@ -45,15 +45,15 @@ public class GUIxor extends SimpleRectangularSubmodelComponent new GUIWire(submodelModifiable, A, cpA, new Point[0]); new GUIWire(submodelModifiable, B, cpB, new Point[0]); - new GUIWire(submodelModifiable, cpA, nandAB.getInputPins().get(0), new Point(5, 20)); - new GUIWire(submodelModifiable, cpB, nandAB.getInputPins().get(1), new Point(5, 30)); - new GUIWire(submodelModifiable, nandAB.getOutputPin(), cpAB); - new GUIWire(submodelModifiable, cpAB, nandYA.getInputPins().get(1), new Point(30, 17.5)); - new GUIWire(submodelModifiable, cpAB, nandYB.getInputPins().get(0), new Point(30, 32.5)); - new GUIWire(submodelModifiable, cpA, nandYA.getInputPins().get(0), new Point(5, 7.5)); - new GUIWire(submodelModifiable, cpB, nandYB.getInputPins().get(1), new Point(5, 42.5)); - new GUIWire(submodelModifiable, nandYA.getOutputPin(), nandY.getInputPins().get(0)); - new GUIWire(submodelModifiable, nandYB.getOutputPin(), nandY.getInputPins().get(1)); - new GUIWire(submodelModifiable, nandY.getOutputPin(), Y); + new GUIWire(submodelModifiable, cpA, nandAB.getPin("A"), new Point(5, 20)); + new GUIWire(submodelModifiable, cpB, nandAB.getPin("B"), new Point(5, 30)); + new GUIWire(submodelModifiable, nandAB.getPin("Y"), cpAB); + new GUIWire(submodelModifiable, cpAB, nandYA.getPin("B"), new Point(30, 17.5)); + new GUIWire(submodelModifiable, cpAB, nandYB.getPin("A"), new Point(30, 32.5)); + new GUIWire(submodelModifiable, cpA, nandYA.getPin("A"), new Point(5, 7.5)); + new GUIWire(submodelModifiable, cpB, nandYB.getPin("B"), new Point(5, 42.5)); + new GUIWire(submodelModifiable, nandYA.getPin("Y"), nandY.getPin("A")); + new GUIWire(submodelModifiable, nandYB.getPin("Y"), nandY.getPin("B")); + new GUIWire(submodelModifiable, nandY.getPin("Y"), Y); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUFuncDecode.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUFuncDecode.java index 0f5b1393..2316945e 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUFuncDecode.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUFuncDecode.java @@ -24,12 +24,12 @@ public class GUIAm2901ALUFuncDecode extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin I5 = getInputSubmodelPins().get(0); - Pin I4 = getInputSubmodelPins().get(1); - Pin I3 = getInputSubmodelPins().get(2); - Pin CinE = getOutputSubmodelPins().get(0); - Pin L = getOutputSubmodelPins().get(1); - Pin SBE = getOutputSubmodelPins().get(2); + Pin I5 = getSubmodelPin("I5"); + Pin I4 = getSubmodelPin("I4"); + Pin I3 = getSubmodelPin("I3"); + Pin CinE = getSubmodelPin("CinE"); + Pin L = getSubmodelPin("L"); + Pin SBE = getSubmodelPin("SBE"); GUINandGate notI5 = new GUINandGate(submodelModifiable, 1); GUINandGate notI4 = new GUINandGate(submodelModifiable, 1); @@ -65,31 +65,30 @@ public class GUIAm2901ALUFuncDecode extends SimpleRectangularSubmodelComponent cpNotI52.moveCenterTo(40, 35); new GUIWire(submodelModifiable, I5, cpI51, new Point[0]); - new GUIWire(submodelModifiable, cpI51, notI5.getInputPins().get(0), new Point(5, 15)); + new GUIWire(submodelModifiable, cpI51, notI5.getPin("A"), new Point(5, 15)); new GUIWire(submodelModifiable, cpI51, cpI52, new Point[0]); - new GUIWire(submodelModifiable, cpI52, notI5.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpI52, nandI5NotI4.getInputPins().get(0), new Point(5, 45), new Point(45, 45), new Point(45, 50)); + new GUIWire(submodelModifiable, cpI52, notI5.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpI52, nandI5NotI4.getPin("A"), new Point(5, 45), new Point(45, 45), new Point(45, 50)); new GUIWire(submodelModifiable, I4, cpI41, new Point[0]); new GUIWire(submodelModifiable, cpI41, cpI42, new Point[0]); - new GUIWire(submodelModifiable, cpI42, nandI4I3NotI5.getInputPins().get(0), new Point(10, 40), new Point(45, 40), - new Point(45, 15)); - new GUIWire(submodelModifiable, cpI42, notI4.getInputPins().get(0), new Point[0]); + new GUIWire(submodelModifiable, cpI42, nandI4I3NotI5.getPin("A"), new Point(10, 40), new Point(45, 40), new Point(45, 15)); + new GUIWire(submodelModifiable, cpI42, notI4.getPin("A"), new Point[0]); new GUIWire(submodelModifiable, cpI41, cpI43, new Point[0]); - new GUIWire(submodelModifiable, cpI43, notI4.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpI43, nandI3I4.getInputPins().get(1), new Point(10, 85)); + new GUIWire(submodelModifiable, cpI43, notI4.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpI43, nandI3I4.getPin("B"), new Point(10, 85)); new GUIWire(submodelModifiable, I3, cpI3, new Point(50, 100)); - new GUIWire(submodelModifiable, cpI3, nandI4I3NotI5.getInputPins().get(1), new Point(50, 25)); - new GUIWire(submodelModifiable, cpI3, nandI3I4.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, notI5.getOutputPin(), cpNotI51, new Point[0]); + new GUIWire(submodelModifiable, cpI3, nandI4I3NotI5.getPin("B"), new Point(50, 25)); + new GUIWire(submodelModifiable, cpI3, nandI3I4.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, notI5.getPin("Y"), cpNotI51, new Point[0]); new GUIWire(submodelModifiable, cpNotI51, CinE, new Point(40, 5), new Point(115, 5), new Point(115, 20)); new GUIWire(submodelModifiable, cpNotI51, cpNotI52, new Point[0]); - new GUIWire(submodelModifiable, cpNotI52, nandI4I3NotI5.getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, cpNotI52, andSBE.getInputPins().get(1), new Point(40, 110)); - new GUIWire(submodelModifiable, notI4.getOutputPin(), nandI5NotI4.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, nandI4I3NotI5.getOutputPins().get(0), nandL.getInputPins().get(0)); - new GUIWire(submodelModifiable, nandI5NotI4.getOutputPin(), nandL.getInputPins().get(1)); - new GUIWire(submodelModifiable, nandI3I4.getOutputPin(), andSBE.getInputPins().get(0)); - new GUIWire(submodelModifiable, nandL.getOutputPin(), L, new Point[0]); - new GUIWire(submodelModifiable, andSBE.getOutputPins().get(0), SBE, new Point[0]); + new GUIWire(submodelModifiable, cpNotI52, nandI4I3NotI5.getPin("C"), new Point[0]); + new GUIWire(submodelModifiable, cpNotI52, andSBE.getPin("B"), new Point(40, 110)); + new GUIWire(submodelModifiable, notI4.getPin("Y"), nandI5NotI4.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, nandI4I3NotI5.getPin("Y"), nandL.getPin("A")); + new GUIWire(submodelModifiable, nandI5NotI4.getPin("Y"), nandL.getPin("B")); + new GUIWire(submodelModifiable, nandI3I4.getPin("Y"), andSBE.getPin("A")); + new GUIWire(submodelModifiable, nandL.getPin("Y"), L, new Point[0]); + new GUIWire(submodelModifiable, andSBE.getPin("Y"), SBE, new Point[0]); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUInclDecode.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUInclDecode.java index 47dcc8ec..47877903 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUInclDecode.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUInclDecode.java @@ -22,24 +22,24 @@ public class GUIAm2901ALUInclDecode extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin I5 = getInputSubmodelPins().get(0); - Pin I4 = getInputSubmodelPins().get(1); - Pin I3 = getInputSubmodelPins().get(2); - Pin Cn = getInputSubmodelPins().get(3); - Pin R1 = getInputSubmodelPins().get(4); - Pin R2 = getInputSubmodelPins().get(5); - Pin R3 = getInputSubmodelPins().get(6); - Pin R4 = getInputSubmodelPins().get(7); - Pin S1 = getInputSubmodelPins().get(8); - Pin S2 = getInputSubmodelPins().get(9); - Pin S3 = getInputSubmodelPins().get(10); - Pin S4 = getInputSubmodelPins().get(11); - Pin F1 = getOutputSubmodelPins().get(0); - Pin F2 = getOutputSubmodelPins().get(1); - Pin F3 = getOutputSubmodelPins().get(2); - Pin F4 = getOutputSubmodelPins().get(3); - Pin Cnplus4 = getOutputSubmodelPins().get(4); - Pin OVR = getOutputSubmodelPins().get(5); + Pin I5 = getSubmodelPin("I5"); + Pin I4 = getSubmodelPin("I4"); + Pin I3 = getSubmodelPin("I3"); + Pin Cn = getSubmodelPin("Cn"); + Pin R1 = getSubmodelPin("R1"); + Pin R2 = getSubmodelPin("R2"); + Pin R3 = getSubmodelPin("R3"); + Pin R4 = getSubmodelPin("R4"); + Pin S1 = getSubmodelPin("S1"); + Pin S2 = getSubmodelPin("S2"); + Pin S3 = getSubmodelPin("S3"); + Pin S4 = getSubmodelPin("S4"); + Pin F1 = getSubmodelPin("F1"); + Pin F2 = getSubmodelPin("F2"); + Pin F3 = getSubmodelPin("F3"); + Pin F4 = getSubmodelPin("F4"); + Pin Cnplus4 = getSubmodelPin("Cnplus4"); + Pin OVR = getSubmodelPin("OVR"); GUIAm2901ALUFuncDecode funcDecode = new GUIAm2901ALUFuncDecode(submodelModifiable); GUIAm2901ALUOneBit alu1 = new GUIAm2901ALUOneBit(submodelModifiable); @@ -103,78 +103,78 @@ public class GUIAm2901ALUInclDecode extends SimpleRectangularSubmodelComponent cpCnplus4.moveCenterTo(85, 385); new GUIWire(submodelModifiable, I5, cpI5, new Point[0]); - new GUIWire(submodelModifiable, cpI5, funcDecode.getInputPins().get(0), new Point(5, 30)); + new GUIWire(submodelModifiable, cpI5, funcDecode.getPin("I5"), new Point(5, 30)); new GUIWire(submodelModifiable, I4, cpI4, new Point[0]); - new GUIWire(submodelModifiable, cpI4, funcDecode.getInputPins().get(1), new Point(5, 40)); + new GUIWire(submodelModifiable, cpI4, funcDecode.getPin("I4"), new Point(5, 40)); new GUIWire(submodelModifiable, I3, cpI3, new Point(10, 100)); - new GUIWire(submodelModifiable, cpI3, funcDecode.getInputPins().get(2), new Point(10, 50)); - new GUIWire(submodelModifiable, funcDecode.getOutputPins().get(2), cpCoutE1, new Point(52.5, 50), new Point(52.5, 57.5), + new GUIWire(submodelModifiable, cpI3, funcDecode.getPin("I3"), new Point(10, 50)); + new GUIWire(submodelModifiable, funcDecode.getPin("SBE"), cpCoutE1, new Point(52.5, 50), new Point(52.5, 57.5), new Point(25, 57.5)); new GUIWire(submodelModifiable, cpCoutE1, cpCoutE2, new Point[0]); new GUIWire(submodelModifiable, cpCoutE2, cpCoutE3, new Point[0]); - new GUIWire(submodelModifiable, cpCoutE1, alu1.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpCoutE2, alu2.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpCoutE3, alu3.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpCoutE3, alu4.getInputPins().get(1), new Point(25, 395)); - new GUIWire(submodelModifiable, funcDecode.getOutputPins().get(0), cpCinE1, new Point(57.5, 30), new Point(57.5, 62.5), + new GUIWire(submodelModifiable, cpCoutE1, alu1.getPin("CoutE"), new Point[0]); + new GUIWire(submodelModifiable, cpCoutE2, alu2.getPin("CoutE"), new Point[0]); + new GUIWire(submodelModifiable, cpCoutE3, alu3.getPin("CoutE"), new Point[0]); + new GUIWire(submodelModifiable, cpCoutE3, alu4.getPin("CoutE"), new Point(25, 395)); + new GUIWire(submodelModifiable, funcDecode.getPin("CinE"), cpCinE1, new Point(57.5, 30), new Point(57.5, 62.5), new Point(27.5, 62.5)); new GUIWire(submodelModifiable, cpCinE1, cpCinE2, new Point[0]); new GUIWire(submodelModifiable, cpCinE2, cpCinE3, new Point[0]); - new GUIWire(submodelModifiable, cpCinE1, alu1.getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, cpCinE2, alu2.getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, cpCinE3, alu3.getInputPins().get(2), new Point[0]); - new GUIWire(submodelModifiable, cpCinE3, alu4.getInputPins().get(2), new Point(27.5, 405)); + new GUIWire(submodelModifiable, cpCinE1, alu1.getPin("CinE"), new Point[0]); + new GUIWire(submodelModifiable, cpCinE2, alu2.getPin("CinE"), new Point[0]); + new GUIWire(submodelModifiable, cpCinE3, alu3.getPin("CinE"), new Point[0]); + new GUIWire(submodelModifiable, cpCinE3, alu4.getPin("CinE"), new Point(27.5, 405)); new GUIWire(submodelModifiable, cpI3, cpRN1, new Point(30, 65)); new GUIWire(submodelModifiable, cpRN1, cpRN2, new Point[0]); new GUIWire(submodelModifiable, cpRN2, cpRN3, new Point[0]); - new GUIWire(submodelModifiable, cpRN1, alu1.getInputPins().get(4), new Point[0]); - new GUIWire(submodelModifiable, cpRN2, alu2.getInputPins().get(4), new Point[0]); - new GUIWire(submodelModifiable, cpRN3, alu3.getInputPins().get(4), new Point[0]); - new GUIWire(submodelModifiable, cpRN3, alu4.getInputPins().get(4), new Point(30, 425)); + new GUIWire(submodelModifiable, cpRN1, alu1.getPin("RN"), new Point[0]); + new GUIWire(submodelModifiable, cpRN2, alu2.getPin("RN"), new Point[0]); + new GUIWire(submodelModifiable, cpRN3, alu3.getPin("RN"), new Point[0]); + new GUIWire(submodelModifiable, cpRN3, alu4.getPin("RN"), new Point(30, 425)); new GUIWire(submodelModifiable, cpI4, cpSN1, new Point(32.5, 60)); new GUIWire(submodelModifiable, cpSN1, cpSN2, new Point[0]); new GUIWire(submodelModifiable, cpSN2, cpSN3, new Point[0]); - new GUIWire(submodelModifiable, cpSN1, alu1.getInputPins().get(6), new Point[0]); - new GUIWire(submodelModifiable, cpSN2, alu2.getInputPins().get(6), new Point[0]); - new GUIWire(submodelModifiable, cpSN3, alu3.getInputPins().get(6), new Point[0]); - new GUIWire(submodelModifiable, cpSN3, alu4.getInputPins().get(6), new Point(32.5, 445)); + new GUIWire(submodelModifiable, cpSN1, alu1.getPin("SN"), new Point[0]); + new GUIWire(submodelModifiable, cpSN2, alu2.getPin("SN"), new Point[0]); + new GUIWire(submodelModifiable, cpSN3, alu3.getPin("SN"), new Point[0]); + new GUIWire(submodelModifiable, cpSN3, alu4.getPin("SN"), new Point(32.5, 445)); new GUIWire(submodelModifiable, cpI5, cpFN1, new Point(60, 20), new Point(60, 65), new Point(35, 65)); new GUIWire(submodelModifiable, cpFN1, cpFN2, new Point[0]); new GUIWire(submodelModifiable, cpFN2, cpFN3, new Point[0]); - new GUIWire(submodelModifiable, cpFN1, alu1.getInputPins().get(7), new Point[0]); - new GUIWire(submodelModifiable, cpFN2, alu2.getInputPins().get(7), new Point[0]); - new GUIWire(submodelModifiable, cpFN3, alu3.getInputPins().get(7), new Point[0]); - new GUIWire(submodelModifiable, cpFN3, alu4.getInputPins().get(7), new Point(35, 455)); - new GUIWire(submodelModifiable, funcDecode.getOutputPins().get(1), cpL1, new Point(55, 40), new Point(55, 60), new Point(37.5, 60)); + new GUIWire(submodelModifiable, cpFN1, alu1.getPin("FN"), new Point[0]); + new GUIWire(submodelModifiable, cpFN2, alu2.getPin("FN"), new Point[0]); + new GUIWire(submodelModifiable, cpFN3, alu3.getPin("FN"), new Point[0]); + new GUIWire(submodelModifiable, cpFN3, alu4.getPin("FN"), new Point(35, 455)); + new GUIWire(submodelModifiable, funcDecode.getPin("L"), cpL1, new Point(55, 40), new Point(55, 60), new Point(37.5, 60)); new GUIWire(submodelModifiable, cpL1, cpL2, new Point[0]); new GUIWire(submodelModifiable, cpL2, cpL3, new Point[0]); - new GUIWire(submodelModifiable, cpL1, alu1.getInputPins().get(8), new Point[0]); - new GUIWire(submodelModifiable, cpL2, alu2.getInputPins().get(8), new Point[0]); - new GUIWire(submodelModifiable, cpL3, alu3.getInputPins().get(8), new Point[0]); - new GUIWire(submodelModifiable, cpL3, alu4.getInputPins().get(8), new Point(37.5, 465)); - new GUIWire(submodelModifiable, R1, alu1.getInputPins().get(3), new Point(10, 180), new Point(10, 115)); - new GUIWire(submodelModifiable, R2, alu2.getInputPins().get(3), new Point(10, 220), new Point(10, 215)); - new GUIWire(submodelModifiable, R3, alu3.getInputPins().get(3), new Point(10, 260), new Point(10, 315)); - new GUIWire(submodelModifiable, R4, alu4.getInputPins().get(3), new Point(20, 300), new Point(20, 415)); - new GUIWire(submodelModifiable, S1, alu1.getInputPins().get(5), new Point(15, 340), new Point(15, 135)); - new GUIWire(submodelModifiable, S2, alu2.getInputPins().get(5), new Point(5, 380), new Point(5, 235)); - new GUIWire(submodelModifiable, S3, alu3.getInputPins().get(5), new Point(10, 420), new Point(10, 335)); - new GUIWire(submodelModifiable, S4, alu4.getInputPins().get(5), new Point(10, 460), new Point(10, 435)); - new GUIWire(submodelModifiable, Cn, alu1.getInputPins().get(0), new Point(5, 140), new Point(5, 85)); - new GUIWire(submodelModifiable, alu1.getOutputPins().get(0), alu2.getInputPins().get(0), new Point(85, 85), new Point(85, 175), - new Point(40, 175), new Point(40, 185)); - new GUIWire(submodelModifiable, alu2.getOutputPins().get(0), alu3.getInputPins().get(0), new Point(85, 185), new Point(85, 275), - new Point(40, 275), new Point(40, 285)); - new GUIWire(submodelModifiable, alu3.getOutputPins().get(0), cpCnplus3, new Point(85, 285)); - new GUIWire(submodelModifiable, cpCnplus3, alu4.getInputPins().get(0), new Point(40, 375), new Point(40, 385)); - new GUIWire(submodelModifiable, alu4.getOutputPins().get(0), cpCnplus4, new Point[0]); - new GUIWire(submodelModifiable, alu1.getOutputPins().get(1), F1, new Point(90, 95), new Point(90, 20)); - new GUIWire(submodelModifiable, alu2.getOutputPins().get(1), F2, new Point(95, 195), new Point(95, 60)); - new GUIWire(submodelModifiable, alu3.getOutputPins().get(1), F3, new Point(100, 295), new Point(100, 100)); - new GUIWire(submodelModifiable, alu4.getOutputPins().get(1), F4, new Point(105, 395), new Point(105, 140)); - new GUIWire(submodelModifiable, cpCnplus3, xorOVR.getInputPins().get(0), new Point(90, 375), new Point(90, 405)); - new GUIWire(submodelModifiable, cpCnplus4, xorOVR.getInputPins().get(1), new Point(85, 415)); + new GUIWire(submodelModifiable, cpL1, alu1.getPin("L"), new Point[0]); + new GUIWire(submodelModifiable, cpL2, alu2.getPin("L"), new Point[0]); + new GUIWire(submodelModifiable, cpL3, alu3.getPin("L"), new Point[0]); + new GUIWire(submodelModifiable, cpL3, alu4.getPin("L"), new Point(37.5, 465)); + new GUIWire(submodelModifiable, R1, alu1.getPin("R"), new Point(10, 180), new Point(10, 115)); + new GUIWire(submodelModifiable, R2, alu2.getPin("R"), new Point(10, 220), new Point(10, 215)); + new GUIWire(submodelModifiable, R3, alu3.getPin("R"), new Point(10, 260), new Point(10, 315)); + new GUIWire(submodelModifiable, R4, alu4.getPin("R"), new Point(20, 300), new Point(20, 415)); + new GUIWire(submodelModifiable, S1, alu1.getPin("S"), new Point(15, 340), new Point(15, 135)); + new GUIWire(submodelModifiable, S2, alu2.getPin("S"), new Point(5, 380), new Point(5, 235)); + new GUIWire(submodelModifiable, S3, alu3.getPin("S"), new Point(10, 420), new Point(10, 335)); + new GUIWire(submodelModifiable, S4, alu4.getPin("S"), new Point(10, 460), new Point(10, 435)); + new GUIWire(submodelModifiable, Cn, alu1.getPin("Cin"), new Point(5, 140), new Point(5, 85)); + new GUIWire(submodelModifiable, alu1.getPin("Cout"), alu2.getPin("Cin"), new Point(85, 85), new Point(85, 175), new Point(40, 175), + new Point(40, 185)); + new GUIWire(submodelModifiable, alu2.getPin("Cout"), alu3.getPin("Cin"), new Point(85, 185), new Point(85, 275), new Point(40, 275), + new Point(40, 285)); + new GUIWire(submodelModifiable, alu3.getPin("Cout"), cpCnplus3, new Point(85, 285)); + new GUIWire(submodelModifiable, cpCnplus3, alu4.getPin("Cin"), new Point(40, 375), new Point(40, 385)); + new GUIWire(submodelModifiable, alu4.getPin("Cout"), cpCnplus4, new Point[0]); + new GUIWire(submodelModifiable, alu1.getPin("F"), F1, new Point(90, 95), new Point(90, 20)); + new GUIWire(submodelModifiable, alu2.getPin("F"), F2, new Point(95, 195), new Point(95, 60)); + new GUIWire(submodelModifiable, alu3.getPin("F"), F3, new Point(100, 295), new Point(100, 100)); + new GUIWire(submodelModifiable, alu4.getPin("F"), F4, new Point(105, 395), new Point(105, 140)); + new GUIWire(submodelModifiable, cpCnplus3, xorOVR.getPin("A"), new Point(90, 375), new Point(90, 405)); + new GUIWire(submodelModifiable, cpCnplus4, xorOVR.getPin("B"), new Point(85, 415)); new GUIWire(submodelModifiable, cpCnplus4, Cnplus4, new Point(130, 385), new Point(130, 180)); - new GUIWire(submodelModifiable, xorOVR.getOutputPins().get(0), OVR); + new GUIWire(submodelModifiable, xorOVR.getPin("Y"), OVR); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUOneBit.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUOneBit.java index eca9c647..afb79179 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUOneBit.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901ALUOneBit.java @@ -26,17 +26,17 @@ public class GUIAm2901ALUOneBit extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin Cin = getInputSubmodelPins().get(0); - Pin CoutE = getInputSubmodelPins().get(1); - Pin CinE = getInputSubmodelPins().get(2); - Pin R = getInputSubmodelPins().get(3); - Pin RN = getInputSubmodelPins().get(4); - Pin S = getInputSubmodelPins().get(5); - Pin SN = getInputSubmodelPins().get(6); - Pin FN = getInputSubmodelPins().get(7); - Pin L = getInputSubmodelPins().get(8); - Pin Cout = getOutputSubmodelPins().get(0); - Pin F = getOutputSubmodelPins().get(1); + Pin Cin = getSubmodelPin("Cin"); + Pin CoutE = getSubmodelPin("CoutE"); + Pin CinE = getSubmodelPin("CinE"); + Pin R = getSubmodelPin("R"); + Pin RN = getSubmodelPin("RN"); + Pin S = getSubmodelPin("S"); + Pin SN = getSubmodelPin("SN"); + Pin FN = getSubmodelPin("FN"); + Pin L = getSubmodelPin("L"); + Pin Cout = getSubmodelPin("Cout"); + Pin F = getSubmodelPin("F"); GUIand Cinand = new GUIand(submodelModifiable); GUIxor Rxor = new GUIxor(submodelModifiable); @@ -61,29 +61,29 @@ public class GUIAm2901ALUOneBit extends SimpleRectangularSubmodelComponent cpRXored.moveCenterTo(50, 60); cpSXored.moveCenterTo(55, 70); - new GUIWire(submodelModifiable, Cin, Cinand.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, CoutE, Coutand.getInputPins().get(0), new Point(5, 75), new Point(5, 10), new Point(130, 10), + new GUIWire(submodelModifiable, Cin, Cinand.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, CoutE, Coutand.getPin("A"), new Point(5, 75), new Point(5, 10), new Point(130, 10), new Point(130, 25)); - new GUIWire(submodelModifiable, CinE, Cinand.getInputPins().get(1), new Point(7.5, 125), new Point(7.5, 35)); - new GUIWire(submodelModifiable, R, Rxor.getInputPins().get(0)); - new GUIWire(submodelModifiable, RN, Rxor.getInputPins().get(1)); - new GUIWire(submodelModifiable, S, Sxor.getInputPins().get(0)); - new GUIWire(submodelModifiable, SN, Sxor.getInputPins().get(1)); - new GUIWire(submodelModifiable, FN, Fxor.getInputPins().get(1), new Point(130, 375), new Point(130, 85)); - new GUIWire(submodelModifiable, L, Fsel.getInputPins().get(0), new Point(87.5, 425), new Point(87.5, 75)); - new GUIWire(submodelModifiable, Cinand.getOutputPins().get(0), add.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, Rxor.getOutputPins().get(0), cpRXored, new Point(50, 195)); - new GUIWire(submodelModifiable, cpRXored, add.getInputPins().get(1), new Point(50, 35)); - new GUIWire(submodelModifiable, cpRXored, nand.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, Sxor.getOutputPins().get(0), cpSXored, new Point(55, 295)); - new GUIWire(submodelModifiable, cpSXored, add.getInputPins().get(2), new Point(55, 45)); - new GUIWire(submodelModifiable, cpSXored, nand.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, add.getOutputPins().get(0), Fsel.getInputPins().get(1), new Point(100, 25), new Point(100, 65), - new Point(85, 65), new Point(85, 85)); - new GUIWire(submodelModifiable, add.getOutputPins().get(1), Coutand.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, nand.getOutputPin(), Fsel.getInputPins().get(2), new Point(82.5, 65), new Point(82.5, 95)); - new GUIWire(submodelModifiable, Fsel.getOutputPins().get(0), Fxor.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, Coutand.getOutputPins().get(0), Cout, new Point[0]); - new GUIWire(submodelModifiable, Fxor.getOutputPins().get(0), F, new Point[0]); + new GUIWire(submodelModifiable, CinE, Cinand.getPin("B"), new Point(7.5, 125), new Point(7.5, 35)); + new GUIWire(submodelModifiable, R, Rxor.getPin("A")); + new GUIWire(submodelModifiable, RN, Rxor.getPin("B")); + new GUIWire(submodelModifiable, S, Sxor.getPin("A")); + new GUIWire(submodelModifiable, SN, Sxor.getPin("B")); + new GUIWire(submodelModifiable, FN, Fxor.getPin("B"), new Point(130, 375), new Point(130, 85)); + new GUIWire(submodelModifiable, L, Fsel.getPin("S0"), new Point(87.5, 425), new Point(87.5, 75)); + new GUIWire(submodelModifiable, Cinand.getPin("Y"), add.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, Rxor.getPin("Y"), cpRXored, new Point(50, 195)); + new GUIWire(submodelModifiable, cpRXored, add.getPin("B"), new Point(50, 35)); + new GUIWire(submodelModifiable, cpRXored, nand.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, Sxor.getPin("Y"), cpSXored, new Point(55, 295)); + new GUIWire(submodelModifiable, cpSXored, add.getPin("C"), new Point(55, 45)); + new GUIWire(submodelModifiable, cpSXored, nand.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, add.getPin("Y"), Fsel.getPin("I0"), new Point(100, 25), new Point(100, 65), new Point(85, 65), + new Point(85, 85)); + new GUIWire(submodelModifiable, add.getPin("Z"), Coutand.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, nand.getPin("Y"), Fsel.getPin("I1"), new Point(82.5, 65), new Point(82.5, 95)); + new GUIWire(submodelModifiable, Fsel.getPin("Y"), Fxor.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, Coutand.getPin("Y"), Cout, new Point[0]); + new GUIWire(submodelModifiable, Fxor.getPin("Y"), F, new Point[0]); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901DestDecode.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901DestDecode.java index 0afde14f..59df09bc 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901DestDecode.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901DestDecode.java @@ -22,15 +22,15 @@ public class GUIAm2901DestDecode extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin I8 = getInputSubmodelPins().get(0); - Pin I7 = getInputSubmodelPins().get(1); - Pin I6 = getInputSubmodelPins().get(2); - Pin NSH = getOutputSubmodelPins().get(0); - Pin RSH = getOutputSubmodelPins().get(1); - Pin RAMWE = getOutputSubmodelPins().get(2); - Pin YF = getOutputSubmodelPins().get(3); - Pin LSH = getOutputSubmodelPins().get(4); - Pin QWE = getOutputSubmodelPins().get(5); + Pin I8 = getSubmodelPin("I8"); + Pin I7 = getSubmodelPin("I7"); + Pin I6 = getSubmodelPin("I6"); + Pin NSH = getSubmodelPin("NSH"); + Pin RSH = getSubmodelPin("RSH"); + Pin RAMWE = getSubmodelPin("RAMWE"); + Pin YF = getSubmodelPin("YF"); + Pin LSH = getSubmodelPin("LSH"); + Pin QWE = getSubmodelPin("QWE"); GUINandGate notI8 = new GUINandGate(submodelModifiable, 1); GUINandGate notI7 = new GUINandGate(submodelModifiable, 1); @@ -96,52 +96,52 @@ public class GUIAm2901DestDecode extends SimpleRectangularSubmodelComponent new GUIWire(submodelModifiable, I8, cpI81, new Point[0]); new GUIWire(submodelModifiable, cpI81, cpI82, new Point[0]); new GUIWire(submodelModifiable, cpI81, cpI83, new Point[0]); - new GUIWire(submodelModifiable, cpI82, notI8.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpI83, notI8.getInputPins().get(1), new Point[0]); + new GUIWire(submodelModifiable, cpI82, notI8.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpI83, notI8.getPin("B"), new Point[0]); new GUIWire(submodelModifiable, I7, cpI71, new Point[0]); - new GUIWire(submodelModifiable, cpI71, notI7.getInputPins().get(0), new Point(10, 55)); + new GUIWire(submodelModifiable, cpI71, notI7.getPin("A"), new Point(10, 55)); new GUIWire(submodelModifiable, cpI71, cpI72, new Point[0]); - new GUIWire(submodelModifiable, cpI72, notI7.getInputPins().get(1), new Point[0]); + new GUIWire(submodelModifiable, cpI72, notI7.getPin("B"), new Point[0]); new GUIWire(submodelModifiable, cpI72, cpI73, new Point[0]); - new GUIWire(submodelModifiable, cpI73, nandI8I7.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpI83, nandI8I7.getInputPins().get(0), new Point(5, 95)); + new GUIWire(submodelModifiable, cpI73, nandI8I7.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpI83, nandI8I7.getPin("A"), new Point(5, 95)); new GUIWire(submodelModifiable, I6, cpI6, new Point(5, 100)); - new GUIWire(submodelModifiable, cpI6, notI6.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpI6, notI6.getInputPins().get(1), new Point(5, 165)); - new GUIWire(submodelModifiable, cpI82, nandRSH.getInputPins().get(0), new Point(5, 5), new Point(40, 5), new Point(40, 15)); - new GUIWire(submodelModifiable, notI7.getOutputPin(), cpNotI7, new Point[0]); - new GUIWire(submodelModifiable, cpNotI7, nandRSH.getInputPins().get(1), new Point(40, 25)); - new GUIWire(submodelModifiable, cpNotI7, nandRAMWE.getInputPins().get(1), new Point(40, 65)); - new GUIWire(submodelModifiable, notI8.getOutputPin(), cpNotI81, new Point[0]); + new GUIWire(submodelModifiable, cpI6, notI6.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpI6, notI6.getPin("B"), new Point(5, 165)); + new GUIWire(submodelModifiable, cpI82, nandRSH.getPin("A"), new Point(5, 5), new Point(40, 5), new Point(40, 15)); + new GUIWire(submodelModifiable, notI7.getPin("Y"), cpNotI7, new Point[0]); + new GUIWire(submodelModifiable, cpNotI7, nandRSH.getPin("B"), new Point(40, 25)); + new GUIWire(submodelModifiable, cpNotI7, nandRAMWE.getPin("B"), new Point(40, 65)); + new GUIWire(submodelModifiable, notI8.getPin("Y"), cpNotI81, new Point[0]); new GUIWire(submodelModifiable, cpNotI81, NSH, new Point(45, 5), new Point(135, 5), new Point(135, 20)); new GUIWire(submodelModifiable, cpNotI81, cpNotI82, new Point[0]); - new GUIWire(submodelModifiable, cpNotI82, nandRAMWE.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpNotI82, nandI7NotI8.getInputPins().get(0), new Point(45, 95)); - new GUIWire(submodelModifiable, cpI73, nandI7NotI8.getInputPins().get(1), new Point(10, 115), new Point(45, 115), + new GUIWire(submodelModifiable, cpNotI82, nandRAMWE.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpNotI82, nandI7NotI8.getPin("A"), new Point(45, 95)); + new GUIWire(submodelModifiable, cpI73, nandI7NotI8.getPin("B"), new Point(10, 115), new Point(45, 115), new Point(45, 105)); - new GUIWire(submodelModifiable, nandI8I7.getOutputPin(), cpNandI8I7, new Point(40, 100)); - new GUIWire(submodelModifiable, cpNandI8I7, nandLSH.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpNandI8I7, nandLSH.getInputPins().get(1), new Point(40, 145)); - new GUIWire(submodelModifiable, nandRSH.getOutputPin(), cpNotRSH, new Point[0]); - new GUIWire(submodelModifiable, cpNotRSH, notRSH.getInputPins().get(0), new Point(75, 15)); - new GUIWire(submodelModifiable, cpNotRSH, notRSH.getInputPins().get(1), new Point(75, 25)); - new GUIWire(submodelModifiable, nandRAMWE.getOutputPin(), RAMWE, new Point(125, 60), new Point(125, 100)); - new GUIWire(submodelModifiable, nandI7NotI8.getOutputPin(), cpNandI7NotI81, new Point[0]); - new GUIWire(submodelModifiable, cpNandI7NotI81, andI7NotI8.getInputPins().get(0), new Point(75, 95)); + new GUIWire(submodelModifiable, nandI8I7.getPin("Y"), cpNandI8I7, new Point(40, 100)); + new GUIWire(submodelModifiable, cpNandI8I7, nandLSH.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpNandI8I7, nandLSH.getPin("B"), new Point(40, 145)); + new GUIWire(submodelModifiable, nandRSH.getPin("Y"), cpNotRSH, new Point[0]); + new GUIWire(submodelModifiable, cpNotRSH, notRSH.getPin("A"), new Point(75, 15)); + new GUIWire(submodelModifiable, cpNotRSH, notRSH.getPin("B"), new Point(75, 25)); + new GUIWire(submodelModifiable, nandRAMWE.getPin("Y"), RAMWE, new Point(125, 60), new Point(125, 100)); + new GUIWire(submodelModifiable, nandI7NotI8.getPin("Y"), cpNandI7NotI81, new Point[0]); + new GUIWire(submodelModifiable, cpNandI7NotI81, andI7NotI8.getPin("A"), new Point(75, 95)); new GUIWire(submodelModifiable, cpNandI7NotI81, cpNandI7NotI82, new Point[0]); - new GUIWire(submodelModifiable, cpNandI7NotI82, andI7NotI8.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, nandLSH.getOutputPin(), LSH, new Point(125, 140), new Point(125, 180)); - new GUIWire(submodelModifiable, cpNandI7NotI82, nandQWE.getInputPins().get(0), new Point(75, 150)); - new GUIWire(submodelModifiable, notI6.getOutputPin(), cpNotI6, new Point[0]); - new GUIWire(submodelModifiable, cpNotI6, nandQWE.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, notRSH.getOutputPin(), RSH, new Point(130, 20), new Point(130, 60)); - new GUIWire(submodelModifiable, andI7NotI8.getOutputPin(), nandYF.getInputPins().get(0)); - new GUIWire(submodelModifiable, cpNotI6, nandYF.getInputPins().get(1), new Point(75, 170), new Point(105, 170), + new GUIWire(submodelModifiable, cpNandI7NotI82, andI7NotI8.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, nandLSH.getPin("Y"), LSH, new Point(125, 140), new Point(125, 180)); + new GUIWire(submodelModifiable, cpNandI7NotI82, nandQWE.getPin("A"), new Point(75, 150)); + new GUIWire(submodelModifiable, notI6.getPin("Y"), cpNotI6, new Point[0]); + new GUIWire(submodelModifiable, cpNotI6, nandQWE.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, notRSH.getPin("Y"), RSH, new Point(130, 20), new Point(130, 60)); + new GUIWire(submodelModifiable, andI7NotI8.getPin("Y"), nandYF.getPin("A")); + new GUIWire(submodelModifiable, cpNotI6, nandYF.getPin("B"), new Point(75, 170), new Point(105, 170), new Point(105, 120)); - new GUIWire(submodelModifiable, nandQWE.getOutputPin(), cpNandQWE, new Point(110, 155)); - new GUIWire(submodelModifiable, cpNandQWE, notQWE.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpNandQWE, notQWE.getInputPins().get(1), new Point(110, 225)); - new GUIWire(submodelModifiable, nandYF.getOutputPin(), YF); - new GUIWire(submodelModifiable, notQWE.getOutputPin(), QWE, new Point[0]); + new GUIWire(submodelModifiable, nandQWE.getPin("Y"), cpNandQWE, new Point(110, 155)); + new GUIWire(submodelModifiable, cpNandQWE, notQWE.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpNandQWE, notQWE.getPin("B"), new Point(110, 225)); + new GUIWire(submodelModifiable, nandYF.getPin("Y"), YF); + new GUIWire(submodelModifiable, notQWE.getPin("Y"), QWE, new Point[0]); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901QReg.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901QReg.java index 0ea3f21f..71008b12 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901QReg.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901QReg.java @@ -23,16 +23,16 @@ public class GUIAm2901QReg extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin C = getInputSubmodelPins().get(0); - Pin WE = getInputSubmodelPins().get(1); - Pin D1 = getInputSubmodelPins().get(2); - Pin D2 = getInputSubmodelPins().get(3); - Pin D3 = getInputSubmodelPins().get(4); - Pin D4 = getInputSubmodelPins().get(5); - Pin Q1 = getOutputSubmodelPins().get(0); - Pin Q2 = getOutputSubmodelPins().get(1); - Pin Q3 = getOutputSubmodelPins().get(2); - Pin Q4 = getOutputSubmodelPins().get(3); + Pin C = getSubmodelPin("C"); + Pin WE = getSubmodelPin("WE"); + Pin D1 = getSubmodelPin("D1"); + Pin D2 = getSubmodelPin("D2"); + Pin D3 = getSubmodelPin("D3"); + Pin D4 = getSubmodelPin("D4"); + Pin Q1 = getSubmodelPin("Q1"); + Pin Q2 = getSubmodelPin("Q2"); + Pin Q3 = getSubmodelPin("Q3"); + Pin Q4 = getSubmodelPin("Q4"); GUIand and = new GUIand(submodelModifiable); GUIdff dff1 = new GUIdff(submodelModifiable); @@ -53,23 +53,23 @@ public class GUIAm2901QReg extends SimpleRectangularSubmodelComponent cpC2.moveCenterTo(42.5, 37.5); cpC3.moveCenterTo(42.5, 62.5); - new GUIWire(submodelModifiable, C, and.getInputPins().get(0)); - new GUIWire(submodelModifiable, WE, and.getInputPins().get(1)); - new GUIWire(submodelModifiable, and.getOutputPins().get(0), cpC1, new Point[0]); - new GUIWire(submodelModifiable, cpC1, dff1.getInputPins().get(0), new Point(42.5, 12.5)); + new GUIWire(submodelModifiable, C, and.getPin("A")); + new GUIWire(submodelModifiable, WE, and.getPin("B")); + new GUIWire(submodelModifiable, and.getPin("Y"), cpC1, new Point[0]); + new GUIWire(submodelModifiable, cpC1, dff1.getPin("C"), new Point(42.5, 12.5)); new GUIWire(submodelModifiable, cpC1, cpC2, new Point[0]); - new GUIWire(submodelModifiable, cpC2, dff2.getInputPins().get(0), new Point[0]); + new GUIWire(submodelModifiable, cpC2, dff2.getPin("C"), new Point[0]); new GUIWire(submodelModifiable, cpC2, cpC3, new Point[0]); - new GUIWire(submodelModifiable, cpC3, dff3.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpC3, dff4.getInputPins().get(0), new Point(42.5, 87.5)); - new GUIWire(submodelModifiable, D1, dff1.getInputPins().get(1), new Point(17.5, 62.5), new Point(17.5, 42.5), new Point(45, 42.5), + new GUIWire(submodelModifiable, cpC3, dff3.getPin("C"), new Point[0]); + new GUIWire(submodelModifiable, cpC3, dff4.getPin("C"), new Point(42.5, 87.5)); + new GUIWire(submodelModifiable, D1, dff1.getPin("D"), new Point(17.5, 62.5), new Point(17.5, 42.5), new Point(45, 42.5), new Point(45, 22.5)); - new GUIWire(submodelModifiable, D2, dff2.getInputPins().get(1), new Point(22.5, 87.5), new Point(22.5, 47.5)); - new GUIWire(submodelModifiable, D3, dff3.getInputPins().get(1), new Point(27.5, 112.5), new Point(27.5, 72.5)); - new GUIWire(submodelModifiable, D4, dff4.getInputPins().get(1), new Point(32.5, 137.5), new Point(32.5, 97.5)); - new GUIWire(submodelModifiable, dff1.getOutputPins().get(0), Q1, new Point[0]); - new GUIWire(submodelModifiable, dff2.getOutputPins().get(0), Q2, new Point[0]); - new GUIWire(submodelModifiable, dff3.getOutputPins().get(0), Q3, new Point[0]); - new GUIWire(submodelModifiable, dff4.getOutputPins().get(0), Q4, new Point[0]); + new GUIWire(submodelModifiable, D2, dff2.getPin("D"), new Point(22.5, 87.5), new Point(22.5, 47.5)); + new GUIWire(submodelModifiable, D3, dff3.getPin("D"), new Point(27.5, 112.5), new Point(27.5, 72.5)); + new GUIWire(submodelModifiable, D4, dff4.getPin("D"), new Point(32.5, 137.5), new Point(32.5, 97.5)); + new GUIWire(submodelModifiable, dff1.getPin("Q"), Q1, new Point[0]); + new GUIWire(submodelModifiable, dff2.getPin("Q"), Q2, new Point[0]); + new GUIWire(submodelModifiable, dff3.getPin("Q"), Q3, new Point[0]); + new GUIWire(submodelModifiable, dff4.getPin("Q"), Q4, new Point[0]); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901SourceDecode.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901SourceDecode.java index 374f3e1a..21e01aa8 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901SourceDecode.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/am2901/GUIAm2901SourceDecode.java @@ -22,14 +22,14 @@ public class GUIAm2901SourceDecode extends SimpleRectangularSubmodelComponent @SuppressWarnings("unused") // for GUIWires being created private void initSubmodelComponents() { - Pin I2 = getInputSubmodelPins().get(0); - Pin I1 = getInputSubmodelPins().get(1); - Pin I0 = getInputSubmodelPins().get(2); - Pin SQ = getOutputSubmodelPins().get(0); - Pin RA = getOutputSubmodelPins().get(1); - Pin SB = getOutputSubmodelPins().get(2); - Pin SA = getOutputSubmodelPins().get(3); - Pin RD = getOutputSubmodelPins().get(4); + Pin I2 = getSubmodelPin("I2"); + Pin I1 = getSubmodelPin("I1"); + Pin I0 = getSubmodelPin("I0"); + Pin SQ = getSubmodelPin("SQ"); + Pin RA = getSubmodelPin("RA"); + Pin SB = getSubmodelPin("SB"); + Pin SA = getSubmodelPin("SA"); + Pin RD = getSubmodelPin("RD"); GUINandGate notI2 = new GUINandGate(submodelModifiable, 1); GUINandGate notI1 = new GUINandGate(submodelModifiable, 1); @@ -97,56 +97,56 @@ public class GUIAm2901SourceDecode extends SimpleRectangularSubmodelComponent cpNand35.moveCenterTo(95, 180); new GUIWire(submodelModifiable, I2, cpI21, new Point[0]); - new GUIWire(submodelModifiable, cpI21, nand21.getInputPins().get(0), new Point(5, 5), new Point(35, 5), new Point(35, 15)); + new GUIWire(submodelModifiable, cpI21, nand21.getPin("A"), new Point(5, 5), new Point(35, 5), new Point(35, 15)); new GUIWire(submodelModifiable, cpI21, cpI22, new Point[0]); - new GUIWire(submodelModifiable, cpI22, notI2.getInputPins().get(0), new Point(7.5, 15)); - new GUIWire(submodelModifiable, cpI22, notI2.getInputPins().get(1), new Point(7.5, 25)); + new GUIWire(submodelModifiable, cpI22, notI2.getPin("A"), new Point(7.5, 15)); + new GUIWire(submodelModifiable, cpI22, notI2.getPin("B"), new Point(7.5, 25)); new GUIWire(submodelModifiable, cpI21, cpI23, new Point[0]); - new GUIWire(submodelModifiable, cpI23, nand24.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpI23, nand35.getInputPins().get(1), new Point(5, 195), new Point(65, 195), new Point(65, 185)); + new GUIWire(submodelModifiable, cpI23, nand24.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpI23, nand35.getPin("B"), new Point(5, 195), new Point(65, 195), new Point(65, 185)); new GUIWire(submodelModifiable, I1, cpI1, new Point[0]); - new GUIWire(submodelModifiable, cpI1, notI1.getInputPins().get(0), new Point(7.5, 55)); - new GUIWire(submodelModifiable, cpI1, notI1.getInputPins().get(1), new Point(7.5, 65)); + new GUIWire(submodelModifiable, cpI1, notI1.getPin("A"), new Point(7.5, 55)); + new GUIWire(submodelModifiable, cpI1, notI1.getPin("B"), new Point(7.5, 65)); new GUIWire(submodelModifiable, I0, cpI01, new Point[0]); - new GUIWire(submodelModifiable, cpI01, notI0.getInputPins().get(0), new Point(7.5, 95)); + new GUIWire(submodelModifiable, cpI01, notI0.getPin("A"), new Point(7.5, 95)); new GUIWire(submodelModifiable, cpI01, cpI02, new Point[0]); - new GUIWire(submodelModifiable, cpI02, notI0.getInputPins().get(1), new Point[0]); - new GUIWire(submodelModifiable, cpI02, nand23.getInputPins().get(1), new Point(7.5, 112.5), new Point(32.5, 112.5), + new GUIWire(submodelModifiable, cpI02, notI0.getPin("B"), new Point[0]); + new GUIWire(submodelModifiable, cpI02, nand23.getPin("B"), new Point(7.5, 112.5), new Point(32.5, 112.5), new Point(32.5, 105)); - new GUIWire(submodelModifiable, notI2.getOutputPin(), cpNotI2, new Point(32.5, 20)); - new GUIWire(submodelModifiable, cpNotI2, nand22.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpNotI2, nand23.getInputPins().get(0), new Point(32.5, 95)); - new GUIWire(submodelModifiable, notI1.getOutputPin(), cpNotI11, new Point[0]); - new GUIWire(submodelModifiable, cpNotI11, nand21.getInputPins().get(1), new Point(35, 25)); + new GUIWire(submodelModifiable, notI2.getPin("Y"), cpNotI2, new Point(32.5, 20)); + new GUIWire(submodelModifiable, cpNotI2, nand22.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpNotI2, nand23.getPin("A"), new Point(32.5, 95)); + new GUIWire(submodelModifiable, notI1.getPin("Y"), cpNotI11, new Point[0]); + new GUIWire(submodelModifiable, cpNotI11, nand21.getPin("B"), new Point(35, 25)); new GUIWire(submodelModifiable, cpNotI11, cpNotI12, new Point[0]); - new GUIWire(submodelModifiable, cpNotI12, nand22.getInputPins().get(1), new Point[0]); + new GUIWire(submodelModifiable, cpNotI12, nand22.getPin("B"), new Point[0]); new GUIWire(submodelModifiable, cpNotI12, cpNotI13, new Point[0]); - new GUIWire(submodelModifiable, cpNotI13, nand24.getInputPins().get(0), new Point[0]); - new GUIWire(submodelModifiable, cpNotI13, nand25.getInputPins().get(0), new Point(35, 175)); - new GUIWire(submodelModifiable, notI0.getOutputPin(), cpNotI0, new Point[0]); - new GUIWire(submodelModifiable, cpNotI0, nand31.getInputPins().get(1), new Point(37.5, 35), new Point(65, 35), new Point(65, 25)); - new GUIWire(submodelModifiable, cpNotI0, nand25.getInputPins().get(1), new Point(37.5, 185)); - new GUIWire(submodelModifiable, nand21.getOutputPin(), nand31.getInputPins().get(0)); - new GUIWire(submodelModifiable, nand22.getOutputPin(), cpNand22, new Point[0]); - new GUIWire(submodelModifiable, cpNand22, nand32.getInputPins().get(0), new Point(65, 55)); - new GUIWire(submodelModifiable, cpNand22, nand32.getInputPins().get(1), new Point(65, 65)); - new GUIWire(submodelModifiable, nand23.getOutputPin(), cpNand23, new Point[0]); - new GUIWire(submodelModifiable, cpNand23, nand33.getInputPins().get(0), new Point(65, 95)); - new GUIWire(submodelModifiable, cpNand23, nand33.getInputPins().get(1), new Point(65, 105)); - new GUIWire(submodelModifiable, nand24.getOutputPin(), cpNand24, new Point[0]); - new GUIWire(submodelModifiable, cpNand24, nand34.getInputPins().get(0), new Point(65, 135)); - new GUIWire(submodelModifiable, cpNand24, nand34.getInputPins().get(1), new Point(65, 145)); - new GUIWire(submodelModifiable, nand25.getOutputPin(), nand35.getInputPins().get(0)); - new GUIWire(submodelModifiable, nand31.getOutputPin(), cpNand31, new Point[0]); - new GUIWire(submodelModifiable, cpNand31, nand41.getInputPins().get(0), new Point(95, 15)); - new GUIWire(submodelModifiable, cpNand31, nand41.getInputPins().get(1), new Point(95, 25)); - new GUIWire(submodelModifiable, nand32.getOutputPin(), RA, new Point[0]); - new GUIWire(submodelModifiable, nand33.getOutputPin(), SB, new Point[0]); - new GUIWire(submodelModifiable, nand34.getOutputPin(), SA, new Point[0]); - new GUIWire(submodelModifiable, nand35.getOutputPin(), cpNand35, new Point[0]); - new GUIWire(submodelModifiable, cpNand35, nand42.getInputPins().get(0), new Point(95, 175)); - new GUIWire(submodelModifiable, cpNand35, nand42.getInputPins().get(1), new Point(95, 185)); - new GUIWire(submodelModifiable, nand41.getOutputPin(), SQ, new Point[0]); - new GUIWire(submodelModifiable, nand42.getOutputPin(), RD, new Point[0]); + new GUIWire(submodelModifiable, cpNotI13, nand24.getPin("A"), new Point[0]); + new GUIWire(submodelModifiable, cpNotI13, nand25.getPin("A"), new Point(35, 175)); + new GUIWire(submodelModifiable, notI0.getPin("Y"), cpNotI0, new Point[0]); + new GUIWire(submodelModifiable, cpNotI0, nand31.getPin("B"), new Point(37.5, 35), new Point(65, 35), new Point(65, 25)); + new GUIWire(submodelModifiable, cpNotI0, nand25.getPin("B"), new Point(37.5, 185)); + new GUIWire(submodelModifiable, nand21.getPin("Y"), nand31.getPin("A")); + new GUIWire(submodelModifiable, nand22.getPin("Y"), cpNand22, new Point[0]); + new GUIWire(submodelModifiable, cpNand22, nand32.getPin("A"), new Point(65, 55)); + new GUIWire(submodelModifiable, cpNand22, nand32.getPin("B"), new Point(65, 65)); + new GUIWire(submodelModifiable, nand23.getPin("Y"), cpNand23, new Point[0]); + new GUIWire(submodelModifiable, cpNand23, nand33.getPin("A"), new Point(65, 95)); + new GUIWire(submodelModifiable, cpNand23, nand33.getPin("B"), new Point(65, 105)); + new GUIWire(submodelModifiable, nand24.getPin("Y"), cpNand24, new Point[0]); + new GUIWire(submodelModifiable, cpNand24, nand34.getPin("A"), new Point(65, 135)); + new GUIWire(submodelModifiable, cpNand24, nand34.getPin("B"), new Point(65, 145)); + new GUIWire(submodelModifiable, nand25.getPin("Y"), nand35.getPin("A")); + new GUIWire(submodelModifiable, nand31.getPin("Y"), cpNand31, new Point[0]); + new GUIWire(submodelModifiable, cpNand31, nand41.getPin("A"), new Point(95, 15)); + new GUIWire(submodelModifiable, cpNand31, nand41.getPin("B"), new Point(95, 25)); + new GUIWire(submodelModifiable, nand32.getPin("Y"), RA, new Point[0]); + new GUIWire(submodelModifiable, nand33.getPin("Y"), SB, new Point[0]); + new GUIWire(submodelModifiable, nand34.getPin("Y"), SA, new Point[0]); + new GUIWire(submodelModifiable, nand35.getPin("Y"), cpNand35, new Point[0]); + new GUIWire(submodelModifiable, cpNand35, nand42.getPin("A"), new Point(95, 175)); + new GUIWire(submodelModifiable, cpNand35, nand42.getPin("B"), new Point(95, 185)); + new GUIWire(submodelModifiable, nand41.getPin("Y"), SQ, new Point[0]); + new GUIWire(submodelModifiable, nand42.getPin("Y"), RD, new Point[0]); } } \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/ViewLogicModelAdapter.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/ViewLogicModelAdapter.java index 8c478ae0..3e081ad7 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/ViewLogicModelAdapter.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/ViewLogicModelAdapter.java @@ -72,9 +72,9 @@ public class ViewLogicModelAdapter if (guiComp instanceof SubmodelComponent) { SubmodelComponent guiCompCasted = (SubmodelComponent) guiComp; - Map supermodelPinsPerSubmodelPin = guiCompCasted.getSupermodelPinsPerSubmodelPin(); - Map externalWiresForSubmodel = supermodelPinsPerSubmodelPin.entrySet().stream() - .collect(Collectors.toMap(Entry::getKey, e -> logicWiresPerPin.get(e.getValue()))); + Map supermodelPins = guiCompCasted.getSupermodelPins(); + Map externalWiresForSubmodel = supermodelPins.entrySet().stream() + .collect(Collectors.toMap(e -> guiCompCasted.getSubmodelPin(e.getKey()), e -> logicWiresPerPin.get(e.getValue()))); convert(guiCompCasted.submodel, params, timeline, externalWiresForSubmodel); } else if (guiComp instanceof WireCrossPoint) { diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/AtomicAm2901NANDBasedAdapter.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/AtomicAm2901NANDBasedAdapter.java index e0080e79..bc0fb9bc 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/AtomicAm2901NANDBasedAdapter.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/AtomicAm2901NANDBasedAdapter.java @@ -22,44 +22,45 @@ public class AtomicAm2901NANDBasedAdapter implements ComponentAdapter logicWiresPerPin) { - Wire w00 = logicWiresPerPin.get(guiComponent.getPins().get(0)); - Wire w01 = logicWiresPerPin.get(guiComponent.getPins().get(1)); - Wire w02 = logicWiresPerPin.get(guiComponent.getPins().get(2)); - Wire w03 = logicWiresPerPin.get(guiComponent.getPins().get(3)); - Wire w04 = logicWiresPerPin.get(guiComponent.getPins().get(4)); - Wire w05 = logicWiresPerPin.get(guiComponent.getPins().get(5)); - Wire w06 = logicWiresPerPin.get(guiComponent.getPins().get(6)); - Wire w07 = logicWiresPerPin.get(guiComponent.getPins().get(7)); - Wire w08 = logicWiresPerPin.get(guiComponent.getPins().get(8)); - Wire w09 = logicWiresPerPin.get(guiComponent.getPins().get(9)); - Wire w10 = logicWiresPerPin.get(guiComponent.getPins().get(10)); - Wire w11 = logicWiresPerPin.get(guiComponent.getPins().get(11)); - Wire w12 = logicWiresPerPin.get(guiComponent.getPins().get(12)); - Wire w13 = logicWiresPerPin.get(guiComponent.getPins().get(13)); - Wire w14 = logicWiresPerPin.get(guiComponent.getPins().get(14)); - Wire w15 = logicWiresPerPin.get(guiComponent.getPins().get(15)); - Wire w16 = logicWiresPerPin.get(guiComponent.getPins().get(16)); - Wire w17 = logicWiresPerPin.get(guiComponent.getPins().get(17)); - Wire w18 = logicWiresPerPin.get(guiComponent.getPins().get(18)); - Wire w19 = logicWiresPerPin.get(guiComponent.getPins().get(19)); - Wire w20 = logicWiresPerPin.get(guiComponent.getPins().get(20)); - Wire w21 = logicWiresPerPin.get(guiComponent.getPins().get(21)); - Wire w22 = logicWiresPerPin.get(guiComponent.getPins().get(22)); - Wire w23 = logicWiresPerPin.get(guiComponent.getPins().get(23)); - Wire w24 = logicWiresPerPin.get(guiComponent.getPins().get(24)); - Wire w25 = logicWiresPerPin.get(guiComponent.getPins().get(25)); - Wire w26 = logicWiresPerPin.get(guiComponent.getPins().get(26)); - Wire w27 = logicWiresPerPin.get(guiComponent.getPins().get(27)); - Wire w28 = logicWiresPerPin.get(guiComponent.getPins().get(28)); - Wire w29 = logicWiresPerPin.get(guiComponent.getPins().get(29)); - Wire w30 = logicWiresPerPin.get(guiComponent.getPins().get(30)); - Wire w31 = logicWiresPerPin.get(guiComponent.getPins().get(31)); - Wire w32 = logicWiresPerPin.get(guiComponent.getPins().get(32)); - Wire w33 = logicWiresPerPin.get(guiComponent.getPins().get(33)); - Wire w34 = logicWiresPerPin.get(guiComponent.getPins().get(34)); - Wire w35 = logicWiresPerPin.get(guiComponent.getPins().get(35)); - Wire w36 = logicWiresPerPin.get(guiComponent.getPins().get(36)); - Wire w37 = logicWiresPerPin.get(guiComponent.getPins().get(37)); + Wire w00 = logicWiresPerPin.get(guiComponent.getPin("I8")); + Wire w01 = logicWiresPerPin.get(guiComponent.getPin("I7")); + Wire w02 = logicWiresPerPin.get(guiComponent.getPin("I6")); + Wire w03 = logicWiresPerPin.get(guiComponent.getPin("I5")); + Wire w04 = logicWiresPerPin.get(guiComponent.getPin("I4")); + Wire w05 = logicWiresPerPin.get(guiComponent.getPin("I3")); + Wire w06 = logicWiresPerPin.get(guiComponent.getPin("I2")); + Wire w07 = logicWiresPerPin.get(guiComponent.getPin("I1")); + Wire w08 = logicWiresPerPin.get(guiComponent.getPin("I0")); + Wire w09 = logicWiresPerPin.get(guiComponent.getPin("C")); + Wire w10 = logicWiresPerPin.get(guiComponent.getPin("Cn")); + Wire w11 = logicWiresPerPin.get(guiComponent.getPin("D1")); + Wire w12 = logicWiresPerPin.get(guiComponent.getPin("D2")); + Wire w13 = logicWiresPerPin.get(guiComponent.getPin("D3")); + Wire w14 = logicWiresPerPin.get(guiComponent.getPin("D4")); + Wire w15 = logicWiresPerPin.get(guiComponent.getPin("A0")); + Wire w16 = logicWiresPerPin.get(guiComponent.getPin("A1")); + Wire w17 = logicWiresPerPin.get(guiComponent.getPin("A2")); + Wire w18 = logicWiresPerPin.get(guiComponent.getPin("A3")); + Wire w19 = logicWiresPerPin.get(guiComponent.getPin("B0")); + Wire w20 = logicWiresPerPin.get(guiComponent.getPin("B1")); + Wire w21 = logicWiresPerPin.get(guiComponent.getPin("B2")); + Wire w22 = logicWiresPerPin.get(guiComponent.getPin("B3")); + Wire w23 = logicWiresPerPin.get(guiComponent.getPin("IRAMn")); + Wire w24 = logicWiresPerPin.get(guiComponent.getPin("IRAMn+3")); + Wire w25 = logicWiresPerPin.get(guiComponent.getPin("IQn")); + Wire w26 = logicWiresPerPin.get(guiComponent.getPin("IQn+3")); + Wire w27 = logicWiresPerPin.get(guiComponent.getPin("Y1")); + Wire w28 = logicWiresPerPin.get(guiComponent.getPin("Y2")); + Wire w29 = logicWiresPerPin.get(guiComponent.getPin("Y3")); + Wire w30 = logicWiresPerPin.get(guiComponent.getPin("Y4")); + Wire w31 = logicWiresPerPin.get(guiComponent.getPin("F=0")); + Wire w32 = logicWiresPerPin.get(guiComponent.getPin("Cn+4")); + Wire w33 = logicWiresPerPin.get(guiComponent.getPin("OVR")); + Wire w34 = logicWiresPerPin.get(guiComponent.getPin("F3_ORAMn+3")); + Wire w35 = logicWiresPerPin.get(guiComponent.getPin("ORAMn")); + Wire w36 = logicWiresPerPin.get(guiComponent.getPin("OQn")); + Wire w37 = logicWiresPerPin.get(guiComponent.getPin("OQn+3")); + createAm2901(timeline, params, w00, w01, w02, w03, w04, w05, w06, w07, w08, w09, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, w33, w34, w35, w36, w37); } diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/SimpleGateAdapter.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/SimpleGateAdapter.java index 6645fbef..ab090531 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/SimpleGateAdapter.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/modeladapter/componentadapters/SimpleGateAdapter.java @@ -1,6 +1,5 @@ package net.mograsim.logic.ui.modeladapter.componentadapters; -import java.util.List; import java.util.Map; import net.mograsim.logic.core.components.Component; @@ -32,11 +31,14 @@ public class SimpleGateAdapter implements Co @Override public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, G guiComponent, Map logicWiresPerPin) { - ReadWriteEnd out = logicWiresPerPin.get(guiComponent.getOutputPin()).createReadWriteEnd(); - List inputPins = guiComponent.getInputPins(); - ReadEnd[] ins = new ReadEnd[inputPins.size()]; - for (int i = 0; i < inputPins.size(); i++) - ins[i] = logicWiresPerPin.get(inputPins.get(i)).createReadOnlyEnd(); + ReadWriteEnd out = logicWiresPerPin.get(guiComponent.getPin("Y")).createReadWriteEnd(); + + // TODO can we do this prettier? + int inputPinCount = guiComponent.getPins().size() - 1; + ReadEnd[] ins = new ReadEnd[inputPinCount]; + for (int i = 0; i < inputPinCount; i++) + ins[i] = logicWiresPerPin.get(guiComponent.getPin(String.valueOf((char) ('A' + i)))).createReadOnlyEnd(); + constructor.newComponent(timeline, params.gateProcessTime, out, ins); } -- 2.17.1