Implemented most of the Am2904. Missing: shifts, C0, component layout
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Sun, 25 Aug 2019 20:35:51 +0000 (22:35 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Sun, 25 Aug 2019 20:35:51 +0000 (22:35 +0200)
24 files changed:
net.mograsim.logic.model.am2900/META-INF/MANIFEST.MF
net.mograsim.logic.model.am2900/components/GUImux2.json [new file with mode: 0644]
net.mograsim.logic.model.am2900/components/GUImux2_4.json [new file with mode: 0644]
net.mograsim.logic.model.am2900/components/GUImux3.json [new file with mode: 0644]
net.mograsim.logic.model.am2900/components/GUIsel1.json [new file with mode: 0644]
net.mograsim.logic.model.am2900/components/am2904/GUIAm2904.json
net.mograsim.logic.model.am2900/components/am2904/GUIAm2904TestLogic.json
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/GUIAm2904RegCTInstrDecode.java
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/GUIComponentTestbench.java
net.mograsim.logic.model.editor/components/GUIdff4.json [new file with mode: 0644]
net.mograsim.logic.model.editor/components/GUIdff4_invwe.json [new file with mode: 0644]
net.mograsim.logic.model.editor/components/GUImux2.json [new file with mode: 0644]
net.mograsim.logic.model.editor/components/GUImux2_4.json [new file with mode: 0644]
net.mograsim.logic.model.editor/components/GUImux3.json [new file with mode: 0644]
net.mograsim.logic.model.editor/components/GUIsel1.json [new file with mode: 0644]
net.mograsim.logic.model.editor/components/am2901/GUIAm2901.json
net.mograsim.logic.model.editor/components/am2901/GUIAm2901QReg.json [deleted file]
net.mograsim.logic.model.editor/components/am2904/GUIAm2904.json [new file with mode: 0644]
net.mograsim.logic.model.editor/components/am2904/GUIAm2904MSR.json [new file with mode: 0644]
net.mograsim.logic.model.editor/components/am2904/GUIAm2904TestLogic.json [new file with mode: 0644]
net.mograsim.logic.model.editor/components/am2904/GUIAm2904muSR.json [new file with mode: 0644]
net.mograsim.logic.model.editor/components/am2910/GUIAm2910.json [new file with mode: 0644]
net.mograsim.logic.model.editor/components/am2910/GUIAm2910_old.json [new file with mode: 0644]
net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/standardComponentIDMapping.json

index bd5fcb5..fb03a1f 100644 (file)
@@ -4,6 +4,7 @@ Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: net.mograsim.logic.model.am2900;singleton:=true
 Bundle-Version: 0.1.0.qualifier
 Export-Package: net.mograsim.logic.model.am2900.components,
+ net.mograsim.logic.model.am2900.components.am2904,
  net.mograsim.logic.model.am2900.components.am2910,
  net.mograsim.logic.model.examples
 Bundle-RequiredExecutionEnvironment: JavaSE-11
diff --git a/net.mograsim.logic.model.am2900/components/GUImux2.json b/net.mograsim.logic.model.am2900/components/GUImux2.json
new file mode 100644 (file)
index 0000000..2542ce0
--- /dev/null
@@ -0,0 +1,447 @@
+mograsim version: 0.1.3
+{
+  "width": 70.0,
+  "height": 70.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 30.0
+      },
+      "name": "I00",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 60.0
+      },
+      "name": "I11",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 50.0
+      },
+      "name": "I10",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 70.0,
+        "y": 10.0
+      },
+      "name": "Y",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 40.0
+      },
+      "name": "I01",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 10.0
+      },
+      "name": "S0",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 20.0
+      },
+      "name": "S1",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.4,
+    "subComps": [
+      {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
+        "pos": {
+          "x": 30.0,
+          "y": 15.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 24.0,
+          "y": 29.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 24.0,
+          "y": 24.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 54.0,
+          "y": 39.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 24.0,
+          "y": 49.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUIsel1",
+        "name": "DeserializedSubmodelComponent#1",
+        "pos": {
+          "x": 60.0,
+          "y": 100.0
+        }
+      },
+      {
+        "id": "GUIsel1",
+        "name": "DeserializedSubmodelComponent#0",
+        "pos": {
+          "x": 60.0,
+          "y": 35.0
+        }
+      },
+      {
+        "id": "GUImux1",
+        "name": "DeserializedSubmodelComponent#2",
+        "pos": {
+          "x": 115.0,
+          "y": 20.0
+        }
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "S1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#14",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "S2"
+        },
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 115.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 55.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#17",
+        "path": [
+          {
+            "x": 55.0,
+            "y": 105.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "S1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#9",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 50.0
+          },
+          {
+            "x": 15.0,
+            "y": 10.0
+          },
+          {
+            "x": 85.0,
+            "y": 10.0
+          },
+          {
+            "x": 85.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#8",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 105.0
+          },
+          {
+            "x": 105.0,
+            "y": 45.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#7",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 40.0
+          },
+          {
+            "x": 105.0,
+            "y": 35.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#0",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 20.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I11"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#5",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 150.0
+          },
+          {
+            "x": 20.0,
+            "y": 135.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#10",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I10"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I01"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#3",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 100.0
+          },
+          {
+            "x": 40.0,
+            "y": 70.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#12",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I00"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 75.0
+          },
+          {
+            "x": 35.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "S2"
+        },
+        "name": "unnamedWire#11",
+        "path": []
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererParams": {
+    "centerText": "GUImux2",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "default"
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.am2900/components/GUImux2_4.json b/net.mograsim.logic.model.am2900/components/GUImux2_4.json
new file mode 100644 (file)
index 0000000..f9648ee
--- /dev/null
@@ -0,0 +1,692 @@
+mograsim version: 0.1.3
+{
+  "width": 62.0,
+  "height": 90.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 30.0
+      },
+      "name": "I00",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 60.0
+      },
+      "name": "I11",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 50.0
+      },
+      "name": "I10",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 62.0,
+        "y": 16.0
+      },
+      "name": "Y",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 40.0
+      },
+      "name": "I01",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 10.0
+      },
+      "name": "S0",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 20.0
+      },
+      "name": "S1",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.4,
+    "subComps": [
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 19.0,
+          "y": 34.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#0",
+        "pos": {
+          "x": 25.0,
+          "y": 45.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUIMerger",
+        "name": "GUIMerger#0",
+        "pos": {
+          "x": 140.0,
+          "y": 25.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#3",
+        "pos": {
+          "x": 25.0,
+          "y": 180.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#2",
+        "pos": {
+          "x": 25.0,
+          "y": 140.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#1",
+        "pos": {
+          "x": 25.0,
+          "y": 85.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#1",
+        "pos": {
+          "x": 40.0,
+          "y": 125.0
+        }
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#0",
+        "pos": {
+          "x": 40.0,
+          "y": 30.0
+        }
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#2",
+        "pos": {
+          "x": 100.0,
+          "y": 20.0
+        }
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_2"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#14",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "S1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#36",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 50.0
+          },
+          {
+            "x": 15.0,
+            "y": 20.0
+          },
+          {
+            "x": 60.0,
+            "y": 20.0
+          },
+          {
+            "x": 60.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y4"
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I3"
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "S0"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_1"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#15",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#18",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "I00"
+        },
+        "name": "unnamedWire#19",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 60.0
+          },
+          {
+            "x": 15.0,
+            "y": 75.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "I10"
+        },
+        "name": "unnamedWire#21",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 155.0
+          },
+          {
+            "x": 15.0,
+            "y": 125.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I01"
+        },
+        "pin2": {
+          "compName": "GUISplitter#1",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I11"
+        },
+        "pin2": {
+          "compName": "GUISplitter#3",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#22",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 150.0
+          },
+          {
+            "x": 10.0,
+            "y": 195.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0_3"
+        },
+        "name": "unnamedWire#25",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0_2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y2"
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1_1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y1"
+        },
+        "name": "unnamedWire#27",
+        "path": [
+          {
+            "x": 80.0,
+            "y": 75.0
+          },
+          {
+            "x": 80.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0_4"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y4"
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1_3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y3"
+        },
+        "name": "unnamedWire#29",
+        "path": [
+          {
+            "x": 90.0,
+            "y": 95.0
+          },
+          {
+            "x": 90.0,
+            "y": 150.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1_2"
+        },
+        "name": "unnamedWire#28",
+        "path": [
+          {
+            "x": 85.0,
+            "y": 140.0
+          },
+          {
+            "x": 85.0,
+            "y": 85.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_2"
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_3"
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I1_4"
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I1_3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#3",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I0_2"
+        },
+        "pin2": {
+          "compName": "GUISplitter#2",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y4"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1_4"
+        },
+        "name": "unnamedWire#30",
+        "path": [
+          {
+            "x": 95.0,
+            "y": 160.0
+          },
+          {
+            "x": 95.0,
+            "y": 105.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I1_2"
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_1"
+        },
+        "pin2": {
+          "compName": "GUISplitter#1",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#10",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "I0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y1"
+        },
+        "name": "unnamedWire#32",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I0_4"
+        },
+        "pin2": {
+          "compName": "GUISplitter#2",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "O"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#31",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I1_1"
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_4"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#12",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "I2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y3"
+        },
+        "name": "unnamedWire#34",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I0_3"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_4"
+        },
+        "name": "unnamedWire#11",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y2"
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#33",
+        "path": []
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererParams": {
+    "centerText": "GUImux1_4",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler"
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.am2900/components/GUImux3.json b/net.mograsim.logic.model.am2900/components/GUImux3.json
new file mode 100644 (file)
index 0000000..69181cd
--- /dev/null
@@ -0,0 +1,479 @@
+mograsim version: 0.1.3
+{
+  "width": 80.0,
+  "height": 120.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 40.0
+      },
+      "name": "I000",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 70.0
+      },
+      "name": "I011",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 100.0
+      },
+      "name": "I110",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 60.0
+      },
+      "name": "I010",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 90.0
+      },
+      "name": "I101",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 80.0
+      },
+      "name": "I100",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 110.0
+      },
+      "name": "I111",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 80.0,
+        "y": 10.0
+      },
+      "name": "Y",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 50.0
+      },
+      "name": "I001",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 10.0
+      },
+      "name": "S0",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 20.0
+      },
+      "name": "S1",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 30.0
+      },
+      "name": "S2",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.4,
+    "subComps": [
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 24.0,
+          "y": 94.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 19.0,
+          "y": 104.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUImux2",
+        "name": "DeserializedSubmodelComponent#0",
+        "pos": {
+          "x": 35.0,
+          "y": 185.0
+        }
+      },
+      {
+        "id": "GUImux2",
+        "name": "DeserializedSubmodelComponent#3",
+        "pos": {
+          "x": 35.0,
+          "y": 85.0
+        }
+      },
+      {
+        "id": "GUImux1",
+        "name": "DeserializedSubmodelComponent#2",
+        "pos": {
+          "x": 125.0,
+          "y": 20.0
+        }
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I111"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I11"
+        },
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 275.0
+          },
+          {
+            "x": 15.0,
+            "y": 245.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I10"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "I110"
+        },
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 235.0
+          },
+          {
+            "x": 10.0,
+            "y": 250.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 110.0,
+            "y": 95.0
+          },
+          {
+            "x": 110.0,
+            "y": 35.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 115.0,
+            "y": 195.0
+          },
+          {
+            "x": 115.0,
+            "y": 45.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "S0"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "S2"
+        },
+        "name": "unnamedWire#17",
+        "path": [
+          {
+            "x": 70.0,
+            "y": 25.0
+          },
+          {
+            "x": 70.0,
+            "y": 75.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I010"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I10"
+        },
+        "name": "unnamedWire#9",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 150.0
+          },
+          {
+            "x": 10.0,
+            "y": 135.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I01"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "I001"
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I000"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I00"
+        },
+        "name": "unnamedWire#7",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 100.0
+          },
+          {
+            "x": 10.0,
+            "y": 115.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 50.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "S0"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#5",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 205.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I11"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "I011"
+        },
+        "name": "unnamedWire#10",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 145.0
+          },
+          {
+            "x": 15.0,
+            "y": 175.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "S0"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#4",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 195.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I101"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I01"
+        },
+        "name": "unnamedWire#12",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I00"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "I100"
+        },
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 215.0
+          },
+          {
+            "x": 10.0,
+            "y": 200.0
+          }
+        ]
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererParams": {
+    "centerText": "GUImux3",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler"
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.am2900/components/GUIsel1.json b/net.mograsim.logic.model.am2900/components/GUIsel1.json
new file mode 100644 (file)
index 0000000..26a25cf
--- /dev/null
@@ -0,0 +1,208 @@
+mograsim version: 0.1.3
+{
+  "width": 35.0,
+  "height": 40.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 25.0
+      },
+      "name": "I1",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 35.0
+      },
+      "name": "I2",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 35.0,
+        "y": 5.0
+      },
+      "name": "Y",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 5.0
+      },
+      "name": "S1",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 15.0
+      },
+      "name": "S2",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.4,
+    "subComps": [
+      {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
+        "pos": {
+          "x": 35.0,
+          "y": 30.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUINandGate",
+        "name": "GUINandGate#3",
+        "pos": {
+          "x": 60.0,
+          "y": 40.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
+        "pos": {
+          "x": 35.0,
+          "y": 55.0
+        },
+        "params": 1
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "GUINandGate#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUINandGate#3",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#9"
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUINandGate#3",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#8"
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I2"
+        },
+        "pin2": {
+          "compName": "GUINandGate#2",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#7",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 87.5
+          },
+          {
+            "x": 15.0,
+            "y": 70.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "S2"
+        },
+        "pin2": {
+          "compName": "GUINandGate#2",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 37.5
+          },
+          {
+            "x": 15.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "S1"
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 12.5
+          },
+          {
+            "x": 25.0,
+            "y": 35.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I1"
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#5",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 62.5
+          },
+          {
+            "x": 25.0,
+            "y": 45.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#3",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#10"
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererParams": {
+    "centerText": "GUIsel1",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "default"
+}
\ No newline at end of file
index 9e1fd5d..33bddda 100644 (file)
@@ -1,52 +1,44 @@
 mograsim version: 0.1.3
 {
-  "width": 72.0,
-  "height": 61.0,
+  "width": 120.0,
+  "height": 94.0,
   "interfacePins": [
     {
       "location": {
-        "x": -14.600000000000001,
-        "y": 24.400000000000002
+        "x": 0.0,
+        "y": 25.0
       },
       "name": "IOVR",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": -14.600000000000001,
-        "y": 19.400000000000002
+        "x": 0.0,
+        "y": 30.0
       },
       "name": "_CEM",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": 0.4,
-        "y": 5.4
+        "x": 0.0,
+        "y": 5.0
       },
       "name": "C",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": -14.600000000000001,
-        "y": 29.400000000000002
-      },
-      "name": "YN_in",
-      "logicWidth": 1
-    },
-    {
-      "location": {
-        "x": 0.4,
-        "y": 31.400000000000002
+        "x": 0.0,
+        "y": 61.0
       },
       "name": "I",
       "logicWidth": 13
     },
     {
       "location": {
-        "x": -14.600000000000001,
-        "y": 9.4
+        "x": 0.0,
+        "y": 40.0
       },
       "name": "_EN",
       "logicWidth": 1
@@ -61,26 +53,26 @@ mograsim version: 0.1.3
     },
     {
       "location": {
-        "x": -24.6,
-        "y": 14.4
+        "x": 120.0,
+        "y": 17.0
       },
-      "name": "SIOn_in",
+      "name": "YC",
       "logicWidth": 1
     },
     {
       "location": {
         "x": -24.6,
-        "y": 24.400000000000002
+        "y": 14.4
       },
-      "name": "C0",
+      "name": "SIOn_in",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": -14.600000000000001,
-        "y": 54.400000000000006
+        "x": -24.6,
+        "y": 24.400000000000002
       },
-      "name": "YOVR_in",
+      "name": "C0",
       "logicWidth": 1
     },
     {
@@ -93,26 +85,26 @@ mograsim version: 0.1.3
     },
     {
       "location": {
-        "x": -14.600000000000001,
-        "y": 34.4
+        "x": 0.0,
+        "y": 36.0
       },
-      "name": "YZ_in",
+      "name": "_EZ",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": -24.6,
-        "y": 9.4
+        "x": -14.600000000000001,
+        "y": 14.4
       },
-      "name": "_EZ",
+      "name": "Cx",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": -14.600000000000001,
-        "y": 14.4
+        "x": 120.0,
+        "y": 21.0
       },
-      "name": "Cx",
+      "name": "YN",
       "logicWidth": 1
     },
     {
@@ -125,42 +117,42 @@ mograsim version: 0.1.3
     },
     {
       "location": {
-        "x": -24.6,
-        "y": 29.400000000000002
+        "x": 0.0,
+        "y": 15.0
       },
       "name": "IC",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": -14.600000000000001,
-        "y": 49.400000000000006
+        "x": 0.0,
+        "y": 42.0
       },
       "name": "_EOVR",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": -34.6,
-        "y": 14.4
+        "x": 120.0,
+        "y": 11.0
       },
-      "name": "IN",
+      "name": "YZ",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": -24.6,
-        "y": 39.400000000000006
+        "x": 0.0,
+        "y": 20.0
       },
-      "name": "YC_out",
+      "name": "IN",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": -34.6,
-        "y": -0.6000000000000001
+        "x": 61.0,
+        "y": 0.0
       },
-      "name": "YOVR_out",
+      "name": "_OEY",
       "logicWidth": 1
     },
     {
@@ -189,44 +181,28 @@ mograsim version: 0.1.3
     },
     {
       "location": {
-        "x": -34.6,
-        "y": 24.400000000000002
-      },
-      "name": "YZ_out",
-      "logicWidth": 1
-    },
-    {
-      "location": {
-        "x": -24.6,
-        "y": 4.4
+        "x": 0.0,
+        "y": 10.0
       },
       "name": "IZ",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": -24.6,
-        "y": -0.6000000000000001
+        "x": 120.0,
+        "y": 60.0
       },
       "name": "CT",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": -24.6,
-        "y": 34.4
+        "x": 0.0,
+        "y": 33.0
       },
       "name": "_CEmu",
       "logicWidth": 1
     },
