Rebuilt component JSON files
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Wed, 3 Jul 2019 21:16:05 +0000 (23:16 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Wed, 3 Jul 2019 21:16:05 +0000 (23:16 +0200)
30 files changed:
net.mograsim.logic.ui.am2900/components/GUI_rsLatch.json
net.mograsim.logic.ui.am2900/components/GUIand.json
net.mograsim.logic.ui.am2900/components/GUIand41.json
net.mograsim.logic.ui.am2900/components/GUIandor414.json
net.mograsim.logic.ui.am2900/components/GUIdemux2.json
net.mograsim.logic.ui.am2900/components/GUIdff.json
net.mograsim.logic.ui.am2900/components/GUIdlatch.json
net.mograsim.logic.ui.am2900/components/GUIdlatch4.json
net.mograsim.logic.ui.am2900/components/GUIfulladder.json
net.mograsim.logic.ui.am2900/components/GUIhalfadder.json
net.mograsim.logic.ui.am2900/components/GUImux1.json
net.mograsim.logic.ui.am2900/components/GUImux1_4.json
net.mograsim.logic.ui.am2900/components/GUInand3.json
net.mograsim.logic.ui.am2900/components/GUInot4.json
net.mograsim.logic.ui.am2900/components/GUIor4.json
net.mograsim.logic.ui.am2900/components/GUIor_4.json
net.mograsim.logic.ui.am2900/components/GUIram2.json
net.mograsim.logic.ui.am2900/components/GUIram4.json
net.mograsim.logic.ui.am2900/components/GUIsel2_4.json
net.mograsim.logic.ui.am2900/components/GUIsel3_4.json
net.mograsim.logic.ui.am2900/components/GUIxor.json
net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901.json
net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUFuncDecode.json
net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUInclDecode.json
net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json
net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901ALUOneBit.json
net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901DestDecode.json
net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901QReg.json
net.mograsim.logic.ui.am2900/components/am2901/GUIAm2901SourceDecode.json
net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/ComponenetSerializer.java [new file with mode: 0644]

index 186aac3..4431f34 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUI_rsLatch",
   "width": 35.0,
   "height": 20.0,
   "interfacePins": [
@@ -38,7 +36,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -46,40 +44,32 @@ mograsim version: 0.1.2
           "x": 10.0,
           "y": 7.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 40.0,
           "y": 12.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 16.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 64.0,
           "y": 36.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -216,17 +206,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "_S",
-      "_R"
-    ],
-    "label": "_rsLatch",
-    "logic_width": 1,
-    "output_count": [
-      "Q",
-      "_Q"
-    ]
   }
 }
\ No newline at end of file
index 2ea3683..0687592 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIand",
   "width": 35.0,
   "height": 20.0,
   "interfacePins": [
@@ -30,7 +28,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -38,30 +36,24 @@ mograsim version: 0.1.2
           "x": 20.0,
           "y": 15.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 50.0,
           "y": 15.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 44.0,
           "y": 24.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -139,16 +131,5 @@ mograsim version: 0.1.2
         }
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "A",
-      "B"
-    ],
-    "label": "GUIand",
-    "logic_width": 1,
-    "output_count": [
-      "Y"
-    ]
   }
 }
\ No newline at end of file
index 7b2757c..cb1608a 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIand41",
   "width": 35.0,
   "height": 50.0,
   "interfacePins": [
@@ -78,7 +76,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -86,62 +84,52 @@ mograsim version: 0.1.2
           "x": 30.0,
           "y": 7.5
         },
-        "name": "GUIand",
-        "params": {}
+        "id": "GUIand"
       },
       {
         "pos": {
           "x": 30.0,
           "y": 32.5
         },
-        "name": "GUIand",
-        "params": {}
+        "id": "GUIand"
       },
       {
         "pos": {
           "x": 30.0,
           "y": 57.5
         },
-        "name": "GUIand",
-        "params": {}
+        "id": "GUIand"
       },
       {
         "pos": {
           "x": 30.0,
           "y": 82.5
         },
-        "name": "GUIand",
-        "params": {}
+        "id": "GUIand"
       },
       {
         "pos": {
           "x": 24.0,
           "y": 46.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 24.0,
           "y": 71.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 24.0,
           "y": 96.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -321,22 +309,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "A1",
-      "A2",
-      "A3",
-      "A4",
-      "B"
-    ],
-    "label": "GUIand41",
-    "logic_width": 1,
-    "output_count": [
-      "Y1",
-      "Y2",
-      "Y3",
-      "Y4"
-    ]
   }
 }
\ No newline at end of file
index d581e8f..d585785 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIandor414",
   "width": 35.0,
   "height": 90.0,
   "interfacePins": [
@@ -110,7 +108,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -118,16 +116,14 @@ mograsim version: 0.1.2
           "x": 15.0,
           "y": 137.5
         },
-        "name": "GUIand41",
-        "params": {}
+        "id": "GUIand41"
       },
       {
         "pos": {
           "x": 35.0,
           "y": 37.5
         },
-        "name": "GUIor_4",
-        "params": {}
+        "id": "GUIor_4"
       }
     ],
     "innerWires": [
@@ -477,26 +473,5 @@ mograsim version: 0.1.2
         ]
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "C1",
-      "C2",
-      "C3",
-      "C4",
-      "A1",
-      "A2",
-      "A3",
-      "A4",
-      "B"
-    ],
-    "label": "GUIandor414",
-    "logic_width": 1,
-    "output_count": [
-      "Y1",
-      "Y2",
-      "Y3",
-      "Y4"
-    ]
   }
 }
\ No newline at end of file
index d6b01c6..04df7d0 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIdemux2",
   "width": 35.0,
   "height": 40.0,
   "interfacePins": [
@@ -54,7 +52,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -62,132 +60,108 @@ mograsim version: 0.1.2
           "x": 10.0,
           "y": 2.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 10.0,
           "y": 27.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 40.0,
           "y": 2.5
         },
-        "name": "GUIand",
-        "params": {}
+        "id": "GUIand"
       },
       {
         "pos": {
           "x": 40.0,
           "y": 27.5
         },
-        "name": "GUIand",
-        "params": {}
+        "id": "GUIand"
       },
       {
         "pos": {
           "x": 40.0,
           "y": 52.5
         },
-        "name": "GUIand",
-        "params": {}
+        "id": "GUIand"
       },
       {
         "pos": {
           "x": 40.0,
           "y": 77.5
         },
-        "name": "GUIand",
-        "params": {}
+        "id": "GUIand"
       },
       {
         "pos": {
           "x": 6.5,
           "y": 11.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 16.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 36.5,
           "y": 61.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 36.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 41.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 31.5,
           "y": 66.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 31.5,
           "y": 11.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 36.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -511,19 +485,5 @@ mograsim version: 0.1.2
         }
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "S0",
-      "S1"
-    ],
-    "label": "GUIdemux2",
-    "logic_width": 1,
-    "output_count": [
-      "Y00",
-      "Y01",
-      "Y10",
-      "Y11"
-    ]
   }
 }
