Implemented the Am2904ShiftInstrDecode gate-based
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Mon, 4 May 2020 18:24:53 +0000 (20:24 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Mon, 4 May 2020 18:24:53 +0000 (20:24 +0200)
plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904ShiftInstrDecode.json [new file with mode: 0644]
plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/ModelAm2904ShiftInstrDecode.java [deleted file]
plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/standardComponentIDMapping.json

diff --git a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904ShiftInstrDecode.json b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904ShiftInstrDecode.json
new file mode 100644 (file)
index 0000000..66b3346
--- /dev/null
@@ -0,0 +1,4322 @@
+{
+  "width": 60.0,
+  "height": 80.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 25.0
+      },
+      "name": "I",
+      "logicWidth": 5,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 75.0
+      },
+      "name": "MC_EN",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 65.0
+      },
+      "name": "MC_MUX",
+      "logicWidth": 2,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 55.0
+      },
+      "name": "OE0",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 45.0
+      },
+      "name": "OEn",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 25.0
+      },
+      "name": "QIO0_MUX",
+      "logicWidth": 3,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 35.0
+      },
+      "name": "QIOn_MUX",
+      "logicWidth": 3,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 5.0
+      },
+      "name": "SIO0_MUX",
+      "logicWidth": 3,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 15.0
+      },
+      "name": "SIOn_MUX",
+      "logicWidth": 3,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 55.0
+      },
+      "name": "_SE",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    }
+  ],
+  "innerScale": 0.1,
+  "submodel": {
+    "components": [
+      {
+        "id": "NandGate",
+        "name": "NandGate#0",
+        "pos": {
+          "x": 50.0,
+          "y": 225.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#1",
+        "pos": {
+          "x": 50.0,
+          "y": 250.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#2",
+        "pos": {
+          "x": 50.0,
+          "y": 275.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#3",
+        "pos": {
+          "x": 50.0,
+          "y": 300.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#4",
+        "pos": {
+          "x": 45.0,
+          "y": 535.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#5",
+        "pos": {
+          "x": 50.0,
+          "y": 350.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#6",
+        "pos": {
+          "x": 50.0,
+          "y": 375.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#7",
+        "pos": {
+          "x": 555.0,
+          "y": 30.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#8",
+        "pos": {
+          "x": 525.0,
+          "y": 25.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#9",
+        "pos": {
+          "x": 500.0,
+          "y": 170.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#10",
+        "pos": {
+          "x": 470.0,
+          "y": 160.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#11",
+        "pos": {
+          "x": 450.0,
+          "y": 185.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#12",
+        "pos": {
+          "x": 440.0,
+          "y": 150.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#13",
+        "pos": {
+          "x": 415.0,
+          "y": 180.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#14",
+        "pos": {
+          "x": 515.0,
+          "y": 115.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#15",
+        "pos": {
+          "x": 485.0,
+          "y": 125.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#16",
+        "pos": {
+          "x": 295.0,
+          "y": 65.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#17",
+        "pos": {
+          "x": 265.0,
+          "y": 85.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#18",
+        "pos": {
+          "x": 265.0,
+          "y": 60.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#19",
+        "pos": {
+          "x": 225.0,
+          "y": 60.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#20",
+        "pos": {
+          "x": 195.0,
+          "y": 50.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#21",
+        "pos": {
+          "x": 190.0,
+          "y": 75.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#22",
+        "pos": {
+          "x": 555.0,
+          "y": 205.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#23",
+        "pos": {
+          "x": 525.0,
+          "y": 200.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#24",
+        "pos": {
+          "x": 525.0,
+          "y": 225.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#25",
+        "pos": {
+          "x": 495.0,
+          "y": 220.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#26",
+        "pos": {
+          "x": 555.0,
+          "y": 340.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#27",
+        "pos": {
+          "x": 525.0,
+          "y": 340.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#28",
+        "pos": {
+          "x": 490.0,
+          "y": 345.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#29",
+        "pos": {
+          "x": 520.0,
+          "y": 315.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#30",
+        "pos": {
+          "x": 490.0,
+          "y": 285.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#31",
+        "pos": {
+          "x": 490.0,
+          "y": 315.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#32",
+        "pos": {
+          "x": 505.0,
+          "y": 760.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#33",
+        "pos": {
+          "x": 505.0,
+          "y": 735.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#34",
+        "pos": {
+          "x": 470.0,
+          "y": 715.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#35",
+        "pos": {
+          "x": 410.0,
+          "y": 745.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#36",
+        "pos": {
+          "x": 440.0,
+          "y": 750.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#37",
+        "pos": {
+          "x": 435.0,
+          "y": 725.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#38",
+        "pos": {
+          "x": 535.0,
+          "y": 755.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#39",
+        "pos": {
+          "x": 515.0,
+          "y": 270.0
+        },
+        "params": 1
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#0",
+        "pos": {
+          "x": 5.0,
+          "y": 230.0
+        },
+        "params": {
+          "logicWidth": 5,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#1",
+        "pos": {
+          "x": 580.0,
+          "y": 645.0
+        },
+        "params": {
+          "logicWidth": 2,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#2",
+        "pos": {
+          "x": 585.0,
+          "y": 340.0
+        },
+        "params": {
+          "logicWidth": 3,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#3",
+        "pos": {
+          "x": 585.0,
+          "y": 240.0
+        },
+        "params": {
+          "logicWidth": 3,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#4",
+        "pos": {
+          "x": 585.0,
+          "y": 140.0
+        },
+        "params": {
+          "logicWidth": 3,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#5",
+        "pos": {
+          "x": 585.0,
+          "y": 40.0
+        },
+        "params": {
+          "logicWidth": 3,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 434.0,
+          "y": 764.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 544.0,
+          "y": 559.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 29.0,
+          "y": 254.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 34.0,
+          "y": 279.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 39.0,
+          "y": 304.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 39.0,
+          "y": 549.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 474.0,
+          "y": 289.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
+        "pos": {
+          "x": 29.0,
+          "y": 264.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
+        "pos": {
+          "x": 479.0,
+          "y": 239.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 39.0,
+          "y": 314.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
+        "pos": {
+          "x": 29.0,
+          "y": 339.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#11",
+        "pos": {
+          "x": 84.0,
+          "y": 259.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#12",
+        "pos": {
+          "x": 429.0,
+          "y": 164.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#13",
+        "pos": {
+          "x": 29.0,
+          "y": 249.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#14",
+        "pos": {
+          "x": 24.0,
+          "y": 239.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#15",
+        "pos": {
+          "x": 519.0,
+          "y": 59.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#16",
+        "pos": {
+          "x": 469.0,
+          "y": 309.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#17",
+        "pos": {
+          "x": 539.0,
+          "y": 549.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#18",
+        "pos": {
+          "x": 539.0,
+          "y": 544.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#19",
+        "pos": {
+          "x": 29.0,
+          "y": 354.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#20",
+        "pos": {
+          "x": 479.0,
+          "y": 329.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#21",
+        "pos": {
+          "x": 339.0,
+          "y": 259.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#22",
+        "pos": {
+          "x": 179.0,
+          "y": 209.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#23",
+        "pos": {
+          "x": 484.0,
+          "y": 319.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#24",
+        "pos": {
+          "x": 214.0,
+          "y": 224.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#25",
+        "pos": {
+          "x": 104.0,
+          "y": 359.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#26",
+        "pos": {
+          "x": 19.0,
+          "y": 389.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#27",
+        "pos": {
+          "x": 19.0,
+          "y": 379.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#28",
+        "pos": {
+          "x": 379.0,
+          "y": 254.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#29",
+        "pos": {
+          "x": 94.0,
+          "y": 309.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#30",
+        "pos": {
+          "x": 399.0,
+          "y": 459.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#31",
+        "pos": {
+          "x": 434.0,
+          "y": 754.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#32",
+        "pos": {
+          "x": 509.0,
+          "y": 279.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#33",
+        "pos": {
+          "x": 24.0,
+          "y": 229.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#34",
+        "pos": {
+          "x": 34.0,
+          "y": 259.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#35",
+        "pos": {
+          "x": 39.0,
+          "y": 269.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#36",
+        "pos": {
+          "x": 109.0,
+          "y": 204.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#37",
+        "pos": {
+          "x": 34.0,
+          "y": 289.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#38",
+        "pos": {
+          "x": 89.0,
+          "y": 284.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#39",
+        "pos": {
+          "x": 79.0,
+          "y": 234.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#40",
+        "pos": {
+          "x": 84.0,
+          "y": 269.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#41",
+        "pos": {
+          "x": 184.0,
+          "y": 239.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#42",
+        "pos": {
+          "x": 219.0,
+          "y": 234.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#43",
+        "pos": {
+          "x": 169.0,
+          "y": 229.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#44",
+        "pos": {
+          "x": 174.0,
+          "y": 219.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#45",
+        "pos": {
+          "x": 179.0,
+          "y": 109.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#46",
+        "pos": {
+          "x": 259.0,
+          "y": 204.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#47",
+        "pos": {
+          "x": 329.0,
+          "y": 204.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#48",
+        "pos": {
+          "x": 344.0,
+          "y": 219.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#49",
+        "pos": {
+          "x": 354.0,
+          "y": 124.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#50",
+        "pos": {
+          "x": 514.0,
+          "y": 89.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#51",
+        "pos": {
+          "x": 344.0,
+          "y": 209.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#52",
+        "pos": {
+          "x": 354.0,
+          "y": 229.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#53",
+        "pos": {
+          "x": 359.0,
+          "y": 234.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#54",
+        "pos": {
+          "x": 429.0,
+          "y": 134.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#55",
+        "pos": {
+          "x": 339.0,
+          "y": 214.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#56",
+        "pos": {
+          "x": 434.0,
+          "y": 154.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#57",
+        "pos": {
+          "x": 364.0,
+          "y": 239.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#58",
+        "pos": {
+          "x": 369.0,
+          "y": 244.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#59",
+        "pos": {
+          "x": 369.0,
+          "y": 234.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#60",
+        "pos": {
+          "x": 344.0,
+          "y": 264.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#61",
+        "pos": {
+          "x": 489.0,
+          "y": 264.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#62",
+        "pos": {
+          "x": 474.0,
+          "y": 279.0
+        },
+        "params": 1
+      },
+      {
+        "id": "and",
+        "name": "and#0",
+        "pos": {
+          "x": 50.0,
+          "y": 325.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#1",
+        "pos": {
+          "x": 115.0,
+          "y": 255.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#2",
+        "pos": {
+          "x": 550.0,
+          "y": 545.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#3",
+        "pos": {
+          "x": 550.0,
+          "y": 445.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#4",
+        "pos": {
+          "x": 415.0,
+          "y": 205.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#5",
+        "pos": {
+          "x": 545.0,
+          "y": 110.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#6",
+        "pos": {
+          "x": 480.0,
+          "y": 100.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#7",
+        "pos": {
+          "x": 225.0,
+          "y": 85.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#8",
+        "pos": {
+          "x": 550.0,
+          "y": 315.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#9",
+        "pos": {
+          "x": 470.0,
+          "y": 745.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#10",
+        "pos": {
+          "x": 565.0,
+          "y": 745.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#11",
+        "pos": {
+          "x": 550.0,
+          "y": 270.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#12",
+        "pos": {
+          "x": 450.0,
+          "y": 120.0
+        }
+      }
+    ],
+    "wires": [
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#26",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#27",
+          "pinName": ""
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#27",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#6",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#2",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "MC_MUX"
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#2",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "QIOn_MUX"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#3",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "QIO0_MUX"
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#4",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "SIOn_MUX"
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#5",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "SIO0_MUX"
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#31",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#10",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "name": "unnamedWire#11",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
+        },
+        "name": "unnamedWire#12",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 210.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#33",
+          "pinName": ""
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#34",
+          "pinName": ""
+        },
+        "name": "unnamedWire#14",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#35",
+          "pinName": ""
+        },
+        "name": "unnamedWire#15",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#32",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 435.0,
+            "y": 775.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#2",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#37",
+          "pinName": ""
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#3",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_SE"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#4",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#4",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#25",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 540.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#26",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 330.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#28",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#35",
+          "pinName": ""
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#48",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#51",
+          "pinName": ""
+        },
+        "name": "unnamedWire#30",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#3",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#31",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#5",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#32",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 365.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#33",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#19",
+          "pinName": ""
+        },
+        "name": "unnamedWire#34",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#40",
+          "pinName": ""
+        },
+        "name": "unnamedWire#36",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#38",
+          "pinName": ""
+        },
+        "name": "unnamedWire#37",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "and#12",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#15",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#38",
+        "path": [
+          {
+            "x": 480.0,
+            "y": 125.0
+          },
+          {
+            "x": 480.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#43",
+          "pinName": ""
+        },
+        "name": "unnamedWire#39",
+        "path": [
+          {
+            "x": 85.0,
+            "y": 230.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#33",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#40",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#41",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#36",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#42",
+        "path": [
+          {
+            "x": 110.0,
+            "y": 260.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#7",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#5",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#43",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#8",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#7",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#44",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#7",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#49",
+          "pinName": ""
+        },
+        "name": "unnamedWire#45",
+        "path": [
+          {
+            "x": 550.0,
+            "y": 45.0
+          },
+          {
+            "x": 550.0,
+            "y": 50.0
+          },
+          {
+            "x": 355.0,
+            "y": 50.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#35",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#39",
+          "pinName": ""
+        },
+        "name": "unnamedWire#46",
+        "path": [
+          {
+            "x": 405.0,
+            "y": 760.0
+          },
+          {
+            "x": 405.0,
+            "y": 465.0
+          },
+          {
+            "x": 80.0,
+            "y": 465.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#50",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#5",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#47",
+        "path": [
+          {
+            "x": 540.0,
+            "y": 90.0
+          },
+          {
+            "x": 540.0,
+            "y": 115.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#5",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#48",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#8",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#49",
+        "path": [
+          {
+            "x": 520.0,
+            "y": 40.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#12",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#49",
+          "pinName": ""
+        },
+        "name": "unnamedWire#50",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "and#3",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "OEn"
+        },
+        "name": "unnamedWire#51",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "and#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "OE0"
+        },
+        "name": "unnamedWire#52",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#4",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#53",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
+        },
+        "name": "unnamedWire#54",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#2",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#55",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#6",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#30",
+          "pinName": ""
+        },
+        "name": "unnamedWire#56",
+        "path": [
+          {
+            "x": 75.0,
+            "y": 385.0
+          },
+          {
+            "x": 75.0,
+            "y": 460.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#36",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#57",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#58",
+        "path": [
+          {
+            "x": 545.0,
+            "y": 645.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#19",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#5",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#59",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#19",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#60",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 450.0
+          },
+          {
+            "x": 390.0,
+            "y": 450.0
+          },
+          {
+            "x": 390.0,
+            "y": 655.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#9",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#4",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#61",
+        "path": [
+          {
+            "x": 575.0,
+            "y": 180.0
+          },
+          {
+            "x": 575.0,
+            "y": 160.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#10",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#9",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#62",
+        "path": [
+          {
+            "x": 495.0,
+            "y": 170.0
+          },
+          {
+            "x": 495.0,
+            "y": 175.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#11",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#9",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#63",
+        "path": [
+          {
+            "x": 475.0,
+            "y": 195.0
+          },
+          {
+            "x": 475.0,
+            "y": 185.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#12",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#10",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#64",
+        "path": [
+          {
+            "x": 465.0,
+            "y": 160.0
+          },
+          {
+            "x": 465.0,
+            "y": 165.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#3",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#29",
+          "pinName": ""
+        },
+        "name": "unnamedWire#65",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#12",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#56",
+          "pinName": ""
+        },
+        "name": "unnamedWire#66",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#12",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#67",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "and#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#58",
+          "pinName": ""
+        },
+        "name": "unnamedWire#68",
+        "path": [
+          {
+            "x": 100.0,
+            "y": 330.0
+          },
+          {
+            "x": 100.0,
+            "y": 245.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#58",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#59",
+          "pinName": ""
+        },
+        "name": "unnamedWire#69",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#13",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#11",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#70",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "and#4",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#11",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#71",
+        "path": [
+          {
+            "x": 445.0,
+            "y": 210.0
+          },
+          {
+            "x": 445.0,
+            "y": 200.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#34",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#55",
+          "pinName": ""
+        },
+        "name": "unnamedWire#72",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 215.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#26",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#73",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 445.0
+          },
+          {
+            "x": 385.0,
+            "y": 445.0
+          },
+          {
+            "x": 385.0,
+            "y": 560.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#34",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#74",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#13",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#55",
+          "pinName": ""
+        },
+        "name": "unnamedWire#75",
+        "path": [
+          {
+            "x": 340.0,
+            "y": 195.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#51",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#4",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#76",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#39",
+          "pinName": ""
+        },
+        "name": "unnamedWire#77",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#24",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#4",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#78",
+        "path": [
+          {
+            "x": 350.0,
+            "y": 225.0
+          },
+          {
+            "x": 350.0,
+            "y": 220.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#5",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#4",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#79",
+        "path": [
+          {
+            "x": 575.0,
+            "y": 115.0
+          },
+          {
+            "x": 575.0,
+            "y": 150.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#14",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "and#5",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#80",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#15",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#14",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#81",
+        "path": [
+          {
+            "x": 510.0,
+            "y": 135.0
+          },
+          {
+            "x": 510.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#6",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#14",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#82",
+        "path": [
+          {
+            "x": 510.0,
+            "y": 105.0
+          },
+          {
+            "x": 510.0,
+            "y": 120.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#15",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#56",
+          "pinName": ""
+        },
+        "name": "unnamedWire#83",
+        "path": [
+          {
+            "x": 480.0,
+            "y": 140.0
+          },
+          {
+            "x": 480.0,
+            "y": 145.0
+          },
+          {
+            "x": 435.0,
+            "y": 145.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#5",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#25",
+          "pinName": ""
+        },
+        "name": "unnamedWire#84",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#25",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#6",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#85",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 250.0
+          },
+          {
+            "x": 375.0,
+            "y": 250.0
+          },
+          {
+            "x": 375.0,
+            "y": 115.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#3",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#86",
+        "path": [
+          {
+            "x": 540.0,
+            "y": 450.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#13",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#87",
+        "path": [
+          {
+            "x": 335.0,
+            "y": 210.0
+          },
+          {
+            "x": 335.0,
+            "y": 185.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#7",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#17",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#88",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#36",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "and#9",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#89",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#27",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O4"
+        },
+        "name": "unnamedWire#90",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 230.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#54",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#6",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#91",
+        "path": [
+          {
+            "x": 430.0,
+            "y": 105.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#54",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#12",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#92",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#33",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#36",
+          "pinName": ""
+        },
+        "name": "unnamedWire#93",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 205.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#16",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#4",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#94",
+        "path": [
+          {
+            "x": 580.0,
+            "y": 75.0
+          },
+          {
+            "x": 580.0,
+            "y": 140.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#16",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "NandGate#17",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#95",
+        "path": [
+          {
+            "x": 290.0,
+            "y": 80.0
+          },
+          {
+            "x": 290.0,
+            "y": 95.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#18",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#16",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#96",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#26",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#6",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#97",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#46",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#18",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#98",
+        "path": [
+          {
+            "x": 260.0,
+            "y": 65.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#9",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#37",
+          "pinName": ""
+        },
+        "name": "unnamedWire#99",
+        "path": [
+          {
+            "x": 465.0,
+            "y": 750.0
+          },
+          {
+            "x": 465.0,
+            "y": 715.0
+          },
+          {
+            "x": 395.0,
+            "y": 715.0
+          },
+          {
+            "x": 395.0,
+            "y": 455.0
+          },
+          {
+            "x": 35.0,
+            "y": 455.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#7",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#24",
+          "pinName": ""
+        },
+        "name": "unnamedWire#100",
+        "path": [
+          {
+            "x": 215.0,
+            "y": 90.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#7",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#42",
+          "pinName": ""
+        },
+        "name": "unnamedWire#101",
+        "path": [
+          {
+            "x": 220.0,
+            "y": 100.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#19",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#18",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#102",
+        "path": [
+          {
+            "x": 255.0,
+            "y": 70.0
+          },
+          {
+            "x": 255.0,
+            "y": 75.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#20",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#19",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#103",
+        "path": [
+          {
+            "x": 220.0,
+            "y": 60.0
+          },
+          {
+            "x": 220.0,
+            "y": 65.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#21",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#19",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#104",
+        "path": [
+          {
+            "x": 220.0,
+            "y": 85.0
+          },
+          {
+            "x": 220.0,
+            "y": 75.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#20",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#43",
+          "pinName": ""
+        },
+        "name": "unnamedWire#105",
+        "path": [
+          {
+            "x": 170.0,
+            "y": 55.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#20",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#44",
+          "pinName": ""
+        },
+        "name": "unnamedWire#106",
+        "path": [
+          {
+            "x": 175.0,
+            "y": 65.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#45",
+          "pinName": ""
+        },
+        "name": "unnamedWire#107",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#21",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#41",
+          "pinName": ""
+        },
+        "name": "unnamedWire#108",
+        "path": [
+          {
+            "x": 185.0,
+            "y": 90.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#39",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "and#11",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#109",
+        "path": [
+          {
+            "x": 540.0,
+            "y": 280.0
+          },
+          {
+            "x": 540.0,
+            "y": 275.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#58",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#3",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#110",
+        "path": [
+          {
+            "x": 390.0,
+            "y": 245.0
+          },
+          {
+            "x": 390.0,
+            "y": 250.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#28",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#5",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#111",
+        "path": [
+          {
+            "x": 380.0,
+            "y": 55.0
+          },
+          {
+            "x": 580.0,
+            "y": 55.0
+          },
+          {
+            "x": 580.0,
+            "y": 50.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#22",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#3",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#112",
+        "path": [
+          {
+            "x": 580.0,
+            "y": 215.0
+          },
+          {
+            "x": 580.0,
+            "y": 240.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#23",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#22",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#113",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#24",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#22",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#114",
+        "path": [
+          {
+            "x": 550.0,
+            "y": 235.0
+          },
+          {
+            "x": 550.0,
+            "y": 220.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#25",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#24",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#115",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#59",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#23",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#116",
+        "path": [
+          {
+            "x": 475.0,
+            "y": 235.0
+          },
+          {
+            "x": 475.0,
+            "y": 205.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#23",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#117",
+        "path": [
+          {
+            "x": 480.0,
+            "y": 215.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#24",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#28",
+          "pinName": ""
+        },
+        "name": "unnamedWire#118",
+        "path": [
+          {
+            "x": 520.0,
+            "y": 240.0
+          },
+          {
+            "x": 520.0,
+            "y": 255.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#21",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#25",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#119",
+        "path": [
+          {
+            "x": 485.0,
+            "y": 260.0
+          },
+          {
+            "x": 485.0,
+            "y": 225.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#60",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#61",
+          "pinName": ""
+        },
+        "name": "unnamedWire#120",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#60",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#2",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#121",
+        "path": [
+          {
+            "x": 345.0,
+            "y": 375.0
+          },
+          {
+            "x": 580.0,
+            "y": 375.0
+          },
+          {
+            "x": 580.0,
+            "y": 360.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#26",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#2",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#122",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#26",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "name": "unnamedWire#123",
+        "path": [
+          {
+            "x": 550.0,
+            "y": 355.0
+          },
+          {
+            "x": 550.0,
+            "y": 370.0
+          },
+          {
+            "x": 470.0,
+            "y": 370.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#27",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#26",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#124",
+        "path": [
+          {
+            "x": 550.0,
+            "y": 350.0
+          },
+          {
+            "x": 550.0,
+            "y": 345.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#27",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
+        },
+        "name": "unnamedWire#125",
+        "path": [
+          {
+            "x": 520.0,
+            "y": 355.0
+          },
+          {
+            "x": 520.0,
+            "y": 340.0
+          },
+          {
+            "x": 485.0,
+            "y": 340.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#28",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#126",
+        "path": [
+          {
+            "x": 475.0,
+            "y": 360.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#28",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
+        },
+        "name": "unnamedWire#127",
+        "path": [
+          {
+            "x": 480.0,
+            "y": 350.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#2",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "and#8",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#128",
+        "path": [
+          {
+            "x": 580.0,
+            "y": 340.0
+          },
+          {
+            "x": 580.0,
+            "y": 320.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#45",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#17",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#129",
+        "path": [
+          {
+            "x": 255.0,
+            "y": 110.0
+          },
+          {
+            "x": 255.0,
+            "y": 100.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#29",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "and#8",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#130",
+        "path": [
+          {
+            "x": 545.0,
+            "y": 325.0
+          },
+          {
+            "x": 545.0,
+            "y": 330.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#30",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#29",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#131",
+        "path": [
+          {
+            "x": 515.0,
+            "y": 295.0
+          },
+          {
+            "x": 515.0,
+            "y": 320.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#31",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#29",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#132",
+        "path": [
+          {
+            "x": 515.0,
+            "y": 325.0
+          },
+          {
+            "x": 515.0,
+            "y": 330.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#30",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#133",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#53",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#30",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#134",
+        "path": [
+          {
+            "x": 360.0,
+            "y": 300.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#31",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
+        },
+        "name": "unnamedWire#135",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#31",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#136",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#33",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#38",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#137",
+        "path": [
+          {
+            "x": 530.0,
+            "y": 745.0
+          },
+          {
+            "x": 530.0,
+            "y": 760.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#38",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "NandGate#32",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#138",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#37",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#34",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#139",
+        "path": [
+          {
+            "x": 460.0,
+            "y": 735.0
+          },
+          {
+            "x": 460.0,
+            "y": 730.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#32",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#38",
+          "pinName": ""
+        },
+        "name": "unnamedWire#140",
+        "path": [
+          {
+            "x": 500.0,
+            "y": 765.0
+          },
+          {
+            "x": 500.0,
+            "y": 710.0
+          },
+          {
+            "x": 415.0,
+            "y": 710.0
+          },
+          {
+            "x": 415.0,
+            "y": 475.0
+          },
+          {
+            "x": 90.0,
+            "y": 475.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#38",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "and#10",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#141",
+        "path": [
+          {
+            "x": 560.0,
+            "y": 765.0
+          },
+          {
+            "x": 560.0,
+            "y": 760.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#9",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#33",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#142",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#25",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#34",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#143",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 485.0
+          },
+          {
+            "x": 425.0,
+            "y": 485.0
+          },
+          {
+            "x": 425.0,
+            "y": 720.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#34",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#33",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#144",
+        "path": [
+          {
+            "x": 495.0,
+            "y": 725.0
+          },
+          {
+            "x": 495.0,
+            "y": 740.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#8",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#145",
+        "path": [
+          {
+            "x": 545.0,
+            "y": 310.0
+          },
+          {
+            "x": 545.0,
+            "y": 320.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#30",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#3",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#146",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#35",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#30",
+          "pinName": ""
+        },
+        "name": "unnamedWire#147",
+        "path": [
+          {
+            "x": 400.0,
+            "y": 750.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#35",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#31",
+          "pinName": ""
+        },
+        "name": "unnamedWire#148",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#31",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#36",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#149",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#29",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#41",
+          "pinName": ""
+        },
+        "name": "unnamedWire#150",
+        "path": [
+          {
+            "x": 95.0,
+            "y": 240.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#28",
+          "pinName": ""
+        },
+        "name": "unnamedWire#151",
+        "path": [
+          {
+            "x": 145.0,
+            "y": 260.0
+          },
+          {
+            "x": 145.0,
+            "y": 255.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#37",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#29",
+          "pinName": ""
+        },
+        "name": "unnamedWire#152",
+        "path": [
+          {
+            "x": 420.0,
+            "y": 740.0
+          },
+          {
+            "x": 420.0,
+            "y": 480.0
+          },
+          {
+            "x": 95.0,
+            "y": 480.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#37",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#2",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#153",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#37",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#40",
+          "pinName": ""
+        },
+        "name": "unnamedWire#154",
+        "path": [
+          {
+            "x": 410.0,
+            "y": 730.0
+          },
+          {
+            "x": 410.0,
+            "y": 470.0
+          },
+          {
+            "x": 85.0,
+            "y": 470.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#38",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#42",
+          "pinName": ""
+        },
+        "name": "unnamedWire#155",
+        "path": [
+          {
+            "x": 90.0,
+            "y": 235.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#28",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#27",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#156",
+        "path": [
+          {
+            "x": 515.0,
+            "y": 355.0
+          },
+          {
+            "x": 515.0,
+            "y": 345.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#10",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "MC_EN"
+        },
+        "name": "unnamedWire#157",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "and#10",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
+        },
+        "name": "unnamedWire#158",
+        "path": [
+          {
+            "x": 540.0,
+            "y": 750.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#61",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#11",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#159",
+        "path": [
+          {
+            "x": 545.0,
+            "y": 265.0
+          },
+          {
+            "x": 545.0,
+            "y": 285.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#11",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#3",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#160",
+        "path": [
+          {
+            "x": 580.0,
+            "y": 275.0
+          },
+          {
+            "x": 580.0,
+            "y": 260.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#32",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#39",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#161",
+        "path": [
+          {
+            "x": 510.0,
+            "y": 275.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#32",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#39",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#162",
+        "path": [
+          {
+            "x": 510.0,
+            "y": 285.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#62",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#32",
+          "pinName": ""
+        },
+        "name": "unnamedWire#163",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#50",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#8",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#164",
+        "path": [
+          {
+            "x": 515.0,
+            "y": 30.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#165",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#44",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#48",
+          "pinName": ""
+        },
+        "name": "unnamedWire#166",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#36",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#46",
+          "pinName": ""
+        },
+        "name": "unnamedWire#167",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#39",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#24",
+          "pinName": ""
+        },
+        "name": "unnamedWire#168",
+        "path": [
+          {
+            "x": 80.0,
+            "y": 225.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#40",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#169",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#41",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#57",
+          "pinName": ""
+        },
+        "name": "unnamedWire#170",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#42",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#53",
+          "pinName": ""
+        },
+        "name": "unnamedWire#171",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#43",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#52",
+          "pinName": ""
+        },
+        "name": "unnamedWire#172",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#35",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#44",
+          "pinName": ""
+        },
+        "name": "unnamedWire#173",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 220.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#45",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#21",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#174",
+        "path": [
+          {
+            "x": 180.0,
+            "y": 80.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#46",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#47",
+          "pinName": ""
+        },
+        "name": "unnamedWire#175",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#47",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#62",
+          "pinName": ""
+        },
+        "name": "unnamedWire#176",
+        "path": [
+          {
+            "x": 330.0,
+            "y": 280.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#48",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#60",
+          "pinName": ""
+        },
+        "name": "unnamedWire#177",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#52",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "name": "unnamedWire#178",
+        "path": [
+          {
+            "x": 470.0,
+            "y": 230.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#47",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#50",
+          "pinName": ""
+        },
+        "name": "unnamedWire#179",
+        "path": [
+          {
+            "x": 330.0,
+            "y": 90.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#51",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "name": "unnamedWire#180",
+        "path": [
+          {
+            "x": 345.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#52",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#49",
+          "pinName": ""
+        },
+        "name": "unnamedWire#181",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#53",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "name": "unnamedWire#182",
+        "path": [
+          {
+            "x": 360.0,
+            "y": 165.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#54",
+          "pinName": ""
+        },
+        "name": "unnamedWire#183",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#55",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#21",
+          "pinName": ""
+        },
+        "name": "unnamedWire#184",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#57",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#185",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#56",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#57",
+          "pinName": ""
+        },
+        "name": "unnamedWire#186",
+        "path": [
+          {
+            "x": 365.0,
+            "y": 155.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#21",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
+        },
+        "name": "unnamedWire#187",
+        "path": [
+          {
+            "x": 340.0,
+            "y": 320.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#59",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#10",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#188",
+        "path": [
+          {
+            "x": 370.0,
+            "y": 175.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
+        },
+        "name": "unnamedWire#189",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#61",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#25",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#190",
+        "path": [
+          {
+            "x": 490.0,
+            "y": 235.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#62",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#191",
+        "path": []
+      }
+    ],
+    "version": "0.1.1"
+  },
+  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererParams": {
+    "centerText": "Shift\nInstruction\ndecode",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 30.0,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "default",
+  "version": "0.1.5"
+}
\ No newline at end of file
diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/ModelAm2904ShiftInstrDecode.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/ModelAm2904ShiftInstrDecode.java
deleted file mode 100644 (file)
index e2329f5..0000000
+++ /dev/null
@@ -1,323 +0,0 @@
-package net.mograsim.logic.model.am2900.components.am2904;
-
-import static net.mograsim.logic.core.types.Bit.ONE;
-import static net.mograsim.logic.core.types.Bit.U;
-import static net.mograsim.logic.core.types.Bit.X;
-import static net.mograsim.logic.core.types.Bit.Z;
-import static net.mograsim.logic.core.types.Bit.ZERO;
-
-import java.util.Map;
-
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
-import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
-import net.mograsim.logic.model.model.LogicModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
-
-public class ModelAm2904ShiftInstrDecode extends SimpleRectangularHardcodedModelComponent
-{
-       public ModelAm2904ShiftInstrDecode(LogicModelModifiable model, String name)
-       {
-               super(model, "Am2904ShiftInstrDecode", name, "Shift \ninstruction\ndecode", false);
-               setSize(60, 80);
-               addPin(new Pin(model, this, "I", 5, PinUsage.INPUT, 0, 25), Position.RIGHT);
-               addPin(new Pin(model, this, "_SE", 1, PinUsage.INPUT, 0, 55), Position.RIGHT);
-               // SIO0 MUX:
-               // 000: 0
-               // 001: 1
-               // 01x: SIOn
-               // 10x: QIOn
-               // 11x: MC
-               addPin(new Pin(model, this, "SIO0_MUX", 3, PinUsage.OUTPUT, 60, 5), Position.LEFT);
-               // SIOn MUX:
-               // 000: 0
-               // 001: 1
-               // 010: SIO0
-               // 011: QIO0
-               // 100: MC
-               // 101: MN
-               // 110: IC
-               // 111: IN xor IVOR
-               addPin(new Pin(model, this, "SIOn_MUX", 3, PinUsage.OUTPUT, 60, 15), Position.LEFT);
-               // QIO0 MUX:
-               // 000: 0
-               // 001: 1
-               // 01x: SIOn
-               // 10x: QIOn
-               // 11x: MC
-               addPin(new Pin(model, this, "QIO0_MUX", 3, PinUsage.OUTPUT, 60, 25), Position.LEFT);
-               // QIOn MUX:
-               // 000: 0
-               // 001: 1
-               // 01x: SIO0
-               // 10x: QIO0
-               // 11x: MN
-               addPin(new Pin(model, this, "QIOn_MUX", 3, PinUsage.OUTPUT, 60, 35), Position.LEFT);
-               addPin(new Pin(model, this, "OEn", 1, PinUsage.OUTPUT, 60, 45), Position.LEFT);
-               addPin(new Pin(model, this, "OE0", 1, PinUsage.OUTPUT, 60, 55), Position.LEFT);
-               // 00: SIO0
-               // 01: QIO0
-               // 1x: SIOn
-               addPin(new Pin(model, this, "MC_MUX", 2, PinUsage.OUTPUT, 60, 65), Position.LEFT);
-               addPin(new Pin(model, this, "MC_EN", 1, PinUsage.OUTPUT, 60, 75), Position.LEFT);
-
-               init();
-       }
-
-       @Override
-       public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
-       {
-               Bit _SE = readEnds.get("_SE").getValue();
-               BitVector I = readEnds.get("I").getValues();
-               readWriteEnds.get("OEn").feedSignals(I.getMSBit(0).not().and(_SE.not()));
-               readWriteEnds.get("OE0").feedSignals(I.getMSBit(0).and(_SE.not()));
-               if (_SE == Z || _SE == X)
-               {
-                       readWriteEnds.get("SIO0_MUX").feedSignals(X, X, X);
-                       readWriteEnds.get("SIOn_MUX").feedSignals(X, X, X);
-                       readWriteEnds.get("QIO0_MUX").feedSignals(X, X, X);
-                       readWriteEnds.get("QIOn_MUX").feedSignals(X, X, X);
-                       readWriteEnds.get("MC_MUX").feedSignals(X, X);
-                       readWriteEnds.get("MC_EN").feedSignals(X);
-                       return null;
-               } else if (_SE == U)
-               {
-
-                       readWriteEnds.get("SIO0_MUX").feedSignals(U, U, U);
-                       readWriteEnds.get("SIOn_MUX").feedSignals(U, U, U);
-                       readWriteEnds.get("QIO0_MUX").feedSignals(U, U, U);
-                       readWriteEnds.get("QIOn_MUX").feedSignals(U, U, U);
-                       readWriteEnds.get("MC_MUX").feedSignals(U, U);
-                       readWriteEnds.get("MC_EN").feedSignals(U);
-                       return null;
-               } else if (_SE == ONE)
-               {
-                       readWriteEnds.get("SIO0_MUX").feedSignals(X, X, X);
-                       readWriteEnds.get("SIOn_MUX").feedSignals(X, X, X);
-                       readWriteEnds.get("QIO0_MUX").feedSignals(X, X, X);
-                       readWriteEnds.get("QIOn_MUX").feedSignals(X, X, X);
-                       readWriteEnds.get("MC_MUX").feedSignals(X, X);
-                       readWriteEnds.get("MC_EN").feedSignals(ZERO);
-                       return null;
-               }
-               if (!I.isBinary())
-               {
-                       Bit val = null;
-                       for (Bit b : I.getBits())
-                               if (!b.isBinary())
-                               {
-                                       val = b;
-                                       break;
-                               }
-                       readWriteEnds.get("SIO0_MUX").feedSignals(val, val, val);
-                       readWriteEnds.get("SIOn_MUX").feedSignals(val, val, val);
-                       readWriteEnds.get("QIO0_MUX").feedSignals(val, val, val);
-                       readWriteEnds.get("QIOn_MUX").feedSignals(val, val, val);
-                       readWriteEnds.get("MC_MUX").feedSignals(val, val);
-                       readWriteEnds.get("MC_EN").feedSignals(val);
-                       return null;
-               }
-               int IAsInt = I.getUnsignedValue().intValue();
-               if (IAsInt < 16)
-               {
-                       readWriteEnds.get("SIO0_MUX").feedSignals(X, X, X);
-                       readWriteEnds.get("QIO0_MUX").feedSignals(X, X, X);
-                       switch (IAsInt)
-                       {
-                       case 0:
-                       case 2:
-                       case 6:
-                       case 7:
-                               readWriteEnds.get("SIOn_MUX").feedSignals(ZERO, ZERO, ZERO);
-                               break;
-                       case 1:
-                       case 3:
-                               readWriteEnds.get("SIOn_MUX").feedSignals(ZERO, ZERO, ONE);
-                               break;
-                       case 4:
-                       case 9:
-                       case 12:
-                               readWriteEnds.get("SIOn_MUX").feedSignals(ONE, ZERO, ZERO);
-                               break;
-                       case 5:
-                               readWriteEnds.get("SIOn_MUX").feedSignals(ONE, ZERO, ONE);
-                               break;
-                       case 8:
-                       case 10:
-                               readWriteEnds.get("SIOn_MUX").feedSignals(ZERO, ONE, ZERO);
-                               break;
-                       case 11:
-                               readWriteEnds.get("SIOn_MUX").feedSignals(ONE, ONE, ZERO);
-                               break;
-                       case 13:
-                       case 15:
-                               readWriteEnds.get("SIOn_MUX").feedSignals(ZERO, ONE, ONE);
-                               break;
-                       case 14:
-                               readWriteEnds.get("SIOn_MUX").feedSignals(ONE, ONE, ONE);
-                               break;
-                       default:
-                               throw new IllegalStateException("can't happen");
-                       }
-                       switch (IAsInt)
-                       {
-                       case 0:
-                               readWriteEnds.get("QIOn_MUX").feedSignals(ZERO, ZERO, ZERO);
-                               break;
-                       case 1:
-                               readWriteEnds.get("QIOn_MUX").feedSignals(ZERO, ZERO, ONE);
-                               break;
-                       case 2:
-                               readWriteEnds.get("QIOn_MUX").feedSignals(ONE, ONE, X);
-                               break;
-                       case 3:
-                       case 4:
-                       case 5:
-                       case 6:
-                       case 7:
-                       case 11:
-                       case 12:
-                       case 13:
-                       case 14:
-                       case 15:
-                               readWriteEnds.get("QIOn_MUX").feedSignals(ZERO, ONE, X);
-                               break;
-                       case 8:
-                       case 9:
-                       case 10:
-                               readWriteEnds.get("QIOn_MUX").feedSignals(ONE, ZERO, X);
-                               break;
-                       default:
-                               throw new IllegalStateException("can't happen");
-                       }
-               } else
-               {
-                       readWriteEnds.get("SIOn_MUX").feedSignals(X, X, X);
-                       readWriteEnds.get("QIOn_MUX").feedSignals(X, X, X);
-                       switch (IAsInt)
-                       {
-                       case 16:
-                       case 18:
-                               readWriteEnds.get("SIO0_MUX").feedSignals(ZERO, ZERO, ZERO);
-                               break;
-                       case 17:
-                       case 19:
-                               readWriteEnds.get("SIO0_MUX").feedSignals(ZERO, ZERO, ONE);
-                               break;
-                       case 20:
-                       case 21:
-                       case 22:
-                       case 23:
-                       case 28:
-                       case 29:
-                       case 30:
-                       case 31:
-                               readWriteEnds.get("SIO0_MUX").feedSignals(ONE, ZERO, X);
-                               break;
-                       case 24:
-                       case 26:
-                               readWriteEnds.get("SIO0_MUX").feedSignals(ZERO, ONE, X);
-                               break;
-                       case 25:
-                       case 27:
-                               readWriteEnds.get("SIO0_MUX").feedSignals(ONE, ONE, X);
-                               break;
-                       default:
-                               throw new IllegalStateException("can't happen");
-                       }
-                       switch (IAsInt)
-                       {
-                       case 16:
-                       case 18:
-                       case 20:
-                       case 22:
-                       case 27:
-                               readWriteEnds.get("QIO0_MUX").feedSignals(ZERO, ZERO, ZERO);
-                               break;
-                       case 17:
-                       case 19:
-                       case 21:
-                       case 23:
-                               readWriteEnds.get("QIO0_MUX").feedSignals(ZERO, ZERO, ONE);
-                               break;
-                       case 24:
-                       case 25:
-                       case 26:
-                               readWriteEnds.get("QIO0_MUX").feedSignals(ONE, ZERO, X);
-                               break;
-                       case 28:
-                       case 30:
-                               readWriteEnds.get("QIO0_MUX").feedSignals(ONE, ONE, X);
-                               break;
-                       case 29:
-                       case 31:
-                               readWriteEnds.get("QIO0_MUX").feedSignals(ZERO, ONE, X);
-                               break;
-                       default:
-                               throw new IllegalStateException("can't happen");
-                       }
-               }
-               // MC
-               switch (IAsInt)
-               {
-               case 0:
-               case 1:
-               case 3:
-               case 4:
-               case 5:
-               case 6:
-               case 10:
-               case 11:
-               case 14:
-               case 15:
-               case 18:
-               case 19:
-               case 22:
-               case 23:
-               case 26:
-               case 27:
-               case 30:
-               case 31:
-                       readWriteEnds.get("MC_EN").feedSignals(ZERO);
-                       readWriteEnds.get("MC_MUX").feedSignals(X, X);
-                       break;
-               case 2:
-               case 8:
-               case 9:
-                       readWriteEnds.get("MC_EN").feedSignals(ONE);
-                       readWriteEnds.get("MC_MUX").feedSignals(ZERO, ZERO);
-                       break;
-               case 7:
-               case 12:
-               case 13:
-                       readWriteEnds.get("MC_EN").feedSignals(ONE);
-                       readWriteEnds.get("MC_MUX").feedSignals(ZERO, ONE);
-                       break;
-               case 16:
-               case 17:
-               case 20:
-               case 21:
-               case 24:
-               case 25:
-               case 28:
-               case 29:
-                       readWriteEnds.get("MC_EN").feedSignals(ONE);
-                       readWriteEnds.get("MC_MUX").feedSignals(ONE, X);
-                       break;
-               default:
-                       throw new IllegalStateException("can't happen");
-               }
-               return null;
-       }
-
-       static
-       {
-               IndirectModelComponentCreator.setComponentSupplier(ModelAm2904ShiftInstrDecode.class.getCanonicalName(),
-                               (m, p, n) -> new ModelAm2904ShiftInstrDecode(m, n));
-       }
-}
\ No newline at end of file
index 3b94540..a3c0728 100644 (file)
@@ -1,7 +1,6 @@
 {
   "Am2900MainMemory": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.ModelAm2900MainMemory",
   "Am2900MicroInstructionMemory": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.ModelAm2900MicroInstructionMemory",
-  "Am2904ShiftInstrDecode": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2904.ModelAm2904ShiftInstrDecode",
   "ram5_12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelram5_12",
 
   "Am2900": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/Am2900.json",
@@ -17,6 +16,7 @@
   "Am2904MSR": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904MSR.json",
   "Am2904muSR": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904muSR.json",
   "Am2904RegCTInstrDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904RegCTInstrDecode.json",
+  "Am2904ShiftInstrDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904ShiftInstrDecode.json",
   "Am2904TestLogic": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904TestLogic.json",
   "Am2910": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2910/Am2910.json",
   "Am2910InstrPLA": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2910/Am2910InstrPLA.json",