-    {
-      "location": {
-        "x": -34.6,
-        "y": 19.400000000000002
-      },
-      "name": "YN_out",
-      "logicWidth": 1
-    },
     {
       "location": {
         "x": -24.6,
@@ -237,18 +213,18 @@ mograsim version: 0.1.3
     },
     {
       "location": {
-        "x": -34.6,
-        "y": 4.4
+        "x": 120.0,
+        "y": 25.0
       },
-      "name": "_EC",
+      "name": "YOVR",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": -14.600000000000001,
-        "y": 39.400000000000006
+        "x": 0.0,
+        "y": 38.0
       },
-      "name": "YC_in",
+      "name": "_EC",
       "logicWidth": 1
     }
   ],
@@ -257,299 +233,2202 @@ mograsim version: 0.1.3
     "subComps": [
       {
         "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
-        "name": "WireCrossPoint#0",
+        "name": "WireCrossPoint#14",
         "pos": {
-          "x": 190.0,
-          "y": 10.0
+          "x": 520.0,
+          "y": 190.0
         },
-        "params": 1
+        "params": 4
       },
       {
-        "id": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904RegCTInstrDecode",
-        "name": "GUIAm2904RegCTInstrDecode#0",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#13",
         "pos": {
-          "x": 35.0,
-          "y": 80.0
-        }
+          "x": 330.0,
+          "y": 125.0
+        },
+        "params": 1
       },
       {
-        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
-        "name": "GUISplitter#0",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#16",
         "pos": {
-          "x": 5.0,
-          "y": 90.0
+          "x": 255.0,
+          "y": 255.0
         },
-        "params": 13
+        "params": 4
       },
       {
-        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
-        "name": "GUIMerger#1",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#15",
         "pos": {
-          "x": 20.0,
-          "y": 150.0
+          "x": 255.0,
+          "y": 265.0
         },
-        "params": 5
+        "params": 4
       },
       {
-        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
-        "name": "GUIMerger#0",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
-          "x": 20.0,
-          "y": 90.0
+          "x": 180.0,
+          "y": 135.0
         },
-        "params": 6
+        "params": 4
       },
       {
-        "id": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904ShiftInstrDecode",
-        "name": "GUIAm2904ShiftInstrDecode#0",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
-          "x": 40.0,
-          "y": 230.0
-        }
+          "x": 165.0,
+          "y": 150.0
+        },
+        "params": 1
       },
       {
-        "id": "class:net.mograsim.logic.model.am2900.components.GUIdff4_finewe",
-        "name": "GUIdff4_finewe#0",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
-          "x": 195.0,
-          "y": 5.0
-        }
+          "x": 335.0,
+          "y": 270.0
+        },
+        "params": 4
       },
       {
-        "id": "class:net.mograsim.logic.model.am2900.components.GUIdff4_finewe",
-        "name": "GUIdff4_finewe#1",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
-          "x": 195.0,
-          "y": 110.0
-        }
-      }
-    ],
-    "innerWires": [
-      {
-        "pin1": {
-          "compName": "GUISplitter#0",
-          "pinName": "O10"
-        },
-        "pin2": {
-          "compName": "GUIMerger#1",
-          "pinName": "I4"
+          "x": 295.0,
+          "y": 120.0
         },
-        "name": "unnamedWire#14",
-        "path": []
+        "params": 4
       },
       {
-        "pin1": {
-          "compName": "GUIMerger#1",
-          "pinName": "I3"
-        },
-        "pin2": {
-          "compName": "GUISplitter#0",
-          "pinName": "O9"
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 530.0,
+          "y": 100.0
         },
-        "name": "unnamedWire#13",
-        "path": []
+        "params": 4
       },
       {
-        "pin1": {
-          "compName": "GUIAm2904ShiftInstrDecode#0",
-          "pinName": "I"
-        },
-        "pin2": {
-          "compName": "GUIMerger#1",
-          "pinName": "O"
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 150.0,
+          "y": 160.0
         },
-        "name": "unnamedWire#16",
-        "path": [
-          {
-            "x": 35.0,
-            "y": 265.0
-          },
-          {
-            "x": 35.0,
-            "y": 175.0
-          }
-        ]
+        "params": 1
       },
       {
-        "pin1": {
-          "compName": "GUIMerger#0",
-          "pinName": "O"
-        },
-        "pin2": {
-          "compName": "GUIAm2904RegCTInstrDecode#0",
-          "pinName": "I"
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#7",
+        "pos": {
+          "x": 215.0,
+          "y": 180.0
         },
-        "name": "unnamedWire#15",
-        "path": []
+        "params": 1
       },
       {
-        "pin1": {
-          "compName": "GUIMerger#0",
-          "pinName": "I5"
-        },
-        "pin2": {
-          "compName": "GUISplitter#0",
-          "pinName": "O5"
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUITriStateBuffer",
+        "name": "GUITriStateBuffer#0",
+        "pos": {
+          "x": 530.0,
+          "y": 170.0
         },
-        "name": "unnamedWire#9",
-        "path": []
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
-        "pin1": {
-          "compName": "GUISplitter#0",
-          "pinName": "O4"
-        },
-        "pin2": {
-          "compName": "GUIMerger#0",
-          "pinName": "I4"
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 120.0,
+          "y": 15.0
         },
-        "name": "unnamedWire#8",
-        "path": []
+        "params": 1
       },
       {
-        "pin1": {
-          "compName": "GUIMerger#0",
-          "pinName": "I3"
-        },
-        "pin2": {
-          "compName": "GUISplitter#0",
-          "pinName": "O3"
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 215.0,
+          "y": 200.0
         },
-        "name": "unnamedWire#7",
-        "path": []
+        "params": 1
       },
       {
-        "pin1": {
-          "compName": "GUISplitter#0",
-          "pinName": "O2"
-        },
-        "pin2": {
-          "compName": "GUIMerger#0",
-          "pinName": "I2"
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#8",
+        "pos": {
+          "x": 215.0,
+          "y": 160.0
         },
-        "name": "unnamedWire#6",
-        "path": []
+        "params": 1
       },
       {
-        "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIdff4_finewe#0",
-          "pinName": "C"
-        },
-        "name": "unnamedWire#1",
-        "path": []
+        "id": "GUIAm2904muSR",
+        "name": "DeserializedSubmodelComponent#1",
+        "pos": {
+          "x": 270.0,
+          "y": 250.0
+        }
       },
       {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "C"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#10",
+        "pos": {
+          "x": 195.0,
+          "y": 55.0
         },
-        "name": "unnamedWire#0",
-        "path": [
-          {
-            "x": 5.0,
-            "y": 25.0
-          },
-          {
-            "x": 5.0,
-            "y": 10.0
-          }
-        ]
+        "params": 1
       },
       {
-        "pin1": {
-          "compName": "GUIMerger#0",
-          "pinName": "I1"
-        },
-        "pin2": {
-          "compName": "GUISplitter#0",
-          "pinName": "O1"
-        },
-        "name": "unnamedWire#5",
-        "path": []
+        "id": "GUIAm2904MSR",
+        "name": "DeserializedSubmodelComponent#0",
+        "pos": {
+          "x": 225.0,
+          "y": 95.0
+        }
       },
       {
-        "pin1": {
-          "compName": "GUISplitter#0",
-          "pinName": "O6"
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#12",
+        "pos": {
+          "x": 195.0,
+          "y": 35.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#3",
+        "pos": {
+          "x": 470.0,
+          "y": 160.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#11",
+        "pos": {
+          "x": 195.0,
+          "y": 15.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUIand",
+        "name": "DeserializedSubmodelComponent#2",
+        "pos": {
+          "x": 370.0,
+          "y": 130.0
+        }
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#5",
+        "pos": {
+          "x": 415.0,
+          "y": 210.0
+        }
+      },
+      {
+        "id": "GUInot4",
+        "name": "DeserializedSubmodelComponent#4",
+        "pos": {
+          "x": 135.0,
+          "y": 40.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+        "name": "GUIMerger#3",
+        "pos": {
+          "x": 510.0,
+          "y": 165.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUImux3",
+        "name": "DeserializedSubmodelComponent#7",
+        "pos": {
+          "x": 300.0,
+          "y": 310.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+        "name": "GUIMerger#2",
+        "pos": {
+          "x": 15.0,
+          "y": 65.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUIAm2904TestLogic",
+        "name": "DeserializedSubmodelComponent#6",
+        "pos": {
+          "x": 225.0,
+          "y": 340.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+        "name": "GUIMerger#1",
+        "pos": {
+          "x": 25.0,
+          "y": 305.0
+        },
+        "params": 5
+      },
+      {
+        "id": "GUImux1",
+        "name": "DeserializedSubmodelComponent#9",
+        "pos": {
+          "x": 480.0,
+          "y": 305.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+        "name": "GUIMerger#0",
+        "pos": {
+          "x": 25.0,
+          "y": 245.0
+        },
+        "params": 6
+      },
+      {
+        "id": "GUIxor",
+        "name": "DeserializedSubmodelComponent#8",
+        "pos": {
+          "x": 540.0,
+          "y": 295.0
+        }
+      },
+      {
+        "id": "GUIxor",
+        "name": "DeserializedSubmodelComponent#10",
+        "pos": {
+          "x": 485.0,
+          "y": 355.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#10",
+        "pos": {
+          "x": 340.0,
+          "y": 120.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#9",
+        "pos": {
+          "x": 205.0,
+          "y": 10.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#8",
+        "pos": {
+          "x": 205.0,
+          "y": 30.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#5",
+        "pos": {
+          "x": 225.0,
+          "y": 175.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#4",
+        "pos": {
+          "x": 225.0,
+          "y": 155.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#7",
+        "pos": {
+          "x": 205.0,
+          "y": 50.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#6",
+        "pos": {
+          "x": 205.0,
+          "y": 70.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#1",
+        "pos": {
+          "x": 130.0,
+          "y": 5.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#0",
+        "pos": {
+          "x": 190.0,
+          "y": 145.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#3",
+        "pos": {
+          "x": 225.0,
+          "y": 215.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#2",
+        "pos": {
+          "x": 225.0,
+          "y": 195.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#4",
+        "pos": {
+          "x": 395.0,
+          "y": 225.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#3",
+        "pos": {
+          "x": 450.0,
+          "y": 175.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#2",
+        "pos": {
+          "x": 395.0,
+          "y": 195.0
+        },
+        "params": 2
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#1",
+        "pos": {
+          "x": 555.0,
+          "y": 80.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#8",
+        "pos": {
+          "x": 445.0,
+          "y": 370.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#7",
+        "pos": {
+          "x": 445.0,
+          "y": 330.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#6",
+        "pos": {
+          "x": 285.0,
+          "y": 320.0
+        },
+        "params": 3
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#5",
+        "pos": {
+          "x": 395.0,
+          "y": 265.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#0",
+        "pos": {
+          "x": 10.0,
+          "y": 245.0
+        },
+        "params": 13
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904RegCTInstrDecode",
+        "name": "GUIAm2904RegCTInstrDecode#0",
+        "pos": {
+          "x": 50.0,
+          "y": 230.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904ShiftInstrDecode",
+        "name": "GUIAm2904ShiftInstrDecode#0",
+        "pos": {
+          "x": 50.0,
+          "y": 360.0
+        }
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#36",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_CEmu"
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#38",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#4",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#37",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#5",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#39",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#5",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I1_4"
+        },
+        "name": "unnamedWire#110",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#5",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#111",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y111"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I111"
+        },
+        "name": "unnamedWire#114",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I110"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y110"
+        },
+        "name": "unnamedWire#115",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUITriStateBuffer#0",
+          "pinName": "IN"
+        },
+        "name": "unnamedWire#112",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#113",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y011"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I011"
+        },
+        "name": "unnamedWire#118",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y010"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I010"
+        },
+        "name": "unnamedWire#119",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#2",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#41",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y101"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I101"
+        },
+        "name": "unnamedWire#116",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#40",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I100"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y100"
+        },
+        "name": "unnamedWire#117",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#3",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "_EOVR"
+        },
+        "name": "unnamedWire#43",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#3",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#42",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "_EC"
+        },
+        "pin2": {
+          "compName": "GUINandGate#5",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#45",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "_EN"
+        },
+        "name": "unnamedWire#44",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#4",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "muSR_WEZ"
+        },
+        "name": "unnamedWire#47",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#4",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "_EZ"
+        },
+        "name": "unnamedWire#46",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "YZ"
+        },
+        "name": "unnamedWire#49",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "muSR_WEC"
+        },
+        "pin2": {
+          "compName": "GUINandGate#5",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#48",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I0_4"
+        },
+        "name": "unnamedWire#100",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#4",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I0_2"
+        },
+        "name": "unnamedWire#103",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I0_3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#4",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#104",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#101",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#4",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#102",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "YC"
+        },
+        "pin2": {
+          "compName": "GUISplitter#1",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#50",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#5",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I1_1"
+        },
+        "name": "unnamedWire#107",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#5",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I1_2"
+        },
+        "name": "unnamedWire#108",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "YOVR"
+        },
+        "pin2": {
+          "compName": "GUISplitter#1",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#52",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#4",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I0_4"
+        },
+        "name": "unnamedWire#105",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "YN"
+        },
+        "name": "unnamedWire#51",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#4",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#106",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#54",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#53",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#1",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#56",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I1_3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#5",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#109",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#55",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O10"
+        },
+        "pin2": {
+          "compName": "GUIMerger#1",
+          "pinName": "I4"
+        },
+        "name": "unnamedWire#14",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#1",
+          "pinName": "I3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O9"
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904ShiftInstrDecode#0",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "GUIMerger#1",
+          "pinName": "O"
+        },
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 395.0
+          },
+          {
+            "x": 40.0,
+            "y": 325.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "O"
+        },
+        "pin2": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#15",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "IN"
+        },
+        "pin2": {
+          "compName": "GUIMerger#2",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#18",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 100.0
+          },
+          {
+            "x": 5.0,
+            "y": 85.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "IOVR"
+        },
+        "pin2": {
+          "compName": "GUIMerger#2",
+          "pinName": "I3"
+        },
+        "name": "unnamedWire#17",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 125.0
+          },
+          {
+            "x": 10.0,
+            "y": 95.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "IC"
+        },
+        "pin2": {
+          "compName": "GUIMerger#2",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "muSR_CINV"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "CINV"
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "IZ"
+        },
+        "pin2": {
+          "compName": "GUIMerger#2",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#20",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 50.0
+          },
+          {
+            "x": 5.0,
+            "y": 65.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#2",
+          "pinName": "O"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#25",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "mu"
+        },
+        "name": "unnamedWire#28",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#30",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904ShiftInstrDecode#0",
+          "pinName": "MC_EN"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "COVD_EN"
+        },
+        "name": "unnamedWire#32",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "MSR_MUX"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "MUX"
+        },
+        "name": "unnamedWire#31",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#34",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#0",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#33",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUITriStateBuffer#0",
+          "pinName": "OUT"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#79",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#10",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "name": "unnamedWire#81",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#10",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#80",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#10",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#83",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_OEY"
+        },
+        "name": "unnamedWire#82",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I1_1"
+        },
+        "name": "unnamedWire#85",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUITriStateBuffer#0",
+          "pinName": "EN"
+        },
+        "name": "unnamedWire#84",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I1_3"
+        },
+        "name": "unnamedWire#87",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I1_2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "Y2"
+        },
+        "name": "unnamedWire#86",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "GUIMerger#3",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#89",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I1_4"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "Y4"
+        },
+        "name": "unnamedWire#88",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "I5"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I4"
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "I3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#3",
+          "pinName": "I1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "Y2"
+        },
+        "name": "unnamedWire#90",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#3",
+          "pinName": "I3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "Y4"
+        },
+        "name": "unnamedWire#92",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "GUIMerger#3",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#91",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "muSR_MUX"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "MUX"
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "Y_MUX"
+        },
+        "pin2": {
+          "compName": "GUISplitter#2",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#94",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 25.0
+          },
+          {
+            "x": 5.0,
+            "y": 10.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#3",
+          "pinName": "O"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#93",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#96",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#95",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "I1"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "GUIMerger#1",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#10",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I0_2"
+        },
+        "pin2": {
+          "compName": "GUISplitter#3",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#98",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#97",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O8"
+        },
+        "pin2": {
+          "compName": "GUIMerger#1",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#12",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#1",
+          "pinName": "I1"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#11",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "muSR_OVRRET"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "OVRRET"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I0_3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#3",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#99",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#2",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "muSR_WEN"
+        },
+        "name": "unnamedWire#58",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_CEM"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#57",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "muSR_WEOVR"
+        },
+        "pin2": {
+          "compName": "GUINandGate#3",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#59",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#132",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUISplitter#7",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#133",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#8",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "CT_INV"
+        },
+        "name": "unnamedWire#130",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#10",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#9",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#131",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIMerger#1",
-          "pinName": "I0"
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "M"
         },
-        "name": "unnamedWire#10",
+        "name": "unnamedWire#136",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUISplitter#0",
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUISplitter#8",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#137",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#7",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#10",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#134",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#8",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#10",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#135",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#7",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#61",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#6",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#60",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#9",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#63",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "OEN"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#138",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#8",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#62",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#65",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "name": "unnamedWire#64",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "_EN"
+        },
+        "pin2": {
+          "compName": "GUINandGate#7",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#67",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#6",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "_EOVR"
+        },
+        "name": "unnamedWire#66",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#9",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "_EZ"
+        },
+        "name": "unnamedWire#69",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#8",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "_EC"
+        },
+        "name": "unnamedWire#68",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y000"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I000"
+        },
+        "name": "unnamedWire#121",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#8",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "CT"
+        },
+        "name": "unnamedWire#122",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I001"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y001"
+        },
+        "name": "unnamedWire#120",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#6",
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "GUIMerger#0",
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#125",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "S1"
+        },
+        "pin2": {
+          "compName": "GUISplitter#6",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#126",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#70",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#9",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#8",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#123",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#6",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "CT_MUX"
+        },
+        "name": "unnamedWire#124",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#8",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "Y2"
+        },
+        "name": "unnamedWire#72",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#9",
           "pinName": "I0"
         },