\ No newline at end of file
index 5c0c80a..df4e0a1 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIdff",
   "width": 35.0,
   "height": 20.0,
   "interfacePins": [
@@ -38,7 +36,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.2,
     "subComps": [
       {
@@ -46,74 +44,61 @@ mograsim version: 0.1.2
           "x": 40.0,
           "y": 10.0
         },
-        "name": "GUI_rsLatch",
-        "params": {}
+        "id": "GUI_rsLatch"
       },
       {
         "pos": {
           "x": 40.0,
           "y": 40.0
         },
-        "name": "GUInand3",
-        "params": {}
+        "id": "GUInand3"
       },
       {
         "pos": {
           "x": 120.0,
           "y": 60.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 120.0,
           "y": 30.0
         },
-        "name": "GUI_rsLatch",
-        "params": {}
+        "id": "GUI_rsLatch"
       },
       {
         "pos": {
           "x": 9.0,
           "y": 24.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 19.0,
           "y": 64.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 99.0,
           "y": 34.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 99.0,
           "y": 44.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -323,17 +308,5 @@ mograsim version: 0.1.2
         }
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "C",
-      "D"
-    ],
-    "label": "GUIdff",
-    "logic_width": 1,
-    "output_count": [
-      "Q",
-      "_Q"
-    ]
   }
 }
\ No newline at end of file
index 6811c4d..84e635f 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIdlatch",
   "width": 35.0,
   "height": 20.0,
   "interfacePins": [
@@ -38,7 +36,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -46,48 +44,39 @@ mograsim version: 0.1.2
           "x": 10.0,
           "y": 2.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 15.0,
           "y": 27.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 45.0,
           "y": 7.5
         },
-        "name": "GUI_rsLatch",
-        "params": {}
+        "id": "GUI_rsLatch"
       },
       {
         "pos": {
           "x": 4.0,
           "y": 36.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 11.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -232,17 +221,5 @@ mograsim version: 0.1.2
         }
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "D",
-      "E"
-    ],
-    "label": "GUIdlatch",
-    "logic_width": 1,
-    "output_count": [
-      "Q",
-      "_Q"
-    ]
   }
 }
\ No newline at end of file
index e6316c3..2458b25 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIdlatch4",
   "width": 35.0,
   "height": 50.0,
   "interfacePins": [
@@ -78,7 +76,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -86,62 +84,52 @@ mograsim version: 0.1.2
           "x": 30.0,
           "y": 7.5
         },
-        "name": "GUIdlatch",
-        "params": {}
+        "id": "GUIdlatch"
       },
       {
         "pos": {
           "x": 30.0,
           "y": 32.5
         },
-        "name": "GUIdlatch",
-        "params": {}
+        "id": "GUIdlatch"
       },
       {
         "pos": {
           "x": 30.0,
           "y": 57.5
         },
-        "name": "GUIdlatch",
-        "params": {}
+        "id": "GUIdlatch"
       },
       {
         "pos": {
           "x": 30.0,
           "y": 82.5
         },
-        "name": "GUIdlatch",
-        "params": {}
+        "id": "GUIdlatch"
       },
       {
         "pos": {
           "x": 14.0,
           "y": 46.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 14.0,
           "y": 71.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 14.0,
           "y": 96.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -321,22 +309,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "D1",
-      "D2",
-      "D3",
-      "D4",
-      "C"
-    ],
-    "label": "GUIdlatch4",
-    "logic_width": 1,
-    "output_count": [
-      "Q1",
-      "Q2",
-      "Q3",
-      "Q4"
-    ]
   }
 }
\ No newline at end of file
index 259ba27..d739628 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIfulladder",
   "width": 35.0,
   "height": 30.0,
   "interfacePins": [
@@ -46,7 +44,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -54,26 +52,22 @@ mograsim version: 0.1.2
           "x": 5.0,
           "y": 40.0
         },
-        "name": "GUIhalfadder",
-        "params": {}
+        "id": "GUIhalfadder"
       },
       {
         "pos": {
           "x": 45.0,
           "y": 7.5
         },
-        "name": "GUIhalfadder",
-        "params": {}
+        "id": "GUIhalfadder"
       },
       {
         "pos": {
           "x": 57.5,
           "y": 40.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -179,18 +173,5 @@ mograsim version: 0.1.2
         }
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "A",
-      "B",
-      "C"
-    ],
-    "label": "GUIfulladder",
-    "logic_width": 1,
-    "output_count": [
-      "Y",
-      "Z"
-    ]
   }
 }
\ No newline at end of file
index 5e1371e..5cffb3d 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIhalfadder",
   "width": 35.0,
   "height": 20.0,
   "interfacePins": [
@@ -38,7 +36,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -46,70 +44,56 @@ mograsim version: 0.1.2
           "x": 10.0,
           "y": 15.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 40.0,
           "y": 2.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 40.0,
           "y": 27.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 65.0,
           "y": 2.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 11.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 36.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 24.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -314,17 +298,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "A",
-      "B"
-    ],
-    "label": "GUIhalfadder",
-    "logic_width": 1,
-    "output_count": [
-      "Y",
-      "_Z"
-    ]
   }
 }
\ No newline at end of file
index 9f373e2..c341226 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUImux1",
   "width": 35.0,
   "height": 30.0,
   "interfacePins": [
@@ -38,7 +36,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -46,60 +44,48 @@ mograsim version: 0.1.2
           "x": 10.0,
           "y": 7.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 35.0,
           "y": 22.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 35.0,
           "y": 47.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 60.0,
           "y": 30.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 11.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 21.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -226,17 +212,5 @@ mograsim version: 0.1.2
         }
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "S0",
-      "I0",
-      "I1"
-    ],
-    "label": "GUImux1",
-    "logic_width": 1,
-    "output_count": [
-      "Y"
-    ]
   }
 }
