Fixed a bug in Am2900; created dlatch8/80; relayouted some components
[Mograsim.git] / net.mograsim.logic.model.am2900 / test / net / mograsim / logic / model / am2900 / am2910 / Am2910Testbench.java
index 028de6e..59ac5b1 100644 (file)
@@ -5,37 +5,42 @@ import net.mograsim.logic.core.types.Bit;
 import net.mograsim.logic.core.types.BitVector;
 import net.mograsim.logic.model.SimpleLogicUIStandalone;
 import net.mograsim.logic.model.SimpleLogicUIStandalone.VisualisationObjects;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay;
-import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch;
-import net.mograsim.logic.model.model.wires.GUIWire;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
+import net.mograsim.logic.model.am2900.Am2900Loader;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.components.Orientation;
+import net.mograsim.logic.model.model.components.atomic.ModelBitDisplay;
+import net.mograsim.logic.model.model.components.atomic.ModelClock;
+import net.mograsim.logic.model.model.components.atomic.ModelClock.ModelClockParams;
+import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
+import net.mograsim.logic.model.model.wires.ModelWire;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
 
 public class Am2910Testbench
 {
        public static void main(String[] args)
        {
+               Am2900Loader.setup();
                SimpleLogicUIStandalone.executeVisualisation(Am2910Testbench::create, Am2910Testbench::beforeRun);
        }
 
-       @SuppressWarnings("unused") // for GUIWires being created
-       public static void create(ViewModelModifiable model)
+       @SuppressWarnings("unused") // for ModelWires being created
+       public static void create(LogicModelModifiable model)
        {
-               GUIComponent am2910 = IndirectGUIComponentCreator.createComponent(model, "file:components/am2910/GUIAm2910.json", "Am2910");
-               GUIManualSwitch C = new GUIManualSwitch(model, 1, "C");
-               GUIManualSwitch D = new GUIManualSwitch(model, 12, "D");
-               GUIManualSwitch _RLD = new GUIManualSwitch(model, 1, "_RLD");
-               GUIManualSwitch _CC = new GUIManualSwitch(model, 1, "_CC");
-               GUIManualSwitch _CCEN = new GUIManualSwitch(model, 1, "_CCEN");
-               GUIManualSwitch I = new GUIManualSwitch(model, 4, "I");
-               GUIManualSwitch CI = new GUIManualSwitch(model, 1, "CI");
-               GUIManualSwitch _OE = new GUIManualSwitch(model, 1, "_OE");
-               GUIBitDisplay _FULL = new GUIBitDisplay(model, 1, "_FULL");
-               GUIBitDisplay _PL = new GUIBitDisplay(model, 1, "_PL");
-               GUIBitDisplay _MAP = new GUIBitDisplay(model, 1, "_MAP");
-               GUIBitDisplay _VECT = new GUIBitDisplay(model, 1, "_VECT");
-               GUIBitDisplay Y = new GUIBitDisplay(model, 12, "Y");
+               ModelComponent am2910 = IndirectModelComponentCreator.createComponent(model, "Am2910", "Am2910");
+               ModelClock C = new ModelClock(model, new ModelClockParams(1000, Orientation.RIGHT));
+               ModelManualSwitch D = new ModelManualSwitch(model, 12, "D");
+               ModelManualSwitch _RLD = new ModelManualSwitch(model, 1, "_RLD");
+               ModelManualSwitch _CC = new ModelManualSwitch(model, 1, "_CC");
+               ModelManualSwitch _CCEN = new ModelManualSwitch(model, 1, "_CCEN");
+               ModelManualSwitch I = new ModelManualSwitch(model, 4, "I");
+               ModelManualSwitch CI = new ModelManualSwitch(model, 1, "CI");
+               ModelManualSwitch _OE = new ModelManualSwitch(model, 1, "_OE");
+               ModelBitDisplay _FULL = new ModelBitDisplay(model, 1, "_FULL");
+               ModelBitDisplay _PL = new ModelBitDisplay(model, 1, "_PL");
+               ModelBitDisplay _MAP = new ModelBitDisplay(model, 1, "_MAP");
+               ModelBitDisplay _VECT = new ModelBitDisplay(model, 1, "_VECT");
+               ModelBitDisplay Y = new ModelBitDisplay(model, 12, "Y");
 
                C.moveTo(35, -35);
                D.moveTo(10, -20);
@@ -51,28 +56,28 @@ public class Am2910Testbench
                Y.moveTo(40, 65);
                _OE.moveTo(60, 85);
 
-               new GUIWire(model, C.getOutputPin(), am2910.getPin("C"), new Point(60, -27.5));
-               new GUIWire(model, D.getOutputPin(), am2910.getPin("D"), new Point(36, -12.5));
-               new GUIWire(model, _RLD.getOutputPin(), am2910.getPin("_RLD"), new Point[0]);
-               new GUIWire(model, _CC.getOutputPin(), am2910.getPin("_CC"));
-               new GUIWire(model, _CCEN.getOutputPin(), am2910.getPin("_CCEN"));
-               new GUIWire(model, I.getOutputPin(), am2910.getPin("I"));
-               new GUIWire(model, CI.getOutputPin(), am2910.getPin("CI"), new Point(100, 52.5), new Point(100, 40));
-               new GUIWire(model, am2910.getPin("_FULL"), _FULL.getInputPin(), new Point[0]);
-               new GUIWire(model, am2910.getPin("_PL"), _PL.getInputPin(), new Point(13, 92.5));
-               new GUIWire(model, am2910.getPin("_MAP"), _MAP.getInputPin(), new Point(19, 112.5));
-               new GUIWire(model, am2910.getPin("_VECT"), _VECT.getInputPin(), new Point(25, 132.5));
-               new GUIWire(model, am2910.getPin("Y"), Y.getInputPin(), new Point(38, 72.5));
-               new GUIWire(model, am2910.getPin("_OE"), _OE.getOutputPin());
+               new ModelWire(model, C.getOutputPin(), am2910.getPin("C"), new Point(60, -27.5));
+               new ModelWire(model, D.getOutputPin(), am2910.getPin("D"), new Point(36, -12.5));
+               new ModelWire(model, _RLD.getOutputPin(), am2910.getPin("_RLD"), new Point[0]);
+               new ModelWire(model, _CC.getOutputPin(), am2910.getPin("_CC"));
+               new ModelWire(model, _CCEN.getOutputPin(), am2910.getPin("_CCEN"));
+               new ModelWire(model, I.getOutputPin(), am2910.getPin("I"));
+               new ModelWire(model, CI.getOutputPin(), am2910.getPin("CI"), new Point(100, 52.5), new Point(100, 40));
+               new ModelWire(model, am2910.getPin("_FULL"), _FULL.getInputPin(), new Point[0]);
+               new ModelWire(model, am2910.getPin("_PL"), _PL.getInputPin(), new Point(13, 92.5));
+               new ModelWire(model, am2910.getPin("_MAP"), _MAP.getInputPin(), new Point(19, 112.5));
+               new ModelWire(model, am2910.getPin("_VECT"), _VECT.getInputPin(), new Point(25, 132.5));
+               new ModelWire(model, am2910.getPin("Y"), Y.getInputPin(), new Point(38, 72.5));
+               new ModelWire(model, am2910.getPin("_OE"), _OE.getOutputPin());
        }
 
        public static void beforeRun(VisualisationObjects vis)
        {
                vis.model.getComponentsByName().values().forEach(c ->
                {
-                       if (c instanceof GUIManualSwitch)
+                       if (c instanceof ModelManualSwitch)
                        {
-                               GUIManualSwitch cCasted = (GUIManualSwitch) c;
+                               ModelManualSwitch cCasted = (ModelManualSwitch) c;
                                cCasted.setHighLevelState("out", BitVector.of(Bit.ZERO, cCasted.logicWidth));
                        }
                });