-        "name": "unnamedWire#4",
+        "name": "unnamedWire#129",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "GUINandGate#9",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#71",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "Y4"
+        },
+        "pin2": {
+          "compName": "GUINandGate#6",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#74",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#6",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "S2"
+        },
+        "name": "unnamedWire#127",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "GUINandGate#7",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#73",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "CT_EXP"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#9",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#128",
         "path": []
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "I"
+          "pinName": "_EC"
         },
         "pin2": {
-          "compName": "GUISplitter#0",
-          "pinName": "I"
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "A2"
         },
-        "name": "unnamedWire#3",
+        "name": "unnamedWire#76",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUISplitter#0",
-          "pinName": "O8"
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "A1"
         },
         "pin2": {
-          "compName": "GUIMerger#1",
-          "pinName": "I2"
+          "compName": "_submodelinterface",
+          "pinName": "_EZ"
         },
-        "name": "unnamedWire#12",
+        "name": "unnamedWire#75",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "_EOVR"
         },
         "pin2": {
-          "compName": "GUIdff4_finewe#1",
-          "pinName": "C"
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "A4"
         },
-        "name": "unnamedWire#2",
-        "path": [
-          {
-            "x": 190.0,
-            "y": 115.0
-          }
-        ]
+        "name": "unnamedWire#78",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIMerger#1",
-          "pinName": "I1"
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "A3"
         },
         "pin2": {
-          "compName": "GUISplitter#0",
-          "pinName": "O7"
+          "compName": "_submodelinterface",
+          "pinName": "_EN"
         },
-        "name": "unnamedWire#11",
+        "name": "unnamedWire#77",
         "path": []
       }
     ]
index ff3abac..26928e5 100644 (file)
@@ -1,36 +1,36 @@
 mograsim version: 0.1.3
 {
-  "width": 29.0,
-  "height": 45.0,
+  "width": 60.0,
+  "height": 90.0,
   "interfacePins": [
     {
       "location": {
-        "x": 29.0,
-        "y": 30.0
+        "x": 60.0,
+        "y": 60.0
       },
       "name": "Y101",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": 29.0,
-        "y": 10.0
+        "x": 60.0,
+        "y": 20.0
       },
       "name": "Y001",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": 29.0,
-        "y": 25.0
+        "x": 60.0,
+        "y": 50.0
       },
       "name": "Y100",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": 29.0,
-        "y": 40.0
+        "x": 60.0,
+        "y": 80.0
       },
       "name": "Y111",
       "logicWidth": 1
@@ -38,139 +38,139 @@ mograsim version: 0.1.3
     {
       "location": {
         "x": 0.0,
-        "y": 22.0
+        "y": 50.0
       },
       "name": "I",
       "logicWidth": 4
     },
     {
       "location": {
-        "x": 29.0,
-        "y": 20.0
+        "x": 60.0,
+        "y": 40.0
       },
       "name": "Y011",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": 29.0,
-        "y": 5.0
+        "x": 60.0,
+        "y": 10.0
       },
       "name": "Y000",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": 29.0,
-        "y": 35.0
+        "x": 60.0,
+        "y": 70.0
       },
       "name": "Y110",
       "logicWidth": 1
     },
     {
       "location": {
-        "x": 29.0,
-        "y": 15.0
+        "x": 60.0,
+        "y": 30.0
       },
       "name": "Y010",
       "logicWidth": 1
     }
   ],
   "submodel": {
-    "innerScale": 0.2,
+    "innerScale": 0.4,
     "subComps": [
       {
-        "id": "GUINandGate",
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
         "name": "GUINandGate#1",
         "pos": {
-          "x": 40.0,
+          "x": 45.0,
           "y": 50.0
         },
         "params": 1
       },
       {
-        "id": "GUINandGate",
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
         "name": "GUINandGate#0",
         "pos": {
-          "x": 80.0,
+          "x": 85.0,
           "y": 20.0
         },
         "params": 1
       },
       {
-        "id": "GUINandGate",
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
         "name": "GUINandGate#3",
         "pos": {
-          "x": 40.0,
+          "x": 45.0,
           "y": 105.0
         },
         "params": 1
       },
       {
-        "id": "GUINandGate",
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
         "name": "GUINandGate#2",
         "pos": {
-          "x": 115.0,
+          "x": 120.0,
           "y": 15.0
         },
         "params": 1
       },
       {
-        "id": "WireCrossPoint",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
         "name": "WireCrossPoint#1",
         "pos": {
-          "x": 29.0,
+          "x": 34.0,
           "y": 99.0
         },
         "params": 1
       },
       {
-        "id": "WireCrossPoint",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
         "name": "WireCrossPoint#0",
         "pos": {
-          "x": 24.0,
-          "y": 114.0
+          "x": 29.0,
+          "y": 129.0
         },
         "params": 1
       },
       {
-        "id": "GUISplitter",
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
         "name": "GUISplitter#0",
         "pos": {
           "x": 5.0,
-          "y": 95.0
+          "y": 110.0
         },
         "params": 4
       },
       {
-        "id": "WireCrossPoint",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
         "name": "WireCrossPoint#3",
         "pos": {
-          "x": 74.0,
+          "x": 79.0,
           "y": 24.0
         },
         "params": 1
       },
       {
-        "id": "WireCrossPoint",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
         "name": "WireCrossPoint#2",
         "pos": {
-          "x": 74.0,
+          "x": 79.0,
           "y": 34.0
         },
         "params": 1
       },
       {
-        "id": "WireCrossPoint",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
         "name": "WireCrossPoint#5",
         "pos": {
-          "x": 19.0,
-          "y": 109.0
+          "x": 24.0,
+          "y": 119.0
         },
         "params": 1
       },
       {
-        "id": "WireCrossPoint",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
         "name": "WireCrossPoint#4",
         "pos": {
           "x": 19.0,
@@ -179,55 +179,55 @@ mograsim version: 0.1.3
         "params": 1
       },
       {
-        "id": "WireCrossPoint",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
         "name": "WireCrossPoint#7",
         "pos": {
-          "x": 69.0,
+          "x": 74.0,
           "y": 59.0
         },
         "params": 1
       },
       {
-        "id": "WireCrossPoint",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
         "name": "WireCrossPoint#6",
         "pos": {
-          "x": 34.0,
+          "x": 39.0,
           "y": 64.0
         },
         "params": 1
       },
       {
-        "id": "WireCrossPoint",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
         "name": "WireCrossPoint#9",
         "pos": {
-          "x": 19.0,
+          "x": 24.0,
           "y": 149.0
         },
         "params": 1
       },
       {
-        "id": "WireCrossPoint",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
         "name": "WireCrossPoint#8",
         "pos": {
-          "x": 69.0,
+          "x": 74.0,
           "y": 119.0
         },
         "params": 1
       },
       {
-        "id": "GUINandGate",
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
         "name": "GUINandGate#5",
         "pos": {
-          "x": 75.0,
+          "x": 80.0,
           "y": 165.0
         },
         "params": 1
       },
       {
-        "id": "WireCrossPoint",
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
         "name": "WireCrossPoint#10",
         "pos": {
-          "x": 34.0,
+          "x": 39.0,
           "y": 109.0
         },
         "params": 1
@@ -236,15 +236,15 @@ mograsim version: 0.1.3
         "id": "GUIxor",
         "name": "DeserializedSubmodelComponent#0",
         "pos": {
-          "x": 35.0,
+          "x": 40.0,
           "y": 20.0
         }
       },
       {
-        "id": "GUINandGate",
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
         "name": "GUINandGate#4",
         "pos": {
-          "x": 75.0,
+          "x": 80.0,
           "y": 115.0
         },
         "params": 1
@@ -263,15 +263,11 @@ mograsim version: 0.1.3
         "name": "unnamedWire#14",
         "path": [
           {
-            "x": 70.0,
-            "y": 45.0
-          },
-          {
-            "x": 110.0,
-            "y": 45.0
+            "x": 115.0,
+            "y": 60.0
           },
           {
-            "x": 110.0,
+            "x": 115.0,
             "y": 30.0
           }
         ]
@@ -312,7 +308,7 @@ mograsim version: 0.1.3
         "name": "unnamedWire#15",
         "path": [
           {
-            "x": 75.0,
+            "x": 80.0,
             "y": 50.0
           }
         ]
@@ -339,7 +335,12 @@ mograsim version: 0.1.3
           "pinName": ""
         },
         "name": "unnamedWire#17",
-        "path": []
+        "path": [
+          {
+            "x": 25.0,
+            "y": 110.0
+          }
+        ]
       },
       {
         "pin1": {
@@ -351,12 +352,7 @@ mograsim version: 0.1.3
           "pinName": ""
         },
         "name": "unnamedWire#19",
-        "path": [
-          {
-            "x": 20.0,
-            "y": 105.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
@@ -371,7 +367,7 @@ mograsim version: 0.1.3
         "path": [
           {
             "x": 20.0,
-            "y": 95.0
+            "y": 110.0
           }
         ]
       },
@@ -435,11 +431,11 @@ mograsim version: 0.1.3
         "name": "unnamedWire#24",
         "path": [
           {
-            "x": 65.0,
+            "x": 70.0,
             "y": 115.0
           },
           {
-            "x": 65.0,
+            "x": 70.0,
             "y": 130.0
           }
         ]
@@ -576,7 +572,7 @@ mograsim version: 0.1.3
         "name": "unnamedWire#30",
         "path": [
           {
-            "x": 70.0,
+            "x": 75.0,
             "y": 170.0
           }
         ]
@@ -593,11 +589,11 @@ mograsim version: 0.1.3
         "name": "unnamedWire#10",
         "path": [
           {
-            "x": 105.0,
+            "x": 110.0,
             "y": 20.0
           },
           {
-            "x": 105.0,
+            "x": 110.0,
             "y": 30.0
           }
         ]
@@ -626,7 +622,7 @@ mograsim version: 0.1.3
         "name": "unnamedWire#32",
         "path": [
           {
-            "x": 20.0,
+            "x": 25.0,
             "y": 180.0
           }
         ]
@@ -643,7 +639,7 @@ mograsim version: 0.1.3
         "name": "unnamedWire#4",
         "path": [
           {
-            "x": 30.0,
+            "x": 35.0,
             "y": 35.0
           }
         ]
@@ -660,7 +656,7 @@ mograsim version: 0.1.3
         "name": "unnamedWire#31",
         "path": [
           {
-            "x": 35.0,
+            "x": 40.0,
             "y": 120.0
           }
         ]
@@ -677,7 +673,7 @@ mograsim version: 0.1.3
         "name": "unnamedWire#3",
         "path": [
           {
-            "x": 25.0,
+            "x": 30.0,
             "y": 25.0
           }
         ]
@@ -694,7 +690,7 @@ mograsim version: 0.1.3
         "name": "unnamedWire#12",
         "path": [
           {
-            "x": 35.0,
+            "x": 40.0,
             "y": 55.0
           }
         ]
@@ -711,8 +707,8 @@ mograsim version: 0.1.3
         "name": "unnamedWire#2",
         "path": [
           {
-            "x": 30.0,
-            "y": 125.0
+            "x": 35.0,
+            "y": 140.0
           }
         ]
       },
@@ -745,7 +741,7 @@ mograsim version: 0.1.3
         "name": "unnamedWire#33",
         "path": [
           {
-            "x": 25.0,
+            "x": 30.0,
             "y": 200.0
           }
         ]
index b9e7b2b..b906d5b 100644 (file)
@@ -32,10 +32,10 @@ public class GUIAm2904RegCTInstrDecode extends SimpleRectangularHardcodedGUIComp
                addPin(new Pin(this, "muSR_MUX", 2, 80, 10), Usage.OUTPUT, Position.LEFT);
                addPin(new Pin(this, "muSR_OVRRET", 1, 80, 20), Usage.OUTPUT, Position.LEFT);
                addPin(new Pin(this, "muSR_CINV", 1, 80, 30), Usage.OUTPUT, Position.LEFT);
-               addPin(new Pin(this, "muSR__WEZ", 1, 80, 40), Usage.OUTPUT, Position.LEFT);
-               addPin(new Pin(this, "muSR__WEC", 1, 80, 50), Usage.OUTPUT, Position.LEFT);
-               addPin(new Pin(this, "muSR__WEN", 1, 80, 60), Usage.OUTPUT, Position.LEFT);
-               addPin(new Pin(this, "muSR__WEOVR", 1, 80, 70), Usage.OUTPUT, Position.LEFT);
+               addPin(new Pin(this, "muSR_WEZ", 1, 80, 40), Usage.OUTPUT, Position.LEFT);
+               addPin(new Pin(this, "muSR_WEC", 1, 80, 50), Usage.OUTPUT, Position.LEFT);
+               addPin(new Pin(this, "muSR_WEN", 1, 80, 60), Usage.OUTPUT, Position.LEFT);
+               addPin(new Pin(this, "muSR_WEOVR", 1, 80, 70), Usage.OUTPUT, Position.LEFT);
                // MSR MUX:
                // 000: 0
                // 001: 1
@@ -45,13 +45,15 @@ public class GUIAm2904RegCTInstrDecode extends SimpleRectangularHardcodedGUIComp
                // 101: I, invert C
                // 110: Swap OVR and C
                // 111: _M
-               addPin(new Pin(this, "MSR_MUX", 3, 40, 0), Usage.OUTPUT, Position.BOTTOM);
+               addPin(new Pin(this, "MSR_MUX", 3, 20, 0), Usage.OUTPUT, Position.BOTTOM);
+               // TODO when is this HIGH?
+               addPin(new Pin(this, "OEN", 1, 60, 0), Usage.OUTPUT, Position.BOTTOM);
                // CT SRC MUX:
                // 00: mu
                // 01: mu
                // 10: M
                // 11: I
-               addPin(new Pin(this, "CT_SRC_MUX", 2, 10, 80), Usage.OUTPUT, Position.TOP);
+               addPin(new Pin(this, "Y_MUX", 2, 10, 80), Usage.OUTPUT, Position.TOP);
                // CT MUX:
                // see Am2900 Family Data Book, Am2904, Table 4 (CT_MUX2-0 = I3-1)
                addPin(new Pin(this, "CT_MUX", 3, 30, 80), Usage.OUTPUT, Position.TOP);
@@ -91,110 +93,110 @@ public class GUIAm2904RegCTInstrDecode extends SimpleRectangularHardcodedGUIComp
                        readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
                        readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
                        readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEZ").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEC").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEN").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEOVR").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
                        break;
                case 1:
                        readWriteEnds.get("muSR_MUX").feedSignals(ONE, ZERO);
                        readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
                        readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEZ").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEC").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEN").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEOVR").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
                        break;
                case 3:
                        readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
                        readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
                        readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEZ").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEC").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEN").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEOVR").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
                        break;
                case 6:
                case 7:
                        readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE);
                        readWriteEnds.get("muSR_OVRRET").feedSignals(ONE);
                        readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEZ").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEC").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEN").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEOVR").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
                        break;
                case 8:
                        readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
                        readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
                        readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEZ").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEC").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEN").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEOVR").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
                        break;
                case 9:
                        readWriteEnds.get("muSR_MUX").feedSignals(ONE, ZERO);
                        readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
                        readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEZ").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEC").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEN").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEOVR").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
                        break;
                case 10:
                        readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
                        readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
                        readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEZ").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEC").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEN").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEOVR").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
                        break;
                case 11:
                        readWriteEnds.get("muSR_MUX").feedSignals(ONE, ZERO);
                        readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
                        readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEZ").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEC").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEN").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEOVR").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
                        break;
                case 12:
                        readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
                        readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
                        readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEZ").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEC").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEN").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEOVR").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
                        break;
                case 13:
                        readWriteEnds.get("muSR_MUX").feedSignals(ONE, ZERO);
                        readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
                        readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEZ").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEC").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEN").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEOVR").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
                        break;
                case 14:
                        readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
                        readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
                        readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEZ").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEC").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEN").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEOVR").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
                        break;
                case 15:
                        readWriteEnds.get("muSR_MUX").feedSignals(ONE, ZERO);
                        readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
                        readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEZ").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEC").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEN").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEOVR").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
                        break;
                case 24:
                case 25:
@@ -205,19 +207,19 @@ public class GUIAm2904RegCTInstrDecode extends SimpleRectangularHardcodedGUIComp
                        readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE);
                        readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
                        readWriteEnds.get("muSR_CINV").feedSignals(ONE);
-                       readWriteEnds.get("muSR__WEZ").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEC").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEN").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEOVR").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
                        break;
                default:
                        readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE);
                        readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
                        readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEZ").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEC").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEN").feedSignals(ZERO);
-                       readWriteEnds.get("muSR__WEOVR").feedSignals(ZERO);
+                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
+                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
                }
                switch (IAsInt)
                {
@@ -253,7 +255,7 @@ public class GUIAm2904RegCTInstrDecode extends SimpleRectangularHardcodedGUIComp
                        readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ZERO, ONE);
                        break;
                }
-               readWriteEnds.get("CT_SRC_MUX").feedSignals(IBits[0], IBits[1]);
+               readWriteEnds.get("Y_MUX").feedSignals(IBits[0], IBits[1]);
                readWriteEnds.get("CT_INV").feedSignals(IBits[5]);
                readWriteEnds.get("CT_MUX").feedSignals(IBits[2], IBits[3], IBits[4]);
                readWriteEnds.get("CT_EXP").feedSignals((IAsInt & 0b1110) == 0b1110 ? ONE : ZERO);