\ No newline at end of file
index 7d326ba..35f9c2f 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUImux1_4",
   "width": 35.0,
   "height": 90.0,
   "interfacePins": [
@@ -110,7 +108,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -118,62 +116,52 @@ mograsim version: 0.1.2
           "x": 30.0,
           "y": 7.5
         },
-        "name": "GUImux1",
-        "params": {}
+        "id": "GUImux1"
       },
       {
         "pos": {
           "x": 30.0,
           "y": 42.5
         },
-        "name": "GUImux1",
-        "params": {}
+        "id": "GUImux1"
       },
       {
         "pos": {
           "x": 30.0,
           "y": 77.5
         },
-        "name": "GUImux1",
-        "params": {}
+        "id": "GUImux1"
       },
       {
         "pos": {
           "x": 30.0,
           "y": 112.5
         },
-        "name": "GUImux1",
-        "params": {}
+        "id": "GUImux1"
       },
       {
         "pos": {
           "x": 24.0,
           "y": 11.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 24.0,
           "y": 46.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 24.0,
           "y": 81.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -461,26 +449,5 @@ mograsim version: 0.1.2
         }
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "S0",
-      "I0_1",
-      "I0_2",
-      "I0_3",
-      "I0_4",
-      "I1_1",
-      "I1_2",
-      "I1_3",
-      "I1_4"
-    ],
-    "label": "GUImux1_4",
-    "logic_width": 1,
-    "output_count": [
-      "Y1",
-      "Y2",
-      "Y3",
-      "Y4"
-    ]
   }
 }
\ No newline at end of file
index fe953c3..7177e91 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUInand3",
   "width": 35.0,
   "height": 30.0,
   "interfacePins": [
@@ -38,7 +36,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -46,40 +44,32 @@ mograsim version: 0.1.2
           "x": 10.0,
           "y": 15.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 35.0,
           "y": 15.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 62.5,
           "y": 2.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 31.5,
           "y": 24.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -198,17 +188,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "A",
-      "B",
-      "C"
-    ],
-    "label": "GUInand3",
-    "logic_width": 1,
-    "output_count": [
-      "Y"
-    ]
   }
 }
\ No newline at end of file
index 71e414e..5df0c82 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUInot4",
   "width": 35.0,
   "height": 40.0,
   "interfacePins": [
@@ -70,7 +68,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -78,80 +76,64 @@ mograsim version: 0.1.2
           "x": 30.0,
           "y": 2.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 30.0,
           "y": 27.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 30.0,
           "y": 52.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 30.0,
           "y": 77.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 14.0,
           "y": 11.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 14.0,
           "y": 36.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 14.0,
           "y": 61.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 14.0,
           "y": 86.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -372,21 +354,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "A1",
-      "A2",
-      "A3",
-      "A4"
-    ],
-    "label": "GUInot4",
-    "logic_width": 1,
-    "output_count": [
-      "Y1",
-      "Y2",
-      "Y3",
-      "Y4"
-    ]
   }
 }
\ No newline at end of file
index 53da78d..9eb7216 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIor4",
   "width": 35.0,
   "height": 40.0,
   "interfacePins": [
@@ -46,7 +44,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.2,
     "subComps": [
       {
@@ -54,150 +52,120 @@ mograsim version: 0.1.2
           "x": 20.0,
           "y": 15.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 20.0,
           "y": 65.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 20.0,
           "y": 115.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 20.0,
           "y": 165.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 50.0,
           "y": 40.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 50.0,
           "y": 140.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 110.0,
           "y": 40.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 110.0,
           "y": 140.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 140.0,
           "y": 90.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 14.0,
           "y": 24.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 14.0,
           "y": 74.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 14.0,
           "y": 124.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 14.0,
           "y": 174.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 104.0,
           "y": 49.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 104.0,
           "y": 149.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -530,18 +498,5 @@ mograsim version: 0.1.2
         }
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "A1",
-      "A2",
-      "A3",
-      "A4"
-    ],
-    "label": "GUIor4",
-    "logic_width": 1,
-    "output_count": [
-      "Y"
-    ]
   }
 }
\ No newline at end of file
index 729cd82..06aa13f 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIor_4",
   "width": 35.0,
   "height": 80.0,
   "interfacePins": [
@@ -102,7 +100,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -110,200 +108,160 @@ mograsim version: 0.1.2
           "x": 15.0,
           "y": 2.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 15.0,
           "y": 27.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 15.0,
           "y": 52.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 15.0,
           "y": 77.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 15.0,
           "y": 102.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 15.0,
           "y": 127.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 15.0,
           "y": 152.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 15.0,
           "y": 177.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 65.0,
           "y": 2.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 65.0,
           "y": 27.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 65.0,
           "y": 52.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 65.0,
           "y": 77.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 11.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 36.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 61.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 86.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 111.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 136.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 161.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 186.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -856,25 +814,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "A1",
-      "A2",
-      "A3",
-      "A4",
-      "B1",
-      "B2",
-      "B3",
-      "B4"
-    ],
-    "label": "GUIor_4",
-    "logic_width": 1,
-    "output_count": [
-      "Y1",
-      "Y2",
-      "Y3",
-      "Y4"
-    ]
   }
 }