index 3bef1a0..e5b24f1 100644 (file)
@@ -25,7 +25,7 @@ public class GUIComponentTestbench
        @SuppressWarnings("unused") // for GUIWires being created
        public static void createTestbench(ViewModelModifiable model)
        {
-               GUIComponent comp = IndirectGUIComponentCreator.createComponent(model, "file:components/am2904/GUIAm2904TestLogic.json");
+               GUIComponent comp = IndirectGUIComponentCreator.createComponent(model, "file:components/am2904/GUIAm2904.json");
 
                // guess which pins are outputs and which are inputs
                // TODO this code exists four times... but it seems too "hacky" to put it in a helper class
diff --git a/net.mograsim.logic.model.editor/components/GUIdff4.json b/net.mograsim.logic.model.editor/components/GUIdff4.json
new file mode 100644 (file)
index 0000000..4064f93
--- /dev/null
@@ -0,0 +1,716 @@
+mograsim version: 0.1.3
+{
+  "width": 35.0,
+  "height": 60.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 55.0
+      },
+      "name": "D4",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 35.0,
+        "y": 5.0
+      },
+      "name": "Q1",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 35.0,
+        "y": 15.0
+      },
+      "name": "Q2",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 35.0,
+        "y": 25.0
+      },
+      "name": "Q3",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 5.0
+      },
+      "name": "C",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 35.0,
+        "y": 35.0
+      },
+      "name": "Q4",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 25.0
+      },
+      "name": "D1",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 15.0
+      },
+      "name": "WE",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 35.0
+      },
+      "name": "D2",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 45.0
+      },
+      "name": "D3",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.2,
+    "subComps": [
+      {
+        "id": "GUIdff",
+        "name": "GUIdff#1",
+        "pos": {
+          "x": 115.0,
+          "y": 70.0
+        }
+      },
+      {
+        "id": "GUIdff",
+        "name": "GUIdff#0",
+        "pos": {
+          "x": 115.0,
+          "y": 20.0
+        }
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 104.0,
+          "y": 74.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 104.0,
+          "y": 24.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 169.0,
+          "y": 24.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 104.0,
+          "y": 124.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 159.0,
+          "y": 124.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 164.0,
+          "y": 74.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 154.0,
+          "y": 174.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#0",
+        "pos": {
+          "x": 55.0,
+          "y": 70.0
+        }
+      },
+      {
+        "id": "GUIdff",
+        "name": "GUIdff#3",
+        "pos": {
+          "x": 115.0,
+          "y": 170.0
+        }
+      },
+      {
+        "id": "GUIdff",
+        "name": "GUIdff#2",
+        "pos": {
+          "x": 115.0,
+          "y": 120.0
+        }
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Q1"
+        },
+        "name": "unnamedWire#14",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff#0",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff#1",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#16",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "Q2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#15",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff#2",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D4"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_4"
+        },
+        "name": "unnamedWire#17",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 275.0
+          },
+          {
+            "x": 15.0,
+            "y": 155.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Q3"
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff#3",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Q4"
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y4"
+        },
+        "pin2": {
+          "compName": "GUIdff#3",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#23",
+        "path": [
+          {
+            "x": 95.0,
+            "y": 105.0
+          },
+          {
+            "x": 95.0,
+            "y": 185.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "GUIdff#2",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#22",
+        "path": [
+          {
+            "x": 100.0,
+            "y": 95.0
+          },
+          {
+            "x": 100.0,
+            "y": 135.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_2"
+        },
+        "name": "unnamedWire#25",
+        "path": [
+          {
+            "x": 165.0,
+            "y": 200.0
+          },
+          {
+            "x": 45.0,
+            "y": 200.0
+          },
+          {
+            "x": 45.0,
+            "y": 95.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#24",
+        "path": [
+          {
+            "x": 170.0,
+            "y": 195.0
+          },
+          {
+            "x": 50.0,
+            "y": 195.0
+          },
+          {
+            "x": 50.0,
+            "y": 85.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_3"
+        },
+        "name": "unnamedWire#26",
+        "path": [
+          {
+            "x": 160.0,
+            "y": 205.0
+          },
+          {
+            "x": 40.0,
+            "y": 205.0
+          },
+          {
+            "x": 40.0,
+            "y": 105.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_4"
+        },
+        "name": "unnamedWire#28",
+        "path": [
+          {
+            "x": 155.0,
+            "y": 210.0
+          },
+          {
+            "x": 35.0,
+            "y": 210.0
+          },
+          {
+            "x": 35.0,
+            "y": 115.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "WE"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff#3",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#8",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 175.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff#2",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "GUIdff#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 100.0,
+            "y": 75.0
+          },
+          {
+            "x": 100.0,
+            "y": 35.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff#1",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_1"
+        },
+        "name": "unnamedWire#10",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_3"
+        },
+        "name": "unnamedWire#12",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 225.0
+          },
+          {
+            "x": 10.0,
+            "y": 145.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_2"
+        },
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 175.0
+          },
+          {
+            "x": 5.0,
+            "y": 135.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y2"
+        },
+        "pin2": {
+          "compName": "GUIdff#1",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererParams": {
+    "centerText": "D flip flop\n4 bit",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q1": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#0",
+          "subStateID": "q"
+        }
+      },
+      "q2": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#1",
+          "subStateID": "q"
+        }
+      },
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler",
+        "params": {
+          "vectorPartTargets": [
+            "q1",
+            "q2",
+            "q3",
+            "q4"
+          ],
+          "vectorPartLengthes": [
+            1,
+            1,
+            1,
+            1
+          ]
+        }
+      },
+      "q3": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#2",
+          "subStateID": "q"
+        }
+      },
+      "q4": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#3",
+          "subStateID": "q"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.editor/components/GUIdff4_invwe.json b/net.mograsim.logic.model.editor/components/GUIdff4_invwe.json
new file mode 100644 (file)
index 0000000..cb697d2
--- /dev/null
@@ -0,0 +1,725 @@
+mograsim version: 0.1.3
+{
+  "width": 35.0,
+  "height": 60.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 55.0
+      },
+      "name": "D4",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 35.0,
+        "y": 5.0
+      },
+      "name": "Q1",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 35.0,
+        "y": 15.0
+      },
+      "name": "Q2",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 35.0,
+        "y": 25.0
+      },
+      "name": "Q3",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 5.0
+      },
+      "name": "C",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 35.0,
+        "y": 35.0
+      },
+      "name": "Q4",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 25.0
+      },
+      "name": "D1",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 15.0
+      },
+      "name": "_WE",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 35.0
+      },
+      "name": "D2",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 45.0
+      },
+      "name": "D3",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.2,
+    "subComps": [
+      {
+        "id": "GUIdff",
+        "name": "GUIdff#1",
+        "pos": {
+          "x": 115.0,
+          "y": 70.0
+        }
+      },
+      {
+        "id": "GUIdff",
+        "name": "GUIdff#0",
+        "pos": {
+          "x": 115.0,
+          "y": 20.0
+        }
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 104.0,
+          "y": 74.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 104.0,
+          "y": 24.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 169.0,
+          "y": 24.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 104.0,
+          "y": 124.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 159.0,
+          "y": 124.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 164.0,
+          "y": 74.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 154.0,
+          "y": 174.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#0",
+        "pos": {
+          "x": 55.0,
+          "y": 70.0
+        }
+      },
+      {
+        "id": "GUIdff",
+        "name": "GUIdff#3",
+        "pos": {
+          "x": 115.0,
+          "y": 170.0
+        }
+      },
+      {
+        "id": "GUIdff",
+        "name": "GUIdff#2",
+        "pos": {
+          "x": 115.0,
+          "y": 120.0
+        }
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Q1"
+        },
+        "name": "unnamedWire#14",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff#0",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff#1",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#16",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "Q2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#15",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff#2",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D4"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_4"
+        },
+        "name": "unnamedWire#17",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 275.0
+          },
+          {
+            "x": 25.0,
+            "y": 115.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Q3"
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff#3",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Q4"
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y4"
+        },
+        "pin2": {
+          "compName": "GUIdff#3",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#23",
+        "path": [
+          {
+            "x": 95.0,
+            "y": 105.0
+          },
+          {
+            "x": 95.0,
+            "y": 185.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "GUIdff#2",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#22",
+        "path": [
+          {
+            "x": 100.0,
+            "y": 95.0
+          },
+          {
+            "x": 100.0,
+            "y": 135.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_2"
+        },
+        "name": "unnamedWire#25",
+        "path": [
+          {
+            "x": 165.0,
+            "y": 210.0
+          },
+          {
+            "x": 45.0,
+            "y": 210.0
+          },
+          {
+            "x": 45.0,
+            "y": 135.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_1"
+        },
+        "name": "unnamedWire#24",
+        "path": [
+          {
+            "x": 170.0,
+            "y": 205.0
+          },
+          {
+            "x": 50.0,
+            "y": 205.0
+          },
+          {
+            "x": 50.0,
+            "y": 125.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_3"
+        },
+        "name": "unnamedWire#26",
+        "path": [
+          {
+            "x": 160.0,
+            "y": 215.0
+          },
+          {
+            "x": 40.0,
+            "y": 215.0
+          },
+          {
+            "x": 40.0,
+            "y": 145.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_4"
+        },
+        "name": "unnamedWire#28",
+        "path": [
+          {
+            "x": 155.0,
+            "y": 220.0
+          },
+          {
+            "x": 35.0,
+            "y": 220.0
+          },
+          {
+            "x": 35.0,
+            "y": 155.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_WE"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff#3",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#8",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 175.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff#2",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "GUIdff#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 100.0,
+            "y": 75.0
+          },
+          {
+            "x": 100.0,
+            "y": 35.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff#1",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#10",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 125.0
+          },
+          {
+            "x": 10.0,
+            "y": 85.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_3"
+        },
+        "name": "unnamedWire#12",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 225.0
+          },
+          {
+            "x": 20.0,
+            "y": 105.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_2"
+        },
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 175.0
+          },
+          {
+            "x": 15.0,
+            "y": 95.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y2"
+        },
+        "pin2": {
+          "compName": "GUIdff#1",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererParams": {
+    "centerText": "D flip flop\n4 bit",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q1": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#0",
+          "subStateID": "q"
+        }
+      },
+      "q2": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#1",
+          "subStateID": "q"
+        }
+      },
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler",
+        "params": {
+          "vectorPartTargets": [
+            "q1",
+            "q2",
+            "q3",
+            "q4"
+          ],
+          "vectorPartLengthes": [
+            1,
+            1,
+            1,
+            1
+          ]
+        }
+      },
+      "q3": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#2",
+          "subStateID": "q"
+        }
+      },
+      "q4": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#3",
+          "subStateID": "q"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.editor/components/GUImux2.json b/net.mograsim.logic.model.editor/components/GUImux2.json
new file mode 100644 (file)
index 0000000..2542ce0
--- /dev/null
@@ -0,0 +1,447 @@
+mograsim version: 0.1.3
+{
+  "width": 70.0,
+  "height": 70.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 30.0
+      },
+      "name": "I00",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 60.0
+      },
+      "name": "I11",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 50.0
+      },
+      "name": "I10",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 70.0,
+        "y": 10.0
+      },
+      "name": "Y",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 40.0
+      },
+      "name": "I01",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 10.0
+      },
+      "name": "S0",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 20.0
+      },
+      "name": "S1",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.4,
+    "subComps": [
+      {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
+        "pos": {
+          "x": 30.0,
+          "y": 15.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 24.0,
+          "y": 29.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 24.0,
+          "y": 24.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 54.0,
+          "y": 39.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 24.0,
+          "y": 49.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUIsel1",
+        "name": "DeserializedSubmodelComponent#1",
+        "pos": {
+          "x": 60.0,
+          "y": 100.0
+        }
+      },
+      {
+        "id": "GUIsel1",
+        "name": "DeserializedSubmodelComponent#0",
+        "pos": {
+          "x": 60.0,
+          "y": 35.0
+        }
+      },
+      {
+        "id": "GUImux1",
+        "name": "DeserializedSubmodelComponent#2",
+        "pos": {
+          "x": 115.0,
+          "y": 20.0
+        }
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "S1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#14",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "S2"
+        },
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 115.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 55.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#17",
+        "path": [
+          {
+            "x": 55.0,
+            "y": 105.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "S1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#9",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 50.0
+          },
+          {
+            "x": 15.0,
+            "y": 10.0
+          },
+          {
+            "x": 85.0,
+            "y": 10.0
+          },
+          {
+            "x": 85.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#8",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 105.0
+          },
+          {
+            "x": 105.0,
+            "y": 45.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#7",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 40.0
+          },
+          {
+            "x": 105.0,
+            "y": 35.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#0",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 20.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I11"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#5",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 150.0
+          },
+          {
+            "x": 20.0,
+            "y": 135.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#10",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I10"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I01"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#3",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 100.0
+          },
+          {
+            "x": 40.0,
+            "y": 70.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#12",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I00"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 75.0
+          },
+          {
+            "x": 35.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "S2"
+        },
+        "name": "unnamedWire#11",
+        "path": []
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererParams": {
+    "centerText": "GUImux2",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "default"
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.editor/components/GUImux2_4.json b/net.mograsim.logic.model.editor/components/GUImux2_4.json
new file mode 100644 (file)
index 0000000..f9648ee
--- /dev/null
@@ -0,0 +1,692 @@
+mograsim version: 0.1.3
+{
+  "width": 62.0,
+  "height": 90.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 30.0
+      },
+      "name": "I00",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 60.0
+      },
+      "name": "I11",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 50.0
+      },
+      "name": "I10",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 62.0,
+        "y": 16.0
+      },
+      "name": "Y",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 40.0
+      },
+      "name": "I01",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 10.0
+      },
+      "name": "S0",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 20.0
+      },
+      "name": "S1",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.4,
+    "subComps": [
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 19.0,
+          "y": 34.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#0",
+        "pos": {
+          "x": 25.0,
+          "y": 45.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUIMerger",
+        "name": "GUIMerger#0",
+        "pos": {
+          "x": 140.0,
+          "y": 25.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#3",
+        "pos": {
+          "x": 25.0,
+          "y": 180.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#2",
+        "pos": {
+          "x": 25.0,
+          "y": 140.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#1",
+        "pos": {
+          "x": 25.0,
+          "y": 85.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#1",
+        "pos": {
+          "x": 40.0,
+          "y": 125.0
+        }
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#0",
+        "pos": {
+          "x": 40.0,
+          "y": 30.0
+        }
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#2",
+        "pos": {
+          "x": 100.0,
+          "y": 20.0
+        }
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_2"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#14",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "S1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#36",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 50.0
+          },
+          {
+            "x": 15.0,
+            "y": 20.0
+          },
+          {
+            "x": 60.0,
+            "y": 20.0
+          },
+          {
+            "x": 60.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y4"
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I3"
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "S0"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_1"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#15",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#18",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "I00"
+        },
+        "name": "unnamedWire#19",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 60.0
+          },
+          {
+            "x": 15.0,
+            "y": 75.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "I10"
+        },
+        "name": "unnamedWire#21",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 155.0
+          },
+          {
+            "x": 15.0,
+            "y": 125.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I01"
+        },
+        "pin2": {
+          "compName": "GUISplitter#1",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I11"
+        },
+        "pin2": {
+          "compName": "GUISplitter#3",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#22",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 150.0
+          },
+          {
+            "x": 10.0,
+            "y": 195.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0_3"
+        },
+        "name": "unnamedWire#25",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0_2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y2"
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1_1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y1"
+        },
+        "name": "unnamedWire#27",
+        "path": [
+          {
+            "x": 80.0,
+            "y": 75.0
+          },
+          {
+            "x": 80.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0_4"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y4"
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1_3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y3"
+        },
+        "name": "unnamedWire#29",
+        "path": [
+          {
+            "x": 90.0,
+            "y": 95.0
+          },
+          {
+            "x": 90.0,
+            "y": 150.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1_2"
+        },
+        "name": "unnamedWire#28",
+        "path": [
+          {
+            "x": 85.0,
+            "y": 140.0
+          },
+          {
+            "x": 85.0,
+            "y": 85.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_2"
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_3"
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I1_4"
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I1_3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#3",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I0_2"
+        },
+        "pin2": {
+          "compName": "GUISplitter#2",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y4"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1_4"
+        },
+        "name": "unnamedWire#30",
+        "path": [
+          {
+            "x": 95.0,
+            "y": 160.0
+          },
+          {
+            "x": 95.0,
+            "y": 105.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I1_2"
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_1"
+        },
+        "pin2": {
+          "compName": "GUISplitter#1",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#10",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "I0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y1"
+        },
+        "name": "unnamedWire#32",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I0_4"
+        },
+        "pin2": {
+          "compName": "GUISplitter#2",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "O"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#31",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I1_1"
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_4"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#12",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "I2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y3"
+        },
+        "name": "unnamedWire#34",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I0_3"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_4"
+        },
+        "name": "unnamedWire#11",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y2"
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#33",
+        "path": []
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererParams": {
+    "centerText": "GUImux1_4",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler"
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.editor/components/GUImux3.json b/net.mograsim.logic.model.editor/components/GUImux3.json
new file mode 100644 (file)
index 0000000..69181cd
--- /dev/null
@@ -0,0 +1,479 @@
+mograsim version: 0.1.3
+{
+  "width": 80.0,
+  "height": 120.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 40.0
+      },
+      "name": "I000",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 70.0
+      },
+      "name": "I011",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 100.0
+      },
+      "name": "I110",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 60.0
+      },
+      "name": "I010",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 90.0
+      },
+      "name": "I101",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 80.0
+      },
+      "name": "I100",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 110.0
+      },
+      "name": "I111",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 80.0,
+        "y": 10.0
+      },
+      "name": "Y",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 50.0
+      },
+      "name": "I001",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 10.0
+      },
+      "name": "S0",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 20.0
+      },
+      "name": "S1",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 30.0
+      },
+      "name": "S2",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.4,
+    "subComps": [
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 24.0,
+          "y": 94.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 19.0,
+          "y": 104.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUImux2",
+        "name": "DeserializedSubmodelComponent#0",
+        "pos": {
+          "x": 35.0,
+          "y": 185.0
+        }
+      },
+      {
+        "id": "GUImux2",
+        "name": "DeserializedSubmodelComponent#3",
+        "pos": {
+          "x": 35.0,
+          "y": 85.0
+        }
+      },
+      {
+        "id": "GUImux1",
+        "name": "DeserializedSubmodelComponent#2",
+        "pos": {
+          "x": 125.0,
+          "y": 20.0
+        }
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I111"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I11"
+        },
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 275.0
+          },
+          {
+            "x": 15.0,
+            "y": 245.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I10"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "I110"
+        },
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 235.0
+          },
+          {
+            "x": 10.0,
+            "y": 250.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 110.0,
+            "y": 95.0
+          },
+          {
+            "x": 110.0,
+            "y": 35.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 115.0,
+            "y": 195.0
+          },
+          {
+            "x": 115.0,
+            "y": 45.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "S0"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "S2"
+        },
+        "name": "unnamedWire#17",
+        "path": [
+          {
+            "x": 70.0,
+            "y": 25.0
+          },
+          {
+            "x": 70.0,
+            "y": 75.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I010"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I10"
+        },
+        "name": "unnamedWire#9",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 150.0
+          },
+          {
+            "x": 10.0,
+            "y": 135.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I01"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "I001"
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I000"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I00"
+        },
+        "name": "unnamedWire#7",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 100.0
+          },
+          {
+            "x": 10.0,
+            "y": 115.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 50.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "S0"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#5",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 205.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I11"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "I011"
+        },
+        "name": "unnamedWire#10",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 145.0
+          },
+          {
+            "x": 15.0,
+            "y": 175.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "S0"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#4",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 195.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I101"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I01"
+        },
+        "name": "unnamedWire#12",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I00"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "I100"
+        },
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 215.0
+          },
+          {
+            "x": 10.0,
+            "y": 200.0
+          }
+        ]
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererParams": {
+    "centerText": "GUImux3",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler"
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.editor/components/GUIsel1.json b/net.mograsim.logic.model.editor/components/GUIsel1.json
new file mode 100644 (file)
index 0000000..26a25cf
--- /dev/null
@@ -0,0 +1,208 @@
+mograsim version: 0.1.3
+{
+  "width": 35.0,
+  "height": 40.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 25.0
+      },
+      "name": "I1",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 35.0
+      },
+      "name": "I2",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 35.0,
+        "y": 5.0
+      },
+      "name": "Y",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 5.0
+      },
+      "name": "S1",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 15.0
+      },
+      "name": "S2",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.4,
+    "subComps": [
+      {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
+        "pos": {
+          "x": 35.0,
+          "y": 30.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUINandGate",
+        "name": "GUINandGate#3",
+        "pos": {
+          "x": 60.0,
+          "y": 40.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
+        "pos": {
+          "x": 35.0,
+          "y": 55.0
+        },
+        "params": 1
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "GUINandGate#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUINandGate#3",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#9"
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUINandGate#3",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#8"
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I2"
+        },
+        "pin2": {
+          "compName": "GUINandGate#2",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#7",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 87.5
+          },
+          {
+            "x": 15.0,
+            "y": 70.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "S2"
+        },
+        "pin2": {
+          "compName": "GUINandGate#2",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 37.5
+          },
+          {
+            "x": 15.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "S1"
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 12.5
+          },
+          {
+            "x": 25.0,
+            "y": 35.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I1"
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#5",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 62.5
+          },
+          {
+            "x": 25.0,
+            "y": 45.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#3",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#10"
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererParams": {
+    "centerText": "GUIsel1",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "default"
+}
\ No newline at end of file
index 503d854..02f1761 100644 (file)
@@ -549,8 +549,8 @@ mograsim version: 0.1.3
         "params": 1
       },
       {
-        "id": "GUIAm2901QReg",
-        "name": "GUIAm2901QReg#0",
+        "id": "GUIdff4",
+        "name": "GUIdff4#0",
         "pos": {
           "x": 90.0,
           "y": 2490.0
@@ -1538,7 +1538,7 @@ mograsim version: 0.1.3
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901QReg#0",
+          "compName": "GUIdff4#0",
           "pinName": "C"
         },
         "name": "unnamedWire#17",
@@ -2123,7 +2123,7 @@ mograsim version: 0.1.3
           "pinName": "Y2"
         },
         "pin2": {
-          "compName": "GUIAm2901QReg#0",
+          "compName": "GUIdff4#0",
           "pinName": "D2"
         },
         "name": "unnamedWire#87",
@@ -2135,7 +2135,7 @@ mograsim version: 0.1.3
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "GUIAm2901QReg#0",
+          "compName": "GUIdff4#0",
           "pinName": "D1"
         },
         "name": "unnamedWire#86",
@@ -2147,7 +2147,7 @@ mograsim version: 0.1.3
           "pinName": "Y4"
         },
         "pin2": {
-          "compName": "GUIAm2901QReg#0",
+          "compName": "GUIdff4#0",
           "pinName": "D4"
         },
         "name": "unnamedWire#89",
@@ -2159,7 +2159,7 @@ mograsim version: 0.1.3
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIAm2901QReg#0",
+          "compName": "GUIdff4#0",
           "pinName": "D3"
         },
         "name": "unnamedWire#88",
@@ -2327,7 +2327,7 @@ mograsim version: 0.1.3
           "pinName": "QWE"
         },
         "pin2": {
-          "compName": "GUIAm2901QReg#0",
+          "compName": "GUIdff4#0",
           "pinName": "WE"
         },
         "name": "unnamedWire#147",
@@ -3003,7 +3003,7 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIAm2901QReg#0",
+          "compName": "GUIdff4#0",
           "pinName": "Q2"
         },
         "pin2": {
@@ -3015,7 +3015,7 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIAm2901QReg#0",
+          "compName": "GUIdff4#0",
           "pinName": "Q1"
         },
         "pin2": {
@@ -3027,7 +3027,7 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIAm2901QReg#0",
+          "compName": "GUIdff4#0",
           "pinName": "Q4"
         },
         "pin2": {
@@ -3039,7 +3039,7 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIAm2901QReg#0",
+          "compName": "GUIdff4#0",
           "pinName": "Q3"
         },
         "pin2": {
@@ -3406,7 +3406,7 @@ mograsim version: 0.1.3
       "qreg": {
         "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
         "params": {
-          "delegateTarget": "GUIAm2901QReg#0"
+          "delegateTarget": "GUIdff4#0"
         }
       },
       "regs": {
diff --git a/net.mograsim.logic.model.editor/components/am2901/GUIAm2901QReg.json b/net.mograsim.logic.model.editor/components/am2901/GUIAm2901QReg.json
deleted file mode 100644 (file)
index 4f3bc2d..0000000
+++ /dev/null
@@ -1,716 +0,0 @@
-mograsim version: 0.1.3
-{
-  "width": 35.0,
-  "height": 60.0,
-  "interfacePins": [
-    {
-      "location": {
-        "x": 0.0,
-        "y": 55.0
-      },
-      "name": "D4",
-      "logicWidth": 1
-    },
-    {
-      "location": {
-        "x": 35.0,
-        "y": 5.0
-      },
-      "name": "Q1",
-      "logicWidth": 1
-    },
-    {
-      "location": {
-        "x": 35.0,
-        "y": 15.0
-      },
-      "name": "Q2",
-      "logicWidth": 1
-    },
-    {
-      "location": {
-        "x": 35.0,
-        "y": 25.0
-      },
-      "name": "Q3",
-      "logicWidth": 1
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 5.0
-      },
-      "name": "C",
-      "logicWidth": 1
-    },
-    {
-      "location": {
-        "x": 35.0,
-        "y": 35.0
-      },
-      "name": "Q4",
-      "logicWidth": 1
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 25.0
-      },
-      "name": "D1",
-      "logicWidth": 1
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 15.0
-      },
-      "name": "WE",
-      "logicWidth": 1
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 35.0
-      },
-      "name": "D2",
-      "logicWidth": 1
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 45.0
-      },
-      "name": "D3",
-      "logicWidth": 1
-    }
-  ],
-  "submodel": {
-    "innerScale": 0.2,
-    "subComps": [
-      {
-        "id": "GUIdff",
-        "name": "GUIdff#1",
-        "pos": {
-          "x": 115.0,
-          "y": 70.0
-        }
-      },
-      {
-        "id": "GUIdff",
-        "name": "GUIdff#0",
-        "pos": {
-          "x": 115.0,
-          "y": 20.0
-        }
-      },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
-        "pos": {
-          "x": 104.0,
-          "y": 74.0
-        },
-        "params": 1
-      },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
-        "pos": {
-          "x": 104.0,
-          "y": 24.0
-        },
-        "params": 1
-      },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
-        "pos": {
-          "x": 169.0,
-          "y": 24.0
-        },
-        "params": 1
-      },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
-        "pos": {
-          "x": 104.0,
-          "y": 124.0
-        },
-        "params": 1
-      },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
-        "pos": {
-          "x": 159.0,
-          "y": 124.0
-        },
-        "params": 1
-      },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#4",
-        "pos": {
-          "x": 164.0,
-          "y": 74.0
-        },
-        "params": 1
-      },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#6",
-        "pos": {
-          "x": 154.0,
-          "y": 174.0
-        },
-        "params": 1
-      },
-      {
-        "id": "GUImux1_4",
-        "name": "DeserializedSubmodelComponent#0",
-        "pos": {
-          "x": 55.0,
-          "y": 70.0
-        }
-      },
-      {
-        "id": "GUIdff",
-        "name": "GUIdff#3",
-        "pos": {
-          "x": 115.0,
-          "y": 170.0
-        }
-      },
-      {
-        "id": "GUIdff",
-        "name": "GUIdff#2",
-        "pos": {
-          "x": 115.0,
-          "y": 120.0
-        }
-      }
-    ],
-    "innerWires": [
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Q1"
-        },
-        "name": "unnamedWire#14",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUIdff#0",
-          "pinName": "Q"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
-        },
-        "name": "unnamedWire#13",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIdff#1",
-          "pinName": "Q"
-        },
-        "name": "unnamedWire#16",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "Q2"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
-        },
-        "name": "unnamedWire#15",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUIdff#2",
-          "pinName": "Q"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
-        },
-        "name": "unnamedWire#18",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D4"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I1_4"
-        },
-        "name": "unnamedWire#17",
-        "path": [
-          {
-            "x": 15.0,
-            "y": 275.0
-          },
-          {
-            "x": 15.0,
-            "y": 155.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Q3"
-        },
-        "name": "unnamedWire#19",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIdff#3",
-          "pinName": "Q"
-        },
-        "name": "unnamedWire#21",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Q4"
-        },
-        "name": "unnamedWire#20",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "Y4"
-        },
-        "pin2": {
-          "compName": "GUIdff#3",
-          "pinName": "D"
-        },
-        "name": "unnamedWire#23",
-        "path": [
-          {
-            "x": 95.0,
-            "y": 105.0
-          },
-          {
-            "x": 95.0,
-            "y": 185.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "Y3"
-        },
-        "pin2": {
-          "compName": "GUIdff#2",
-          "pinName": "D"
-        },
-        "name": "unnamedWire#22",
-        "path": [
-          {
-            "x": 100.0,
-            "y": 95.0
-          },
-          {
-            "x": 100.0,
-            "y": 135.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I0_2"
-        },
-        "name": "unnamedWire#25",
-        "path": [
-          {
-            "x": 165.0,
-            "y": 200.0
-          },
-          {
-            "x": 45.0,
-            "y": 200.0
-          },
-          {
-            "x": 45.0,
-            "y": 95.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I0_1"
-        },
-        "name": "unnamedWire#24",
-        "path": [
-          {
-            "x": 170.0,
-            "y": 195.0
-          },
-          {
-            "x": 50.0,
-            "y": 195.0
-          },
-          {
-            "x": 50.0,
-            "y": 85.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
-        },
-        "name": "unnamedWire#27",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I0_3"
-        },
-        "name": "unnamedWire#26",
-        "path": [
-          {
-            "x": 160.0,
-            "y": 205.0
-          },
-          {
-            "x": 40.0,
-            "y": 205.0
-          },
-          {
-            "x": 40.0,
-            "y": 105.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I0_4"
-        },
-        "name": "unnamedWire#28",
-        "path": [
-          {
-            "x": 155.0,
-            "y": 210.0
-          },
-          {
-            "x": 35.0,
-            "y": 210.0
-          },
-          {
-            "x": 35.0,
-            "y": 115.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "WE"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "S0"
-        },
-        "name": "unnamedWire#9",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIdff#3",
-          "pinName": "C"
-        },
-        "name": "unnamedWire#8",
-        "path": [
-          {
-            "x": 105.0,
-            "y": 175.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIdff#2",
-          "pinName": "C"
-        },
-        "name": "unnamedWire#7",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
-        },
-        "name": "unnamedWire#6",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "Y1"
-        },
-        "pin2": {
-          "compName": "GUIdff#0",
-          "pinName": "D"
-        },
-        "name": "unnamedWire#1",
-        "path": [
-          {
-            "x": 100.0,
-            "y": 75.0
-          },
-          {
-            "x": 100.0,
-            "y": 35.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "C"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
-        "name": "unnamedWire#0",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIdff#1",
-          "pinName": "C"
-        },
-        "name": "unnamedWire#5",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D1"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I1_1"
-        },
-        "name": "unnamedWire#10",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
-        },
-        "name": "unnamedWire#4",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIdff#0",
-          "pinName": "C"
-        },
-        "name": "unnamedWire#3",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D3"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I1_3"
-        },
-        "name": "unnamedWire#12",
-        "path": [
-          {
-            "x": 10.0,
-            "y": 225.0
-          },
-          {
-            "x": 10.0,
-            "y": 145.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D2"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I1_2"
-        },
-        "name": "unnamedWire#11",
-        "path": [
-          {
-            "x": 5.0,
-            "y": 175.0
-          },
-          {
-            "x": 5.0,
-            "y": 135.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "Y2"
-        },
-        "pin2": {
-          "compName": "GUIdff#1",
-          "pinName": "D"
-        },
-        "name": "unnamedWire#2",
-        "path": []
-      }
-    ]
-  },
-  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
-  "symbolRendererParams": {
-    "centerText": "GUIAm2901QReg",
-    "centerTextHeight": 5.0,
-    "horizontalComponentCenter": 17.5,
-    "pinLabelHeight": 3.5,
-    "pinLabelMargin": 0.5
-  },
-  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
-  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
-  "highLevelStateHandlerParams": {
-    "subcomponentHighLevelStates": {},
-    "atomicHighLevelStates": {
-      "q1": {
-        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
-        "params": {
-          "delegateTarget": "GUIdff#0",
-          "subStateID": "q"
-        }
-      },
-      "q2": {
-        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
-        "params": {
-          "delegateTarget": "GUIdff#1",
-          "subStateID": "q"
-        }
-      },
-      "q": {
-        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler",
-        "params": {
-          "vectorPartTargets": [
-            "q1",
-            "q2",
-            "q3",
-            "q4"
-          ],
-          "vectorPartLengthes": [
-            1,
-            1,
-            1,
-            1
-          ]
-        }
-      },
-      "q3": {
-        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
-        "params": {
-          "delegateTarget": "GUIdff#2",
-          "subStateID": "q"
-        }
-      },
-      "q4": {
-        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
-        "params": {
-          "delegateTarget": "GUIdff#3",
-          "subStateID": "q"
-        }
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.editor/components/am2904/GUIAm2904.json b/net.mograsim.logic.model.editor/components/am2904/GUIAm2904.json
new file mode 100644 (file)
index 0000000..33bddda
--- /dev/null
@@ -0,0 +1,2450 @@
+mograsim version: 0.1.3
+{
+  "width": 120.0,
+  "height": 94.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 25.0
+      },
+      "name": "IOVR",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 30.0
+      },
+      "name": "_CEM",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 5.0
+      },
+      "name": "C",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 61.0
+      },
+      "name": "I",
+      "logicWidth": 13
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 40.0
+      },
+      "name": "_EN",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": -14.600000000000001,
+        "y": -0.6000000000000001
+      },
+      "name": "QIOn_out",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 120.0,
+        "y": 17.0
+      },
+      "name": "YC",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": -24.6,
+        "y": 14.4
+      },
+      "name": "SIOn_in",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": -24.6,
+        "y": 24.400000000000002
+      },
+      "name": "C0",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": -34.6,
+        "y": 29.400000000000002
+      },
+      "name": "QIO0_in",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 36.0
+      },
+      "name": "_EZ",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": -14.600000000000001,
+        "y": 14.4
+      },
+      "name": "Cx",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 120.0,
+        "y": 21.0
+      },
+      "name": "YN",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": -24.6,
+        "y": 19.400000000000002
+      },
+      "name": "SIOn_out",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 15.0
+      },
+      "name": "IC",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 42.0
+      },
+      "name": "_EOVR",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 120.0,
+        "y": 11.0
+      },
+      "name": "YZ",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 20.0
+      },
+      "name": "IN",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 61.0,
+        "y": 0.0
+      },
+      "name": "_OEY",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": -24.6,
+        "y": 44.400000000000006
+      },
+      "name": "SIO0_in",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": -24.6,
+        "y": 49.400000000000006
+      },
+      "name": "SIO0_out",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": -14.600000000000001,
+        "y": 44.400000000000006
+      },
+      "name": "QIO0_out",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 10.0
+      },
+      "name": "IZ",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 120.0,
+        "y": 60.0
+      },
+      "name": "CT",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 33.0
+      },
+      "name": "_CEmu",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": -24.6,
+        "y": 54.400000000000006
+      },
+      "name": "QIOn_in",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 120.0,
+        "y": 25.0
+      },
+      "name": "YOVR",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 38.0
+      },
+      "name": "_EC",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.2,
+    "subComps": [
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#14",
+        "pos": {
+          "x": 520.0,
+          "y": 190.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#13",
+        "pos": {
+          "x": 330.0,
+          "y": 125.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#16",
+        "pos": {
+          "x": 255.0,
+          "y": 255.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#15",
+        "pos": {
+          "x": 255.0,
+          "y": 265.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 180.0,
+          "y": 135.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 165.0,
+          "y": 150.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 335.0,
+          "y": 270.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 295.0,
+          "y": 120.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 530.0,
+          "y": 100.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 150.0,
+          "y": 160.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#7",
+        "pos": {
+          "x": 215.0,
+          "y": 180.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUITriStateBuffer",
+        "name": "GUITriStateBuffer#0",
+        "pos": {
+          "x": 530.0,
+          "y": 170.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 120.0,
+          "y": 15.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 215.0,
+          "y": 200.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#8",
+        "pos": {
+          "x": 215.0,
+          "y": 160.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUIAm2904muSR",
+        "name": "DeserializedSubmodelComponent#1",
+        "pos": {
+          "x": 270.0,
+          "y": 250.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#10",
+        "pos": {
+          "x": 195.0,
+          "y": 55.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUIAm2904MSR",
+        "name": "DeserializedSubmodelComponent#0",
+        "pos": {
+          "x": 225.0,
+          "y": 95.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#12",
+        "pos": {
+          "x": 195.0,
+          "y": 35.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#3",
+        "pos": {
+          "x": 470.0,
+          "y": 160.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#11",
+        "pos": {
+          "x": 195.0,
+          "y": 15.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUIand",
+        "name": "DeserializedSubmodelComponent#2",
+        "pos": {
+          "x": 370.0,
+          "y": 130.0
+        }
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#5",
+        "pos": {
+          "x": 415.0,
+          "y": 210.0
+        }
+      },
+      {
+        "id": "GUInot4",
+        "name": "DeserializedSubmodelComponent#4",
+        "pos": {
+          "x": 135.0,
+          "y": 40.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+        "name": "GUIMerger#3",
+        "pos": {
+          "x": 510.0,
+          "y": 165.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUImux3",
+        "name": "DeserializedSubmodelComponent#7",
+        "pos": {
+          "x": 300.0,
+          "y": 310.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+        "name": "GUIMerger#2",
+        "pos": {
+          "x": 15.0,
+          "y": 65.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUIAm2904TestLogic",
+        "name": "DeserializedSubmodelComponent#6",
+        "pos": {
+          "x": 225.0,
+          "y": 340.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+        "name": "GUIMerger#1",
+        "pos": {
+          "x": 25.0,
+          "y": 305.0
+        },
+        "params": 5
+      },
+      {
+        "id": "GUImux1",
+        "name": "DeserializedSubmodelComponent#9",
+        "pos": {
+          "x": 480.0,
+          "y": 305.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIMerger",
+        "name": "GUIMerger#0",
+        "pos": {
+          "x": 25.0,
+          "y": 245.0
+        },
+        "params": 6
+      },
+      {
+        "id": "GUIxor",
+        "name": "DeserializedSubmodelComponent#8",
+        "pos": {
+          "x": 540.0,
+          "y": 295.0
+        }
+      },
+      {
+        "id": "GUIxor",
+        "name": "DeserializedSubmodelComponent#10",
+        "pos": {
+          "x": 485.0,
+          "y": 355.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#10",
+        "pos": {
+          "x": 340.0,
+          "y": 120.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#9",
+        "pos": {
+          "x": 205.0,
+          "y": 10.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#8",
+        "pos": {
+          "x": 205.0,
+          "y": 30.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#5",
+        "pos": {
+          "x": 225.0,
+          "y": 175.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#4",
+        "pos": {
+          "x": 225.0,
+          "y": 155.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#7",
+        "pos": {
+          "x": 205.0,
+          "y": 50.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#6",
+        "pos": {
+          "x": 205.0,
+          "y": 70.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#1",
+        "pos": {
+          "x": 130.0,
+          "y": 5.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#0",
+        "pos": {
+          "x": 190.0,
+          "y": 145.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#3",
+        "pos": {
+          "x": 225.0,
+          "y": 215.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#2",
+        "pos": {
+          "x": 225.0,
+          "y": 195.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#4",
+        "pos": {
+          "x": 395.0,
+          "y": 225.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#3",
+        "pos": {
+          "x": 450.0,
+          "y": 175.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#2",
+        "pos": {
+          "x": 395.0,
+          "y": 195.0
+        },
+        "params": 2
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#1",
+        "pos": {
+          "x": 555.0,
+          "y": 80.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#8",
+        "pos": {
+          "x": 445.0,
+          "y": 370.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#7",
+        "pos": {
+          "x": 445.0,
+          "y": 330.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#6",
+        "pos": {
+          "x": 285.0,
+          "y": 320.0
+        },
+        "params": 3
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#5",
+        "pos": {
+          "x": 395.0,
+          "y": 265.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#0",
+        "pos": {
+          "x": 10.0,
+          "y": 245.0
+        },
+        "params": 13
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904RegCTInstrDecode",
+        "name": "GUIAm2904RegCTInstrDecode#0",
+        "pos": {
+          "x": 50.0,
+          "y": 230.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904ShiftInstrDecode",
+        "name": "GUIAm2904ShiftInstrDecode#0",
+        "pos": {
+          "x": 50.0,
+          "y": 360.0
+        }
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#36",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_CEmu"
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#38",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#4",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#37",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#5",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#39",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#5",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I1_4"
+        },
+        "name": "unnamedWire#110",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#5",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#111",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y111"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I111"
+        },
+        "name": "unnamedWire#114",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I110"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y110"
+        },
+        "name": "unnamedWire#115",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUITriStateBuffer#0",
+          "pinName": "IN"
+        },
+        "name": "unnamedWire#112",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#113",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y011"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I011"
+        },
+        "name": "unnamedWire#118",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y010"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I010"
+        },
+        "name": "unnamedWire#119",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#2",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#41",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y101"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I101"
+        },
+        "name": "unnamedWire#116",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#40",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I100"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y100"
+        },
+        "name": "unnamedWire#117",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#3",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "_EOVR"
+        },
+        "name": "unnamedWire#43",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#3",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#42",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "_EC"
+        },
+        "pin2": {
+          "compName": "GUINandGate#5",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#45",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "_EN"
+        },
+        "name": "unnamedWire#44",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#4",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "muSR_WEZ"
+        },
+        "name": "unnamedWire#47",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#4",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "_EZ"
+        },
+        "name": "unnamedWire#46",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "YZ"
+        },
+        "name": "unnamedWire#49",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "muSR_WEC"
+        },
+        "pin2": {
+          "compName": "GUINandGate#5",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#48",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I0_4"
+        },
+        "name": "unnamedWire#100",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#4",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I0_2"
+        },
+        "name": "unnamedWire#103",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I0_3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#4",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#104",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#101",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#4",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#102",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "YC"
+        },
+        "pin2": {
+          "compName": "GUISplitter#1",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#50",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#5",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I1_1"
+        },
+        "name": "unnamedWire#107",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#5",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I1_2"
+        },
+        "name": "unnamedWire#108",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "YOVR"
+        },
+        "pin2": {
+          "compName": "GUISplitter#1",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#52",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#4",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I0_4"
+        },
+        "name": "unnamedWire#105",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "YN"
+        },
+        "name": "unnamedWire#51",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#4",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#106",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#54",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#53",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#1",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#56",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I1_3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#5",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#109",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#55",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O10"
+        },
+        "pin2": {
+          "compName": "GUIMerger#1",
+          "pinName": "I4"
+        },
+        "name": "unnamedWire#14",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#1",
+          "pinName": "I3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O9"
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904ShiftInstrDecode#0",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "GUIMerger#1",
+          "pinName": "O"
+        },
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 395.0
+          },
+          {
+            "x": 40.0,
+            "y": 325.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "O"
+        },
+        "pin2": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#15",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "IN"
+        },
+        "pin2": {
+          "compName": "GUIMerger#2",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#18",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 100.0
+          },
+          {
+            "x": 5.0,
+            "y": 85.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "IOVR"
+        },
+        "pin2": {
+          "compName": "GUIMerger#2",
+          "pinName": "I3"
+        },
+        "name": "unnamedWire#17",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 125.0
+          },
+          {
+            "x": 10.0,
+            "y": 95.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "IC"
+        },
+        "pin2": {
+          "compName": "GUIMerger#2",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "muSR_CINV"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "CINV"
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "IZ"
+        },
+        "pin2": {
+          "compName": "GUIMerger#2",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#20",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 50.0
+          },
+          {
+            "x": 5.0,
+            "y": 65.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#2",
+          "pinName": "O"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#25",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "mu"
+        },
+        "name": "unnamedWire#28",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#30",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904ShiftInstrDecode#0",
+          "pinName": "MC_EN"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "COVD_EN"
+        },
+        "name": "unnamedWire#32",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "MSR_MUX"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "MUX"
+        },
+        "name": "unnamedWire#31",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#34",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#0",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#33",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUITriStateBuffer#0",
+          "pinName": "OUT"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#79",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#10",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "name": "unnamedWire#81",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#10",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#80",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#10",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#83",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_OEY"
+        },
+        "name": "unnamedWire#82",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I1_1"
+        },
+        "name": "unnamedWire#85",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUITriStateBuffer#0",
+          "pinName": "EN"
+        },
+        "name": "unnamedWire#84",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I1_3"
+        },
+        "name": "unnamedWire#87",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I1_2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "Y2"
+        },
+        "name": "unnamedWire#86",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "GUIMerger#3",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#89",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I1_4"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "Y4"
+        },
+        "name": "unnamedWire#88",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "I5"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I4"
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "I3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#3",
+          "pinName": "I1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "Y2"
+        },
+        "name": "unnamedWire#90",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#3",
+          "pinName": "I3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "Y4"
+        },
+        "name": "unnamedWire#92",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "GUIMerger#3",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#91",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "muSR_MUX"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "MUX"
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "Y_MUX"
+        },
+        "pin2": {
+          "compName": "GUISplitter#2",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#94",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 25.0
+          },
+          {
+            "x": 5.0,
+            "y": 10.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#3",
+          "pinName": "O"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#93",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#96",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#95",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "I1"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "GUIMerger#1",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#10",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I0_2"
+        },
+        "pin2": {
+          "compName": "GUISplitter#3",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#98",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#97",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O8"
+        },
+        "pin2": {
+          "compName": "GUIMerger#1",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#12",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#1",
+          "pinName": "I1"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#11",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "muSR_OVRRET"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "OVRRET"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "I0_3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#3",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#99",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#2",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "muSR_WEN"
+        },
+        "name": "unnamedWire#58",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_CEM"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#57",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "muSR_WEOVR"
+        },
+        "pin2": {
+          "compName": "GUINandGate#3",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#59",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#132",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUISplitter#7",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#133",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#8",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "CT_INV"
+        },
+        "name": "unnamedWire#130",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#10",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#9",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#131",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "M"
+        },
+        "name": "unnamedWire#136",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUISplitter#8",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#137",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#7",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#10",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#134",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#8",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#10",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#135",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#7",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#61",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#6",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#60",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#9",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#63",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "OEN"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#138",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#8",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#62",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#65",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "name": "unnamedWire#64",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "_EN"
+        },
+        "pin2": {
+          "compName": "GUINandGate#7",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#67",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#6",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "_EOVR"
+        },
+        "name": "unnamedWire#66",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#9",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "_EZ"
+        },
+        "name": "unnamedWire#69",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#8",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "_EC"
+        },
+        "name": "unnamedWire#68",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y000"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I000"
+        },
+        "name": "unnamedWire#121",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#8",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "CT"
+        },
+        "name": "unnamedWire#122",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I001"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y001"
+        },
+        "name": "unnamedWire#120",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#6",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#125",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "S1"
+        },
+        "pin2": {
+          "compName": "GUISplitter#6",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#126",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#70",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#9",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#8",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#123",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#6",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "CT_MUX"
+        },
+        "name": "unnamedWire#124",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#8",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "Y2"
+        },
+        "name": "unnamedWire#72",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#9",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#129",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "GUINandGate#9",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#71",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "Y4"
+        },
+        "pin2": {
+          "compName": "GUINandGate#6",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#74",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#6",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "S2"
+        },
+        "name": "unnamedWire#127",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "GUINandGate#7",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#73",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2904RegCTInstrDecode#0",
+          "pinName": "CT_EXP"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#9",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#128",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_EC"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "A2"
+        },
+        "name": "unnamedWire#76",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "A1"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_EZ"
+        },
+        "name": "unnamedWire#75",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_EOVR"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "A4"
+        },
+        "name": "unnamedWire#78",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "A3"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_EN"
+        },
+        "name": "unnamedWire#77",
+        "path": []
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererParams": {
+    "centerText": "Am2904",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {}
+  }
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.editor/components/am2904/GUIAm2904MSR.json b/net.mograsim.logic.model.editor/components/am2904/GUIAm2904MSR.json
new file mode 100644 (file)
index 0000000..3296f39
--- /dev/null
@@ -0,0 +1,1895 @@
+mograsim version: 0.1.3
+{
+  "width": 45.0,
+  "height": 46.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 4.0,
+        "y": 46.0
+      },
+      "name": "MUX",
+      "logicWidth": 3
+    },
+    {
+      "location": {
+        "x": 45.0,
+        "y": 19.0
+      },
+      "name": "Q",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 27.5,
+        "y": 46.0
+      },
+      "name": "COVD_EN",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 14.0,
+        "y": 46.0
+      },
+      "name": "C",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 5.5,
+        "y": 0.0
+      },
+      "name": "_EZ",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 37.5,
+        "y": 46.0
+      },
+      "name": "COVD_V",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 5.0
+      },
+      "name": "mu",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 18.0
+      },
+      "name": "Y",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 31.0
+      },
+      "name": "I",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 25.5,
+        "y": 0.0
+      },
+      "name": "_EN",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 15.5,
+        "y": 0.0
+      },
+      "name": "_EC",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 35.5,
+        "y": 0.2
+      },
+      "name": "_EOVR",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.1,
+    "subComps": [
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#14",
+        "pos": {
+          "x": 89.0,
+          "y": 104.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#13",
+        "pos": {
+          "x": 194.0,
+          "y": 234.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
+        "pos": {
+          "x": 325.0,
+          "y": 90.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#16",
+        "pos": {
+          "x": 319.0,
+          "y": 104.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#15",
+        "pos": {
+          "x": 319.0,
+          "y": 294.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#3",
+        "pos": {
+          "x": 5.0,
+          "y": 295.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#2",
+        "pos": {
+          "x": 45.0,
+          "y": 425.0
+        },
+        "params": 3
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#1",
+        "pos": {
+          "x": 5.0,
+          "y": 165.0
+        },
+        "params": 4
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 414.0,
+          "y": 174.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 29.0,
+          "y": 284.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#0",
+        "pos": {
+          "x": 5.0,
+          "y": 35.0
+        },
+        "params": 4
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 424.0,
+          "y": 194.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 419.0,
+          "y": 184.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 84.0,
+          "y": 344.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 429.0,
+          "y": 204.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
+        "pos": {
+          "x": 29.0,
+          "y": 254.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 94.0,
+          "y": 364.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 49.0,
+          "y": 114.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
+        "pos": {
+          "x": 74.0,
+          "y": 314.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUIdff4_finewe",
+        "name": "GUIdff4_finewe#0",
+        "pos": {
+          "x": 375.0,
+          "y": 170.0
+        }
+      },
+      {
+        "id": "GUIxor",
+        "name": "DeserializedSubmodelComponent#1",
+        "pos": {
+          "x": 35.0,
+          "y": 250.0
+        }
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
+        "pos": {
+          "x": 89.0,
+          "y": 84.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#0",
+        "pos": {
+          "x": 55.0,
+          "y": 110.0
+        }
+      },
+      {
+        "id": "GUInot4",
+        "name": "DeserializedSubmodelComponent#3",
+        "pos": {
+          "x": 100.0,
+          "y": 330.0
+        }
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#12",
+        "pos": {
+          "x": 19.0,
+          "y": 294.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#2",
+        "pos": {
+          "x": 150.0,
+          "y": 280.0
+        }
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#11",
+        "pos": {
+          "x": 89.0,
+          "y": 94.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#5",
+        "pos": {
+          "x": 200.0,
+          "y": 230.0
+        }
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#4",
+        "pos": {
+          "x": 110.0,
+          "y": 60.0
+        }
+      },
+      {
+        "id": "GUImux1",
+        "name": "DeserializedSubmodelComponent#7",
+        "pos": {
+          "x": 325.0,
+          "y": 290.0
+        }
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#6",
+        "pos": {
+          "x": 250.0,
+          "y": 180.0
+        }
+      },
+      {
+        "id": "GUIMerger",
+        "name": "GUIMerger#0",
+        "pos": {
+          "x": 435.0,
+          "y": 175.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUIand",
+        "name": "DeserializedSubmodelComponent#8",
+        "pos": {
+          "x": 380.0,
+          "y": 85.0
+        }
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "A3"
+        },
+        "name": "unnamedWire#36",
+        "path": [
+          {
+            "x": 425.0,
+            "y": 390.0
+          },
+          {
+            "x": 90.0,
+            "y": 390.0
+          },
+          {
+            "x": 90.0,
+            "y": 355.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#35",
+        "path": [
+          {
+            "x": 420.0,
+            "y": 385.0
+          },
+          {
+            "x": 85.0,
+            "y": 385.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "I0_3"
+        },
+        "name": "unnamedWire#79",
+        "path": [
+          {
+            "x": 205.0,
+            "y": 85.0
+          },
+          {
+            "x": 205.0,
+            "y": 215.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "name": "unnamedWire#38",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#37",
+        "path": [
+          {
+            "x": 430.0,
+            "y": 395.0
+          },
+          {
+            "x": 95.0,
+            "y": 395.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0_4"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#39",
+        "path": [
+          {
+            "x": 85.0,
+            "y": 325.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#81",
+        "path": [
+          {
+            "x": 215.0,
+            "y": 65.0
+          },
+          {
+            "x": 215.0,
+            "y": 195.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "I0_2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "Y2"
+        },
+        "name": "unnamedWire#80",
+        "path": [
+          {
+            "x": 210.0,
+            "y": 205.0
+          },
+          {
+            "x": 210.0,
+            "y": 75.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "name": "unnamedWire#83",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#82",
+        "path": [
+          {
+            "x": 245.0,
+            "y": 445.0
+          },
+          {
+            "x": 245.0,
+            "y": 185.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0_3"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#41",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#85",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0_2"
+        },
+        "name": "unnamedWire#40",
+        "path": [
+          {
+            "x": 95.0,
+            "y": 305.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "COVD_EN"
+        },
+        "name": "unnamedWire#84",
+        "path": [
+          {
+            "x": 275.0,
+            "y": 295.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#43",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#87",
+        "path": [
+          {
+            "x": 305.0,
+            "y": 195.0
+          },
+          {
+            "x": 305.0,
+            "y": 305.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#42",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 230.0
+          },
+          {
+            "x": 50.0,
+            "y": 230.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "COVD_V"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#86",
+        "path": [
+          {
+            "x": 375.0,
+            "y": 325.0
+          },
+          {
+            "x": 320.0,
+            "y": 325.0
+          },
+          {
+            "x": 320.0,
+            "y": 315.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#45",
+        "path": [
+          {
+            "x": 50.0,
+            "y": 105.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#8",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#89",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "I1_1"
+        },
+        "name": "unnamedWire#44",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#7",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "D2"
+        },
+        "name": "unnamedWire#88",
+        "path": [
+          {
+            "x": 365.0,
+            "y": 295.0
+          },
+          {
+            "x": 365.0,
+            "y": 235.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "I1_3"
+        },
+        "name": "unnamedWire#47",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "I1_2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y2"
+        },
+        "name": "unnamedWire#46",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "I0_4"
+        },
+        "name": "unnamedWire#49",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "I1_4"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y4"
+        },
+        "name": "unnamedWire#48",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "Q2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "I1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "Q1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "name": "unnamedWire#90",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#0",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "name": "unnamedWire#92",
+        "path": [
+          {
+            "x": 320.0,
+            "y": 95.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#91",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_EOVR"
+        },
+        "pin2": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "_WE4"
+        },
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 355.0,
+            "y": 30.0
+          },
+          {
+            "x": 355.0,
+            "y": 215.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#50",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 415.0
+          },
+          {
+            "x": 255.0,
+            "y": 415.0
+          },
+          {
+            "x": 255.0,
+            "y": 280.0
+          },
+          {
+            "x": 340.0,
+            "y": 280.0
+          },
+          {
+            "x": 340.0,
+            "y": 175.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "I0_3"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#52",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#51",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "O"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "mu"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#10",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "I0_1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#54",
+        "path": [
+          {
+            "x": 90.0,
+            "y": 75.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_EZ"
+        },
+        "pin2": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "_WE1"
+        },
+        "name": "unnamedWire#4",
+        "path": [
+          {
+            "x": 55.0,
+            "y": 15.0
+          },
+          {
+            "x": 370.0,
+            "y": 15.0
+          },
+          {
+            "x": 370.0,
+            "y": 185.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "I0_2"
+        },
+        "name": "unnamedWire#53",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#12",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 35.0
+          },
+          {
+            "x": 35.0,
+            "y": 125.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "A2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#56",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_EC"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#8",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#3",
+        "path": [
+          {
+            "x": 155.0,
+            "y": 20.0
+          },
+          {
+            "x": 365.0,
+            "y": 20.0
+          },
+          {
+            "x": 365.0,
+            "y": 90.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_EN"
+        },
+        "pin2": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "_WE3"
+        },
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 255.0,
+            "y": 25.0
+          },
+          {
+            "x": 360.0,
+            "y": 25.0
+          },
+          {
+            "x": 360.0,
+            "y": 205.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUISplitter#1",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#11",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "A4"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#55",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_3"
+        },
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 55.0
+          },
+          {
+            "x": 25.0,
+            "y": 145.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#58",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_2"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 135.0
+          },
+          {
+            "x": 30.0,
+            "y": 45.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#57",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_1"
+        },
+        "name": "unnamedWire#16",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_4"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 155.0
+          },
+          {
+            "x": 20.0,
+            "y": 65.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#59",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 245.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_3"
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_2"
+        },
+        "pin2": {
+          "compName": "GUISplitter#1",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_4"
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I0_3"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#61",
+        "path": [
+          {
+            "x": 75.0,
+            "y": 265.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I0_2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#60",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I1_1"
+        },
+        "name": "unnamedWire#63",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I0_4"
+        },
+        "name": "unnamedWire#62",
+        "path": [
+          {
+            "x": 80.0,
+            "y": 325.0
+          },
+          {
+            "x": 80.0,
+            "y": 275.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I1_3"
+        },
+        "name": "unnamedWire#65",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "MUX"
+        },
+        "pin2": {
+          "compName": "GUISplitter#2",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#20",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 435.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I1_2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y2"
+        },
+        "name": "unnamedWire#64",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "name": "unnamedWire#67",
+        "path": [
+          {
+            "x": 195.0,
+            "y": 435.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#3",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#23",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 305.0
+          },
+          {
+            "x": 25.0,
+            "y": 265.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "GUISplitter#3",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "I1_4"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y4"
+        },
+        "name": "unnamedWire#66",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#69",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 235.0
+          },
+          {
+            "x": 105.0,
+            "y": 65.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#25",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#24",
+        "path": [
+          {
+            "x": 60.0,
+            "y": 425.0
+          },
+          {
+            "x": 60.0,
+            "y": 415.0
+          },
+          {
+            "x": 30.0,
+            "y": 415.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#68",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "Q3"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "Q4"
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "I3"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#28",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y4"
+        },
+        "pin2": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "D4"
+        },
+        "name": "unnamedWire#70",
+        "path": [
+          {
+            "x": 295.0,
+            "y": 215.0
+          },
+          {
+            "x": 295.0,
+            "y": 255.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#8",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "_WE2"
+        },
+        "name": "unnamedWire#72",
+        "path": [
+          {
+            "x": 420.0,
+            "y": 90.0
+          },
+          {
+            "x": 420.0,
+            "y": 110.0
+          },
+          {
+            "x": 365.0,
+            "y": 110.0
+          },
+          {
+            "x": 365.0,
+            "y": 195.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "D3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y3"
+        },
+        "name": "unnamedWire#71",
+        "path": [
+          {
+            "x": 300.0,
+            "y": 245.0
+          },
+          {
+            "x": 300.0,
+            "y": 205.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1_1"
+        },
+        "name": "unnamedWire#30",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "I1_4"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "Y4"
+        },
+        "name": "unnamedWire#74",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "D1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "Y1"
+        },
+        "name": "unnamedWire#73",
+        "path": [
+          {
+            "x": 310.0,
+            "y": 225.0
+          },
+          {
+            "x": 310.0,
+            "y": 185.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1_3"
+        },
+        "name": "unnamedWire#32",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "I1_2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "Y2"
+        },
+        "name": "unnamedWire#76",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1_2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "Y2"
+        },
+        "name": "unnamedWire#31",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "I1_3"
+        },
+        "name": "unnamedWire#75",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "A1"
+        },
+        "name": "unnamedWire#34",
+        "path": [
+          {
+            "x": 415.0,
+            "y": 380.0
+          },
+          {
+            "x": 80.0,
+            "y": 380.0
+          },
+          {
+            "x": 80.0,
+            "y": 335.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "I0_4"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#4",
+          "pinName": "Y4"
+        },
+        "name": "unnamedWire#78",
+        "path": [
+          {
+            "x": 200.0,
+            "y": 225.0
+          },
+          {
+            "x": 200.0,
+            "y": 95.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "I1_4"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#3",
+          "pinName": "Y4"
+        },
+        "name": "unnamedWire#33",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#5",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#6",
+          "pinName": "I1_1"
+        },
+        "name": "unnamedWire#77",
+        "path": []
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererParams": {
+    "centerText": "MSR",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "standard",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {}
+  }
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.editor/components/am2904/GUIAm2904TestLogic.json b/net.mograsim.logic.model.editor/components/am2904/GUIAm2904TestLogic.json
new file mode 100644 (file)
index 0000000..26928e5
--- /dev/null
@@ -0,0 +1,765 @@
+mograsim version: 0.1.3
+{
+  "width": 60.0,
+  "height": 90.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 60.0,
+        "y": 60.0
+      },
+      "name": "Y101",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 20.0
+      },
+      "name": "Y001",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 50.0
+      },
+      "name": "Y100",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 80.0
+      },
+      "name": "Y111",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 50.0
+      },
+      "name": "I",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 40.0
+      },
+      "name": "Y011",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 10.0
+      },
+      "name": "Y000",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 70.0
+      },
+      "name": "Y110",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 30.0
+      },
+      "name": "Y010",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.4,
+    "subComps": [
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#1",
+        "pos": {
+          "x": 45.0,
+          "y": 50.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#0",
+        "pos": {
+          "x": 85.0,
+          "y": 20.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#3",
+        "pos": {
+          "x": 45.0,
+          "y": 105.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#2",
+        "pos": {
+          "x": 120.0,
+          "y": 15.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 34.0,
+          "y": 99.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 29.0,
+          "y": 129.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUISplitter",
+        "name": "GUISplitter#0",
+        "pos": {
+          "x": 5.0,
+          "y": 110.0
+        },
+        "params": 4
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 79.0,
+          "y": 24.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 79.0,
+          "y": 34.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 24.0,
+          "y": 119.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 19.0,
+          "y": 74.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#7",
+        "pos": {
+          "x": 74.0,
+          "y": 59.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 39.0,
+          "y": 64.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 24.0,
+          "y": 149.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#8",
+        "pos": {
+          "x": 74.0,
+          "y": 119.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#5",
+        "pos": {
+          "x": 80.0,
+          "y": 165.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#10",
+        "pos": {
+          "x": 39.0,
+          "y": 109.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUIxor",
+        "name": "DeserializedSubmodelComponent#0",
+        "pos": {
+          "x": 40.0,
+          "y": 20.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#4",
+        "pos": {
+          "x": 80.0,
+          "y": 115.0
+        },
+        "params": 1
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#2",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 115.0,
+            "y": 60.0
+          },
+          {
+            "x": 115.0,
+            "y": 30.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y000"
+        },
+        "name": "unnamedWire#16",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y001"
+        },
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 80.0,
+            "y": 50.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#17",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 110.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#21",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 110.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y011"
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#4",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y100"
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y010"
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#25",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#3",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUINandGate#4",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#24",
+        "path": [
+          {
+            "x": 70.0,
+            "y": 115.0
+          },
+          {
+            "x": 70.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#3",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#4",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "Y110"
+        },
+        "pin2": {
+          "compName": "GUINandGate#5",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "Y101"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#28",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#0",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#5",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#30",
+        "path": [
+          {
+            "x": 75.0,
+            "y": 170.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#2",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#10",
+        "path": [
+          {
+            "x": 110.0,
+            "y": 20.0
+          },
+          {
+            "x": 110.0,
+            "y": 30.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#5",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#32",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 180.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#4",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 35.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#3",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#31",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 120.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#3",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#12",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 55.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 140.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 65.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "Y111"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#33",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 200.0
+          }
+        ]
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererParams": {
+    "centerText": "Test\nlogic",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {}
+  }
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.editor/components/am2904/GUIAm2904muSR.json b/net.mograsim.logic.model.editor/components/am2904/GUIAm2904muSR.json
new file mode 100644 (file)
index 0000000..fa3ed35
--- /dev/null
@@ -0,0 +1,1081 @@
+mograsim version: 0.1.3
+{
+  "width": 45.0,
+  "height": 46.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 4.0,
+        "y": 46.0
+      },
+      "name": "MUX",
+      "logicWidth": 2
+    },
+    {
+      "location": {
+        "x": 45.0,
+        "y": 19.0
+      },
+      "name": "Q",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 27.5,
+        "y": 46.0
+      },
+      "name": "CINV",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 14.0,
+        "y": 46.0
+      },
+      "name": "C",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 5.5,
+        "y": 0.0
+      },
+      "name": "_EZ",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 37.5,
+        "y": 46.0
+      },
+      "name": "OVRRET",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 31.0
+      },
+      "name": "I",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 25.5,
+        "y": 0.0
+      },
+      "name": "_EN",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 15.5,
+        "y": 0.0
+      },
+      "name": "_EC",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 13.5
+      },
+      "name": "M",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 35.5,
+        "y": 0.0
+      },
+      "name": "_EOVR",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.1,
+    "subComps": [
+      {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
+        "pos": {
+          "x": 215.0,
+          "y": 255.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
+        "pos": {
+          "x": 245.0,
+          "y": 245.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
+        "pos": {
+          "x": 215.0,
+          "y": 235.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUIMerger",
+        "name": "GUIMerger#0",
+        "pos": {
+          "x": 435.0,
+          "y": 175.0
+        },
+        "params": 4
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#2",
+        "pos": {
+          "x": 45.0,
+          "y": 430.0
+        },
+        "params": 2
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#1",
+        "pos": {
+          "x": 5.0,
+          "y": 295.0
+        },
+        "params": 4
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 89.0,
+          "y": 224.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 89.0,
+          "y": 234.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUISplitter",
+        "name": "GUISplitter#0",
+        "pos": {
+          "x": 5.0,
+          "y": 120.0
+        },
+        "params": 4
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 429.0,
+          "y": 204.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 89.0,
+          "y": 214.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 209.0,
+          "y": 244.0
+        },
+        "params": 1
+      },
+      {
+        "id": "GUIdff4_finewe",
+        "name": "GUIdff4_finewe#0",
+        "pos": {
+          "x": 375.0,
+          "y": 170.0
+        }
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#1",
+        "pos": {
+          "x": 100.0,
+          "y": 190.0
+        }
+      },
+      {
+        "id": "GUImux1_4",
+        "name": "DeserializedSubmodelComponent#0",
+        "pos": {
+          "x": 45.0,
+          "y": 240.0
+        }
+      },
+      {
+        "id": "GUIxor",
+        "name": "DeserializedSubmodelComponent#2",
+        "pos": {
+          "x": 215.0,
+          "y": 200.0
+        }
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "CINV"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#36",
+        "path": [
+          {
+            "x": 275.0,
+            "y": 390.0
+          },
+          {
+            "x": 190.0,
+            "y": 390.0
+          },
+          {
+            "x": 190.0,
+            "y": 215.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#38",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 325.0
+          },
+          {
+            "x": 345.0,
+            "y": 325.0
+          },
+          {
+            "x": 345.0,
+            "y": 175.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "_WE1"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_EZ"
+        },
+        "name": "unnamedWire#37",
+        "path": [
+          {
+            "x": 370.0,
+            "y": 185.0
+          },
+          {
+            "x": 370.0,
+            "y": 5.0
+          },
+          {
+            "x": 55.0,
+            "y": 5.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_EOVR"
+        },
+        "pin2": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "_WE4"
+        },
+        "name": "unnamedWire#39",
+        "path": [
+          {
+            "x": 355.0,
+            "y": 215.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_EC"
+        },
+        "pin2": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "_WE2"
+        },
+        "name": "unnamedWire#41",
+        "path": [
+          {
+            "x": 155.0,
+            "y": 10.0
+          },
+          {
+            "x": 365.0,
+            "y": 10.0
+          },
+          {
+            "x": 365.0,
+            "y": 195.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "_WE3"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_EN"
+        },
+        "name": "unnamedWire#40",
+        "path": [
+          {
+            "x": 360.0,
+            "y": 205.0
+          },
+          {
+            "x": 360.0,
+            "y": 15.0
+          },
+          {
+            "x": 255.0,
+            "y": 15.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "D2"
+        },
+        "name": "unnamedWire#43",
+        "path": [
+          {
+            "x": 310.0,
+            "y": 205.0
+          },
+          {
+            "x": 310.0,
+            "y": 235.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "D1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y1"
+        },
+        "name": "unnamedWire#42",
+        "path": [
+          {
+            "x": 315.0,
+            "y": 225.0
+          },
+          {
+            "x": 315.0,
+            "y": 195.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y4"
+        },
+        "name": "unnamedWire#45",
+        "path": [
+          {
+            "x": 160.0,
+            "y": 245.0
+          },
+          {
+            "x": 160.0,
+            "y": 225.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "D3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "Y3"
+        },
+        "name": "unnamedWire#44",
+        "path": [
+          {
+            "x": 305.0,
+            "y": 245.0
+          },
+          {
+            "x": 305.0,
+            "y": 225.0
+          },
+          {
+            "x": 170.0,
+            "y": 225.0
+          },
+          {
+            "x": 170.0,
+            "y": 215.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#2",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#47",
+        "path": [
+          {
+            "x": 210.0,
+            "y": 240.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "D4"
+        },
+        "name": "unnamedWire#46",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#2",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#48",
+        "path": [
+          {
+            "x": 210.0,
+            "y": 250.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_2"
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#1",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#1",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_4"
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "GUISplitter#1",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "I1"
+        },
+        "pin2": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "Q2"
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "Q1"
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "M"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I1_1"
+        },
+        "pin2": {
+          "compName": "GUISplitter#1",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#10",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIMerger#0",
+          "pinName": "O"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_3"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#12",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 275.0
+          },
+          {
+            "x": 25.0,
+            "y": 140.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "Q4"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff4_finewe#0",
+          "pinName": "Q3"
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_4"
+        },
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 150.0
+          },
+          {
+            "x": 20.0,
+            "y": 285.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_1"
+        },
+        "pin2": {
+          "compName": "GUISplitter#0",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 255.0
+          },
+          {
+            "x": 35.0,
+            "y": 120.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#0",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "I0_2"
+        },
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 130.0
+          },
+          {
+            "x": 30.0,
+            "y": 265.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 90.0,
+            "y": 430.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "MUX"
+        },
+        "pin2": {
+          "compName": "GUISplitter#2",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 435.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I1_3"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y3"
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y4"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I1_4"
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y2"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I1_2"
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I0_1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#21",
+        "path": [
+          {
+            "x": 90.0,
+            "y": 205.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I1_1"
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I0_3"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I0_2"
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#25",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#0",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#27",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 235.0
+          },
+          {
+            "x": 40.0,
+            "y": 245.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "I0_4"
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIMerger#0",
+          "pinName": "I3"
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUISplitter#2",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "DeserializedSubmodelComponent#1",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#28",
+        "path": [
+          {
+            "x": 85.0,
+            "y": 440.0
+          },
+          {
+            "x": 85.0,
+            "y": 195.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#30",
+        "path": [
+          {
+            "x": 240.0,
+            "y": 245.0
+          },
+          {
+            "x": 240.0,
+            "y": 250.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "OVRRET"
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#32",
+        "path": [
+          {
+            "x": 375.0,
+            "y": 360.0
+          },
+          {
+            "x": 205.0,
+            "y": 360.0
+          },
+          {
+            "x": 205.0,
+            "y": 260.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#0",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#31",
+        "path": [
+          {
+            "x": 240.0,
+            "y": 260.0
+          },
+          {
+            "x": 240.0,
+            "y": 265.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#34",
+        "path": [
+          {
+            "x": 430.0,
+            "y": 280.0
+          },
+          {
+            "x": 210.0,
+            "y": 280.0
+          },
+          {
+            "x": 210.0,
+            "y": 270.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#33",
+        "path": []
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererParams": {
+    "centerText": "muSR",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "standard",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {}
+  }
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.editor/components/am2910/GUIAm2910.json b/net.mograsim.logic.model.editor/components/am2910/GUIAm2910.json
new file mode 100644 (file)
index 0000000..647afc3
--- /dev/null
@@ -0,0 +1,1138 @@
+mograsim version: 0.1.3
+{
+  "width": 72.0,
+  "height": 67.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 60.0,
+        "y": 0.0
+      },
+      "name": "C",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 36.0,
+        "y": 0.0
+      },
+      "name": "D",
+      "logicWidth": 12
+    },
+    {
+      "location": {
+        "x": 72.0,
+        "y": 40.0
+      },
+      "name": "CI",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 6.0
+      },
+      "name": "_RLD",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 50.0
+      },
+      "name": "I",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 19.0,
+        "y": 67.0
+      },
+      "name": "_MAP",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 44.0
+      },
+      "name": "_CCEN",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 49.0,
+        "y": 67.0
+      },
+      "name": "_OE",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 72.0,
+        "y": 14.0
+      },
+      "name": "_FULL",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 38.0,
+        "y": 67.0
+      },
+      "name": "Y",
+      "logicWidth": 12
+    },
+    {
+      "location": {
+        "x": 13.0,
+        "y": 67.0
+      },
+      "name": "_PL",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 25.0,
+        "y": 67.0
+      },
+      "name": "_VECT",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 38.0
+      },
+      "name": "_CC",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.2,
+    "subComps": [
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#1",
+        "pos": {
+          "x": 10.0,
+          "y": 210.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.GUIram5_12",
+        "name": "GUIram5_12#0",
+        "pos": {
+          "x": 305.0,
+          "y": 100.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#0",
+        "pos": {
+          "x": 40.0,
+          "y": 185.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.GUIdff12",
+        "name": "GUIdff12#0",
+        "pos": {
+          "x": 305.0,
+          "y": 160.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.GUIinc12",
+        "name": "GUIinc12#0",
+        "pos": {
+          "x": 305.0,
+          "y": 190.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+        "name": "GUIBitDisplay#3",
+        "pos": {
+          "x": 265.0,
+          "y": 150.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 294.0,
+          "y": 104.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 324.0,
+          "y": 149.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 179.0,
+          "y": 89.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 189.0,
+          "y": 274.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 4.0,
+          "y": 219.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 179.0,
+          "y": 14.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#7",
+        "pos": {
+          "x": 299.0,
+          "y": 44.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUITriStateBuffer",
+        "name": "GUITriStateBuffer#0",
+        "pos": {
+          "x": 180.0,
+          "y": 290.0
+        },
+        "params": {
+          "logicWidth": 12,
+          "orientation": "DOWN_ALT"
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 299.0,
+          "y": 79.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 299.0,
+          "y": 114.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#8",
+        "pos": {
+          "x": 299.0,
+          "y": 169.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.GUInor12",
+        "name": "GUInor12#0",
+        "pos": {
+          "x": 190.0,
+          "y": 80.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+        "name": "GUIBitDisplay#0",
+        "pos": {
+          "x": 160.0,
+          "y": 95.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910InstrPLA",
+        "name": "GUIAm2910InstrPLA#0",
+        "pos": {
+          "x": 80.0,
+          "y": 155.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910SP",
+        "name": "GUIAm2910SP#0",
+        "pos": {
+          "x": 305.0,
+          "y": 55.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+        "name": "GUIBitDisplay#1",
+        "pos": {
+          "x": 260.0,
+          "y": 115.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+        "name": "GUIBitDisplay#2",
+        "pos": {
+          "x": 345.0,
+          "y": 180.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.GUIsel4_12",
+        "name": "GUIsel4_12#0",
+        "pos": {
+          "x": 150.0,
+          "y": 175.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910RegCntr",
+        "name": "GUIAm2910RegCntr#0",
+        "pos": {
+          "x": 160.0,
+          "y": 25.0
+        }
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#36",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff12#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#38",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2910SP#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#37",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2910RegCntr#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#39",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIinc12#0",
+          "pinName": "CI"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "CI"
+        },
+        "name": "unnamedWire#41",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#40",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "_MAP"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_MAP"
+        },
+        "name": "unnamedWire#43",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "_PL"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_PL"
+        },
+        "name": "unnamedWire#42",
+        "path": [
+          {
+            "x": 85.0,
+            "y": 290.0
+          },
+          {
+            "x": 65.0,
+            "y": 290.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#45",
+        "path": [
+          {
+            "x": 70.0,
+            "y": 250.0
+          },
+          {
+            "x": 70.0,
+            "y": 175.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "_VECT"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_VECT"
+        },
+        "name": "unnamedWire#44",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 290.0
+          },
+          {
+            "x": 125.0,
+            "y": 290.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIram5_12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIBitDisplay#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#47",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910RegCntr#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIBitDisplay#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#46",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIBitDisplay#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#49",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIinc12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIBitDisplay#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#48",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910RegCntr#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910SP#0",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "GUIram5_12#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910SP#0",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "GUIram5_12#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIram5_12#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "YR"
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "SB"
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIram5_12#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#50",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "YD"
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "SA"
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUITriStateBuffer#0",
+          "pinName": "OUT"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#52",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#51",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUInor12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "R\u003d0"
+        },
+        "name": "unnamedWire#10",
+        "path": [
+          {
+            "x": 230.0,
+            "y": 90.0
+          },
+          {
+            "x": 230.0,
+            "y": 120.0
+          },
+          {
+            "x": 95.0,
+            "y": 120.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIinc12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIdff12#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUITriStateBuffer#0",
+          "pinName": "EN"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_OE"
+        },
+        "name": "unnamedWire#53",
+        "path": [
+          {
+            "x": 245.0,
+            "y": 300.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "YmuPC"
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "SD"
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "RDEC"
+        },
+        "pin2": {
+          "compName": "GUIAm2910RegCntr#0",
+          "pinName": "DEC"
+        },
+        "name": "unnamedWire#12",
+        "path": [
+          {
+            "x": 120.0,
+            "y": 170.0
+          },
+          {
+            "x": 120.0,
+            "y": 55.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "YF"
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "SC"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "RWE"
+        },
+        "pin2": {
+          "compName": "GUIAm2910RegCntr#0",
+          "pinName": "WE"
+        },
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 115.0,
+            "y": 160.0
+          },
+          {
+            "x": 115.0,
+            "y": 45.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "STKI1"
+        },
+        "pin2": {
+          "compName": "GUIAm2910SP#0",
+          "pinName": "STKI1"
+        },
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 290.0,
+            "y": 230.0
+          },
+          {
+            "x": 290.0,
+            "y": 70.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "STKI0"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 295.0,
+            "y": 220.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIram5_12#0",
+          "pinName": "WE"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#16",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2910SP#0",
+          "pinName": "STKI0"
+        },
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 295.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIinc12#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#18",
+        "path": [
+          {
+            "x": 325.0,
+            "y": 275.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIram5_12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#19",
+        "path": [
+          {
+            "x": 200.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#20",
+        "path": [
+          {
+            "x": 220.0,
+            "y": 150.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUInor12#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#25",
+        "path": [
+          {
+            "x": 145.0,
+            "y": 15.0
+          },
+          {
+            "x": 145.0,
+            "y": 150.0
+          },
+          {
+            "x": 160.0,
+            "y": 150.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2910RegCntr#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUITriStateBuffer#0",
+          "pinName": "IN"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_RLD"
+        },
+        "pin2": {
+          "compName": "GUIAm2910RegCntr#0",
+          "pinName": "_RLD"
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_CC"
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "PASS"
+        },
+        "name": "unnamedWire#28",
+        "path": [
+          {
+            "x": 65.0,
+            "y": 195.0
+          },
+          {
+            "x": 65.0,
+            "y": 160.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_CCEN"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#30",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#32",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 225.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#31",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 215.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910SP#0",
+          "pinName": "_FULL"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_FULL"
+        },
+        "name": "unnamedWire#34",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#33",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 220.0
+          },
+          {
+            "x": 35.0,
+            "y": 200.0
+          }
+        ]
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererParams": {
+    "centerText": "Am2910",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {}
+  }
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.editor/components/am2910/GUIAm2910_old.json b/net.mograsim.logic.model.editor/components/am2910/GUIAm2910_old.json
new file mode 100644 (file)
index 0000000..ae71c6d
--- /dev/null
@@ -0,0 +1,1089 @@
+mograsim version: 0.1.3
+{
+  "width": 72.0,
+  "height": 61.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 19.0,
+        "y": 61.0
+      },
+      "name": "_MAP",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 44.0
+      },
+      "name": "_CCEN",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 0.0
+      },
+      "name": "C",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 36.0,
+        "y": 0.0
+      },
+      "name": "D",
+      "logicWidth": 12
+    },
+    {
+      "location": {
+        "x": 72.0,
+        "y": 14.0
+      },
+      "name": "_FULL",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 72.0,
+        "y": 40.0
+      },
+      "name": "CI",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 6.0
+      },
+      "name": "_RLD",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 50.0
+      },
+      "name": "I",
+      "logicWidth": 4
+    },
+    {
+      "location": {
+        "x": 38.0,
+        "y": 61.0
+      },
+      "name": "Y",
+      "logicWidth": 12
+    },
+    {
+      "location": {
+        "x": 13.0,
+        "y": 61.0
+      },
+      "name": "_PL",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 25.0,
+        "y": 61.0
+      },
+      "name": "_VECT",
+      "logicWidth": 1
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 38.0
+      },
+      "name": "_CC",
+      "logicWidth": 1
+    }
+  ],
+  "submodel": {
+    "innerScale": 0.2,
+    "subComps": [
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#1",
+        "pos": {
+          "x": 10.0,
+          "y": 210.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.GUIram5_12",
+        "name": "GUIram5_12#0",
+        "pos": {
+          "x": 305.0,
+          "y": 100.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUINandGate",
+        "name": "GUINandGate#0",
+        "pos": {
+          "x": 40.0,
+          "y": 185.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.GUIdff12",
+        "name": "GUIdff12#0",
+        "pos": {
+          "x": 305.0,
+          "y": 160.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.GUIinc12",
+        "name": "GUIinc12#0",
+        "pos": {
+          "x": 305.0,
+          "y": 190.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+        "name": "GUIBitDisplay#3",
+        "pos": {
+          "x": 265.0,
+          "y": 150.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 294.0,
+          "y": 104.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 324.0,
+          "y": 149.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 179.0,
+          "y": 89.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 189.0,
+          "y": 274.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 4.0,
+          "y": 219.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 179.0,
+          "y": 14.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#7",
+        "pos": {
+          "x": 299.0,
+          "y": 44.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 299.0,
+          "y": 79.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 299.0,
+          "y": 114.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.wires.WireCrossPoint",
+        "name": "WireCrossPoint#8",
+        "pos": {
+          "x": 299.0,
+          "y": 169.0
+        },
+        "params": 1
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.GUIsel4_12",
+        "name": "GUIsel4_12#0",
+        "pos": {
+          "x": 150.0,
+          "y": 175.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.GUInor12",
+        "name": "GUInor12#0",
+        "pos": {
+          "x": 190.0,
+          "y": 80.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+        "name": "GUIBitDisplay#0",
+        "pos": {
+          "x": 160.0,
+          "y": 95.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910InstrPLA",
+        "name": "GUIAm2910InstrPLA#0",
+        "pos": {
+          "x": 80.0,
+          "y": 155.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910SP",
+        "name": "GUIAm2910SP#0",
+        "pos": {
+          "x": 305.0,
+          "y": 55.0
+        }
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+        "name": "GUIBitDisplay#1",
+        "pos": {
+          "x": 260.0,
+          "y": 115.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.model.components.atomic.GUIBitDisplay",
+        "name": "GUIBitDisplay#2",
+        "pos": {
+          "x": 345.0,
+          "y": 180.0
+        },
+        "params": 12
+      },
+      {
+        "id": "class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910RegCntr",
+        "name": "GUIAm2910RegCntr#0",
+        "pos": {
+          "x": 160.0,
+          "y": 25.0
+        }
+      }
+    ],
+    "innerWires": [
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#36",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff12#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#38",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2910SP#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#37",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2910RegCntr#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#39",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIinc12#0",
+          "pinName": "CI"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "CI"
+        },
+        "name": "unnamedWire#41",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#40",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "_MAP"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_MAP"
+        },
+        "name": "unnamedWire#43",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "_PL"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_PL"
+        },
+        "name": "unnamedWire#42",
+        "path": [
+          {
+            "x": 85.0,
+            "y": 290.0
+          },
+          {
+            "x": 65.0,
+            "y": 290.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#45",
+        "path": [
+          {
+            "x": 70.0,
+            "y": 250.0
+          },
+          {
+            "x": 70.0,
+            "y": 175.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "_VECT"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_VECT"
+        },
+        "name": "unnamedWire#44",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 290.0
+          },
+          {
+            "x": 125.0,
+            "y": 290.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIram5_12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIBitDisplay#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#47",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910RegCntr#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIBitDisplay#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#46",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIBitDisplay#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#49",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIinc12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIBitDisplay#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#48",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910RegCntr#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910SP#0",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "GUIram5_12#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910SP#0",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "GUIram5_12#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIram5_12#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "YR"
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "SB"
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIram5_12#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#50",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "YD"
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "SA"
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#51",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUInor12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "R\u003d0"
+        },
+        "name": "unnamedWire#10",
+        "path": [
+          {
+            "x": 230.0,
+            "y": 90.0
+          },
+          {
+            "x": 230.0,
+            "y": 120.0
+          },
+          {
+            "x": 95.0,
+            "y": 120.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIinc12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIdff12#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "YmuPC"
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "SD"
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "RDEC"
+        },
+        "pin2": {
+          "compName": "GUIAm2910RegCntr#0",
+          "pinName": "DEC"
+        },
+        "name": "unnamedWire#12",
+        "path": [
+          {
+            "x": 120.0,
+            "y": 170.0
+          },
+          {
+            "x": 120.0,
+            "y": 55.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "YF"
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "SC"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "RWE"
+        },
+        "pin2": {
+          "compName": "GUIAm2910RegCntr#0",
+          "pinName": "WE"
+        },
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 115.0,
+            "y": 160.0
+          },
+          {
+            "x": 115.0,
+            "y": 45.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "STKI1"
+        },
+        "pin2": {
+          "compName": "GUIAm2910SP#0",
+          "pinName": "STKI1"
+        },
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 290.0,
+            "y": 230.0
+          },
+          {
+            "x": 290.0,
+            "y": 70.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "STKI0"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 295.0,
+            "y": 220.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIram5_12#0",
+          "pinName": "WE"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#16",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2910SP#0",
+          "pinName": "STKI0"
+        },
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 295.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIinc12#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#18",
+        "path": [
+          {
+            "x": 325.0,
+            "y": 275.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIram5_12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#19",
+        "path": [
+          {
+            "x": 200.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#20",
+        "path": [
+          {
+            "x": 220.0,
+            "y": 150.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUInor12#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIsel4_12#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#25",
+        "path": [
+          {
+            "x": 145.0,
+            "y": 15.0
+          },
+          {
+            "x": 145.0,
+            "y": 150.0
+          },
+          {
+            "x": 160.0,
+            "y": 150.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2910RegCntr#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_RLD"
+        },
+        "pin2": {
+          "compName": "GUIAm2910RegCntr#0",
+          "pinName": "_RLD"
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_CC"
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIAm2910InstrPLA#0",
+          "pinName": "PASS"
+        },
+        "name": "unnamedWire#28",
+        "path": [
+          {
+            "x": 65.0,
+            "y": 195.0
+          },
+          {
+            "x": 65.0,
+            "y": 160.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_CCEN"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#30",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#32",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 225.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#31",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 215.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2910SP#0",
+          "pinName": "_FULL"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_FULL"
+        },
+        "name": "unnamedWire#34",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#33",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 220.0
+          },
+          {
+            "x": 35.0,
+            "y": 200.0
+          }
+        ]
+      }
+    ]
+  },
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererParams": {
+    "centerText": "Am2910",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {}
+  }
+}
\ No newline at end of file
index 14bb97b..e510661 100644 (file)
@@ -7,8 +7,12 @@ mograsim version: 0.1.3
   "GUIAm2901ALUInclDecode": "file:components/am2901/GUIAm2901ALUInclDecode.json",
   "GUIAm2901ALUInclSourceDecodeInclFunctionDecode": "file:components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json",
   "GUIAm2901ALUOneBit": "file:components/am2901/GUIAm2901ALUOneBit.json",
+  "GUIAm2904": "file:components/am2904/GUIAm2904.json",
+  "GUIAm2904MSR": "file:components/am2904/GUIAm2904MSR.json",
+  "GUIAm2904muSR": "file:components/am2904/GUIAm2904muSR.json",
   "GUIAm2904RegCTInstrDecode": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904RegCTInstrDecode",
   "GUIAm2904ShiftInstrDecode": "class:net.mograsim.logic.model.am2900.components.am2904.GUIAm2904ShiftInstrDecode",
+  "GUIAm2904TestLogic": "file:components/am2904/GUIAm2904TestLogic.json",
   "GUIAm2901DestDecode": "file:components/am2901/GUIAm2901DestDecode.json",
   "GUIAm2901SourceDecode": "file:components/am2901/GUIAm2901SourceDecode.json",
   "GUIAm2910InstrPLA": "class:net.mograsim.logic.model.am2900.components.am2910.GUIAm2910InstrPLA",
@@ -35,6 +39,9 @@ mograsim version: 0.1.3
   "GUIinc12": "class:net.mograsim.logic.model.am2900.components.GUIinc12",
   "GUImux1": "file:components/GUImux1.json",
   "GUImux1_4": "file:components/GUImux1_4.json",
+  "GUImux2": "file:components/GUImux2.json",
+  "GUImux2_4": "file:components/GUImux2_4.json",
+  "GUImux3": "file:components/GUImux3.json",
   "GUInand3": "file:components/GUInand3.json",
   "GUInor12": "class:net.mograsim.logic.model.am2900.components.GUInor12",
   "GUInot4": "file:components/GUInot4.json",
@@ -43,6 +50,7 @@ mograsim version: 0.1.3
   "GUIram2": "file:components/GUIram2.json",
   "GUIram4": "file:components/GUIram4.json",
   "GUIram5_12": "class:net.mograsim.logic.model.am2900.components.GUIram5_12",
+  "GUIsel1": "file:components/GUIsel1.json",
   "GUIsel2_4": "file:components/GUIsel2_4.json",
   "GUIsel3_4": "file:components/GUIsel3_4.json",
   "GUIsel4_12": "class:net.mograsim.logic.model.am2900.components.GUImux4_12",