\ No newline at end of file
index df20ab5..c1d00ea 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIram2",
   "width": 35.0,
   "height": 90.0,
   "interfacePins": [
@@ -142,7 +140,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.1,
     "subComps": [
       {
@@ -150,440 +148,361 @@ mograsim version: 0.1.2
           "x": 55.0,
           "y": 45.0
         },
-        "name": "GUIdemux2",
-        "params": {}
+        "id": "GUIdemux2"
       },
       {
         "pos": {
           "x": 55.0,
           "y": 150.0
         },
-        "name": "GUIdemux2",
-        "params": {}
+        "id": "GUIdemux2"
       },
       {
         "pos": {
           "x": 130.0,
           "y": 150.0
         },
-        "name": "GUIand41",
-        "params": {}
+        "id": "GUIand41"
       },
       {
         "pos": {
           "x": 55.0,
           "y": 325.0
         },
-        "name": "GUIdlatch4",
-        "params": {}
+        "id": "GUIdlatch4"
       },
       {
         "pos": {
           "x": 55.0,
           "y": 475.0
         },
-        "name": "GUIdlatch4",
-        "params": {}
+        "id": "GUIdlatch4"
       },
       {
         "pos": {
           "x": 55.0,
           "y": 625.0
         },
-        "name": "GUIdlatch4",
-        "params": {}
+        "id": "GUIdlatch4"
       },
       {
         "pos": {
           "x": 55.0,
           "y": 775.0
         },
-        "name": "GUIdlatch4",
-        "params": {}
+        "id": "GUIdlatch4"
       },
       {
         "pos": {
           "x": 235.0,
           "y": 375.0
         },
-        "name": "GUIand41",
-        "params": {}
+        "id": "GUIand41"
       },
       {
         "pos": {
           "x": 235.0,
           "y": 485.0
         },
-        "name": "GUIandor414",
-        "params": {}
+        "id": "GUIandor414"
       },
       {
         "pos": {
           "x": 235.0,
           "y": 635.0
         },
-        "name": "GUIandor414",
-        "params": {}
+        "id": "GUIandor414"
       },
       {
         "pos": {
           "x": 235.0,
           "y": 785.0
         },
-        "name": "GUIandor414",
-        "params": {}
+        "id": "GUIandor414"
       },
       {
         "pos": {
           "x": 135.0,
           "y": 325.0
         },
-        "name": "GUIand41",
-        "params": {}
+        "id": "GUIand41"
       },
       {
         "pos": {
           "x": 135.0,
           "y": 435.0
         },
-        "name": "GUIandor414",
-        "params": {}
+        "id": "GUIandor414"
       },
       {
         "pos": {
           "x": 135.0,
           "y": 585.0
         },
-        "name": "GUIandor414",
-        "params": {}
+        "id": "GUIandor414"
       },
       {
         "pos": {
           "x": 135.0,
           "y": 735.0
         },
-        "name": "GUIandor414",
-        "params": {}
+        "id": "GUIandor414"
       },
       {
         "pos": {
           "x": 109.0,
           "y": 154.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 104.0,
           "y": 164.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 99.0,
           "y": 174.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 94.0,
           "y": 184.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 549.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 39.0,
           "y": 649.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 44.0,
           "y": 749.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 49.0,
           "y": 809.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 479.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 39.0,
           "y": 489.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 44.0,
           "y": 499.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 49.0,
           "y": 509.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 629.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 39.0,
           "y": 639.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 44.0,
           "y": 649.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 49.0,
           "y": 659.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 129.0,
           "y": 329.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 124.0,
           "y": 339.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 119.0,
           "y": 349.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 114.0,
           "y": 359.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 129.0,
           "y": 479.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 124.0,
           "y": 489.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 119.0,
           "y": 499.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 114.0,
           "y": 509.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 129.0,
           "y": 629.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 124.0,
           "y": 639.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 119.0,
           "y": 649.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 114.0,
           "y": 659.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 129.0,
           "y": 779.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 124.0,
           "y": 789.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 119.0,
           "y": 799.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 114.0,
           "y": 809.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -2851,30 +2770,5 @@ mograsim version: 0.1.2
         ]
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "A0",
-      "A1",
-      "B0",
-      "B1",
-      "WE",
-      "D1",
-      "D2",
-      "D3",
-      "D4"
-    ],
-    "label": "GUIram2",
-    "logic_width": 1,
-    "output_count": [
-      "QA1",
-      "QA2",
-      "QA3",
-      "QA4",
-      "QB1",
-      "QB2",
-      "QB3",
-      "QB4"
-    ]
   }
 }
\ No newline at end of file
index 605b061..87c2892 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIram4",
   "width": 35.0,
   "height": 130.0,
   "interfacePins": [
@@ -174,7 +172,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.1,
     "subComps": [
       {
@@ -182,400 +180,329 @@ mograsim version: 0.1.2
           "x": 55.0,
           "y": 45.0
         },
-        "name": "GUIdemux2",
-        "params": {}
+        "id": "GUIdemux2"
       },
       {
         "pos": {
           "x": 55.0,
           "y": 150.0
         },
-        "name": "GUIdemux2",
-        "params": {}
+        "id": "GUIdemux2"
       },
       {
         "pos": {
           "x": 235.0,
           "y": 150.0
         },
-        "name": "GUIand41",
-        "params": {}
+        "id": "GUIand41"
       },
       {
         "pos": {
           "x": 80.0,
           "y": 330.0
         },
-        "name": "GUIram2",
-        "params": {}
+        "id": "GUIram2"
       },
       {
         "pos": {
           "x": 80.0,
           "y": 480.0
         },
-        "name": "GUIram2",
-        "params": {}
+        "id": "GUIram2"
       },
       {
         "pos": {
           "x": 80.0,
           "y": 630.0
         },
-        "name": "GUIram2",
-        "params": {}
+        "id": "GUIram2"
       },
       {
         "pos": {
           "x": 80.0,
           "y": 780.0
         },
-        "name": "GUIram2",
-        "params": {}
+        "id": "GUIram2"
       },
       {
         "pos": {
           "x": 250.0,
           "y": 375.0
         },
-        "name": "GUIand41",
-        "params": {}
+        "id": "GUIand41"
       },
       {
         "pos": {
           "x": 250.0,
           "y": 485.0
         },
-        "name": "GUIandor414",
-        "params": {}
+        "id": "GUIandor414"
       },
       {
         "pos": {
           "x": 250.0,
           "y": 635.0
         },
-        "name": "GUIandor414",
-        "params": {}
+        "id": "GUIandor414"
       },
       {
         "pos": {
           "x": 250.0,
           "y": 785.0
         },
-        "name": "GUIandor414",
-        "params": {}
+        "id": "GUIandor414"
       },
       {
         "pos": {
           "x": 155.0,
           "y": 325.0
         },
-        "name": "GUIand41",
-        "params": {}
+        "id": "GUIand41"
       },
       {
         "pos": {
           "x": 155.0,
           "y": 435.0
         },
-        "name": "GUIandor414",
-        "params": {}
+        "id": "GUIandor414"
       },
       {
         "pos": {
           "x": 155.0,
           "y": 585.0
         },
-        "name": "GUIandor414",
-        "params": {}
+        "id": "GUIandor414"
       },
       {
         "pos": {
           "x": 155.0,
           "y": 735.0
         },
-        "name": "GUIandor414",
-        "params": {}
+        "id": "GUIandor414"
       },
       {
         "pos": {
           "x": 229.0,
           "y": 154.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 224.0,
           "y": 164.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 219.0,
           "y": 174.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 214.0,
           "y": 184.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 59.0,
           "y": 534.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 64.0,
           "y": 544.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 69.0,
           "y": 554.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 74.0,
           "y": 564.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 59.0,
           "y": 684.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 64.0,
           "y": 694.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 69.0,
           "y": 704.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 74.0,
           "y": 714.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 59.0,
           "y": 834.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 64.0,
           "y": 844.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 69.0,
           "y": 854.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 74.0,
           "y": 864.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 39.0,
           "y": 484.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 44.0,
           "y": 494.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 49.0,
           "y": 504.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 54.0,
           "y": 514.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 39.0,
           "y": 634.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 44.0,
           "y": 644.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 49.0,
           "y": 654.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 54.0,
           "y": 664.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 39.0,
           "y": 334.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 44.0,
           "y": 349.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 49.0,
           "y": 649.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 54.0,
           "y": 749.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -3215,34 +3142,5 @@ mograsim version: 0.1.2
         ]
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "A0",
-      "A1",
-      "A2",
-      "A3",
-      "B0",
-      "B1",
-      "B2",
-      "B3",
-      "WE",
-      "D1",
-      "D2",
-      "D3",
-      "D4"
-    ],
-    "label": "GUIram4",
-    "logic_width": 1,
-    "output_count": [
-      "QA1",
-      "QA2",
-      "QA3",
-      "QA4",
-      "QB1",
-      "QB2",
-      "QB3",
-      "QB4"
-    ]
   }
 }
\ No newline at end of file
index c98c1dc..b3845c4 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIsel2_4",
   "width": 35.0,
   "height": 100.0,
   "interfacePins": [
@@ -118,7 +116,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -126,180 +124,144 @@ mograsim version: 0.1.2
           "x": 20.0,
           "y": 2.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 20.0,
           "y": 52.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 20.0,
           "y": 102.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 20.0,
           "y": 152.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 20.0,
           "y": 27.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 20.0,
           "y": 77.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 20.0,
           "y": 127.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 20.0,
           "y": 177.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 65.0,
           "y": 2.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 65.0,
           "y": 27.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 65.0,
           "y": 52.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 65.0,
           "y": 77.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 16.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 66.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 116.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 41.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 91.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 141.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -820,27 +782,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "SA",
-      "SB",
-      "A1",
-      "A2",
-      "A3",
-      "A4",
-      "B1",
-      "B2",
-      "B3",
-      "B4"
-    ],
-    "label": "GUIsel2_4",
-    "logic_width": 1,
-    "output_count": [
-      "Y1",
-      "Y2",
-      "Y3",
-      "Y4"
-    ]
   }
 }
\ No newline at end of file
index b1f4647..fdcbfaf 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIsel3_4",
   "width": 35.0,
   "height": 150.0,
   "interfacePins": [
@@ -158,7 +156,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.2,
     "subComps": [
       {
@@ -166,126 +164,102 @@ mograsim version: 0.1.2
           "x": 35.0,
           "y": 250.0
         },
-        "name": "GUIsel2_4",
-        "params": {}
+        "id": "GUIsel2_4"
       },
       {
         "pos": {
           "x": 75.0,
           "y": 250.0
         },
-        "name": "GUInot4",
-        "params": {}
+        "id": "GUInot4"
       },
       {
         "pos": {
           "x": 50.0,
           "y": 570.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 50.0,
           "y": 620.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 50.0,
           "y": 670.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 50.0,
           "y": 720.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 152.5,
           "y": 15.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 152.5,
           "y": 65.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 152.5,
           "y": 115.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 152.5,
           "y": 165.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 29.0,
           "y": 584.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 29.0,
           "y": 634.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 29.0,
           "y": 684.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -879,32 +853,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "SA",
-      "SB",
-      "SC",
-      "A1",
-      "A2",
-      "A3",
-      "A4",
-      "B1",
-      "B2",
-      "B3",
-      "B4",
-      "C1",
-      "C2",
-      "C3",
-      "C4"
-    ],
-    "label": "GUIsel3_4",
-    "logic_width": 1,
-    "output_count": [
-      "Y1",
-      "Y2",
-      "Y3",
-      "Y4"
-    ]
   }
 }
\ No newline at end of file
index f32f1a1..6b74a5c 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIxor",
   "width": 35.0,
   "height": 20.0,
   "interfacePins": [
@@ -30,7 +28,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -38,70 +36,56 @@ mograsim version: 0.1.2
           "x": 7.5,
           "y": 15.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 35.0,
           "y": 2.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 35.0,
           "y": 27.5
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 62.5,
           "y": 15.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 11.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 36.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 29.0,
           "y": 24.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -264,16 +248,5 @@ mograsim version: 0.1.2
         }
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "A",
-      "B"
-    ],
-    "label": "GUIxor",
-    "logic_width": 1,
-    "output_count": [
-      "Y"
-    ]
   }
 }
\ No newline at end of file
index e93eea3..d773d7b 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIAm2901",
   "width": 35.0,
   "height": 270.0,
   "interfacePins": [
@@ -318,7 +316,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.1,
     "subComps": [
       {
@@ -326,518 +324,421 @@ mograsim version: 0.1.2
           "x": 15.0,
           "y": 45.0
         },
-        "name": "GUIAm2901DestDecode",
-        "params": {}
+        "id": "GUIAm2901DestDecode"
       },
       {
         "pos": {
           "x": 275.0,
           "y": 135.0
         },
-        "name": "GUImux1_4",
-        "params": {}
+        "id": "GUImux1_4"
       },
       {
         "pos": {
           "x": 190.0,
           "y": 65.0
         },
-        "name": "GUIand",
-        "params": {}
+        "id": "GUIand"
       },
       {
         "pos": {
           "x": 160.0,
           "y": 75.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 240.0,
           "y": 2110.0
         },
-        "name": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode",
-        "params": {}
+        "id": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode"
       },
       {
         "pos": {
           "x": 275.0,
           "y": 445.0
         },
-        "name": "GUIor4",
-        "params": {}
+        "id": "GUIor4"
       },
       {
         "pos": {
           "x": 320.0,
           "y": 440.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 95.0,
           "y": 2220.0
         },
-        "name": "GUIram4",
-        "params": {}
+        "id": "GUIram4"
       },
       {
         "pos": {
           "x": 160.0,
           "y": 2220.0
         },
-        "name": "GUIdlatch4",
-        "params": {}
+        "id": "GUIdlatch4"
       },
       {
         "pos": {
           "x": 160.0,
           "y": 2275.0
         },
-        "name": "GUIdlatch4",
-        "params": {}
+        "id": "GUIdlatch4"
       },
       {
         "pos": {
           "x": 45.0,
           "y": 2310.0
         },
-        "name": "GUIsel3_4",
-        "params": {}
+        "id": "GUIsel3_4"
       },
       {
         "pos": {
           "x": 45.0,
           "y": 2510.0
         },
-        "name": "GUIsel3_4",
-        "params": {}
+        "id": "GUIsel3_4"
       },
       {
         "pos": {
           "x": 90.0,
           "y": 2490.0
         },
-        "name": "GUIAm2901QReg",
-        "params": {}
+        "id": "GUIAm2901QReg"
       },
       {
         "pos": {
           "x": 154.0,
           "y": 949.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 154.0,
           "y": 89.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 154.0,
           "y": 2264.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 154.0,
           "y": 2319.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 39.0,
           "y": 2314.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 2324.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 29.0,
           "y": 2334.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 219.0,
           "y": 2224.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 224.0,
           "y": 2234.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 229.0,
           "y": 2244.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 234.0,
           "y": 2254.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 129.0,
           "y": 2494.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 134.0,
           "y": 2504.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 139.0,
           "y": 2514.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 144.0,
           "y": 2524.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 219.0,
           "y": 2494.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 234.0,
           "y": 2524.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 2624.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 39.0,
           "y": 2634.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 279.0,
           "y": 2114.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 294.0,
           "y": 2144.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 329.0,
           "y": 949.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 254.0,
           "y": 2089.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 259.0,
           "y": 2094.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 264.0,
           "y": 2099.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 269.0,
           "y": 2104.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 254.0,
           "y": 449.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 259.0,
           "y": 459.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 264.0,
           "y": 469.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 269.0,
           "y": 479.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 9.0,
           "y": 2354.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 14.0,
           "y": 2364.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 19.0,
           "y": 2374.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 14.0,
           "y": 2394.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 19.0,
           "y": 2404.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 24.0,
           "y": 2414.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 9.0,
           "y": 2384.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 14.0,
           "y": 2424.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 19.0,
           "y": 2434.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 24.0,
           "y": 2444.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 314.0,
           "y": 449.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -3278,52 +3179,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "I8",
-      "I7",
-      "I6",
-      "I5",
-      "I4",
-      "I3",
-      "I2",
-      "I1",
-      "I0",
-      "C",
-      "Cn",
-      "D1",
-      "D2",
-      "D3",
-      "D4",
-      "A0",
-      "A1",
-      "A2",
-      "A3",
-      "B0",
-      "B1",
-      "B2",
-      "B3",
-      "IRAMn",
-      "IRAMn+3",
-      "IQn",
-      "IQn+3"
-    ],
-    "label": "GUIAm2901",
-    "logic_width": 1,
-    "output_count": [
-      "Y1",
-      "Y2",
-      "Y3",
-      "Y4",
-      "F\u003d0",
-      "Cn+4",
-      "OVR",
-      "F3",
-      "ORAMn",
-      "ORAMn+3",
-      "OQn",
-      "OQn+3"
-    ]
   }
 }
\ No newline at end of file
index 1a838ef..cf9f5a6 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIAm2901ALUFuncDecode",
   "width": 35.0,
   "height": 60.0,
   "interfacePins": [
@@ -78,7 +76,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.25,
     "subComps": [
       {
@@ -86,176 +84,142 @@ mograsim version: 0.1.2
           "x": 15.0,
           "y": 10.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 15.0,
           "y": 50.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 55.0,
           "y": 10.0
         },
-        "name": "GUInand3",
-        "params": {}
+        "id": "GUInand3"
       },
       {
         "pos": {
           "x": 55.0,
           "y": 45.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 55.0,
           "y": 70.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 100.0,
           "y": 50.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 100.0,
           "y": 135.0
         },
-        "name": "GUIand",
-        "params": {}
+        "id": "GUIand"
       },
       {
         "pos": {
           "x": 4.0,
           "y": 19.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 24.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 44.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 9.0,
           "y": 59.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 9.0,
           "y": 54.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 9.0,
           "y": 64.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 9.0,
           "y": 84.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 49.0,
           "y": 99.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 49.0,
           "y": 74.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 39.0,
           "y": 19.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 39.0,
           "y": 34.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -687,22 +651,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "I5",
-      "I4",
-      "I3"
-    ],
-    "label": "GUIAm2901ALUFuncDecode",
-    "logic_width": 1,
-    "output_count": [
-      "CinE",
-      "L",
-      "SN",
-      "SBE",
-      "FN",
-      "RN"
-    ]
   }
 }
\ No newline at end of file
index 9c3181c..1984f63 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIAm2901ALUInclDecode",
   "width": 35.0,
   "height": 120.0,
   "interfacePins": [
@@ -150,7 +148,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.25,
     "subComps": [
       {
@@ -158,248 +156,202 @@ mograsim version: 0.1.2
           "x": 20.0,
           "y": 2.5
         },
-        "name": "GUIAm2901ALUFuncDecode",
-        "params": {}
+        "id": "GUIAm2901ALUFuncDecode"
       },
       {
         "pos": {
           "x": 45.0,
           "y": 80.0
         },
-        "name": "GUIAm2901ALUOneBit",
-        "params": {}
+        "id": "GUIAm2901ALUOneBit"
       },
       {
         "pos": {
           "x": 45.0,
           "y": 180.0
         },
-        "name": "GUIAm2901ALUOneBit",
-        "params": {}
+        "id": "GUIAm2901ALUOneBit"
       },
       {
         "pos": {
           "x": 45.0,
           "y": 280.0
         },
-        "name": "GUIAm2901ALUOneBit",
-        "params": {}
+        "id": "GUIAm2901ALUOneBit"
       },
       {
         "pos": {
           "x": 45.0,
           "y": 380.0
         },
-        "name": "GUIAm2901ALUOneBit",
-        "params": {}
+        "id": "GUIAm2901ALUOneBit"
       },
       {
         "pos": {
           "x": 95.0,
           "y": 400.0
         },
-        "name": "GUIxor",
-        "params": {}
+        "id": "GUIxor"
       },
       {
         "pos": {
           "x": 24.0,
           "y": 94.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 24.0,
           "y": 194.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 24.0,
           "y": 294.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 26.5,
           "y": 104.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 26.5,
           "y": 204.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 26.5,
           "y": 304.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 29.0,
           "y": 124.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 29.0,
           "y": 224.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 29.0,
           "y": 324.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 31.5,
           "y": 144.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 31.5,
           "y": 244.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 31.5,
           "y": 344.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 154.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 254.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 354.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 36.5,
           "y": 164.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 36.5,
           "y": 264.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 36.5,
           "y": 364.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 84.0,
           "y": 374.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 84.0,
           "y": 384.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -1463,31 +1415,5 @@ mograsim version: 0.1.2
         }
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "I5",
-      "I4",
-      "I3",
-      "Cn",
-      "R1",
-      "R2",
-      "R3",
-      "R4",
-      "S1",
-      "S2",
-      "S3",
-      "S4"
-    ],
-    "label": "GUIAm2901ALUInclDecode",
-    "logic_width": 1,
-    "output_count": [
-      "F1",
-      "F2",
-      "F3",
-      "F4",
-      "Cn+4",
-      "OVR"
-    ]
   }
 }
\ No newline at end of file
index 71a63aa..3481904 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode",
   "width": 35.0,
   "height": 230.0,
   "interfacePins": [
@@ -238,7 +236,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.25,
     "subComps": [
       {
@@ -246,72 +244,60 @@ mograsim version: 0.1.2
           "x": 15.0,
           "y": 165.0
         },
-        "name": "GUIAm2901SourceDecode",
-        "params": {}
+        "id": "GUIAm2901SourceDecode"
       },
       {
         "pos": {
           "x": 45.0,
           "y": 365.0
         },
-        "name": "GUIsel2_4",
-        "params": {}
+        "id": "GUIsel2_4"
       },
       {
         "pos": {
           "x": 45.0,
           "y": 575.0
         },
-        "name": "GUIsel3_4",
-        "params": {}
+        "id": "GUIsel3_4"
       },
       {
         "pos": {
           "x": 60.0,
           "y": 15.0
         },
-        "name": "GUIAm2901ALUInclDecode",
-        "params": {}
+        "id": "GUIAm2901ALUInclDecode"
       },
       {
         "pos": {
           "x": 9.0,
           "y": 459.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 14.0,
           "y": 499.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 19.0,
           "y": 539.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 24.0,
           "y": 579.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -1307,42 +1293,5 @@ mograsim version: 0.1.2
         ]
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "I5",
-      "I4",
-      "I3",
-      "I2",
-      "I1",
-      "I0",
-      "Cn",
-      "D1",
-      "D2",
-      "D3",
-      "D4",
-      "A1",
-      "A2",
-      "A3",
-      "A4",
-      "B1",
-      "B2",
-      "B3",
-      "B4",
-      "Q1",
-      "Q2",
-      "Q3",
-      "Q4"
-    ],
-    "label": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode",
-    "logic_width": 1,
-    "output_count": [
-      "F1",
-      "F2",
-      "F3",
-      "F4",
-      "Cn+4",
-      "OVR"
-    ]
   }
 }
\ No newline at end of file
index 5466a04..84f1a12 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIAm2901ALUOneBit",
   "width": 35.0,
   "height": 90.0,
   "interfacePins": [
@@ -94,7 +92,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.2,
     "subComps": [
       {
@@ -102,86 +100,73 @@ mograsim version: 0.1.2
           "x": 10.0,
           "y": 20.0
         },
-        "name": "GUIand",
-        "params": {}
+        "id": "GUIand"
       },
       {
         "pos": {
           "x": 10.0,
           "y": 190.0
         },
-        "name": "GUIxor",
-        "params": {}
+        "id": "GUIxor"
       },
       {
         "pos": {
           "x": 10.0,
           "y": 290.0
         },
-        "name": "GUIxor",
-        "params": {}
+        "id": "GUIxor"
       },
       {
         "pos": {
           "x": 60.0,
           "y": 20.0
         },
-        "name": "GUIfulladder",
-        "params": {}
+        "id": "GUIfulladder"
       },
       {
         "pos": {
           "x": 60.0,
           "y": 55.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 135.0,
           "y": 20.0
         },
-        "name": "GUIand",
-        "params": {}
+        "id": "GUIand"
       },
       {
         "pos": {
           "x": 90.0,
           "y": 70.0
         },
-        "name": "GUImux1",
-        "params": {}
+        "id": "GUImux1"
       },
       {
         "pos": {
           "x": 135.0,
           "y": 70.0
         },
-        "name": "GUIxor",
-        "params": {}
+        "id": "GUIxor"
       },
       {
         "pos": {
           "x": 49.0,
           "y": 59.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 54.0,
           "y": 69.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -514,24 +499,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "Cin",
-      "CoutE",
-      "CinE",
-      "R",
-      "RN",
-      "S",
-      "SN",
-      "FN",
-      "L"
-    ],
-    "label": "GUIAm2901ALUOneBit",
-    "logic_width": 1,
-    "output_count": [
-      "Cout",
-      "F"
-    ]
   }
 }
\ No newline at end of file
index 3faa02d..20dbfb0 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIAm2901DestDecode",
   "width": 35.0,
   "height": 60.0,
   "interfacePins": [
@@ -78,7 +76,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.25,
     "subComps": [
       {
@@ -86,290 +84,232 @@ mograsim version: 0.1.2
           "x": 15.0,
           "y": 10.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 15.0,
           "y": 50.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 15.0,
           "y": 90.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 15.0,
           "y": 150.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 50.0,
           "y": 10.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 50.0,
           "y": 50.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 50.0,
           "y": 90.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 50.0,
           "y": 130.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 80.0,
           "y": 10.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 80.0,
           "y": 90.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 80.0,
           "y": 145.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 110.0,
           "y": 105.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 115.0,
           "y": 210.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 19.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 14.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 24.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 9.0,
           "y": 59.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 9.0,
           "y": 64.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 9.0,
           "y": 104.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 154.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 39.0,
           "y": 59.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 44.0,
           "y": 19.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 44.0,
           "y": 54.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 39.0,
           "y": 134.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 74.0,
           "y": 19.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 74.0,
           "y": 99.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 74.0,
           "y": 104.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 74.0,
           "y": 159.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 109.0,
           "y": 214.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -1054,22 +994,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "I8",
-      "I7",
-      "I6"
-    ],
-    "label": "GUIAm2901DestDecode",
-    "logic_width": 1,
-    "output_count": [
-      "NSH",
-      "RSH",
-      "RAMWE",
-      "YF",
-      "LSH",
-      "QWE"
-    ]
   }
 }
\ No newline at end of file
index 85f0edf..b277225 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIAm2901QReg",
   "width": 35.0,
   "height": 60.0,
   "interfacePins": [
@@ -86,7 +84,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.4,
     "subComps": [
       {
@@ -94,70 +92,59 @@ mograsim version: 0.1.2
           "x": 5.0,
           "y": 15.0
         },
-        "name": "GUIand",
-        "params": {}
+        "id": "GUIand"
       },
       {
         "pos": {
           "x": 50.0,
           "y": 7.5
         },
-        "name": "GUIdff",
-        "params": {}
+        "id": "GUIdff"
       },
       {
         "pos": {
           "x": 50.0,
           "y": 32.5
         },
-        "name": "GUIdff",
-        "params": {}
+        "id": "GUIdff"
       },
       {
         "pos": {
           "x": 50.0,
           "y": 57.5
         },
-        "name": "GUIdff",
-        "params": {}
+        "id": "GUIdff"
       },
       {
         "pos": {
           "x": 50.0,
           "y": 82.5
         },
-        "name": "GUIdff",
-        "params": {}
+        "id": "GUIdff"
       },
       {
         "pos": {
           "x": 41.5,
           "y": 19.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 41.5,
           "y": 36.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 41.5,
           "y": 61.5
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -401,23 +388,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "C",
-      "WE",
-      "D1",
-      "D2",
-      "D3",
-      "D4"
-    ],
-    "label": "GUIAm2901QReg",
-    "logic_width": 1,
-    "output_count": [
-      "Q1",
-      "Q2",
-      "Q3",
-      "Q4"
-    ]
   }
 }
\ No newline at end of file
index c882371..e72cc9f 100644 (file)
@@ -1,7 +1,5 @@
-mograsim version: 0.1.2
+mograsim version: 0.1.3
 {
-  "type": "SimpleRectangularSubmodelComponent",
-  "name": "GUIAm2901SourceDecode",
   "width": 35.0,
   "height": 50.0,
   "interfacePins": [
@@ -70,7 +68,7 @@ mograsim version: 0.1.2
       "logicWidth": 1
     }
   ],
-  "composition": {
+  "submodel": {
     "innerScale": 0.25,
     "subComps": [
       {
@@ -78,310 +76,248 @@ mograsim version: 0.1.2
           "x": 10.0,
           "y": 10.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 10.0,
           "y": 50.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 10.0,
           "y": 90.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 40.0,
           "y": 10.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 40.0,
           "y": 50.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 40.0,
           "y": 90.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 40.0,
           "y": 130.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 40.0,
           "y": 170.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 70.0,
           "y": 10.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 70.0,
           "y": 50.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 70.0,
           "y": 90.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 70.0,
           "y": 130.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 70.0,
           "y": 170.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 100.0,
           "y": 10.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 100.0,
           "y": 170.0
         },
-        "name": "GUINandGate",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "GUINandGate",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 19.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 19.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 4.0,
           "y": 144.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 59.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 99.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 6.5,
           "y": 104.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 31.5,
           "y": 54.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 59.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 64.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 34.0,
           "y": 134.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 36.5,
           "y": 99.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 64.0,
           "y": 59.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 64.0,
           "y": 99.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 64.0,
           "y": 139.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 94.0,
           "y": 19.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       },
       {
         "pos": {
           "x": 94.0,
           "y": 179.0
         },
-        "name": "WireCrossPoint",
-        "params": {
-          "logicWidth": 1
-        }
+        "id": "WireCrossPoint",
+        "params": 1
       }
     ],
     "innerWires": [
@@ -1097,21 +1033,5 @@ mograsim version: 0.1.2
         "path": []
       }
     ]
-  },
-  "specialized": {
-    "input_count": [
-      "I2",
-      "I1",
-      "I0"
-    ],
-    "label": "Am2901SourceDecode",
-    "logic_width": 1,
-    "output_count": [
-      "SQ",
-      "RA",
-      "SB",
-      "SA",
-      "RD"
-    ]
   }
 }
\ No newline at end of file
diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/ComponenetSerializer.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/ComponenetSerializer.java
new file mode 100644 (file)
index 0000000..4c7b5d9
--- /dev/null
@@ -0,0 +1,65 @@
+package net.mograsim.logic.ui.examples;
+
+import java.io.IOException;
+import java.util.function.Function;
+
+import net.mograsim.logic.ui.model.ViewModelModifiable;
+import net.mograsim.logic.ui.model.components.GUIComponent;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUI_rsLatch;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIand;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIand41;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIandor414;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIdemux2;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIdff;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIdlatch;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIdlatch4;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIfulladder;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIhalfadder;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUImux1;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUImux1_4;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUInand3;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUInot4;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIor4;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIor_4;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIram2;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIram4;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIsel2_4;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIsel3_4;
+import net.mograsim.logic.ui.model.components.mi.nandbased.GUIxor;
+import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901;
+import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901ALUFuncDecode;
+import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901ALUInclDecode;
+import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901ALUInclSourceDecodeInclFunctionDecode;
+import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901ALUOneBit;
+import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901DestDecode;
+import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901QReg;
+import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901SourceDecode;
+import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.ui.serializing.SubmodelComponentParams;
+import net.mograsim.logic.ui.util.JsonHandler;
+
+public class ComponenetSerializer
+{
+       public static void main(String[] args) throws IOException
+       {
+               // we know we only use components where this works
+               Function<GUIComponent, String> getIdentifier = c -> c.getClass().getSimpleName();
+
+               ViewModelModifiable model = new ViewModelModifiable();
+               SubmodelComponent[] components = { new GUIAm2901(model), new GUIAm2901ALUFuncDecode(model), new GUIAm2901ALUInclDecode(model),
+                               new GUIAm2901ALUInclSourceDecodeInclFunctionDecode(model), new GUIAm2901ALUOneBit(model), new GUIAm2901DestDecode(model),
+                               new GUIAm2901QReg(model), new GUIAm2901SourceDecode(model), new GUI_rsLatch(model), new GUIand(model), new GUIand41(model),
+                               new GUIandor414(model), new GUIdemux2(model), new GUIdff(model), new GUIdlatch(model), new GUIdlatch4(model),
+                               new GUIfulladder(model), new GUIhalfadder(model), new GUImux1(model), new GUImux1_4(model), new GUInand3(model),
+                               new GUInot4(model), new GUIor4(model), new GUIor_4(model), new GUIram2(model), new GUIram4(model), new GUIsel2_4(model),
+                               new GUIsel3_4(model), new GUIxor(model) };
+
+               for (SubmodelComponent comp : components)
+               {
+                       SubmodelComponentParams params = comp.calculateParams(getIdentifier);
+                       JsonHandler.writeJson(params, "components/"
+                                       + comp.getClass().getName().substring("net.mograsim.logic.ui.model.components.mi.nandbased.".length()).replace('.', '/')
+                                       + ".json");
+               }
+       }
+}
\ No newline at end of file