Serializing now serializes everything; among many other things:
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Wed, 17 Jul 2019 10:46:54 +0000 (12:46 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Wed, 17 Jul 2019 10:46:54 +0000 (12:46 +0200)
-HighLevelStateHandlers now can be serialized
-Common interface for serializable objects (JSONSerializable)
-Serializable objects now "have" an ID (see IdentifierGetter)
-LogicUICanvas's high level state debug shell sorts components better
-HandleManager uses SubmodelComponent's constant for the name of the
SubmodelInterface instead of a hardcoded string
-Wrote some TODOs

94 files changed:
net.mograsim.logic.model.am2900/components/GUI_rsLatch.json
net.mograsim.logic.model.am2900/components/GUIand.json
net.mograsim.logic.model.am2900/components/GUIand41.json
net.mograsim.logic.model.am2900/components/GUIandor414.json
net.mograsim.logic.model.am2900/components/GUIdemux2.json
net.mograsim.logic.model.am2900/components/GUIdff.json
net.mograsim.logic.model.am2900/components/GUIdlatch.json
net.mograsim.logic.model.am2900/components/GUIdlatch4.json
net.mograsim.logic.model.am2900/components/GUIfulladder.json
net.mograsim.logic.model.am2900/components/GUIhalfadder.json
net.mograsim.logic.model.am2900/components/GUImux1.json
net.mograsim.logic.model.am2900/components/GUImux1_4.json
net.mograsim.logic.model.am2900/components/GUInand3.json
net.mograsim.logic.model.am2900/components/GUInot4.json
net.mograsim.logic.model.am2900/components/GUIor4.json
net.mograsim.logic.model.am2900/components/GUIor_4.json
net.mograsim.logic.model.am2900/components/GUIram2.json
net.mograsim.logic.model.am2900/components/GUIram4.json
net.mograsim.logic.model.am2900/components/GUIsel2_4.json
net.mograsim.logic.model.am2900/components/GUIsel3_4.json
net.mograsim.logic.model.am2900/components/GUIxor.json
net.mograsim.logic.model.am2900/components/am2901/GUIAm2901.json
net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUFuncDecode.json
net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUInclDecode.json
net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json
net.mograsim.logic.model.am2900/components/am2901/GUIAm2901ALUOneBit.json
net.mograsim.logic.model.am2900/components/am2901/GUIAm2901DestDecode.json
net.mograsim.logic.model.am2900/components/am2901/GUIAm2901QReg.json
net.mograsim.logic.model.am2900/components/am2901/GUIAm2901SourceDecode.json
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ComponenetSerializer.java
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/SubmodelComponentTestbench.java
net.mograsim.logic.model.editor/components/GUI_rsLatch.json
net.mograsim.logic.model.editor/components/GUIand.json
net.mograsim.logic.model.editor/components/GUIand41.json
net.mograsim.logic.model.editor/components/GUIandor414.json
net.mograsim.logic.model.editor/components/GUIdemux2.json
net.mograsim.logic.model.editor/components/GUIdff.json
net.mograsim.logic.model.editor/components/GUIdlatch.json
net.mograsim.logic.model.editor/components/GUIdlatch4.json
net.mograsim.logic.model.editor/components/GUIfulladder.json
net.mograsim.logic.model.editor/components/GUIhalfadder.json
net.mograsim.logic.model.editor/components/GUImux1.json
net.mograsim.logic.model.editor/components/GUImux1_4.json
net.mograsim.logic.model.editor/components/GUInand3.json
net.mograsim.logic.model.editor/components/GUInot4.json
net.mograsim.logic.model.editor/components/GUIor4.json
net.mograsim.logic.model.editor/components/GUIor_4.json
net.mograsim.logic.model.editor/components/GUIram2.json
net.mograsim.logic.model.editor/components/GUIram4.json
net.mograsim.logic.model.editor/components/GUIsel2_4.json
net.mograsim.logic.model.editor/components/GUIsel3_4.json
net.mograsim.logic.model.editor/components/GUIxor.json
net.mograsim.logic.model.editor/components/am2901/GUIAm2901.json
net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUFuncDecode.json
net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUInclDecode.json
net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json
net.mograsim.logic.model.editor/components/am2901/GUIAm2901ALUOneBit.json
net.mograsim.logic.model.editor/components/am2901/GUIAm2901DestDecode.json
net.mograsim.logic.model.editor/components/am2901/GUIAm2901QReg.json
net.mograsim.logic.model.editor/components/am2901/GUIAm2901SourceDecode.json
net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/SaveLoadManager.java
net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/ComponentHandle.java
net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/HandleManager.java
net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java
net.mograsim.logic.model/src/net/mograsim/logic/model/model/ViewModelModifiable.java
net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/GUIComponent.java
net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/SimpleRectangularGUIGate.java
net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/TextComponent.java
net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SimpleRectangularSubmodelComponent.java
net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SubmodelComponent.java
net.mograsim.logic.model/src/net/mograsim/logic/model/model/wires/WireCrossPoint.java
net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/DeserializedSubmodelComponent.java
net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/IdentifierGetter.java [new file with mode: 0644]
net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/IndirectGUIComponentCreator.java
net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/JSONSerializable.java [new file with mode: 0644]
net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/SubmodelComponentSerializer.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/CodeSnippetSupplier.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/HighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/Renderer.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/SnippetDefinintion.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/DefaultHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/StandardHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/AtomicHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/BitVectorSplittingAtomicHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/DelegatingAtomicHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/WireForcingAtomicHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/standardSnippetIDMapping.json
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/subcomponent/DelegatingSubcomponentHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/subcomponent/SubcomponentHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/outlinerenderers/DefaultOutlineRenderer.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/symbolrenderers/CenteredTextSymbolRenderer.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/symbolrenderers/DefaultSymbolRenderer.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/symbolrenderers/SimpleRectangularLikeSymbolRenderer.java
net.mograsim.logic.model/src/net/mograsim/logic/model/util/JsonHandler.java

index f644070..4199e45 100644 (file)
@@ -77,18 +77,6 @@ mograsim version: 0.1.3
       }
     ],
     "innerWires": [
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "_Q"
-        },
-        "name": "unnamedWire#7",
-        "path": []
-      },
       {
         "pin1": {
           "compName": "WireCrossPoint#0",
@@ -98,7 +86,7 @@ mograsim version: 0.1.3
           "compName": "_submodelinterface",
           "pinName": "Q"
         },
-        "name": "unnamedWire#6",
+        "name": "q",
         "path": [
           {
             "x": 35.0,
@@ -118,6 +106,18 @@ mograsim version: 0.1.3
           }
         ]
       },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_Q"
+        },
+        "name": "_q",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "_submodelinterface",
@@ -219,12 +219,30 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "_rsLatch",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.WireForcingAtomicHighLevelStateHandler",
+        "params": {
+          "wiresToForce": [
+            "q"
+          ],
+          "wiresToForceInverted": [
+            "_q"
+          ]
+        }
+      }
+    }
   }
 }
\ No newline at end of file
index bb69f11..6ec536a 100644 (file)
@@ -141,12 +141,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIand",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index dae4dfd..9577681 100644 (file)
@@ -332,12 +332,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIand41",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 939965a..c6dc821 100644 (file)
@@ -493,12 +493,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIandor414",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 383337a..55e3c8a 100644 (file)
@@ -524,12 +524,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIdemux2",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 9d29afb..345b126 100644 (file)
@@ -332,12 +332,26 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIdff",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUI_rsLatch#1",
+          "subStateID": "q"
+        }
+      }
+    }
   }
 }
\ No newline at end of file
index 4280559..26c4071 100644 (file)
@@ -237,12 +237,26 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIdlatch",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUI_rsLatch#0",
+          "subStateID": "q"
+        }
+      }
+    }
   }
 }
\ No newline at end of file
index 47965d7..28021df 100644 (file)
@@ -332,12 +332,64 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIdlatch4",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q1": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch#0",
+          "subStateID": "q"
+        }
+      },
+      "q2": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch#1",
+          "subStateID": "q"
+        }
+      },
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler",
+        "params": {
+          "vectorPartTargets": [
+            "q1",
+            "q2",
+            "q3",
+            "q4"
+          ],
+          "vectorPartLengthes": [
+            1,
+            1,
+            1,
+            1
+          ]
+        }
+      },
+      "q3": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch#2",
+          "subStateID": "q"
+        }
+      },
+      "q4": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch#3",
+          "subStateID": "q"
+        }
+      }
+    }
   }
 }
\ No newline at end of file
index 3a41f55..b509eb2 100644 (file)
@@ -185,12 +185,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIfulladder",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 1c9144f..8ca9ccd 100644 (file)
@@ -319,12 +319,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIhalfadder",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 6d4ba96..b75d9f1 100644 (file)
@@ -230,12 +230,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUImux1",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 014f4eb..b9f6612 100644 (file)
@@ -476,12 +476,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUImux1_4",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 9385c33..1bdc7cc 100644 (file)
@@ -201,12 +201,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUInand3",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 93b0592..0a3b703 100644 (file)
@@ -379,12 +379,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUInot4",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 82f2a95..fca69d6 100644 (file)
@@ -539,12 +539,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIor4",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 0f51017..07a3e1e 100644 (file)
@@ -871,12 +871,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIor_4",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 56b12a6..325e2a6 100644 (file)
@@ -2951,12 +2951,61 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIram2",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {
+      "c00": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch4#0"
+        }
+      },
+      "c11": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch4#3"
+        }
+      },
+      "c10": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch4#2"
+        }
+      },
+      "c01": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch4#1"
+        }
+      }
+    },
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler",
+        "params": {
+          "vectorPartTargets": [
+            "c00.q",
+            "c01.q",
+            "c10.q",
+            "c11.q"
+          ],
+          "vectorPartLengthes": [
+            4,
+            4,
+            4,
+            4
+          ]
+        }
+      }
+    }
   }
 }
\ No newline at end of file
index 28dd20d..d2774ae 100644 (file)
@@ -3331,12 +3331,173 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIram4",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {
+      "c00": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#0"
+        }
+      },
+      "c11": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#3"
+        }
+      },
+      "c10": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#2"
+        }
+      },
+      "c01": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#1"
+        }
+      },
+      "c1000": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#0",
+          "prefix": "c10"
+        }
+      },
+      "c1011": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#3",
+          "prefix": "c10"
+        }
+      },
+      "c1110": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#2",
+          "prefix": "c11"
+        }
+      },
+      "c1001": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#1",
+          "prefix": "c10"
+        }
+      },
+      "c1100": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#0",
+          "prefix": "c11"
+        }
+      },
+      "c1111": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#3",
+          "prefix": "c11"
+        }
+      },
+      "c0000": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#0",
+          "prefix": "c00"
+        }
+      },
+      "c0011": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#3",
+          "prefix": "c00"
+        }
+      },
+      "c0110": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#2",
+          "prefix": "c01"
+        }
+      },
+      "c0010": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#2",
+          "prefix": "c00"
+        }
+      },
+      "c1010": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#2",
+          "prefix": "c10"
+        }
+      },
+      "c0101": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#1",
+          "prefix": "c01"
+        }
+      },
+      "c0001": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#1",
+          "prefix": "c00"
+        }
+      },
+      "c0100": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#0",
+          "prefix": "c01"
+        }
+      },
+      "c0111": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#3",
+          "prefix": "c01"
+        }
+      },
+      "c1101": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#1",
+          "prefix": "c11"
+        }
+      }
+    },
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler",
+        "params": {
+          "vectorPartTargets": [
+            "c00.q",
+            "c01.q",
+            "c10.q",
+            "c11.q"
+          ],
+          "vectorPartLengthes": [
+            16,
+            16,
+            16,
+            16
+          ]
+        }
+      }
+    }
   }
 }
\ No newline at end of file
index 90d6f1c..1693ebf 100644 (file)
@@ -835,12 +835,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIsel2_4",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 7b3b5a1..cb7c3b4 100644 (file)
@@ -904,12 +904,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIsel3_4",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index a010047..a15e5df 100644 (file)
@@ -268,12 +268,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIxor",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 1da7f91..503d854 100644 (file)
@@ -3391,12 +3391,31 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIAm2901",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {
+      "qreg": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIAm2901QReg#0"
+        }
+      },
+      "regs": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram4#0"
+        }
+      }
+    },
+    "atomicHighLevelStates": {}
   }
 }
\ No newline at end of file
index dd417e7..a575c5c 100644 (file)
@@ -702,12 +702,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIAm2901ALUFuncDecode",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 08d122c..c6f61c4 100644 (file)
@@ -1509,12 +1509,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIAm2901ALUInclDecode",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 161cadb..12e2850 100644 (file)
@@ -1352,12 +1352,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index ca61568..5abfdb5 100644 (file)
@@ -532,12 +532,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIAm2901ALUOneBit",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 6be3799..150c099 100644 (file)
@@ -1072,12 +1072,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIAm2901DestDecode",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 05bd783..0f8ba03 100644 (file)
@@ -414,12 +414,64 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIAm2901QReg",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q1": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#0",
+          "subStateID": "q"
+        }
+      },
+      "q2": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#1",
+          "subStateID": "q"
+        }
+      },
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler",
+        "params": {
+          "vectorPartTargets": [
+            "q1",
+            "q2",
+            "q3",
+            "q4"
+          ],
+          "vectorPartLengthes": [
+            1,
+            1,
+            1,
+            1
+          ]
+        }
+      },
+      "q3": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#2",
+          "subStateID": "q"
+        }
+      },
+      "q4": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#3",
+          "subStateID": "q"
+        }
+      }
+    }
   }
 }
\ No newline at end of file
index 746f301..8c086bf 100644 (file)
@@ -1116,12 +1116,13 @@ mograsim version: 0.1.3
       }
     ]
   },
-  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "Am2901SourceDecode",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 52bf5c0..8699c3b 100644 (file)
@@ -1,10 +1,8 @@
 package net.mograsim.logic.model.examples;
 
 import java.io.IOException;
-import java.util.function.Function;
 
 import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
 import net.mograsim.logic.model.model.components.mi.nandbased.GUI_rsLatch;
 import net.mograsim.logic.model.model.components.mi.nandbased.GUIand;
 import net.mograsim.logic.model.model.components.mi.nandbased.GUIand41;
@@ -35,6 +33,7 @@ import net.mograsim.logic.model.model.components.mi.nandbased.am2901.GUIAm2901De
 import net.mograsim.logic.model.model.components.mi.nandbased.am2901.GUIAm2901QReg;
 import net.mograsim.logic.model.model.components.mi.nandbased.am2901.GUIAm2901SourceDecode;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
 import net.mograsim.logic.model.serializing.SubmodelComponentParams;
 import net.mograsim.logic.model.serializing.SubmodelComponentSerializer;
 import net.mograsim.logic.model.util.JsonHandler;
@@ -43,8 +42,9 @@ public class ComponenetSerializer
 {
        public static void main(String[] args) throws IOException
        {
+               IdentifierGetter idGetter = new IdentifierGetter();
                // we know we only use components where this works
-               Function<GUIComponent, String> getIdentifier = c -> c.getClass().getSimpleName();
+               idGetter.componentIDs = c -> c.getClass().getSimpleName();
 
                ViewModelModifiable model = new ViewModelModifiable();
                SubmodelComponent[] components = { new GUIAm2901(model), new GUIAm2901ALUFuncDecode(model), new GUIAm2901ALUInclDecode(model),
@@ -57,7 +57,7 @@ public class ComponenetSerializer
 
                for (SubmodelComponent comp : components)
                {
-                       SubmodelComponentParams params = SubmodelComponentSerializer.serialize(comp, getIdentifier);
+                       SubmodelComponentParams params = SubmodelComponentSerializer.serialize(comp, idGetter);
                        String shortClassName = comp.getClass().getName().substring("net.mograsim.logic.model.model.components.mi.nandbased.".length());
                        String path = "components/" + shortClassName.replace('.', '/') + ".json";
                        JsonHandler.writeJson(params, path);
index 6a42d70..e55819a 100644 (file)
@@ -1,18 +1,16 @@
 package net.mograsim.logic.model.examples;
 
-import java.io.IOException;
-import java.io.UncheckedIOException;
 import java.util.ArrayList;
 import java.util.List;
 
 import net.mograsim.logic.model.SimpleLogicUIStandalone;
 import net.mograsim.logic.model.model.ViewModelModifiable;
+import net.mograsim.logic.model.model.components.GUIComponent;
 import net.mograsim.logic.model.model.components.atomic.GUIBitDisplay;
 import net.mograsim.logic.model.model.components.atomic.GUIManualSwitch;
-import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.model.wires.GUIWire;
 import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.serializing.SubmodelComponentSerializer;
+import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
 
 public class SubmodelComponentTestbench
 {
@@ -24,18 +22,11 @@ public class SubmodelComponentTestbench
        @SuppressWarnings("unused") // for GUIWires being created
        public static void createTestbench(ViewModelModifiable model)
        {
-               SubmodelComponent comp;
-               try
-               {
-                       comp = SubmodelComponentSerializer.deserialize(model, "components/am2901/GUIAm2901.json");
-               }
-               catch (IOException e)
-               {
-                       throw new UncheckedIOException(e);
-               }
+               GUIComponent comp = IndirectGUIComponentCreator.createComponent(model, "file:components/am2901/GUIAm2901.json", "Am2901");
 
                // guess which pins are outputs and which are inputs
                // TODO this code exists three times... but it seems too "hacky" to put it in a helper class
+               // TODO sort pins correctly - use Y coordinate
                List<String> inputPinNames = new ArrayList<>();
                List<String> outputPinNames = new ArrayList<>();
                for (Pin p : comp.getPins().values())
index a91b815..4199e45 100644 (file)
@@ -40,110 +40,115 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 40.0,
           "y": 12.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 10.0,
           "y": 7.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 64.0,
           "y": 36.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 34.0,
           "y": 16.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "_S"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "A"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "_R"
-        },
-        "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "B"
+          "pinName": "Q"
         },
+        "name": "q",
         "path": [
           {
             "x": 35.0,
-            "y": 37.5
+            "y": 17.5
           },
           {
             "x": 35.0,
-            "y": 27.5
+            "y": 7.5
+          },
+          {
+            "x": 65.0,
+            "y": 7.5
+          },
+          {
+            "x": 65.0,
+            "y": 12.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "_Q"
         },
+        "name": "_q",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#1",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "_R"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUINandGate#1",
+          "pinName": "B"
         },
+        "name": "unnamedWire#1",
         "path": [
           {
-            "x": 65.0,
-            "y": 22.5
+            "x": 35.0,
+            "y": 37.5
+          },
+          {
+            "x": 35.0,
+            "y": 27.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "_S"
         },
         "pin2": {
-          "compName": "GUINandGate#1",
+          "compName": "GUINandGate#0",
           "pinName": "A"
         },
+        "name": "unnamedWire#0",
         "path": []
       },
       {
@@ -155,6 +160,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#0",
           "pinName": "B"
         },
+        "name": "unnamedWire#5",
         "path": [
           {
             "x": 65.0,
@@ -176,47 +182,67 @@ mograsim version: 0.1.3
           "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Q"
+          "compName": "GUINandGate#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
+        "name": "unnamedWire#3",
         "path": [
-          {
-            "x": 35.0,
-            "y": 17.5
-          },
-          {
-            "x": 35.0,
-            "y": 7.5
-          },
           {
             "x": 65.0,
-            "y": 7.5
-          },
-          {
-            "x": 65.0,
-            "y": 12.5
+            "y": 22.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "_Q"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
+        "name": "unnamedWire#2",
         "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "_rsLatch",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.WireForcingAtomicHighLevelStateHandler",
+        "params": {
+          "wiresToForce": [
+            "q"
+          ],
+          "wiresToForceInverted": [
+            "_q"
+          ]
+        }
+      }
+    }
   }
 }
\ No newline at end of file
index 5877291..6ec536a 100644 (file)
@@ -32,30 +32,30 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 50.0,
           "y": 15.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 20.0,
           "y": 15.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 44.0,
           "y": 24.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       }
     ],
@@ -63,33 +63,35 @@ mograsim version: 0.1.3
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "A"
+          "pinName": "B"
         },
         "pin2": {
           "compName": "GUINandGate#0",
-          "pinName": "A"
-        }
+          "pinName": "B"
+        },
+        "name": "unnamedWire#1"
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "B"
+          "pinName": "A"
         },
         "pin2": {
           "compName": "GUINandGate#0",
-          "pinName": "B"
-        }
+          "pinName": "A"
+        },
+        "name": "unnamedWire#0"
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
+          "compName": "GUINandGate#1",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "Y"
         },
-        "path": []
+        "name": "unnamedWire#5"
       },
       {
         "pin1": {
@@ -98,12 +100,13 @@ mograsim version: 0.1.3
         },
         "pin2": {
           "compName": "GUINandGate#1",
-          "pinName": "A"
+          "pinName": "B"
         },
+        "name": "unnamedWire#4",
         "path": [
           {
             "x": 45.0,
-            "y": 20.0
+            "y": 30.0
           }
         ]
       },
@@ -114,33 +117,37 @@ mograsim version: 0.1.3
         },
         "pin2": {
           "compName": "GUINandGate#1",
-          "pinName": "B"
+          "pinName": "A"
         },
+        "name": "unnamedWire#3",
         "path": [
           {
             "x": 45.0,
-            "y": 30.0
+            "y": 20.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#1",
+          "compName": "GUINandGate#0",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y"
-        }
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#2",
+        "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIand",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 973a4c9..9577681 100644 (file)
@@ -80,135 +80,124 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 24.0,
           "y": 71.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 24.0,
           "y": 46.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 24.0,
           "y": 96.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "GUIand",
+        "name": "GUIand#0",
         "pos": {
           "x": 30.0,
           "y": 7.5
-        },
-        "id": "GUIand",
-        "name": "GUIand#0"
+        }
       },
       {
+        "id": "GUIand",
+        "name": "GUIand#2",
         "pos": {
           "x": 30.0,
           "y": 57.5
-        },
-        "id": "GUIand",
-        "name": "GUIand#2"
+        }
       },
       {
+        "id": "GUIand",
+        "name": "GUIand#1",
         "pos": {
           "x": 30.0,
           "y": 32.5
-        },
-        "id": "GUIand",
-        "name": "GUIand#1"
+        }
       },
       {
+        "id": "GUIand",
+        "name": "GUIand#3",
         "pos": {
           "x": 30.0,
           "y": 82.5
-        },
-        "id": "GUIand",
-        "name": "GUIand#3"
+        }
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A1"
+          "compName": "GUIand#3",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUIand#0",
-          "pinName": "A"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "A2"
-        },
-        "pin2": {
-          "compName": "GUIand#1",
-          "pinName": "A"
+          "pinName": "Y4"
         },
+        "name": "unnamedWire#14",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A3"
+          "compName": "GUIand#2",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUIand#2",
-          "pinName": "A"
+          "compName": "_submodelinterface",
+          "pinName": "Y3"
         },
+        "name": "unnamedWire#13",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A4"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand#3",
-          "pinName": "A"
+          "compName": "GUIand#1",
+          "pinName": "B"
         },
+        "name": "unnamedWire#9",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
-        "path": [
-          {
-            "x": 25.0,
-            "y": 112.5
-          }
-        ]
+        "name": "unnamedWire#8",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand#3",
+          "compName": "GUIand#2",
           "pinName": "B"
         },
+        "name": "unnamedWire#7",
         "path": []
       },
       {
@@ -220,39 +209,43 @@ mograsim version: 0.1.3
           "compName": "WireCrossPoint#1",
           "pinName": ""
         },
+        "name": "unnamedWire#6",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "A2"
         },
         "pin2": {
-          "compName": "GUIand#2",
-          "pinName": "B"
+          "compName": "GUIand#1",
+          "pinName": "A"
         },
+        "name": "unnamedWire#1",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "A1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUIand#0",
+          "pinName": "A"
         },
+        "name": "unnamedWire#0",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand#1",
+          "compName": "GUIand#3",
           "pinName": "B"
         },
+        "name": "unnamedWire#5",
         "path": []
       },
       {
@@ -264,6 +257,7 @@ mograsim version: 0.1.3
           "compName": "GUIand#0",
           "pinName": "B"
         },
+        "name": "unnamedWire#10",
         "path": [
           {
             "x": 25.0,
@@ -273,13 +267,31 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIand#0",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "B"
         },
         "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#4",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 112.5
+          }
+        ]
+      },
+      {
+        "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "Y1"
+          "pinName": "A4"
+        },
+        "pin2": {
+          "compName": "GUIand#3",
+          "pinName": "A"
         },
+        "name": "unnamedWire#3",
         "path": []
       },
       {
@@ -291,38 +303,42 @@ mograsim version: 0.1.3
           "compName": "_submodelinterface",
           "pinName": "Y2"
         },
+        "name": "unnamedWire#12",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIand#2",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "A3"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y3"
+          "compName": "GUIand#2",
+          "pinName": "A"
         },
+        "name": "unnamedWire#2",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIand#3",
+          "compName": "GUIand#0",
           "pinName": "Y"
         },
         "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "Y4"
+          "pinName": "Y1"
         },
+        "name": "unnamedWire#11",
         "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIand41",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 5cadf0f..c6dc821 100644 (file)
@@ -112,133 +112,159 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUIor_4",
+        "name": "GUIor_4#0",
         "pos": {
           "x": 35.0,
           "y": 37.5
-        },
-        "id": "GUIor_4",
-        "name": "GUIor_4#0"
+        }
       },
       {
+        "id": "GUIand41",
+        "name": "GUIand41#0",
         "pos": {
           "x": 15.0,
           "y": 137.5
-        },
-        "id": "GUIand41",
-        "name": "GUIand41#0"
+        }
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A1"
+          "compName": "GUIor_4#0",
+          "pinName": "Y2"
         },
         "pin2": {
-          "compName": "GUIand41#0",
-          "pinName": "A1"
+          "compName": "_submodelinterface",
+          "pinName": "Y2"
         },
+        "name": "unnamedWire#14",
         "path": [
           {
-            "x": 10.0,
-            "y": 112.5
+            "x": 80.0,
+            "y": 52.5
           },
           {
-            "x": 10.0,
-            "y": 142.5
+            "x": 80.0,
+            "y": 37.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A2"
+          "compName": "GUIor_4#0",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "GUIand41#0",
-          "pinName": "A2"
+          "compName": "_submodelinterface",
+          "pinName": "Y1"
         },
+        "name": "unnamedWire#13",
         "path": [
           {
-            "x": 5.0,
-            "y": 137.5
+            "x": 75.0,
+            "y": 42.5
           },
           {
-            "x": 5.0,
-            "y": 152.5
+            "x": 75.0,
+            "y": 12.5
           }
         ]
       },
       {
         "pin1": {
+          "compName": "GUIor_4#0",
+          "pinName": "Y4"
+        },
+        "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "A3"
+          "pinName": "Y4"
+        },
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 80.0,
+            "y": 72.5
+          },
+          {
+            "x": 80.0,
+            "y": 87.5
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIor_4#0",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIand41#0",
-          "pinName": "A3"
+          "compName": "_submodelinterface",
+          "pinName": "Y3"
         },
+        "name": "unnamedWire#15",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A4"
+          "compName": "GUIand41#0",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "GUIand41#0",
-          "pinName": "A4"
+          "compName": "GUIor_4#0",
+          "pinName": "B1"
         },
+        "name": "unnamedWire#9",
         "path": [
           {
-            "x": 5.0,
-            "y": 187.5
+            "x": 70.0,
+            "y": 142.5
           },
           {
-            "x": 5.0,
-            "y": 172.5
+            "x": 70.0,
+            "y": 120.0
+          },
+          {
+            "x": 30.0,
+            "y": 120.0
+          },
+          {
+            "x": 30.0,
+            "y": 82.5
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "B"
+          "pinName": "C4"
         },
         "pin2": {
-          "compName": "GUIand41#0",
-          "pinName": "B"
+          "compName": "GUIor_4#0",
+          "pinName": "A4"
         },
+        "name": "unnamedWire#8",
         "path": [
           {
-            "x": 10.0,
-            "y": 212.5
+            "x": 5.0,
+            "y": 87.5
           },
           {
-            "x": 10.0,
-            "y": 182.5
+            "x": 5.0,
+            "y": 72.5
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "C1"
+          "pinName": "C3"
         },
         "pin2": {
           "compName": "GUIor_4#0",
-          "pinName": "A1"
+          "pinName": "A3"
         },
-        "path": [
-          {
-            "x": 10.0,
-            "y": 12.5
-          },
-          {
-            "x": 10.0,
-            "y": 42.5
-          }
-        ]
+        "name": "unnamedWire#7",
+        "path": []
       },
       {
         "pin1": {
@@ -249,6 +275,7 @@ mograsim version: 0.1.3
           "compName": "GUIor_4#0",
           "pinName": "A2"
         },
+        "name": "unnamedWire#6",
         "path": [
           {
             "x": 5.0,
@@ -263,59 +290,63 @@ mograsim version: 0.1.3
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "C3"
+          "pinName": "A2"
         },
         "pin2": {
-          "compName": "GUIor_4#0",
-          "pinName": "A3"
+          "compName": "GUIand41#0",
+          "pinName": "A2"
         },
-        "path": []
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 137.5
+          },
+          {
+            "x": 5.0,
+            "y": 152.5
+          }
+        ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "C4"
+          "pinName": "A1"
         },
         "pin2": {
-          "compName": "GUIor_4#0",
-          "pinName": "A4"
+          "compName": "GUIand41#0",
+          "pinName": "A1"
         },
+        "name": "unnamedWire#0",
         "path": [
           {
-            "x": 5.0,
-            "y": 87.5
+            "x": 10.0,
+            "y": 112.5
           },
           {
-            "x": 5.0,
-            "y": 72.5
+            "x": 10.0,
+            "y": 142.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#0",
-          "pinName": "Y1"
+          "compName": "_submodelinterface",
+          "pinName": "C1"
         },
         "pin2": {
           "compName": "GUIor_4#0",
-          "pinName": "B1"
+          "pinName": "A1"
         },
+        "name": "unnamedWire#5",
         "path": [
           {
-            "x": 70.0,
-            "y": 142.5
-          },
-          {
-            "x": 70.0,
-            "y": 120.0
-          },
-          {
-            "x": 30.0,
-            "y": 120.0
+            "x": 10.0,
+            "y": 12.5
           },
           {
-            "x": 30.0,
-            "y": 82.5
+            "x": 10.0,
+            "y": 42.5
           }
         ]
       },
@@ -328,6 +359,7 @@ mograsim version: 0.1.3
           "compName": "GUIor_4#0",
           "pinName": "B2"
         },
+        "name": "unnamedWire#10",
         "path": [
           {
             "x": 65.0,
@@ -349,29 +381,43 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIand41#0",
-          "pinName": "Y3"
+          "compName": "_submodelinterface",
+          "pinName": "B"
         },
         "pin2": {
-          "compName": "GUIor_4#0",
-          "pinName": "B3"
+          "compName": "GUIand41#0",
+          "pinName": "B"
         },
+        "name": "unnamedWire#4",
         "path": [
           {
-            "x": 60.0,
-            "y": 162.5
+            "x": 10.0,
+            "y": 212.5
           },
           {
-            "x": 60.0,
-            "y": 130.0
-          },
+            "x": 10.0,
+            "y": 182.5
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "A4"
+        },
+        "pin2": {
+          "compName": "GUIand41#0",
+          "pinName": "A4"
+        },
+        "name": "unnamedWire#3",
+        "path": [
           {
-            "x": 20.0,
-            "y": 130.0
+            "x": 5.0,
+            "y": 187.5
           },
           {
-            "x": 20.0,
-            "y": 102.5
+            "x": 5.0,
+            "y": 172.5
           }
         ]
       },
@@ -384,6 +430,7 @@ mograsim version: 0.1.3
           "compName": "GUIor_4#0",
           "pinName": "B4"
         },
+        "name": "unnamedWire#12",
         "path": [
           {
             "x": 55.0,
@@ -405,83 +452,54 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIor_4#0",
-          "pinName": "Y1"
-        },
-        "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "Y1"
-        },
-        "path": [
-          {
-            "x": 75.0,
-            "y": 42.5
-          },
-          {
-            "x": 75.0,
-            "y": 12.5
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUIor_4#0",
-          "pinName": "Y2"
+          "pinName": "A3"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y2"
+          "compName": "GUIand41#0",
+          "pinName": "A3"
         },
-        "path": [
-          {
-            "x": 80.0,
-            "y": 52.5
-          },
-          {
-            "x": 80.0,
-            "y": 37.5
-          }
-        ]
+        "name": "unnamedWire#2",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIor_4#0",
+          "compName": "GUIand41#0",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y3"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
           "compName": "GUIor_4#0",
-          "pinName": "Y4"
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y4"
+          "pinName": "B3"
         },
+        "name": "unnamedWire#11",
         "path": [
           {
-            "x": 80.0,
-            "y": 72.5
+            "x": 60.0,
+            "y": 162.5
           },
           {
-            "x": 80.0,
-            "y": 87.5
+            "x": 60.0,
+            "y": 130.0
+          },
+          {
+            "x": 20.0,
+            "y": 130.0
+          },
+          {
+            "x": 20.0,
+            "y": 102.5
           }
         ]
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIandor414",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 5ded84b..55e3c8a 100644 (file)
@@ -56,215 +56,242 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 10.0,
           "y": 27.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 10.0,
           "y": 2.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "GUIand",
+        "name": "GUIand#0",
         "pos": {
           "x": 40.0,
           "y": 2.5
-        },
-        "id": "GUIand",
-        "name": "GUIand#0"
+        }
       },
       {
+        "id": "GUIand",
+        "name": "GUIand#2",
         "pos": {
           "x": 40.0,
           "y": 52.5
-        },
-        "id": "GUIand",
-        "name": "GUIand#2"
+        }
       },
       {
+        "id": "GUIand",
+        "name": "GUIand#1",
         "pos": {
           "x": 40.0,
           "y": 27.5
-        },
-        "id": "GUIand",
-        "name": "GUIand#1"
+        }
       },
       {
+        "id": "GUIand",
+        "name": "GUIand#3",
         "pos": {
           "x": 40.0,
           "y": 77.5
-        },
-        "id": "GUIand",
-        "name": "GUIand#3"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 6.5,
           "y": 16.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 6.5,
           "y": 11.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
           "x": 4.0,
           "y": 36.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 36.5,
           "y": 61.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
         "pos": {
           "x": 31.5,
           "y": 66.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
         "pos": {
           "x": 4.0,
           "y": 41.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#4",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
         "pos": {
           "x": 34.0,
           "y": 36.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#7",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
         "pos": {
           "x": 31.5,
           "y": 11.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#6",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "S0"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUIand#1",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 37.5,
+            "y": 32.5
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "S1"
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "GUIand#0",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 17.5
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
+          "compName": "GUIand#2",
           "pinName": "A"
         },
+        "name": "unnamedWire#16",
         "path": [
           {
-            "x": 7.5,
-            "y": 7.5
+            "x": 32.5,
+            "y": 57.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "A"
+          "compName": "GUIand#1",
+          "pinName": "B"
         },
+        "name": "unnamedWire#15",
         "path": [
           {
-            "x": 5.0,
-            "y": 32.5
+            "x": 35.0,
+            "y": 42.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUIand#3",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#18",
+        "path": [
+          {
+            "x": 37.5,
+            "y": 82.5
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
+          "compName": "GUIand#2",
+          "pinName": "B"
         },
+        "name": "unnamedWire#17",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
+          "compName": "GUIand#3",
           "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#19",
+        "path": [
+          {
+            "x": 32.5,
+            "y": 92.5
+          }
+        ]
       },
       {
         "pin1": {
@@ -272,10 +299,20 @@ mograsim version: 0.1.3
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "B"
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
         },
-        "path": []
+        "name": "unnamedWire#9",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 67.5
+          },
+          {
+            "x": 32.5,
+            "y": 67.5
+          }
+        ]
       },
       {
         "pin1": {
@@ -286,6 +323,7 @@ mograsim version: 0.1.3
           "compName": "WireCrossPoint#2",
           "pinName": ""
         },
+        "name": "unnamedWire#8",
         "path": [
           {
             "x": 7.5,
@@ -299,213 +337,200 @@ mograsim version: 0.1.3
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "GUINandGate#1",
+          "pinName": "B"
         },
-        "path": [
-          {
-            "x": 5.0,
-            "y": 67.5
-          },
-          {
-            "x": 32.5,
-            "y": 67.5
-          }
-        ]
+        "name": "unnamedWire#7",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "GUINandGate#0",
+          "pinName": "B"
         },
+        "name": "unnamedWire#6",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#1",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "S1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
+        "name": "unnamedWire#1",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "S0"
         },
         "pin2": {
-          "compName": "GUIand#0",
-          "pinName": "A"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 32.5,
-            "y": 7.5
-          }
-        ]
+        "name": "unnamedWire#0",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand#0",
-          "pinName": "B"
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 35.0,
-            "y": 17.5
-          }
-        ]
+        "name": "unnamedWire#5",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUIand#1",
-          "pinName": "A"
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 37.5,
-            "y": 32.5
-          }
-        ]
+        "name": "unnamedWire#10",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
-          "pinName": ""
+          "compName": "GUIand#1",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUIand#1",
-          "pinName": "B"
+          "compName": "_submodelinterface",
+          "pinName": "Y01"
         },
-        "path": [
-          {
-            "x": 35.0,
-            "y": 42.5
-          }
-        ]
+        "name": "unnamedWire#21"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand#2",
-          "pinName": "A"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 32.5,
-            "y": 57.5
-          }
-        ]
+        "name": "unnamedWire#4",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "GUIand#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUIand#2",
-          "pinName": "B"
+          "compName": "_submodelinterface",
+          "pinName": "Y00"
         },
-        "path": []
+        "name": "unnamedWire#20"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand#3",
+          "compName": "GUINandGate#1",
           "pinName": "A"
         },
+        "name": "unnamedWire#3",
         "path": [
           {
-            "x": 37.5,
-            "y": 82.5
+            "x": 5.0,
+            "y": 32.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand#3",
-          "pinName": "B"
+          "compName": "GUIand#0",
+          "pinName": "A"
         },
+        "name": "unnamedWire#12",
         "path": [
           {
             "x": 32.5,
-            "y": 92.5
+            "y": 7.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand#0",
+          "compName": "GUIand#3",
           "pinName": "Y"
         },
         "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "Y00"
-        }
+          "pinName": "Y11"
+        },
+        "name": "unnamedWire#23"
       },
       {
         "pin1": {
-          "compName": "GUIand#1",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y01"
-        }
+          "compName": "GUINandGate#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 7.5,
+            "y": 7.5
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUIand#2",
+          "compName": "GUINandGate#1",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y10"
-        }
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#11",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIand#3",
+          "compName": "GUIand#2",
           "pinName": "Y"
         },
         "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "Y11"
-        }
+          "pinName": "Y10"
+        },
+        "name": "unnamedWire#22"
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIdemux2",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 55151f8..345b126 100644 (file)
@@ -40,162 +40,145 @@ mograsim version: 0.1.3
     "innerScale": 0.2,
     "subComps": [
       {
+        "id": "GUI_rsLatch",
+        "name": "GUI_rsLatch#0",
         "pos": {
           "x": 40.0,
           "y": 10.0
-        },
-        "id": "GUI_rsLatch",
-        "name": "GUI_rsLatch#0"
+        }
       },
       {
+        "id": "GUInand3",
+        "name": "GUInand3#0",
         "pos": {
           "x": 40.0,
           "y": 40.0
-        },
-        "id": "GUInand3",
-        "name": "GUInand3#0"
+        }
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 120.0,
           "y": 60.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "GUI_rsLatch",
+        "name": "GUI_rsLatch#1",
         "pos": {
           "x": 120.0,
           "y": 30.0
-        },
-        "id": "GUI_rsLatch",
-        "name": "GUI_rsLatch#1"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 19.0,
           "y": 64.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 9.0,
           "y": 24.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
           "x": 99.0,
           "y": 44.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 99.0,
           "y": 34.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "C"
+          "compName": "GUI_rsLatch#1",
+          "pinName": "_Q"
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "_Q"
         },
-        "path": []
+        "name": "unnamedWire#14"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUI_rsLatch#1",
+          "pinName": "Q"
         },
         "pin2": {
-          "compName": "GUI_rsLatch#0",
-          "pinName": "_R"
+          "compName": "_submodelinterface",
+          "pinName": "Q"
         },
-        "path": []
+        "name": "unnamedWire#13"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUInand3#0",
-          "pinName": "B"
-        },
-        "path": [
-          {
-            "x": 10.0,
-            "y": 55.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D"
-        },
-        "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "B"
+          "compName": "GUI_rsLatch#1",
+          "pinName": "_S"
         },
+        "name": "unnamedWire#9",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUInand3#0",
+          "pinName": "A"
         },
+        "name": "unnamedWire#8",
         "path": [
           {
-            "x": 145.0,
-            "y": 70.0
-          },
-          {
-            "x": 145.0,
-            "y": 85.0
+            "x": 30.0,
+            "y": 35.0
           },
           {
-            "x": 20.0,
-            "y": 85.0
+            "x": 30.0,
+            "y": 45.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUI_rsLatch#0",
+          "pinName": "_Q"
         },
         "pin2": {
-          "compName": "GUI_rsLatch#0",
-          "pinName": "_S"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
+        "name": "unnamedWire#7",
         "path": [
           {
-            "x": 20.0,
-            "y": 15.0
+            "x": 100.0,
+            "y": 25.0
           }
         ]
       },
@@ -208,75 +191,97 @@ mograsim version: 0.1.3
           "compName": "GUInand3#0",
           "pinName": "C"
         },
+        "name": "unnamedWire#6",
         "path": []
       },
       {
         "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
           "compName": "GUI_rsLatch#0",
-          "pinName": "_Q"
+          "pinName": "_R"
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
-        "path": [
-          {
-            "x": 100.0,
-            "y": 25.0
-          }
-        ]
+        "name": "unnamedWire#0",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUInand3#0",
-          "pinName": "A"
+          "compName": "GUI_rsLatch#0",
+          "pinName": "_S"
         },
+        "name": "unnamedWire#5",
         "path": [
           {
-            "x": 30.0,
-            "y": 35.0
-          },
-          {
-            "x": 30.0,
-            "y": 45.0
+            "x": 20.0,
+            "y": 15.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUInand3#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUI_rsLatch#1",
-          "pinName": "_S"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
+        "name": "unnamedWire#10",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUInand3#0",
+          "compName": "GUINandGate#0",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
-        "path": []
+        "name": "unnamedWire#4",
+        "path": [
+          {
+            "x": 145.0,
+            "y": 70.0
+          },
+          {
+            "x": 145.0,
+            "y": 85.0
+          },
+          {
+            "x": 20.0,
+            "y": 85.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "D"
         },
         "pin2": {
-          "compName": "GUI_rsLatch#1",
-          "pinName": "_R"
+          "compName": "GUINandGate#0",
+          "pinName": "B"
         },
+        "name": "unnamedWire#3",
         "path": []
       },
       {
@@ -288,6 +293,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#0",
           "pinName": "A"
         },
+        "name": "unnamedWire#12",
         "path": [
           {
             "x": 100.0,
@@ -297,32 +303,55 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUI_rsLatch#1",
-          "pinName": "Q"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Q"
-        }
+          "compName": "GUInand3#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 55.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUI_rsLatch#1",
-          "pinName": "_Q"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "_Q"
-        }
+          "compName": "GUI_rsLatch#1",
+          "pinName": "_R"
+        },
+        "name": "unnamedWire#11",
+        "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIdff",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUI_rsLatch#1",
+          "subStateID": "q"
+        }
+      }
+    }
   }
 }
\ No newline at end of file
index 69562ce..26c4071 100644 (file)
@@ -40,115 +40,130 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 15.0,
           "y": 27.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "GUI_rsLatch",
+        "name": "GUI_rsLatch#0",
         "pos": {
           "x": 45.0,
           "y": 7.5
-        },
-        "id": "GUI_rsLatch",
-        "name": "GUI_rsLatch#0"
+        }
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 10.0,
           "y": 2.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 34.0,
           "y": 11.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 4.0,
           "y": 36.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D"
+          "compName": "GUI_rsLatch#0",
+          "pinName": "_Q"
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "A"
-        }
+          "compName": "_submodelinterface",
+          "pinName": "_Q"
+        },
+        "name": "unnamedWire#9"
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "E"
+          "compName": "GUI_rsLatch#0",
+          "pinName": "Q"
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "Q"
         },
+        "name": "unnamedWire#8",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "B"
+          "compName": "GUI_rsLatch#0",
+          "pinName": "_R"
         },
+        "name": "unnamedWire#7",
         "path": [
           {
-            "x": 5.0,
-            "y": 17.5
+            "x": 40.0,
+            "y": 37.5
+          },
+          {
+            "x": 40.0,
+            "y": 22.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "B"
+          "compName": "GUI_rsLatch#0",
+          "pinName": "_S"
         },
-        "path": [
-          {
-            "x": 5.0,
-            "y": 42.5
-          }
-        ]
+        "name": "unnamedWire#6",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "E"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
+        "name": "unnamedWire#1",
         "path": []
       },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#0"
+      },
       {
         "pin1": {
           "compName": "WireCrossPoint#1",
@@ -158,6 +173,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#1",
           "pinName": "A"
         },
+        "name": "unnamedWire#5",
         "path": [
           {
             "x": 35.0,
@@ -175,64 +191,72 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUI_rsLatch#0",
-          "pinName": "_S"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
+        "name": "unnamedWire#4",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#1",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUI_rsLatch#0",
-          "pinName": "_R"
+          "compName": "GUINandGate#1",
+          "pinName": "B"
         },
+        "name": "unnamedWire#3",
         "path": [
           {
-            "x": 40.0,
-            "y": 37.5
-          },
-          {
-            "x": 40.0,
-            "y": 22.5
+            "x": 5.0,
+            "y": 42.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUI_rsLatch#0",
-          "pinName": "Q"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Q"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUI_rsLatch#0",
-          "pinName": "_Q"
+          "compName": "GUINandGate#0",
+          "pinName": "B"
         },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "_Q"
-        }
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 17.5
+          }
+        ]
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIdlatch",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUI_rsLatch#0",
+          "subStateID": "q"
+        }
+      }
+    }
   }
 }
\ No newline at end of file
index 29f4ac0..28021df 100644 (file)
@@ -80,135 +80,124 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 14.0,
           "y": 71.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 14.0,
           "y": 46.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 14.0,
           "y": 96.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "GUIdlatch",
+        "name": "GUIdlatch#1",
         "pos": {
           "x": 30.0,
           "y": 32.5
-        },
-        "id": "GUIdlatch",
-        "name": "GUIdlatch#1"
+        }
       },
       {
+        "id": "GUIdlatch",
+        "name": "GUIdlatch#0",
         "pos": {
           "x": 30.0,
           "y": 7.5
-        },
-        "id": "GUIdlatch",
-        "name": "GUIdlatch#0"
+        }
       },
       {
+        "id": "GUIdlatch",
+        "name": "GUIdlatch#3",
         "pos": {
           "x": 30.0,
           "y": 82.5
-        },
-        "id": "GUIdlatch",
-        "name": "GUIdlatch#3"
+        }
       },
       {
+        "id": "GUIdlatch",
+        "name": "GUIdlatch#2",
         "pos": {
           "x": 30.0,
           "y": 57.5
-        },
-        "id": "GUIdlatch",
-        "name": "GUIdlatch#2"
+        }
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "C"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
-        },
-        "path": [
-          {
-            "x": 15.0,
-            "y": 112.5
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUIdlatch#3",
+          "pinName": "Q"
         },
         "pin2": {
-          "compName": "GUIdlatch#3",
-          "pinName": "E"
+          "compName": "_submodelinterface",
+          "pinName": "Q4"
         },
+        "name": "unnamedWire#14",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUIdlatch#2",
+          "pinName": "Q"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "Q3"
         },
+        "name": "unnamedWire#13",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "D3"
         },
         "pin2": {
           "compName": "GUIdlatch#2",
-          "pinName": "E"
+          "pinName": "D"
         },
+        "name": "unnamedWire#9",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "D2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUIdlatch#1",
+          "pinName": "D"
         },
+        "name": "unnamedWire#8",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "D1"
         },
         "pin2": {
-          "compName": "GUIdlatch#1",
-          "pinName": "E"
+          "compName": "GUIdlatch#0",
+          "pinName": "D"
         },
+        "name": "unnamedWire#7",
         "path": []
       },
       {
@@ -220,6 +209,7 @@ mograsim version: 0.1.3
           "compName": "GUIdlatch#0",
           "pinName": "E"
         },
+        "name": "unnamedWire#6",
         "path": [
           {
             "x": 15.0,
@@ -229,35 +219,43 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D1"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdlatch#0",
-          "pinName": "D"
+          "compName": "GUIdlatch#3",
+          "pinName": "E"
         },
+        "name": "unnamedWire#1",
         "path": []
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "D2"
+          "pinName": "C"
         },
         "pin2": {
-          "compName": "GUIdlatch#1",
-          "pinName": "D"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
-        "path": []
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 112.5
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D3"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdlatch#2",
-          "pinName": "D"
+          "compName": "GUIdlatch#1",
+          "pinName": "E"
         },
+        "name": "unnamedWire#5",
         "path": []
       },
       {
@@ -269,17 +267,31 @@ mograsim version: 0.1.3
           "compName": "GUIdlatch#3",
           "pinName": "D"
         },
+        "name": "unnamedWire#10",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIdlatch#0",
-          "pinName": "Q"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Q1"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
+        "pin2": {
+          "compName": "GUIdlatch#2",
+          "pinName": "E"
+        },
+        "name": "unnamedWire#3",
         "path": []
       },
       {
@@ -291,38 +303,93 @@ mograsim version: 0.1.3
           "compName": "_submodelinterface",
           "pinName": "Q2"
         },
+        "name": "unnamedWire#12",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIdlatch#2",
-          "pinName": "Q"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Q3"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
+        "name": "unnamedWire#2",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIdlatch#3",
+          "compName": "GUIdlatch#0",
           "pinName": "Q"
         },
         "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "Q4"
+          "pinName": "Q1"
         },
+        "name": "unnamedWire#11",
         "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIdlatch4",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q1": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch#0",
+          "subStateID": "q"
+        }
+      },
+      "q2": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch#1",
+          "subStateID": "q"
+        }
+      },
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler",
+        "params": {
+          "vectorPartTargets": [
+            "q1",
+            "q2",
+            "q3",
+            "q4"
+          ],
+          "vectorPartLengthes": [
+            1,
+            1,
+            1,
+            1
+          ]
+        }
+      },
+      "q3": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch#2",
+          "subStateID": "q"
+        }
+      },
+      "q4": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch#3",
+          "subStateID": "q"
+        }
+      }
+    }
   }
 }
\ No newline at end of file
index dc4c616..b509eb2 100644 (file)
@@ -48,82 +48,93 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 57.5,
           "y": 40.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "GUIhalfadder",
+        "name": "GUIhalfadder#0",
         "pos": {
           "x": 5.0,
           "y": 40.0
-        },
-        "id": "GUIhalfadder",
-        "name": "GUIhalfadder#0"
+        }
       },
       {
+        "id": "GUIhalfadder",
+        "name": "GUIhalfadder#1",
         "pos": {
           "x": 45.0,
           "y": 7.5
-        },
-        "id": "GUIhalfadder",
-        "name": "GUIhalfadder#1"
+        }
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A"
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUIhalfadder#1",
-          "pinName": "A"
+          "compName": "_submodelinterface",
+          "pinName": "Z"
         },
-        "path": []
+        "name": "unnamedWire#7"
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B"
+          "compName": "GUIhalfadder#1",
+          "pinName": "_Z"
         },
         "pin2": {
-          "compName": "GUIhalfadder#0",
+          "compName": "GUINandGate#0",
           "pinName": "A"
-        }
+        },
+        "name": "unnamedWire#6",
+        "path": [
+          {
+            "x": 82.5,
+            "y": 22.5
+          },
+          {
+            "x": 82.5,
+            "y": 35.0
+          },
+          {
+            "x": 52.5,
+            "y": 35.0
+          },
+          {
+            "x": 52.5,
+            "y": 45.0
+          }
+        ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "C"
+          "pinName": "B"
         },
         "pin2": {
           "compName": "GUIhalfadder#0",
-          "pinName": "B"
-        }
-      },
-      {
-        "pin1": {
-          "compName": "GUIhalfadder#0",
-          "pinName": "Y"
+          "pinName": "A"
         },
-        "pin2": {
-          "compName": "GUIhalfadder#1",
-          "pinName": "B"
-        }
+        "name": "unnamedWire#1"
       },
       {
         "pin1": {
-          "compName": "GUIhalfadder#0",
-          "pinName": "_Z"
+          "compName": "_submodelinterface",
+          "pinName": "A"
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "B"
+          "compName": "GUIhalfadder#1",
+          "pinName": "A"
         },
+        "name": "unnamedWire#0",
         "path": []
       },
       {
@@ -135,54 +146,52 @@ mograsim version: 0.1.3
           "compName": "_submodelinterface",
           "pinName": "Y"
         },
+        "name": "unnamedWire#5",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIhalfadder#1",
+          "compName": "GUIhalfadder#0",
           "pinName": "_Z"
         },
         "pin2": {
           "compName": "GUINandGate#0",
-          "pinName": "A"
+          "pinName": "B"
         },
-        "path": [
-          {
-            "x": 82.5,
-            "y": 22.5
-          },
-          {
-            "x": 82.5,
-            "y": 35.0
-          },
-          {
-            "x": 52.5,
-            "y": 35.0
-          },
-          {
-            "x": 52.5,
-            "y": 45.0
-          }
-        ]
+        "name": "unnamedWire#4",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
+          "compName": "GUIhalfadder#0",
           "pinName": "Y"
         },
         "pin2": {
+          "compName": "GUIhalfadder#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#3"
+      },
+      {
+        "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "Z"
-        }
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "GUIhalfadder#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#2"
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIfulladder",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 761d6ce..8ca9ccd 100644 (file)
@@ -40,140 +40,166 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 40.0,
           "y": 2.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 10.0,
           "y": 15.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#3",
         "pos": {
           "x": 65.0,
           "y": 2.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 4.0,
           "y": 36.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
         "pos": {
           "x": 40.0,
           "y": 27.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 4.0,
           "y": 11.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 34.0,
           "y": 24.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#2",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#9",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 32.5
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUINandGate#1",
-          "pinName": "A"
+          "pinName": "B"
         },
+        "name": "unnamedWire#8",
         "path": [
           {
-            "x": 5.0,
-            "y": 7.5
+            "x": 35.0,
+            "y": 17.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "A"
+          "compName": "_submodelinterface",
+          "pinName": "_Z"
         },
+        "name": "unnamedWire#7",
         "path": [
           {
-            "x": 5.0,
-            "y": 20.0
+            "x": 80.0,
+            "y": 25.0
+          },
+          {
+            "x": 80.0,
+            "y": 37.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B"
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
+        "name": "unnamedWire#6",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "B"
+          "compName": "GUINandGate#1",
+          "pinName": "A"
         },
+        "name": "unnamedWire#1",
         "path": [
           {
             "x": 5.0,
-            "y": 42.5
+            "y": 7.5
           }
         ]
       },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "WireCrossPoint#1",
@@ -183,6 +209,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#0",
           "pinName": "B"
         },
+        "name": "unnamedWire#5",
         "path": [
           {
             "x": 5.0,
@@ -192,84 +219,80 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
+          "compName": "GUINandGate#1",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "_Z"
+          "compName": "GUINandGate#3",
+          "pinName": "A"
         },
+        "name": "unnamedWire#10",
         "path": [
           {
-            "x": 80.0,
-            "y": 25.0
+            "x": 62.5,
+            "y": 12.5
           },
           {
-            "x": 80.0,
-            "y": 37.5
+            "x": 62.5,
+            "y": 7.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#1",
+          "compName": "GUINandGate#2",
           "pinName": "B"
         },
+        "name": "unnamedWire#4",
         "path": [
           {
-            "x": 35.0,
-            "y": 17.5
+            "x": 5.0,
+            "y": 42.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "B"
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "A"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 35.0,
-            "y": 32.5
-          }
-        ]
+        "name": "unnamedWire#3",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#1",
+          "compName": "GUINandGate#3",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#3",
+          "compName": "_submodelinterface",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#12",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
           "pinName": "A"
         },
+        "name": "unnamedWire#2",
         "path": [
           {
-            "x": 62.5,
-            "y": 12.5
-          },
-          {
-            "x": 62.5,
-            "y": 7.5
+            "x": 5.0,
+            "y": 20.0
           }
         ]
       },
@@ -282,6 +305,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#3",
           "pinName": "B"
         },
+        "name": "unnamedWire#11",
         "path": [
           {
             "x": 62.5,
@@ -292,26 +316,16 @@ mograsim version: 0.1.3
             "y": 17.5
           }
         ]
-      },
-      {
-        "pin1": {
-          "compName": "GUINandGate#3",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y"
-        },
-        "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIhalfadder",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 7ce9002..b75d9f1 100644 (file)
@@ -40,92 +40,93 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 35.0,
           "y": 22.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 10.0,
           "y": 7.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#3",
         "pos": {
           "x": 60.0,
           "y": 30.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 4.0,
           "y": 21.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
         "pos": {
           "x": 35.0,
           "y": 47.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 4.0,
           "y": 11.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "S0"
+          "compName": "GUINandGate#2",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#3",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#9"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#0",
+          "compName": "GUINandGate#3",
           "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#8"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUINandGate#2",
+          "pinName": "B"
         },
+        "name": "unnamedWire#7",
         "path": []
       },
       {
@@ -134,97 +135,108 @@ mograsim version: 0.1.3
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "B"
+          "compName": "GUINandGate#2",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#6",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 52.5
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#1",
+          "compName": "GUINandGate#0",
           "pinName": "A"
-        }
+        },
+        "name": "unnamedWire#1",
+        "path": []
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "I0"
+          "pinName": "S0"
         },
         "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "B"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
+        "name": "unnamedWire#0",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I0"
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "A"
+          "compName": "GUINandGate#1",
+          "pinName": "B"
         },
-        "path": [
-          {
-            "x": 5.0,
-            "y": 52.5
-          }
-        ]
+        "name": "unnamedWire#5",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I1"
+          "compName": "GUINandGate#3",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "B"
+          "compName": "_submodelinterface",
+          "pinName": "Y"
         },
-        "path": []
+        "name": "unnamedWire#10"
       },
       {
         "pin1": {
-          "compName": "GUINandGate#1",
+          "compName": "GUINandGate#0",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#3",
+          "compName": "GUINandGate#1",
           "pinName": "A"
-        }
+        },
+        "name": "unnamedWire#4"
       },
       {
         "pin1": {
-          "compName": "GUINandGate#2",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#3",
+          "compName": "GUINandGate#0",
           "pinName": "B"
-        }
+        },
+        "name": "unnamedWire#3",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#3",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y"
-        }
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#2",
+        "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUImux1",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 21e2f21..b9f6612 100644 (file)
@@ -112,357 +112,377 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUImux1",
+        "name": "GUImux1#3",
         "pos": {
           "x": 30.0,
           "y": 112.5
-        },
-        "id": "GUImux1",
-        "name": "GUImux1#3"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 24.0,
           "y": 46.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 24.0,
           "y": 11.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "GUImux1",
+        "name": "GUImux1#0",
         "pos": {
           "x": 30.0,
           "y": 7.5
-        },
-        "id": "GUImux1",
-        "name": "GUImux1#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 24.0,
           "y": 81.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "GUImux1",
+        "name": "GUImux1#2",
         "pos": {
           "x": 30.0,
           "y": 77.5
-        },
-        "id": "GUImux1",
-        "name": "GUImux1#2"
+        }
       },
       {
+        "id": "GUImux1",
+        "name": "GUImux1#1",
         "pos": {
           "x": 30.0,
           "y": 42.5
-        },
-        "id": "GUImux1",
-        "name": "GUImux1#1"
+        }
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "S0"
+          "compName": "GUImux1#2",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "Y3"
         },
-        "path": []
+        "name": "unnamedWire#14"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I1_3"
         },
         "pin2": {
-          "compName": "GUImux1#0",
-          "pinName": "S0"
+          "compName": "GUImux1#2",
+          "pinName": "I1"
         },
-        "path": []
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 187.5
+          },
+          {
+            "x": 20.0,
+            "y": 102.5
+          }
+        ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "I0_1"
+          "pinName": "I0_4"
         },
         "pin2": {
-          "compName": "GUImux1#0",
+          "compName": "GUImux1#3",
           "pinName": "I0"
         },
+        "name": "unnamedWire#16",
         "path": [
           {
             "x": 5.0,
-            "y": 37.5
+            "y": 112.5
           },
           {
             "x": 5.0,
-            "y": 22.5
+            "y": 127.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I1_1"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUImux1#0",
-          "pinName": "I1"
+          "compName": "GUImux1#3",
+          "pinName": "S0"
         },
+        "name": "unnamedWire#15",
         "path": [
           {
-            "x": 10.0,
-            "y": 137.5
-          },
-          {
-            "x": 10.0,
-            "y": 32.5
+            "x": 25.0,
+            "y": 117.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUImux1#0",
+          "compName": "GUImux1#3",
           "pinName": "Y"
         },
         "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "Y1"
+          "pinName": "Y4"
         },
-        "path": []
+        "name": "unnamedWire#18"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I1_4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUImux1#3",
+          "pinName": "I1"
         },
-        "path": []
+        "name": "unnamedWire#17",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 212.5
+          },
+          {
+            "x": 25.0,
+            "y": 137.5
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUImux1#1",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUImux1#1",
-          "pinName": "S0"
+          "compName": "_submodelinterface",
+          "pinName": "Y2"
         },
-        "path": []
+        "name": "unnamedWire#9"
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "I0_2"
+          "pinName": "I1_2"
         },
         "pin2": {
           "compName": "GUImux1#1",
-          "pinName": "I0"
+          "pinName": "I1"
         },
+        "name": "unnamedWire#8",
         "path": [
           {
-            "x": 5.0,
-            "y": 62.5
+            "x": 15.0,
+            "y": 162.5
           },
           {
-            "x": 5.0,
-            "y": 57.5
+            "x": 15.0,
+            "y": 67.5
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "I1_2"
+          "pinName": "I0_2"
         },
         "pin2": {
           "compName": "GUImux1#1",
-          "pinName": "I1"
+          "pinName": "I0"
         },
+        "name": "unnamedWire#7",
         "path": [
           {
-            "x": 15.0,
-            "y": 162.5
+            "x": 5.0,
+            "y": 62.5
           },
           {
-            "x": 15.0,
-            "y": 67.5
+            "x": 5.0,
+            "y": 57.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUImux1#1",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y2"
-        }
+          "compName": "GUImux1#1",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#6",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUImux1#0",
+          "pinName": "S0"
         },
+        "name": "unnamedWire#1",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "S0"
         },
         "pin2": {
-          "compName": "GUImux1#2",
-          "pinName": "S0"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
+        "name": "unnamedWire#0",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I0_3"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUImux1#2",
-          "pinName": "I0"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 5.0,
-            "y": 87.5
-          },
-          {
-            "x": 5.0,
-            "y": 92.5
-          }
-        ]
+        "name": "unnamedWire#5",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I1_3"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUImux1#2",
-          "pinName": "I1"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 20.0,
-            "y": 187.5
-          },
-          {
-            "x": 20.0,
-            "y": 102.5
-          }
-        ]
+        "name": "unnamedWire#10",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUImux1#2",
+          "compName": "GUImux1#0",
           "pinName": "Y"
         },
         "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "Y3"
-        }
+          "pinName": "Y1"
+        },
+        "name": "unnamedWire#4",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I1_1"
         },
         "pin2": {
-          "compName": "GUImux1#3",
-          "pinName": "S0"
+          "compName": "GUImux1#0",
+          "pinName": "I1"
         },
+        "name": "unnamedWire#3",
         "path": [
           {
-            "x": 25.0,
-            "y": 117.5
+            "x": 10.0,
+            "y": 137.5
+          },
+          {
+            "x": 10.0,
+            "y": 32.5
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "I0_4"
+          "pinName": "I0_3"
         },
         "pin2": {
-          "compName": "GUImux1#3",
+          "compName": "GUImux1#2",
           "pinName": "I0"
         },
+        "name": "unnamedWire#12",
         "path": [
           {
             "x": 5.0,
-            "y": 112.5
+            "y": 87.5
           },
           {
             "x": 5.0,
-            "y": 127.5
+            "y": 92.5
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "I1_4"
+          "pinName": "I0_1"
         },
         "pin2": {
-          "compName": "GUImux1#3",
-          "pinName": "I1"
+          "compName": "GUImux1#0",
+          "pinName": "I0"
         },
+        "name": "unnamedWire#2",
         "path": [
           {
-            "x": 25.0,
-            "y": 212.5
+            "x": 5.0,
+            "y": 37.5
           },
           {
-            "x": 25.0,
-            "y": 137.5
+            "x": 5.0,
+            "y": 22.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUImux1#3",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y4"
-        }
+          "compName": "GUImux1#2",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#11",
+        "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUImux1_4",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index b3a6300..1bdc7cc 100644 (file)
@@ -40,52 +40,75 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 35.0,
           "y": 15.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 10.0,
           "y": 15.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
         "pos": {
           "x": 62.5,
           "y": 2.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 31.5,
           "y": 24.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
+          "compName": "GUINandGate#2",
+          "pinName": "Y"
+        },
+        "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "A"
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "A"
-        }
+          "compName": "GUINandGate#2",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#6",
+        "path": [
+          {
+            "x": 60.0,
+            "y": 62.5
+          },
+          {
+            "x": 60.0,
+            "y": 17.5
+          }
+        ]
       },
       {
         "pin1": {
@@ -95,32 +118,38 @@ mograsim version: 0.1.3
         "pin2": {
           "compName": "GUINandGate#0",
           "pinName": "B"
-        }
+        },
+        "name": "unnamedWire#1"
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "A"
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#0",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#0"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#1",
+          "compName": "GUINandGate#2",
           "pinName": "A"
         },
+        "name": "unnamedWire#5",
         "path": [
           {
-            "x": 32.5,
-            "y": 20.0
+            "x": 57.5,
+            "y": 25.0
+          },
+          {
+            "x": 57.5,
+            "y": 7.5
           }
         ]
       },
@@ -133,6 +162,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#1",
           "pinName": "B"
         },
+        "name": "unnamedWire#4",
         "path": [
           {
             "x": 32.5,
@@ -142,63 +172,42 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUINandGate#1",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#2",
+          "compName": "GUINandGate#1",
           "pinName": "A"
         },
+        "name": "unnamedWire#3",
         "path": [
           {
-            "x": 57.5,
-            "y": 25.0
-          },
-          {
-            "x": 57.5,
-            "y": 7.5
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "C"
-        },
-        "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "B"
-        },
-        "path": [
-          {
-            "x": 60.0,
-            "y": 62.5
-          },
-          {
-            "x": 60.0,
-            "y": 17.5
+            "x": 32.5,
+            "y": 20.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#2",
+          "compName": "GUINandGate#0",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
+        "name": "unnamedWire#2",
         "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUInand3",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 7d575c8..0a3b703 100644 (file)
@@ -72,122 +72,131 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 30.0,
           "y": 27.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 30.0,
           "y": 2.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#3",
         "pos": {
           "x": 30.0,
           "y": 77.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 14.0,
           "y": 36.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
         "pos": {
           "x": 30.0,
           "y": 52.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 14.0,
           "y": 11.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
           "x": 14.0,
           "y": 86.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 14.0,
           "y": 61.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A1"
+          "compName": "GUINandGate#2",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "Y3"
         },
+        "name": "unnamedWire#14",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A2"
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "Y2"
         },
+        "name": "unnamedWire#13",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A3"
+          "compName": "GUINandGate#3",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "Y4"
         },
+        "name": "unnamedWire#15",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A4"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "GUINandGate#1",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#9",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 42.5
+          }
+        ]
       },
       {
         "pin1": {
@@ -196,28 +205,30 @@ mograsim version: 0.1.3
         },
         "pin2": {
           "compName": "GUINandGate#0",
-          "pinName": "A"
+          "pinName": "B"
         },
+        "name": "unnamedWire#8",
         "path": [
           {
             "x": 15.0,
-            "y": 7.5
+            "y": 17.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#1",
+          "compName": "GUINandGate#3",
           "pinName": "A"
         },
+        "name": "unnamedWire#7",
         "path": [
           {
             "x": 15.0,
-            "y": 32.5
+            "y": 82.5
           }
         ]
       },
@@ -230,6 +241,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#2",
           "pinName": "A"
         },
+        "name": "unnamedWire#6",
         "path": [
           {
             "x": 15.0,
@@ -239,35 +251,27 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "A2"
         },
         "pin2": {
-          "compName": "GUINandGate#3",
-          "pinName": "A"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 15.0,
-            "y": 82.5
-          }
-        ]
+        "name": "unnamedWire#1",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "A1"
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "B"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 15.0,
-            "y": 17.5
-          }
-        ]
+        "name": "unnamedWire#0",
+        "path": []
       },
       {
         "pin1": {
@@ -276,12 +280,13 @@ mograsim version: 0.1.3
         },
         "pin2": {
           "compName": "GUINandGate#1",
-          "pinName": "B"
+          "pinName": "A"
         },
+        "name": "unnamedWire#5",
         "path": [
           {
             "x": 15.0,
-            "y": 42.5
+            "y": 32.5
           }
         ]
       },
@@ -294,6 +299,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#2",
           "pinName": "B"
         },
+        "name": "unnamedWire#10",
         "path": [
           {
             "x": 15.0,
@@ -303,72 +309,83 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#3",
-          "pinName": "B"
+          "compName": "GUINandGate#0",
+          "pinName": "A"
         },
+        "name": "unnamedWire#4",
         "path": [
           {
             "x": 15.0,
-            "y": 92.5
+            "y": 7.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "A4"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y1"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
+        "name": "unnamedWire#3",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#1",
+          "compName": "GUINandGate#0",
           "pinName": "Y"
         },
         "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "Y2"
+          "pinName": "Y1"
         },
+        "name": "unnamedWire#12",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#2",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "A3"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y3"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
+        "name": "unnamedWire#2",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#3",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y4"
+          "compName": "GUINandGate#3",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 92.5
+          }
+        ]
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUInot4",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index d4bcd57..fca69d6 100644 (file)
@@ -48,265 +48,299 @@ mograsim version: 0.1.3
     "innerScale": 0.2,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 20.0,
           "y": 65.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 20.0,
           "y": 15.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#3",
         "pos": {
           "x": 20.0,
           "y": 165.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#3",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
         "pos": {
           "x": 20.0,
           "y": 115.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 14.0,
           "y": 74.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 14.0,
           "y": 24.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
           "x": 14.0,
           "y": 174.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 14.0,
           "y": 124.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
         "pos": {
           "x": 104.0,
           "y": 149.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
         "pos": {
           "x": 104.0,
           "y": 49.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#4",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#8",
         "pos": {
           "x": 140.0,
           "y": 90.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#8",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#5",
         "pos": {
           "x": 50.0,
           "y": 140.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#5",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#4",
         "pos": {
           "x": 50.0,
           "y": 40.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#4",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#7",
         "pos": {
           "x": 110.0,
           "y": 140.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#7",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#6",
         "pos": {
           "x": 110.0,
           "y": 40.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#6",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A1"
+          "compName": "GUINandGate#2",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#5",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#14"
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A2"
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUINandGate#4",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#13"
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A3"
+          "compName": "GUINandGate#4",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
+        "name": "unnamedWire#16",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A4"
+          "compName": "GUINandGate#3",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "GUINandGate#5",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#15"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
+          "compName": "GUINandGate#6",
           "pinName": "A"
         },
+        "name": "unnamedWire#18",
         "path": [
           {
-            "x": 15.0,
-            "y": 20.0
+            "x": 105.0,
+            "y": 45.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "GUINandGate#5",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "A"
+          "compName": "GUINandGate#6",
+          "pinName": "B"
         },
+        "name": "unnamedWire#19",
         "path": [
           {
-            "x": 15.0,
-            "y": 70.0
+            "x": 105.0,
+            "y": 55.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "A"
+          "compName": "GUINandGate#7",
+          "pinName": "B"
         },
+        "name": "unnamedWire#21",
         "path": [
           {
-            "x": 15.0,
-            "y": 120.0
+            "x": 105.0,
+            "y": 155.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#3",
+          "compName": "GUINandGate#7",
           "pinName": "A"
         },
+        "name": "unnamedWire#20",
         "path": [
           {
-            "x": 15.0,
-            "y": 170.0
+            "x": 105.0,
+            "y": 145.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#7",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#0",
+          "compName": "GUINandGate#8",
           "pinName": "B"
         },
-        "path": [
-          {
-            "x": 15.0,
-            "y": 30.0
-          }
-        ]
+        "name": "unnamedWire#23"
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#6",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUINandGate#8",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#22"
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#8",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#24"
       },
       {
         "pin1": {
@@ -317,6 +351,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#1",
           "pinName": "B"
         },
+        "name": "unnamedWire#9",
         "path": [
           {
             "x": 15.0,
@@ -326,17 +361,18 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#2",
+          "compName": "GUINandGate#0",
           "pinName": "B"
         },
+        "name": "unnamedWire#8",
         "path": [
           {
             "x": 15.0,
-            "y": 130.0
+            "y": 30.0
           }
         ]
       },
@@ -347,179 +383,169 @@ mograsim version: 0.1.3
         },
         "pin2": {
           "compName": "GUINandGate#3",
-          "pinName": "B"
+          "pinName": "A"
         },
+        "name": "unnamedWire#7",
         "path": [
           {
             "x": 15.0,
-            "y": 180.0
+            "y": 170.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "GUINandGate#4",
-          "pinName": "A"
-        }
-      },
-      {
-        "pin1": {
-          "compName": "GUINandGate#1",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#4",
-          "pinName": "B"
-        }
-      },
-      {
-        "pin1": {
           "compName": "GUINandGate#2",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "GUINandGate#5",
           "pinName": "A"
-        }
-      },
-      {
-        "pin1": {
-          "compName": "GUINandGate#3",
-          "pinName": "Y"
         },
-        "pin2": {
-          "compName": "GUINandGate#5",
-          "pinName": "B"
-        }
+        "name": "unnamedWire#6",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 120.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#4",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "A2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
+        "name": "unnamedWire#1",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#5",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "A1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
+        "name": "unnamedWire#0",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#6",
+          "compName": "GUINandGate#1",
           "pinName": "A"
         },
+        "name": "unnamedWire#5",
         "path": [
           {
-            "x": 105.0,
-            "y": 45.0
+            "x": 15.0,
+            "y": 70.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#6",
+          "compName": "GUINandGate#2",
           "pinName": "B"
         },
+        "name": "unnamedWire#10",
         "path": [
           {
-            "x": 105.0,
-            "y": 55.0
+            "x": 15.0,
+            "y": 130.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#7",
+          "compName": "GUINandGate#0",
           "pinName": "A"
         },
+        "name": "unnamedWire#4",
         "path": [
           {
-            "x": 105.0,
-            "y": 145.0
+            "x": 15.0,
+            "y": 20.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "A4"
         },
         "pin2": {
-          "compName": "GUINandGate#7",
-          "pinName": "B"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 105.0,
-            "y": 155.0
-          }
-        ]
+        "name": "unnamedWire#3",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#6",
+          "compName": "GUINandGate#0",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#8",
+          "compName": "GUINandGate#4",
           "pinName": "A"
-        }
+        },
+        "name": "unnamedWire#12"
       },
       {
         "pin1": {
-          "compName": "GUINandGate#7",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "A3"
         },
         "pin2": {
-          "compName": "GUINandGate#8",
-          "pinName": "B"
-        }
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#2",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#8",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y"
-        }
+          "compName": "GUINandGate#3",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 180.0
+          }
+        ]
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIor4",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 86b4413..07a3e1e 100644 (file)
@@ -104,336 +104,201 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 15.0,
           "y": 27.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 15.0,
           "y": 2.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#3",
         "pos": {
           "x": 15.0,
           "y": 77.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#3",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
         "pos": {
           "x": 15.0,
           "y": 52.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#2",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#11",
         "pos": {
           "x": 65.0,
           "y": 77.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#11",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#10",
         "pos": {
           "x": 65.0,
           "y": 52.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#10",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 6.5,
           "y": 36.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 6.5,
           "y": 11.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
           "x": 6.5,
           "y": 86.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 6.5,
           "y": 61.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
         "pos": {
           "x": 6.5,
           "y": 136.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
         "pos": {
           "x": 6.5,
           "y": 111.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#4",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#9",
         "pos": {
           "x": 65.0,
           "y": 27.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#9",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
         "pos": {
           "x": 6.5,
           "y": 186.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#7",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#8",
         "pos": {
           "x": 65.0,
           "y": 2.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#8",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
         "pos": {
           "x": 6.5,
           "y": 161.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#6",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#5",
         "pos": {
           "x": 15.0,
           "y": 127.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#5",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#4",
         "pos": {
           "x": 15.0,
           "y": 102.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#4",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#7",
         "pos": {
           "x": 15.0,
           "y": 177.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#7",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#6",
         "pos": {
           "x": 15.0,
           "y": 152.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#6",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A1"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A2"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A3"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A4"
-        },
-        "pin2": {
           "compName": "WireCrossPoint#3",
           "pinName": ""
         },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B1"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B2"
-        },
         "pin2": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B3"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B4"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#7",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "A"
-        },
-        "path": [
-          {
-            "x": 7.5,
-            "y": 7.5
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "B"
-        },
-        "path": [
-          {
-            "x": 7.5,
-            "y": 17.5
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUINandGate#1",
+          "compName": "GUINandGate#3",
           "pinName": "A"
         },
+        "name": "unnamedWire#14",
         "path": [
           {
             "x": 7.5,
-            "y": 32.5
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "B"
-        },
-        "path": [
-          {
-            "x": 7.5,
-            "y": 42.5
+            "y": 82.5
           }
         ]
       },
@@ -444,44 +309,42 @@ mograsim version: 0.1.3
         },
         "pin2": {
           "compName": "GUINandGate#2",
-          "pinName": "A"
+          "pinName": "B"
         },
+        "name": "unnamedWire#13",
         "path": [
           {
             "x": 7.5,
-            "y": 57.5
+            "y": 67.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUINandGate#11",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "B"
+          "compName": "_submodelinterface",
+          "pinName": "Y4"
         },
-        "path": [
-          {
-            "x": 7.5,
-            "y": 67.5
-          }
-        ]
+        "name": "unnamedWire#35",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#3",
+          "compName": "GUINandGate#4",
           "pinName": "A"
         },
+        "name": "unnamedWire#16",
         "path": [
           {
             "x": 7.5,
-            "y": 82.5
+            "y": 107.5
           }
         ]
       },
@@ -494,6 +357,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#3",
           "pinName": "B"
         },
+        "name": "unnamedWire#15",
         "path": [
           {
             "x": 7.5,
@@ -503,17 +367,18 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#4",
+          "compName": "GUINandGate#5",
           "pinName": "A"
         },
+        "name": "unnamedWire#18",
         "path": [
           {
             "x": 7.5,
-            "y": 107.5
+            "y": 132.5
           }
         ]
       },
@@ -526,6 +391,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#4",
           "pinName": "B"
         },
+        "name": "unnamedWire#17",
         "path": [
           {
             "x": 7.5,
@@ -540,28 +406,30 @@ mograsim version: 0.1.3
         },
         "pin2": {
           "compName": "GUINandGate#5",
-          "pinName": "A"
+          "pinName": "B"
         },
+        "name": "unnamedWire#19",
         "path": [
           {
             "x": 7.5,
-            "y": 132.5
+            "y": 142.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#5",
+          "compName": "GUINandGate#6",
           "pinName": "B"
         },
+        "name": "unnamedWire#21",
         "path": [
           {
             "x": 7.5,
-            "y": 142.5
+            "y": 167.5
           }
         ]
       },
@@ -574,6 +442,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#6",
           "pinName": "A"
         },
+        "name": "unnamedWire#20",
         "path": [
           {
             "x": 7.5,
@@ -583,17 +452,18 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#6",
+          "compName": "GUINandGate#7",
           "pinName": "B"
         },
+        "name": "unnamedWire#23",
         "path": [
           {
             "x": 7.5,
-            "y": 167.5
+            "y": 192.5
           }
         ]
       },
@@ -606,6 +476,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#7",
           "pinName": "A"
         },
+        "name": "unnamedWire#22",
         "path": [
           {
             "x": 7.5,
@@ -615,17 +486,22 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
-          "pinName": ""
+          "compName": "GUINandGate#4",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#7",
+          "compName": "GUINandGate#8",
           "pinName": "B"
         },
+        "name": "unnamedWire#25",
         "path": [
           {
-            "x": 7.5,
-            "y": 192.5
+            "x": 45.0,
+            "y": 112.5
+          },
+          {
+            "x": 45.0,
+            "y": 17.5
           }
         ]
       },
@@ -638,6 +514,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#8",
           "pinName": "A"
         },
+        "name": "unnamedWire#24",
         "path": [
           {
             "x": 40.0,
@@ -651,21 +528,22 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUINandGate#4",
+          "compName": "GUINandGate#5",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#8",
+          "compName": "GUINandGate#9",
           "pinName": "B"
         },
+        "name": "unnamedWire#27",
         "path": [
           {
-            "x": 45.0,
-            "y": 112.5
+            "x": 50.0,
+            "y": 137.5
           },
           {
-            "x": 45.0,
-            "y": 17.5
+            "x": 50.0,
+            "y": 42.5
           }
         ]
       },
@@ -678,6 +556,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#9",
           "pinName": "A"
         },
+        "name": "unnamedWire#26",
         "path": [
           {
             "x": 40.0,
@@ -691,21 +570,22 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUINandGate#5",
+          "compName": "GUINandGate#6",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#9",
+          "compName": "GUINandGate#10",
           "pinName": "B"
         },
+        "name": "unnamedWire#29",
         "path": [
           {
-            "x": 50.0,
-            "y": 137.5
+            "x": 55.0,
+            "y": 162.5
           },
           {
-            "x": 50.0,
-            "y": 42.5
+            "x": 55.0,
+            "y": 67.5
           }
         ]
       },
@@ -718,6 +598,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#10",
           "pinName": "A"
         },
+        "name": "unnamedWire#28",
         "path": [
           {
             "x": 40.0,
@@ -731,24 +612,86 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUINandGate#6",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#10",
+          "compName": "GUINandGate#0",
           "pinName": "B"
         },
+        "name": "unnamedWire#9",
         "path": [
           {
-            "x": 55.0,
-            "y": 162.5
-          },
+            "x": 7.5,
+            "y": 17.5
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#8",
+        "path": [
           {
-            "x": 55.0,
-            "y": 67.5
+            "x": 7.5,
+            "y": 7.5
           }
         ]
       },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "B4"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "B3"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "A2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "A1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "GUINandGate#3",
@@ -758,6 +701,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#11",
           "pinName": "A"
         },
+        "name": "unnamedWire#30",
         "path": [
           {
             "x": 40.0,
@@ -769,6 +713,59 @@ mograsim version: 0.1.3
           }
         ]
       },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "B2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#10",
+        "path": [
+          {
+            "x": 7.5,
+            "y": 32.5
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#8",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y1"
+        },
+        "name": "unnamedWire#32",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "B1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "GUINandGate#7",
@@ -778,6 +775,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#11",
           "pinName": "B"
         },
+        "name": "unnamedWire#31",
         "path": [
           {
             "x": 60.0,
@@ -791,25 +789,32 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUINandGate#8",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "A4"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y1"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
+        "name": "unnamedWire#3",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#9",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y2"
+          "compName": "GUINandGate#2",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#12",
+        "path": [
+          {
+            "x": 7.5,
+            "y": 57.5
+          }
+        ]
       },
       {
         "pin1": {
@@ -820,27 +825,59 @@ mograsim version: 0.1.3
           "compName": "_submodelinterface",
           "pinName": "Y3"
         },
+        "name": "unnamedWire#34",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#11",
+          "compName": "_submodelinterface",
+          "pinName": "A3"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 7.5,
+            "y": 42.5
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#9",
           "pinName": "Y"
         },
         "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "Y4"
+          "pinName": "Y2"
         },
+        "name": "unnamedWire#33",
         "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIor_4",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 3cb8583..325e2a6 100644 (file)
@@ -144,1127 +144,1106 @@ mograsim version: 0.1.3
     "innerScale": 0.1,
     "subComps": [
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#14",
         "pos": {
           "x": 44.0,
           "y": 649.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#14",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#13",
         "pos": {
           "x": 39.0,
           "y": 639.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#13",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#16",
         "pos": {
           "x": 129.0,
           "y": 329.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#16",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#15",
         "pos": {
           "x": 49.0,
           "y": 659.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#15",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#18",
         "pos": {
           "x": 119.0,
           "y": 349.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#18",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#17",
         "pos": {
           "x": 124.0,
           "y": 339.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#17",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#19",
         "pos": {
           "x": 114.0,
           "y": 359.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#19",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 104.0,
           "y": 164.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 109.0,
           "y": 154.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
           "x": 94.0,
           "y": 184.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 99.0,
           "y": 174.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
         "pos": {
           "x": 39.0,
           "y": 649.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
         "pos": {
           "x": 34.0,
           "y": 549.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#4",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
         "pos": {
           "x": 49.0,
           "y": 809.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#7",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
         "pos": {
           "x": 44.0,
           "y": 749.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#6",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
         "pos": {
           "x": 39.0,
           "y": 489.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#9",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
         "pos": {
           "x": 34.0,
           "y": 479.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#8",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
         "pos": {
           "x": 44.0,
           "y": 499.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#10",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#12",
         "pos": {
           "x": 34.0,
           "y": 629.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#12",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#11",
         "pos": {
           "x": 49.0,
           "y": 509.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#11",
         "params": 1
       },
       {
+        "id": "GUIandor414",
+        "name": "GUIandor414#5",
         "pos": {
           "x": 135.0,
           "y": 735.0
-        },
-        "id": "GUIandor414",
-        "name": "GUIandor414#5"
+        }
       },
       {
+        "id": "GUIandor414",
+        "name": "GUIandor414#3",
         "pos": {
           "x": 135.0,
           "y": 435.0
-        },
-        "id": "GUIandor414",
-        "name": "GUIandor414#3"
+        }
       },
       {
+        "id": "GUIandor414",
+        "name": "GUIandor414#4",
         "pos": {
           "x": 135.0,
           "y": 585.0
-        },
-        "id": "GUIandor414",
-        "name": "GUIandor414#4"
+        }
       },
       {
+        "id": "GUIandor414",
+        "name": "GUIandor414#1",
         "pos": {
           "x": 235.0,
           "y": 635.0
-        },
-        "id": "GUIandor414",
-        "name": "GUIandor414#1"
+        }
       },
       {
+        "id": "GUIandor414",
+        "name": "GUIandor414#2",
         "pos": {
           "x": 235.0,
           "y": 785.0
-        },
-        "id": "GUIandor414",
-        "name": "GUIandor414#2"
+        }
       },
       {
+        "id": "GUIandor414",
+        "name": "GUIandor414#0",
         "pos": {
           "x": 235.0,
           "y": 485.0
-        },
-        "id": "GUIandor414",
-        "name": "GUIandor414#0"
+        }
       },
       {
+        "id": "GUIdlatch4",
+        "name": "GUIdlatch4#1",
         "pos": {
           "x": 55.0,
           "y": 475.0
-        },
-        "id": "GUIdlatch4",
-        "name": "GUIdlatch4#1"
+        }
       },
       {
+        "id": "GUIdlatch4",
+        "name": "GUIdlatch4#0",
         "pos": {
           "x": 55.0,
           "y": 325.0
-        },
-        "id": "GUIdlatch4",
-        "name": "GUIdlatch4#0"
+        }
       },
       {
+        "id": "GUIdlatch4",
+        "name": "GUIdlatch4#3",
         "pos": {
           "x": 55.0,
           "y": 775.0
-        },
-        "id": "GUIdlatch4",
-        "name": "GUIdlatch4#3"
+        }
       },
       {
+        "id": "GUIdlatch4",
+        "name": "GUIdlatch4#2",
         "pos": {
           "x": 55.0,
           "y": 625.0
-        },
-        "id": "GUIdlatch4",
-        "name": "GUIdlatch4#2"
+        }
       },
       {
+        "id": "GUIand41",
+        "name": "GUIand41#2",
         "pos": {
           "x": 135.0,
           "y": 325.0
-        },
-        "id": "GUIand41",
-        "name": "GUIand41#2"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#30",
         "pos": {
           "x": 119.0,
           "y": 799.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#30",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#31",
         "pos": {
           "x": 114.0,
           "y": 809.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#31",
         "params": 1
       },
       {
+        "id": "GUIand41",
+        "name": "GUIand41#0",
         "pos": {
           "x": 130.0,
           "y": 150.0
-        },
-        "id": "GUIand41",
-        "name": "GUIand41#0"
+        }
       },
       {
+        "id": "GUIand41",
+        "name": "GUIand41#1",
         "pos": {
           "x": 235.0,
           "y": 375.0
-        },
-        "id": "GUIand41",
-        "name": "GUIand41#1"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#25",
         "pos": {
           "x": 124.0,
           "y": 639.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#25",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#24",
         "pos": {
           "x": 129.0,
           "y": 629.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#24",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#27",
         "pos": {
           "x": 114.0,
           "y": 659.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#27",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#26",
         "pos": {
           "x": 119.0,
           "y": 649.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#26",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#29",
         "pos": {
           "x": 124.0,
           "y": 789.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#29",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#28",
         "pos": {
           "x": 129.0,
           "y": 779.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#28",
         "params": 1
       },
       {
+        "id": "GUIdemux2",
+        "name": "GUIdemux2#1",
         "pos": {
           "x": 55.0,
           "y": 150.0
-        },
-        "id": "GUIdemux2",
-        "name": "GUIdemux2#1"
+        }
       },
       {
+        "id": "GUIdemux2",
+        "name": "GUIdemux2#0",
         "pos": {
           "x": 55.0,
           "y": 45.0
-        },
-        "id": "GUIdemux2",
-        "name": "GUIdemux2#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#21",
         "pos": {
           "x": 124.0,
           "y": 489.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#21",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#20",
         "pos": {
           "x": 129.0,
           "y": 479.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#20",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#23",
         "pos": {
           "x": 114.0,
           "y": 509.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#23",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#22",
         "pos": {
           "x": 119.0,
           "y": 499.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#22",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A0"
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdemux2#0",
-          "pinName": "S0"
+          "compName": "GUIdlatch4#2",
+          "pinName": "D3"
         },
+        "name": "unnamedWire#36",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A1"
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdemux2#0",
-          "pinName": "S1"
+          "compName": "GUIdlatch4#2",
+          "pinName": "D2"
         },
-        "path": [
-          {
-            "x": 10.0,
-            "y": 150.0
-          },
-          {
-            "x": 10.0,
-            "y": 60.0
-          }
-        ]
+        "name": "unnamedWire#35",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B0"
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdemux2#1",
-          "pinName": "S0"
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 5.0,
-            "y": 250.0
-          },
-          {
-            "x": 5.0,
-            "y": 155.0
-          }
-        ]
+        "name": "unnamedWire#38",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B1"
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdemux2#1",
-          "pinName": "S1"
+          "compName": "GUIdlatch4#2",
+          "pinName": "D4"
         },
-        "path": [
-          {
-            "x": 10.0,
-            "y": 350.0
-          },
-          {
-            "x": 10.0,
-            "y": 165.0
-          }
-        ]
+        "name": "unnamedWire#37",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIdemux2#1",
-          "pinName": "Y00"
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
+        "name": "unnamedWire#39",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIdemux2#1",
-          "pinName": "Y01"
+          "compName": "GUIandor414#1",
+          "pinName": "Y2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUIdemux2#1",
-          "pinName": "Y10"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUIdemux2#1",
-          "pinName": "Y11"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIand41#0",
-          "pinName": "A1"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIand41#0",
-          "pinName": "A2"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIand41#0",
-          "pinName": "A3"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIand41#0",
-          "pinName": "A4"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "WE"
-        },
-        "pin2": {
-          "compName": "GUIand41#0",
-          "pinName": "B"
+          "compName": "GUIandor414#2",
+          "pinName": "C2"
         },
+        "name": "unnamedWire#110",
         "path": [
           {
-            "x": 5.0,
-            "y": 450.0
+            "x": 285.0,
+            "y": 650.0
           },
           {
-            "x": 5.0,
-            "y": 300.0
+            "x": 285.0,
+            "y": 740.0
           },
           {
-            "x": 125.0,
-            "y": 300.0
+            "x": 225.0,
+            "y": 740.0
           },
           {
-            "x": 125.0,
-            "y": 195.0
+            "x": 225.0,
+            "y": 800.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#0",
-          "pinName": "Y1"
+          "compName": "GUIandor414#1",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIdlatch4#0",
-          "pinName": "C"
+          "compName": "GUIandor414#2",
+          "pinName": "C3"
         },
+        "name": "unnamedWire#111",
         "path": [
           {
-            "x": 185.0,
-            "y": 155.0
+            "x": 280.0,
+            "y": 660.0
           },
           {
-            "x": 185.0,
-            "y": 250.0
+            "x": 280.0,
+            "y": 735.0
           },
           {
-            "x": 30.0,
-            "y": 250.0
+            "x": 220.0,
+            "y": 735.0
           },
           {
-            "x": 30.0,
-            "y": 370.0
+            "x": 220.0,
+            "y": 810.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#0",
+          "compName": "GUIandor414#2",
           "pinName": "Y2"
         },
         "pin2": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "C"
+          "compName": "_submodelinterface",
+          "pinName": "QA2"
         },
+        "name": "unnamedWire#114",
         "path": [
           {
-            "x": 180.0,
-            "y": 165.0
-          },
-          {
-            "x": 180.0,
-            "y": 245.0
-          },
-          {
-            "x": 25.0,
-            "y": 245.0
+            "x": 305.0,
+            "y": 800.0
           },
           {
-            "x": 25.0,
-            "y": 520.0
+            "x": 305.0,
+            "y": 150.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#0",
+          "compName": "GUIandor414#2",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIdlatch4#2",
-          "pinName": "C"
+          "compName": "_submodelinterface",
+          "pinName": "QA3"
         },
+        "name": "unnamedWire#115",
         "path": [
           {
-            "x": 175.0,
-            "y": 175.0
-          },
-          {
-            "x": 175.0,
-            "y": 240.0
-          },
-          {
-            "x": 20.0,
-            "y": 240.0
+            "x": 310.0,
+            "y": 810.0
           },
           {
-            "x": 20.0,
-            "y": 670.0
+            "x": 310.0,
+            "y": 250.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#0",
+          "compName": "GUIandor414#1",
           "pinName": "Y4"
         },
         "pin2": {
-          "compName": "GUIdlatch4#3",
-          "pinName": "C"
+          "compName": "GUIandor414#2",
+          "pinName": "C4"
         },
+        "name": "unnamedWire#112",
         "path": [
           {
-            "x": 170.0,
-            "y": 185.0
+            "x": 275.0,
+            "y": 670.0
           },
           {
-            "x": 170.0,
-            "y": 235.0
+            "x": 275.0,
+            "y": 730.0
           },
           {
-            "x": 15.0,
-            "y": 235.0
+            "x": 215.0,
+            "y": 730.0
           },
           {
-            "x": 15.0,
+            "x": 215.0,
             "y": 820.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D1"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D2"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D3"
+          "compName": "GUIandor414#2",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "D4"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#7",
-          "pinName": ""
+          "pinName": "QA1"
         },
+        "name": "unnamedWire#113",
         "path": [
           {
-            "x": 50.0,
-            "y": 850.0
+            "x": 300.0,
+            "y": 790.0
+          },
+          {
+            "x": 300.0,
+            "y": 50.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
-          "pinName": ""
+          "compName": "GUIand41#2",
+          "pinName": "Y2"
         },
         "pin2": {
-          "compName": "GUIdlatch4#0",
-          "pinName": "D1"
+          "compName": "GUIandor414#3",
+          "pinName": "C2"
         },
+        "name": "unnamedWire#118",
         "path": [
           {
-            "x": 35.0,
-            "y": 330.0
+            "x": 185.0,
+            "y": 340.0
+          },
+          {
+            "x": 185.0,
+            "y": 425.0
+          },
+          {
+            "x": 125.0,
+            "y": 425.0
+          },
+          {
+            "x": 125.0,
+            "y": 450.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
+          "compName": "GUIand41#2",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIdlatch4#0",
-          "pinName": "D2"
+          "compName": "GUIandor414#3",
+          "pinName": "C3"
         },
+        "name": "unnamedWire#119",
         "path": [
           {
-            "x": 40.0,
-            "y": 340.0
+            "x": 180.0,
+            "y": 350.0
+          },
+          {
+            "x": 180.0,
+            "y": 420.0
+          },
+          {
+            "x": 120.0,
+            "y": 420.0
+          },
+          {
+            "x": 120.0,
+            "y": 460.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdlatch4#0",
-          "pinName": "D3"
+          "compName": "GUIdlatch4#3",
+          "pinName": "D1"
         },
+        "name": "unnamedWire#41",
         "path": [
           {
-            "x": 45.0,
-            "y": 350.0
+            "x": 35.0,
+            "y": 780.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
-          "pinName": ""
+          "compName": "GUIandor414#2",
+          "pinName": "Y4"
         },
         "pin2": {
-          "compName": "GUIdlatch4#0",
-          "pinName": "D4"
+          "compName": "_submodelinterface",
+          "pinName": "QA4"
         },
+        "name": "unnamedWire#116",
         "path": [
           {
-            "x": 50.0,
-            "y": 360.0
+            "x": 315.0,
+            "y": 820.0
+          },
+          {
+            "x": 315.0,
+            "y": 350.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "D1"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "D2"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#10",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "D3"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#11",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "D4"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#8",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
+        "name": "unnamedWire#40",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
+          "compName": "GUIand41#2",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#13",
-          "pinName": ""
+          "compName": "GUIandor414#3",
+          "pinName": "C1"
         },
-        "path": []
+        "name": "unnamedWire#117",
+        "path": [
+          {
+            "x": 190.0,
+            "y": 330.0
+          },
+          {
+            "x": 190.0,
+            "y": 430.0
+          },
+          {
+            "x": 130.0,
+            "y": 430.0
+          },
+          {
+            "x": 130.0,
+            "y": 440.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#14",
-          "pinName": ""
+          "compName": "GUIdlatch4#3",
+          "pinName": "D3"
         },
-        "path": []
+        "name": "unnamedWire#43",
+        "path": [
+          {
+            "x": 45.0,
+            "y": 800.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
-          "pinName": ""
+          "compName": "GUIdlatch4#3",
+          "pinName": "D2"
         },
-        "path": []
+        "name": "unnamedWire#42",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 790.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
-          "pinName": ""
+          "compName": "GUIdlatch4#0",
+          "pinName": "Q1"
         },
         "pin2": {
-          "compName": "GUIdlatch4#2",
-          "pinName": "D1"
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
         },
+        "name": "unnamedWire#45",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdlatch4#2",
-          "pinName": "D2"
+          "compName": "GUIdlatch4#3",
+          "pinName": "D4"
         },
+        "name": "unnamedWire#44",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
-          "pinName": ""
+          "compName": "GUIdlatch4#0",
+          "pinName": "Q3"
         },
         "pin2": {
-          "compName": "GUIdlatch4#2",
-          "pinName": "D3"
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
         },
+        "name": "unnamedWire#47",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
-          "pinName": ""
+          "compName": "GUIdlatch4#0",
+          "pinName": "Q2"
         },
         "pin2": {
-          "compName": "GUIdlatch4#2",
-          "pinName": "D4"
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
         },
+        "name": "unnamedWire#46",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
-          "pinName": ""
+          "compName": "GUIdlatch4#1",
+          "pinName": "Q1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#20",
           "pinName": ""
         },
+        "name": "unnamedWire#49",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
-          "pinName": ""
+          "compName": "GUIdlatch4#0",
+          "pinName": "Q4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
+        "name": "unnamedWire#48",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#31",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
-          "pinName": ""
+          "compName": "GUIandor414#5",
+          "pinName": "A4"
         },
+        "name": "unnamedWire#100",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
-          "pinName": ""
+          "compName": "GUIand41#1",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIdlatch4#3",
-          "pinName": "D1"
+          "compName": "GUIandor414#0",
+          "pinName": "C3"
         },
+        "name": "unnamedWire#103",
         "path": [
           {
-            "x": 35.0,
-            "y": 780.0
+            "x": 280.0,
+            "y": 400.0
+          },
+          {
+            "x": 280.0,
+            "y": 435.0
+          },
+          {
+            "x": 220.0,
+            "y": 435.0
+          },
+          {
+            "x": 220.0,
+            "y": 510.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "GUIand41#1",
+          "pinName": "Y4"
         },
         "pin2": {
-          "compName": "GUIdlatch4#3",
-          "pinName": "D2"
+          "compName": "GUIandor414#0",
+          "pinName": "C4"
         },
+        "name": "unnamedWire#104",
         "path": [
           {
-            "x": 40.0,
-            "y": 790.0
+            "x": 275.0,
+            "y": 410.0
+          },
+          {
+            "x": 275.0,
+            "y": 430.0
+          },
+          {
+            "x": 215.0,
+            "y": 430.0
+          },
+          {
+            "x": 215.0,
+            "y": 520.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "GUIand41#1",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "GUIdlatch4#3",
-          "pinName": "D3"
+          "compName": "GUIandor414#0",
+          "pinName": "C1"
         },
+        "name": "unnamedWire#101",
         "path": [
           {
-            "x": 45.0,
-            "y": 800.0
+            "x": 290.0,
+            "y": 380.0
+          },
+          {
+            "x": 290.0,
+            "y": 445.0
+          },
+          {
+            "x": 230.0,
+            "y": 445.0
+          },
+          {
+            "x": 230.0,
+            "y": 490.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIdlatch4#3",
-          "pinName": "D4"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUIdlatch4#0",
-          "pinName": "Q1"
+          "compName": "GUIand41#1",
+          "pinName": "Y2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#16",
-          "pinName": ""
+          "compName": "GUIandor414#0",
+          "pinName": "C2"
         },
-        "path": []
+        "name": "unnamedWire#102",
+        "path": [
+          {
+            "x": 285.0,
+            "y": 390.0
+          },
+          {
+            "x": 285.0,
+            "y": 440.0
+          },
+          {
+            "x": 225.0,
+            "y": 440.0
+          },
+          {
+            "x": 225.0,
+            "y": 500.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#0",
+          "compName": "GUIdlatch4#1",
           "pinName": "Q2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#17",
+          "compName": "WireCrossPoint#21",
           "pinName": ""
         },
+        "name": "unnamedWire#50",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#0",
-          "pinName": "Q3"
+          "compName": "GUIandor414#0",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#18",
-          "pinName": ""
+          "compName": "GUIandor414#1",
+          "pinName": "C3"
         },
-        "path": []
+        "name": "unnamedWire#107",
+        "path": [
+          {
+            "x": 280.0,
+            "y": 510.0
+          },
+          {
+            "x": 280.0,
+            "y": 585.0
+          },
+          {
+            "x": 220.0,
+            "y": 585.0
+          },
+          {
+            "x": 220.0,
+            "y": 660.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#0",
-          "pinName": "Q4"
+          "compName": "GUIandor414#0",
+          "pinName": "Y4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#19",
-          "pinName": ""
+          "compName": "GUIandor414#1",
+          "pinName": "C4"
         },
-        "path": []
+        "name": "unnamedWire#108",
+        "path": [
+          {
+            "x": 275.0,
+            "y": 520.0
+          },
+          {
+            "x": 275.0,
+            "y": 580.0
+          },
+          {
+            "x": 215.0,
+            "y": 580.0
+          },
+          {
+            "x": 215.0,
+            "y": 670.0
+          }
+        ]
       },
       {
         "pin1": {
           "compName": "GUIdlatch4#1",
-          "pinName": "Q1"
+          "pinName": "Q4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#23",
           "pinName": ""
         },
+        "name": "unnamedWire#52",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "Q2"
+          "compName": "GUIandor414#0",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#21",
-          "pinName": ""
+          "compName": "GUIandor414#1",
+          "pinName": "C1"
         },
-        "path": []
+        "name": "unnamedWire#105",
+        "path": [
+          {
+            "x": 290.0,
+            "y": 490.0
+          },
+          {
+            "x": 290.0,
+            "y": 595.0
+          },
+          {
+            "x": 230.0,
+            "y": 595.0
+          },
+          {
+            "x": 230.0,
+            "y": 640.0
+          }
+        ]
       },
       {
         "pin1": {
@@ -1275,29 +1254,37 @@ mograsim version: 0.1.3
           "compName": "WireCrossPoint#22",
           "pinName": ""
         },
+        "name": "unnamedWire#51",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "Q4"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#23",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUIdlatch4#2",
-          "pinName": "Q1"
+          "compName": "GUIandor414#0",
+          "pinName": "Y2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#24",
-          "pinName": ""
+          "compName": "GUIandor414#1",
+          "pinName": "C2"
         },
-        "path": []
+        "name": "unnamedWire#106",
+        "path": [
+          {
+            "x": 285.0,
+            "y": 500.0
+          },
+          {
+            "x": 285.0,
+            "y": 590.0
+          },
+          {
+            "x": 225.0,
+            "y": 590.0
+          },
+          {
+            "x": 225.0,
+            "y": 650.0
+          }
+        ]
       },
       {
         "pin1": {
@@ -1308,17 +1295,19 @@ mograsim version: 0.1.3
           "compName": "WireCrossPoint#25",
           "pinName": ""
         },
+        "name": "unnamedWire#54",
         "path": []
       },
       {
         "pin1": {
           "compName": "GUIdlatch4#2",
-          "pinName": "Q3"
+          "pinName": "Q1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#26",
+          "compName": "WireCrossPoint#24",
           "pinName": ""
         },
+        "name": "unnamedWire#53",
         "path": []
       },
       {
@@ -1330,369 +1319,438 @@ mograsim version: 0.1.3
           "compName": "WireCrossPoint#27",
           "pinName": ""
         },
+        "name": "unnamedWire#56",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#3",
-          "pinName": "Q1"
+          "compName": "GUIandor414#1",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#28",
-          "pinName": ""
+          "compName": "GUIandor414#2",
+          "pinName": "C1"
         },
-        "path": []
+        "name": "unnamedWire#109",
+        "path": [
+          {
+            "x": 290.0,
+            "y": 640.0
+          },
+          {
+            "x": 290.0,
+            "y": 745.0
+          },
+          {
+            "x": 230.0,
+            "y": 745.0
+          },
+          {
+            "x": 230.0,
+            "y": 790.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#3",
-          "pinName": "Q2"
+          "compName": "GUIdlatch4#2",
+          "pinName": "Q3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#29",
+          "compName": "WireCrossPoint#26",
           "pinName": ""
         },
+        "name": "unnamedWire#55",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#3",
-          "pinName": "Q3"
+          "compName": "GUIand41#0",
+          "pinName": "Y2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#30",
-          "pinName": ""
+          "compName": "GUIdlatch4#1",
+          "pinName": "C"
         },
-        "path": []
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 180.0,
+            "y": 165.0
+          },
+          {
+            "x": 180.0,
+            "y": 245.0
+          },
+          {
+            "x": 25.0,
+            "y": 245.0
+          },
+          {
+            "x": 25.0,
+            "y": 520.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#3",
-          "pinName": "Q4"
+          "compName": "GUIand41#0",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#31",
-          "pinName": ""
+          "compName": "GUIdlatch4#0",
+          "pinName": "C"
         },
-        "path": []
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 185.0,
+            "y": 155.0
+          },
+          {
+            "x": 185.0,
+            "y": 250.0
+          },
+          {
+            "x": 30.0,
+            "y": 250.0
+          },
+          {
+            "x": 30.0,
+            "y": 370.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUIdemux2#0",
-          "pinName": "Y00"
+          "compName": "GUIand41#0",
+          "pinName": "Y4"
         },
         "pin2": {
-          "compName": "GUIand41#1",
-          "pinName": "B"
+          "compName": "GUIdlatch4#3",
+          "pinName": "C"
         },
+        "name": "unnamedWire#16",
         "path": [
           {
-            "x": 210.0,
-            "y": 50.0
+            "x": 170.0,
+            "y": 185.0
           },
           {
-            "x": 210.0,
-            "y": 420.0
+            "x": 170.0,
+            "y": 235.0
+          },
+          {
+            "x": 15.0,
+            "y": 235.0
+          },
+          {
+            "x": 15.0,
+            "y": 820.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIdemux2#0",
-          "pinName": "Y01"
+          "compName": "GUIand41#0",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "B"
+          "compName": "GUIdlatch4#2",
+          "pinName": "C"
         },
+        "name": "unnamedWire#15",
         "path": [
           {
-            "x": 205.0,
-            "y": 60.0
+            "x": 175.0,
+            "y": 175.0
           },
           {
-            "x": 205.0,
-            "y": 570.0
+            "x": 175.0,
+            "y": 240.0
+          },
+          {
+            "x": 20.0,
+            "y": 240.0
+          },
+          {
+            "x": 20.0,
+            "y": 670.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIdemux2#0",
-          "pinName": "Y10"
+          "compName": "_submodelinterface",
+          "pinName": "D2"
         },
         "pin2": {
-          "compName": "GUIandor414#1",
-          "pinName": "B"
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D3"
         },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdlatch4#0",
+          "pinName": "D1"
+        },
+        "name": "unnamedWire#21",
         "path": [
           {
-            "x": 200.0,
-            "y": 70.0
-          },
-          {
-            "x": 200.0,
-            "y": 720.0
+            "x": 35.0,
+            "y": 330.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIdemux2#0",
-          "pinName": "Y11"
+          "compName": "_submodelinterface",
+          "pinName": "D4"
         },
         "pin2": {
-          "compName": "GUIandor414#2",
-          "pinName": "B"
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
         },
+        "name": "unnamedWire#20",
         "path": [
           {
-            "x": 195.0,
-            "y": 80.0
-          },
-          {
-            "x": 195.0,
-            "y": 870.0
+            "x": 50.0,
+            "y": 850.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand41#2",
-          "pinName": "B"
+          "compName": "GUIdlatch4#0",
+          "pinName": "D3"
         },
+        "name": "unnamedWire#23",
         "path": [
           {
-            "x": 110.0,
-            "y": 370.0
+            "x": 45.0,
+            "y": 350.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#3",
-          "pinName": "B"
+          "compName": "GUIdlatch4#0",
+          "pinName": "D2"
         },
+        "name": "unnamedWire#22",
         "path": [
           {
-            "x": 105.0,
-            "y": 520.0
+            "x": 40.0,
+            "y": 340.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
-        "pin2": {
-          "compName": "GUIandor414#4",
-          "pinName": "B"
+        "pin2": {
+          "compName": "GUIdlatch4#1",
+          "pinName": "D1"
         },
-        "path": [
-          {
-            "x": 100.0,
-            "y": 670.0
-          }
-        ]
+        "name": "unnamedWire#25",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#5",
-          "pinName": "B"
+          "compName": "GUIdlatch4#0",
+          "pinName": "D4"
         },
+        "name": "unnamedWire#24",
         "path": [
           {
-            "x": 95.0,
-            "y": 820.0
+            "x": 50.0,
+            "y": 360.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#16",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand41#1",
-          "pinName": "A1"
+          "compName": "GUIdlatch4#1",
+          "pinName": "D3"
         },
-        "path": [
-          {
-            "x": 130.0,
-            "y": 380.0
-          }
-        ]
+        "name": "unnamedWire#27",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#17",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand41#1",
-          "pinName": "A2"
+          "compName": "GUIdlatch4#1",
+          "pinName": "D2"
         },
-        "path": [
-          {
-            "x": 125.0,
-            "y": 390.0
-          }
-        ]
+        "name": "unnamedWire#26",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand41#1",
-          "pinName": "A3"
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 120.0,
-            "y": 400.0
-          }
-        ]
+        "name": "unnamedWire#29",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand41#1",
-          "pinName": "A4"
+          "compName": "GUIdlatch4#1",
+          "pinName": "D4"
         },
-        "path": [
-          {
-            "x": 115.0,
-            "y": 410.0
-          }
-        ]
+        "name": "unnamedWire#28",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "A1"
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 130.0,
-            "y": 530.0
-          }
-        ]
+        "name": "unnamedWire#30",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#21",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "A2"
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 125.0,
-            "y": 540.0
-          }
-        ]
+        "name": "unnamedWire#32",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#22",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "A3"
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 120.0,
-            "y": 550.0
-          }
-        ]
+        "name": "unnamedWire#31",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#23",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "A4"
+          "compName": "GUIdlatch4#2",
+          "pinName": "D1"
         },
-        "path": [
-          {
-            "x": 115.0,
-            "y": 560.0
-          }
-        ]
+        "name": "unnamedWire#34",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#24",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#1",
-          "pinName": "A1"
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 130.0,
-            "y": 680.0
-          }
-        ]
+        "name": "unnamedWire#33",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#25",
+          "compName": "WireCrossPoint#26",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIandor414#1",
-          "pinName": "A2"
+          "pinName": "A3"
         },
+        "name": "unnamedWire#79",
         "path": [
           {
-            "x": 125.0,
-            "y": 690.0
+            "x": 120.0,
+            "y": 700.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#26",
+          "compName": "WireCrossPoint#28",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#1",
-          "pinName": "A3"
+          "compName": "GUIandor414#2",
+          "pinName": "A1"
         },
+        "name": "unnamedWire#81",
         "path": [
           {
-            "x": 120.0,
-            "y": 700.0
+            "x": 130.0,
+            "y": 830.0
           }
         ]
       },
@@ -1705,6 +1763,7 @@ mograsim version: 0.1.3
           "compName": "GUIandor414#1",
           "pinName": "A4"
         },
+        "name": "unnamedWire#80",
         "path": [
           {
             "x": 115.0,
@@ -1714,17 +1773,18 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#28",
+          "compName": "WireCrossPoint#30",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIandor414#2",
-          "pinName": "A1"
+          "pinName": "A3"
         },
+        "name": "unnamedWire#83",
         "path": [
           {
-            "x": 130.0,
-            "y": 830.0
+            "x": 120.0,
+            "y": 850.0
           }
         ]
       },
@@ -1737,6 +1797,7 @@ mograsim version: 0.1.3
           "compName": "GUIandor414#2",
           "pinName": "A2"
         },
+        "name": "unnamedWire#82",
         "path": [
           {
             "x": 125.0,
@@ -1746,19 +1807,15 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#30",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#2",
-          "pinName": "A3"
+          "compName": "GUIand41#2",
+          "pinName": "A1"
         },
-        "path": [
-          {
-            "x": 120.0,
-            "y": 850.0
-          }
-        ]
+        "name": "unnamedWire#85",
+        "path": []
       },
       {
         "pin1": {
@@ -1769,6 +1826,7 @@ mograsim version: 0.1.3
           "compName": "GUIandor414#2",
           "pinName": "A4"
         },
+        "name": "unnamedWire#84",
         "path": [
           {
             "x": 115.0,
@@ -1778,13 +1836,14 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#16",
+          "compName": "WireCrossPoint#18",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIand41#2",
-          "pinName": "A1"
+          "pinName": "A3"
         },
+        "name": "unnamedWire#87",
         "path": []
       },
       {
@@ -1796,17 +1855,19 @@ mograsim version: 0.1.3
           "compName": "GUIand41#2",
           "pinName": "A2"
         },
+        "name": "unnamedWire#86",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#20",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand41#2",
-          "pinName": "A3"
+          "compName": "GUIandor414#3",
+          "pinName": "A1"
         },
+        "name": "unnamedWire#89",
         "path": []
       },
       {
@@ -1818,50 +1879,136 @@ mograsim version: 0.1.3
           "compName": "GUIand41#2",
           "pinName": "A4"
         },
+        "name": "unnamedWire#88",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#3",
+          "compName": "GUIand41#0",
+          "pinName": "A2"
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIand41#0",
           "pinName": "A1"
         },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdemux2#1",
+          "pinName": "Y11"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdemux2#1",
+          "pinName": "Y10"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#21",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIandor414#3",
+          "pinName": "A2"
+        },
+        "name": "unnamedWire#90",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIandor414#3",
+          "pinName": "A4"
+        },
+        "name": "unnamedWire#92",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIandor414#3",
+          "pinName": "A3"
+        },
+        "name": "unnamedWire#91",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#21",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "A1"
         },
         "pin2": {
-          "compName": "GUIandor414#3",
-          "pinName": "A2"
+          "compName": "GUIdemux2#0",
+          "pinName": "S1"
         },
-        "path": []
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 150.0
+          },
+          {
+            "x": 10.0,
+            "y": 60.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#22",
+          "compName": "WireCrossPoint#25",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#3",
-          "pinName": "A3"
+          "compName": "GUIandor414#4",
+          "pinName": "A2"
         },
+        "name": "unnamedWire#94",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#23",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "A0"
         },
         "pin2": {
-          "compName": "GUIandor414#3",
-          "pinName": "A4"
+          "compName": "GUIdemux2#0",
+          "pinName": "S0"
         },
+        "name": "unnamedWire#0",
         "path": []
       },
       {
@@ -1873,17 +2020,19 @@ mograsim version: 0.1.3
           "compName": "GUIandor414#4",
           "pinName": "A1"
         },
+        "name": "unnamedWire#93",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#25",
+          "compName": "WireCrossPoint#27",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIandor414#4",
-          "pinName": "A2"
+          "pinName": "A4"
         },
+        "name": "unnamedWire#96",
         "path": []
       },
       {
@@ -1895,28 +2044,31 @@ mograsim version: 0.1.3
           "compName": "GUIandor414#4",
           "pinName": "A3"
         },
+        "name": "unnamedWire#95",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#27",
-          "pinName": ""
+          "compName": "GUIdemux2#1",
+          "pinName": "Y01"
         },
         "pin2": {
-          "compName": "GUIandor414#4",
-          "pinName": "A4"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
+        "name": "unnamedWire#5",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#28",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#5",
-          "pinName": "A1"
+          "compName": "GUIand41#0",
+          "pinName": "A3"
         },
+        "name": "unnamedWire#10",
         "path": []
       },
       {
@@ -1928,527 +2080,487 @@ mograsim version: 0.1.3
           "compName": "GUIandor414#5",
           "pinName": "A2"
         },
+        "name": "unnamedWire#98",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#30",
-          "pinName": ""
+          "compName": "GUIdemux2#1",
+          "pinName": "Y00"
         },
         "pin2": {
-          "compName": "GUIandor414#5",
-          "pinName": "A3"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
+        "name": "unnamedWire#4",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#31",
+          "compName": "WireCrossPoint#28",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIandor414#5",
-          "pinName": "A4"
+          "pinName": "A1"
         },
+        "name": "unnamedWire#97",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIand41#1",
-          "pinName": "Y1"
+          "compName": "_submodelinterface",
+          "pinName": "B1"
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "C1"
+          "compName": "GUIdemux2#1",
+          "pinName": "S1"
         },
+        "name": "unnamedWire#3",
         "path": [
           {
-            "x": 290.0,
-            "y": 380.0
-          },
-          {
-            "x": 290.0,
-            "y": 445.0
-          },
-          {
-            "x": 230.0,
-            "y": 445.0
+            "x": 10.0,
+            "y": 350.0
           },
           {
-            "x": 230.0,
-            "y": 490.0
+            "x": 10.0,
+            "y": 165.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#1",
-          "pinName": "Y2"
+          "compName": "_submodelinterface",
+          "pinName": "WE"
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "C2"
+          "compName": "GUIand41#0",
+          "pinName": "B"
         },
+        "name": "unnamedWire#12",
         "path": [
           {
-            "x": 285.0,
-            "y": 390.0
+            "x": 5.0,
+            "y": 450.0
           },
           {
-            "x": 285.0,
-            "y": 440.0
+            "x": 5.0,
+            "y": 300.0
           },
           {
-            "x": 225.0,
-            "y": 440.0
+            "x": 125.0,
+            "y": 300.0
           },
           {
-            "x": 225.0,
-            "y": 500.0
+            "x": 125.0,
+            "y": 195.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#1",
-          "pinName": "Y3"
+          "compName": "_submodelinterface",
+          "pinName": "B0"
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "C3"
+          "compName": "GUIdemux2#1",
+          "pinName": "S0"
         },
+        "name": "unnamedWire#2",
         "path": [
           {
-            "x": 280.0,
-            "y": 400.0
-          },
-          {
-            "x": 280.0,
-            "y": 435.0
-          },
-          {
-            "x": 220.0,
-            "y": 435.0
+            "x": 5.0,
+            "y": 250.0
           },
           {
-            "x": 220.0,
-            "y": 510.0
+            "x": 5.0,
+            "y": 155.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#1",
-          "pinName": "Y4"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "C4"
+          "compName": "GUIand41#0",
+          "pinName": "A4"
         },
-        "path": [
-          {
-            "x": 275.0,
-            "y": 410.0
-          },
-          {
-            "x": 275.0,
-            "y": 430.0
-          },
-          {
-            "x": 215.0,
-            "y": 430.0
-          },
-          {
-            "x": 215.0,
-            "y": 520.0
-          }
-        ]
+        "name": "unnamedWire#11",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIandor414#0",
-          "pinName": "Y1"
+          "compName": "WireCrossPoint#30",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#1",
-          "pinName": "C1"
+          "compName": "GUIandor414#5",
+          "pinName": "A3"
         },
-        "path": [
-          {
-            "x": 290.0,
-            "y": 490.0
-          },
-          {
-            "x": 290.0,
-            "y": 595.0
-          },
-          {
-            "x": 230.0,
-            "y": 595.0
-          },
-          {
-            "x": 230.0,
-            "y": 640.0
-          }
-        ]
+        "name": "unnamedWire#99",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIandor414#0",
-          "pinName": "Y2"
+          "compName": "GUIdlatch4#3",
+          "pinName": "Q2"
         },
         "pin2": {
-          "compName": "GUIandor414#1",
-          "pinName": "C2"
+          "compName": "WireCrossPoint#29",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 285.0,
-            "y": 500.0
-          },
-          {
-            "x": 285.0,
-            "y": 590.0
-          },
-          {
-            "x": 225.0,
-            "y": 590.0
-          },
-          {
-            "x": 225.0,
-            "y": 650.0
-          }
-        ]
+        "name": "unnamedWire#58",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIandor414#0",
-          "pinName": "Y3"
+          "compName": "GUIdlatch4#3",
+          "pinName": "Q1"
         },
         "pin2": {
-          "compName": "GUIandor414#1",
-          "pinName": "C3"
+          "compName": "WireCrossPoint#28",
+          "pinName": ""
         },
+        "name": "unnamedWire#57",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdlatch4#3",
+          "pinName": "Q3"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#30",
+          "pinName": ""
+        },
+        "name": "unnamedWire#59",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIandor414#5",
+          "pinName": "Y4"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "QB4"
+        },
+        "name": "unnamedWire#132",
         "path": [
           {
-            "x": 280.0,
-            "y": 510.0
+            "x": 175.0,
+            "y": 770.0
           },
           {
-            "x": 280.0,
-            "y": 585.0
+            "x": 175.0,
+            "y": 895.0
           },
           {
-            "x": 220.0,
-            "y": 585.0
+            "x": 340.0,
+            "y": 895.0
           },
           {
-            "x": 220.0,
-            "y": 660.0
+            "x": 340.0,
+            "y": 750.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#0",
-          "pinName": "Y4"
+          "compName": "GUIandor414#5",
+          "pinName": "Y2"
         },
         "pin2": {
-          "compName": "GUIandor414#1",
-          "pinName": "C4"
+          "compName": "_submodelinterface",
+          "pinName": "QB2"
         },
+        "name": "unnamedWire#130",
         "path": [
           {
-            "x": 275.0,
-            "y": 520.0
+            "x": 185.0,
+            "y": 750.0
           },
           {
-            "x": 275.0,
-            "y": 580.0
+            "x": 185.0,
+            "y": 885.0
           },
           {
-            "x": 215.0,
-            "y": 580.0
+            "x": 330.0,
+            "y": 885.0
           },
           {
-            "x": 215.0,
-            "y": 670.0
+            "x": 330.0,
+            "y": 550.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#1",
-          "pinName": "Y1"
+          "compName": "GUIandor414#5",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIandor414#2",
-          "pinName": "C1"
+          "compName": "_submodelinterface",
+          "pinName": "QB3"
         },
+        "name": "unnamedWire#131",
         "path": [
           {
-            "x": 290.0,
-            "y": 640.0
+            "x": 180.0,
+            "y": 760.0
           },
           {
-            "x": 290.0,
-            "y": 745.0
+            "x": 180.0,
+            "y": 890.0
           },
           {
-            "x": 230.0,
-            "y": 745.0
+            "x": 335.0,
+            "y": 890.0
           },
           {
-            "x": 230.0,
-            "y": 790.0
+            "x": 335.0,
+            "y": 650.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#1",
-          "pinName": "Y2"
+          "compName": "GUIdemux2#0",
+          "pinName": "Y00"
         },
         "pin2": {
-          "compName": "GUIandor414#2",
-          "pinName": "C2"
+          "compName": "GUIand41#1",
+          "pinName": "B"
         },
+        "name": "unnamedWire#61",
         "path": [
           {
-            "x": 285.0,
-            "y": 650.0
-          },
-          {
-            "x": 285.0,
-            "y": 740.0
-          },
-          {
-            "x": 225.0,
-            "y": 740.0
+            "x": 210.0,
+            "y": 50.0
           },
           {
-            "x": 225.0,
-            "y": 800.0
+            "x": 210.0,
+            "y": 420.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#1",
-          "pinName": "Y3"
+          "compName": "GUIdlatch4#3",
+          "pinName": "Q4"
         },
         "pin2": {
-          "compName": "GUIandor414#2",
-          "pinName": "C3"
+          "compName": "WireCrossPoint#31",
+          "pinName": ""
+        },
+        "name": "unnamedWire#60",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdemux2#0",
+          "pinName": "Y10"
+        },
+        "pin2": {
+          "compName": "GUIandor414#1",
+          "pinName": "B"
         },
+        "name": "unnamedWire#63",
         "path": [
           {
-            "x": 280.0,
-            "y": 660.0
-          },
-          {
-            "x": 280.0,
-            "y": 735.0
-          },
-          {
-            "x": 220.0,
-            "y": 735.0
+            "x": 200.0,
+            "y": 70.0
           },
           {
-            "x": 220.0,
-            "y": 810.0
+            "x": 200.0,
+            "y": 720.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#1",
-          "pinName": "Y4"
+          "compName": "GUIdemux2#0",
+          "pinName": "Y01"
         },
         "pin2": {
-          "compName": "GUIandor414#2",
-          "pinName": "C4"
+          "compName": "GUIandor414#0",
+          "pinName": "B"
         },
+        "name": "unnamedWire#62",
         "path": [
           {
-            "x": 275.0,
-            "y": 670.0
-          },
-          {
-            "x": 275.0,
-            "y": 730.0
-          },
-          {
-            "x": 215.0,
-            "y": 730.0
+            "x": 205.0,
+            "y": 60.0
           },
           {
-            "x": 215.0,
-            "y": 820.0
+            "x": 205.0,
+            "y": 570.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#2",
-          "pinName": "Y1"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "QA1"
+          "compName": "GUIand41#2",
+          "pinName": "B"
         },
+        "name": "unnamedWire#65",
         "path": [
           {
-            "x": 300.0,
-            "y": 790.0
-          },
-          {
-            "x": 300.0,
-            "y": 50.0
+            "x": 110.0,
+            "y": 370.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#2",
-          "pinName": "Y2"
+          "compName": "GUIdemux2#0",
+          "pinName": "Y11"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "QA2"
+          "compName": "GUIandor414#2",
+          "pinName": "B"
         },
+        "name": "unnamedWire#64",
         "path": [
           {
-            "x": 305.0,
-            "y": 800.0
+            "x": 195.0,
+            "y": 80.0
           },
           {
-            "x": 305.0,
-            "y": 150.0
+            "x": 195.0,
+            "y": 870.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#2",
-          "pinName": "Y3"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "QA3"
+          "compName": "GUIandor414#4",
+          "pinName": "B"
         },
+        "name": "unnamedWire#67",
         "path": [
           {
-            "x": 310.0,
-            "y": 810.0
-          },
-          {
-            "x": 310.0,
-            "y": 250.0
+            "x": 100.0,
+            "y": 670.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#2",
-          "pinName": "Y4"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "QA4"
+          "compName": "GUIandor414#3",
+          "pinName": "B"
         },
+        "name": "unnamedWire#66",
         "path": [
           {
-            "x": 315.0,
-            "y": 820.0
-          },
-          {
-            "x": 315.0,
-            "y": 350.0
+            "x": 105.0,
+            "y": 520.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#2",
-          "pinName": "Y1"
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#3",
-          "pinName": "C1"
+          "compName": "GUIand41#1",
+          "pinName": "A1"
         },
+        "name": "unnamedWire#69",
         "path": [
-          {
-            "x": 190.0,
-            "y": 330.0
-          },
-          {
-            "x": 190.0,
-            "y": 430.0
-          },
-          {
-            "x": 130.0,
-            "y": 430.0
-          },
           {
             "x": 130.0,
-            "y": 440.0
+            "y": 380.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#2",
-          "pinName": "Y2"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
         "pin2": {
+          "compName": "GUIandor414#5",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#68",
+        "path": [
+          {
+            "x": 95.0,
+            "y": 820.0
+          }
+        ]
+      },
+      {
+        "pin1": {
           "compName": "GUIandor414#3",
-          "pinName": "C2"
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "GUIandor414#4",
+          "pinName": "C1"
         },
+        "name": "unnamedWire#121",
         "path": [
           {
-            "x": 185.0,
-            "y": 340.0
+            "x": 190.0,
+            "y": 440.0
           },
           {
-            "x": 185.0,
-            "y": 425.0
+            "x": 190.0,
+            "y": 580.0
           },
           {
-            "x": 125.0,
-            "y": 425.0
+            "x": 130.0,
+            "y": 580.0
           },
           {
-            "x": 125.0,
-            "y": 450.0
+            "x": 130.0,
+            "y": 590.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#2",
-          "pinName": "Y3"
+          "compName": "GUIandor414#3",
+          "pinName": "Y2"
         },
         "pin2": {
-          "compName": "GUIandor414#3",
-          "pinName": "C3"
+          "compName": "GUIandor414#4",
+          "pinName": "C2"
         },
+        "name": "unnamedWire#122",
         "path": [
           {
-            "x": 180.0,
-            "y": 350.0
+            "x": 185.0,
+            "y": 450.0
           },
           {
-            "x": 180.0,
-            "y": 420.0
+            "x": 185.0,
+            "y": 575.0
           },
           {
-            "x": 120.0,
-            "y": 420.0
+            "x": 125.0,
+            "y": 575.0
           },
           {
-            "x": 120.0,
-            "y": 460.0
+            "x": 125.0,
+            "y": 600.0
           }
         ]
       },
@@ -2461,6 +2573,7 @@ mograsim version: 0.1.3
           "compName": "GUIandor414#3",
           "pinName": "C4"
         },
+        "name": "unnamedWire#120",
         "path": [
           {
             "x": 175.0,
@@ -2482,57 +2595,76 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIandor414#3",
+          "compName": "GUIandor414#4",
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "GUIandor414#4",
+          "compName": "GUIandor414#5",
           "pinName": "C1"
         },
+        "name": "unnamedWire#125",
         "path": [
           {
             "x": 190.0,
-            "y": 440.0
+            "y": 590.0
           },
           {
             "x": 190.0,
-            "y": 580.0
+            "y": 730.0
           },
           {
             "x": 130.0,
-            "y": 580.0
+            "y": 730.0
           },
           {
             "x": 130.0,
-            "y": 590.0
+            "y": 740.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#3",
+          "compName": "GUIandor414#4",
           "pinName": "Y2"
         },
         "pin2": {
-          "compName": "GUIandor414#4",
+          "compName": "GUIandor414#5",
           "pinName": "C2"
         },
+        "name": "unnamedWire#126",
         "path": [
           {
             "x": 185.0,
-            "y": 450.0
+            "y": 600.0
           },
           {
             "x": 185.0,
-            "y": 575.0
+            "y": 725.0
           },
           {
             "x": 125.0,
-            "y": 575.0
+            "y": 725.0
           },
           {
             "x": 125.0,
-            "y": 600.0
+            "y": 750.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIand41#1",
+          "pinName": "A2"
+        },
+        "name": "unnamedWire#70",
+        "path": [
+          {
+            "x": 125.0,
+            "y": 390.0
           }
         ]
       },
@@ -2545,6 +2677,7 @@ mograsim version: 0.1.3
           "compName": "GUIandor414#4",
           "pinName": "C3"
         },
+        "name": "unnamedWire#123",
         "path": [
           {
             "x": 180.0,
@@ -2573,6 +2706,7 @@ mograsim version: 0.1.3
           "compName": "GUIandor414#4",
           "pinName": "C4"
         },
+        "name": "unnamedWire#124",
         "path": [
           {
             "x": 175.0,
@@ -2594,57 +2728,81 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIandor414#4",
-          "pinName": "Y1"
+          "compName": "WireCrossPoint#19",
+          "pinName": ""
         },
         "pin2": {
+          "compName": "GUIand41#1",
+          "pinName": "A4"
+        },
+        "name": "unnamedWire#72",
+        "path": [
+          {
+            "x": 115.0,
+            "y": 410.0
+          }
+        ]
+      },
+      {
+        "pin1": {
           "compName": "GUIandor414#5",
-          "pinName": "C1"
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "QB1"
         },
+        "name": "unnamedWire#129",
         "path": [
           {
             "x": 190.0,
-            "y": 590.0
+            "y": 740.0
           },
           {
             "x": 190.0,
-            "y": 730.0
+            "y": 880.0
           },
           {
-            "x": 130.0,
-            "y": 730.0
+            "x": 325.0,
+            "y": 880.0
           },
           {
-            "x": 130.0,
-            "y": 740.0
+            "x": 325.0,
+            "y": 450.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#4",
-          "pinName": "Y2"
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#5",
-          "pinName": "C2"
+          "compName": "GUIand41#1",
+          "pinName": "A3"
         },
+        "name": "unnamedWire#71",
         "path": [
           {
-            "x": 185.0,
-            "y": 600.0
-          },
-          {
-            "x": 185.0,
-            "y": 725.0
-          },
-          {
-            "x": 125.0,
-            "y": 725.0
-          },
+            "x": 120.0,
+            "y": 400.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#21",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIandor414#0",
+          "pinName": "A2"
+        },
+        "name": "unnamedWire#74",
+        "path": [
           {
             "x": 125.0,
-            "y": 750.0
+            "y": 540.0
           }
         ]
       },
@@ -2657,6 +2815,7 @@ mograsim version: 0.1.3
           "compName": "GUIandor414#5",
           "pinName": "C3"
         },
+        "name": "unnamedWire#127",
         "path": [
           {
             "x": 180.0,
@@ -2676,6 +2835,23 @@ mograsim version: 0.1.3
           }
         ]
       },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIandor414#0",
+          "pinName": "A1"
+        },
+        "name": "unnamedWire#73",
+        "path": [
+          {
+            "x": 130.0,
+            "y": 530.0
+          }
+        ]
+      },
       {
         "pin1": {
           "compName": "GUIandor414#4",
@@ -2685,6 +2861,7 @@ mograsim version: 0.1.3
           "compName": "GUIandor414#5",
           "pinName": "C4"
         },
+        "name": "unnamedWire#128",
         "path": [
           {
             "x": 175.0,
@@ -2706,124 +2883,129 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIandor414#5",
-          "pinName": "Y1"
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "QB1"
+          "compName": "GUIandor414#0",
+          "pinName": "A4"
         },
+        "name": "unnamedWire#76",
         "path": [
           {
-            "x": 190.0,
-            "y": 740.0
-          },
-          {
-            "x": 190.0,
-            "y": 880.0
-          },
-          {
-            "x": 325.0,
-            "y": 880.0
-          },
-          {
-            "x": 325.0,
-            "y": 450.0
+            "x": 115.0,
+            "y": 560.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#5",
-          "pinName": "Y2"
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "QB2"
+          "compName": "GUIandor414#0",
+          "pinName": "A3"
         },
+        "name": "unnamedWire#75",
         "path": [
           {
-            "x": 185.0,
-            "y": 750.0
-          },
-          {
-            "x": 185.0,
-            "y": 885.0
-          },
-          {
-            "x": 330.0,
-            "y": 885.0
-          },
-          {
-            "x": 330.0,
+            "x": 120.0,
             "y": 550.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#5",
-          "pinName": "Y3"
+          "compName": "WireCrossPoint#25",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "QB3"
+          "compName": "GUIandor414#1",
+          "pinName": "A2"
         },
+        "name": "unnamedWire#78",
         "path": [
           {
-            "x": 180.0,
-            "y": 760.0
-          },
-          {
-            "x": 180.0,
-            "y": 890.0
-          },
-          {
-            "x": 335.0,
-            "y": 890.0
-          },
-          {
-            "x": 335.0,
-            "y": 650.0
+            "x": 125.0,
+            "y": 690.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#5",
-          "pinName": "Y4"
+          "compName": "WireCrossPoint#24",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "QB4"
+          "compName": "GUIandor414#1",
+          "pinName": "A1"
         },
+        "name": "unnamedWire#77",
         "path": [
           {
-            "x": 175.0,
-            "y": 770.0
-          },
-          {
-            "x": 175.0,
-            "y": 895.0
-          },
-          {
-            "x": 340.0,
-            "y": 895.0
-          },
-          {
-            "x": 340.0,
-            "y": 750.0
+            "x": 130.0,
+            "y": 680.0
           }
         ]
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIram2",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {
+      "c00": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch4#0"
+        }
+      },
+      "c11": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch4#3"
+        }
+      },
+      "c10": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch4#2"
+        }
+      },
+      "c01": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdlatch4#1"
+        }
+      }
+    },
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler",
+        "params": {
+          "vectorPartTargets": [
+            "c00.q",
+            "c01.q",
+            "c10.q",
+            "c11.q"
+          ],
+          "vectorPartLengthes": [
+            4,
+            4,
+            4,
+            4
+          ]
+        }
+      }
+    }
   }
 }
\ No newline at end of file
index 99f606d..d2774ae 100644 (file)
@@ -176,1870 +176,2260 @@ mograsim version: 0.1.3
     "innerScale": 0.1,
     "subComps": [
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#14",
         "pos": {
           "x": 69.0,
           "y": 854.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#14",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#13",
         "pos": {
           "x": 64.0,
           "y": 844.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#13",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#16",
         "pos": {
           "x": 39.0,
           "y": 484.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#16",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#15",
         "pos": {
           "x": 74.0,
           "y": 864.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#15",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#18",
         "pos": {
           "x": 49.0,
           "y": 504.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#18",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#17",
         "pos": {
           "x": 44.0,
           "y": 494.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#17",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#19",
         "pos": {
           "x": 54.0,
           "y": 514.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#19",
         "params": 1
       },
       {
+        "id": "GUIand41",
+        "name": "GUIand41#2",
         "pos": {
           "x": 155.0,
           "y": 325.0
-        },
-        "id": "GUIand41",
-        "name": "GUIand41#2"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 224.0,
           "y": 164.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 229.0,
           "y": 154.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
           "x": 214.0,
           "y": 184.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 219.0,
           "y": 174.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
         "pos": {
           "x": 64.0,
           "y": 544.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
         "pos": {
           "x": 59.0,
           "y": 534.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#4",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
         "pos": {
           "x": 74.0,
           "y": 564.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#7",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
         "pos": {
           "x": 69.0,
           "y": 554.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#6",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
         "pos": {
           "x": 64.0,
           "y": 694.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#9",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
         "pos": {
           "x": 59.0,
           "y": 684.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#8",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
         "pos": {
           "x": 69.0,
           "y": 704.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#10",
         "params": 1
       },
       {
+        "id": "GUIand41",
+        "name": "GUIand41#0",
         "pos": {
           "x": 235.0,
           "y": 150.0
-        },
-        "id": "GUIand41",
-        "name": "GUIand41#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#12",
         "pos": {
           "x": 59.0,
           "y": 834.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#12",
         "params": 1
       },
       {
+        "id": "GUIand41",
+        "name": "GUIand41#1",
         "pos": {
           "x": 250.0,
           "y": 375.0
-        },
-        "id": "GUIand41",
-        "name": "GUIand41#1"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#11",
         "pos": {
           "x": 74.0,
           "y": 714.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#11",
         "params": 1
       },
       {
+        "id": "GUIandor414",
+        "name": "GUIandor414#5",
         "pos": {
           "x": 155.0,
           "y": 735.0
-        },
-        "id": "GUIandor414",
-        "name": "GUIandor414#5"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#25",
         "pos": {
           "x": 44.0,
           "y": 349.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#25",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#24",
         "pos": {
           "x": 39.0,
           "y": 334.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#24",
         "params": 1
       },
       {
+        "id": "GUIandor414",
+        "name": "GUIandor414#3",
         "pos": {
           "x": 155.0,
           "y": 435.0
-        },
-        "id": "GUIandor414",
-        "name": "GUIandor414#3"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#27",
         "pos": {
           "x": 54.0,
           "y": 749.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#27",
         "params": 1
       },
       {
+        "id": "GUIandor414",
+        "name": "GUIandor414#4",
         "pos": {
           "x": 155.0,
           "y": 585.0
-        },
-        "id": "GUIandor414",
-        "name": "GUIandor414#4"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#26",
         "pos": {
           "x": 49.0,
           "y": 649.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#26",
         "params": 1
       },
       {
+        "id": "GUIram2",
+        "name": "GUIram2#3",
         "pos": {
           "x": 80.0,
           "y": 780.0
-        },
-        "id": "GUIram2",
-        "name": "GUIram2#3"
+        }
       },
       {
+        "id": "GUIram2",
+        "name": "GUIram2#2",
         "pos": {
           "x": 80.0,
           "y": 630.0
-        },
-        "id": "GUIram2",
-        "name": "GUIram2#2"
+        }
       },
       {
+        "id": "GUIdemux2",
+        "name": "GUIdemux2#1",
         "pos": {
           "x": 55.0,
           "y": 150.0
-        },
-        "id": "GUIdemux2",
-        "name": "GUIdemux2#1"
+        }
       },
       {
+        "id": "GUIram2",
+        "name": "GUIram2#1",
         "pos": {
           "x": 80.0,
           "y": 480.0
-        },
-        "id": "GUIram2",
-        "name": "GUIram2#1"
+        }
       },
       {
+        "id": "GUIram2",
+        "name": "GUIram2#0",
         "pos": {
           "x": 80.0,
           "y": 330.0
-        },
-        "id": "GUIram2",
-        "name": "GUIram2#0"
+        }
       },
       {
+        "id": "GUIandor414",
+        "name": "GUIandor414#1",
         "pos": {
           "x": 250.0,
           "y": 635.0
-        },
-        "id": "GUIandor414",
-        "name": "GUIandor414#1"
+        }
       },
       {
+        "id": "GUIdemux2",
+        "name": "GUIdemux2#0",
         "pos": {
           "x": 55.0,
           "y": 45.0
-        },
-        "id": "GUIdemux2",
-        "name": "GUIdemux2#0"
+        }
       },
       {
+        "id": "GUIandor414",
+        "name": "GUIandor414#2",
         "pos": {
           "x": 250.0,
           "y": 785.0
-        },
-        "id": "GUIandor414",
-        "name": "GUIandor414#2"
+        }
       },
       {
+        "id": "GUIandor414",
+        "name": "GUIandor414#0",
         "pos": {
           "x": 250.0,
           "y": 485.0
-        },
-        "id": "GUIandor414",
-        "name": "GUIandor414#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#21",
         "pos": {
           "x": 44.0,
           "y": 644.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#21",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#20",
         "pos": {
           "x": 39.0,
           "y": 634.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#20",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#23",
         "pos": {
           "x": 54.0,
           "y": 664.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#23",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#22",
         "pos": {
           "x": 49.0,
           "y": 654.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#22",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A0"
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdemux2#0",
-          "pinName": "S0"
+          "compName": "GUIram2#2",
+          "pinName": "B1"
         },
+        "name": "unnamedWire#36",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A1"
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdemux2#0",
-          "pinName": "S1"
+          "compName": "GUIram2#2",
+          "pinName": "B0"
         },
-        "path": [
-          {
-            "x": 10.0,
-            "y": 150.0
-          },
-          {
-            "x": 10.0,
-            "y": 60.0
-          }
-        ]
+        "name": "unnamedWire#35",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B0"
+          "compName": "WireCrossPoint#21",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdemux2#1",
-          "pinName": "S0"
+          "compName": "GUIram2#3",
+          "pinName": "A1"
         },
+        "name": "unnamedWire#38",
         "path": [
           {
-            "x": 5.0,
-            "y": 450.0
-          },
-          {
-            "x": 5.0,
-            "y": 155.0
+            "x": 45.0,
+            "y": 795.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B1"
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdemux2#1",
-          "pinName": "S1"
+          "compName": "GUIram2#3",
+          "pinName": "A0"
         },
+        "name": "unnamedWire#37",
         "path": [
           {
-            "x": 10.0,
-            "y": 550.0
-          },
-          {
-            "x": 10.0,
-            "y": 165.0
+            "x": 40.0,
+            "y": 785.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIdemux2#1",
-          "pinName": "Y00"
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUIram2#3",
+          "pinName": "B0"
         },
-        "path": []
+        "name": "unnamedWire#39",
+        "path": [
+          {
+            "x": 50.0,
+            "y": 805.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUIdemux2#1",
-          "pinName": "Y01"
+          "compName": "GUIram2#3",
+          "pinName": "QA2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUIandor414#5",
+          "pinName": "A2"
         },
-        "path": []
+        "name": "unnamedWire#110",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 795.0
+          },
+          {
+            "x": 140.0,
+            "y": 790.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUIdemux2#1",
-          "pinName": "Y10"
+          "compName": "GUIram2#3",
+          "pinName": "QA3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUIdemux2#1",
-          "pinName": "Y11"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIand41#0",
-          "pinName": "A1"
+          "compName": "GUIandor414#5",
+          "pinName": "A3"
         },
-        "path": []
+        "name": "unnamedWire#111",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 805.0
+          },
+          {
+            "x": 140.0,
+            "y": 800.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUIand41#1",
+          "pinName": "Y2"
         },
         "pin2": {
-          "compName": "GUIand41#0",
-          "pinName": "A2"
+          "compName": "GUIandor414#0",
+          "pinName": "C2"
         },
-        "path": []
+        "name": "unnamedWire#114",
+        "path": [
+          {
+            "x": 300.0,
+            "y": 390.0
+          },
+          {
+            "x": 300.0,
+            "y": 440.0
+          },
+          {
+            "x": 240.0,
+            "y": 440.0
+          },
+          {
+            "x": 240.0,
+            "y": 500.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUIand41#1",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIand41#0",
-          "pinName": "A3"
+          "compName": "GUIandor414#0",
+          "pinName": "C3"
         },
-        "path": []
+        "name": "unnamedWire#115",
+        "path": [
+          {
+            "x": 295.0,
+            "y": 400.0
+          },
+          {
+            "x": 295.0,
+            "y": 435.0
+          },
+          {
+            "x": 235.0,
+            "y": 435.0
+          },
+          {
+            "x": 235.0,
+            "y": 510.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "GUIram2#3",
+          "pinName": "QA4"
         },
         "pin2": {
-          "compName": "GUIand41#0",
+          "compName": "GUIandor414#5",
           "pinName": "A4"
         },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "WE"
-        },
-        "pin2": {
-          "compName": "GUIand41#0",
-          "pinName": "B"
-        },
+        "name": "unnamedWire#112",
         "path": [
           {
-            "x": 15.0,
-            "y": 850.0
+            "x": 140.0,
+            "y": 815.0
           },
           {
-            "x": 15.0,
-            "y": 195.0
+            "x": 140.0,
+            "y": 810.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#0",
+          "compName": "GUIand41#1",
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "GUIram2#0",
-          "pinName": "WE"
+          "compName": "GUIandor414#0",
+          "pinName": "C1"
         },
+        "name": "unnamedWire#113",
         "path": [
           {
-            "x": 290.0,
-            "y": 155.0
+            "x": 305.0,
+            "y": 380.0
           },
           {
-            "x": 290.0,
-            "y": 230.0
+            "x": 305.0,
+            "y": 445.0
           },
           {
-            "x": 35.0,
-            "y": 230.0
+            "x": 245.0,
+            "y": 445.0
           },
           {
-            "x": 35.0,
-            "y": 375.0
+            "x": 245.0,
+            "y": 490.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#0",
+          "compName": "GUIandor414#0",
           "pinName": "Y2"
         },
         "pin2": {
-          "compName": "GUIram2#1",
-          "pinName": "WE"
+          "compName": "GUIandor414#1",
+          "pinName": "C2"
         },
+        "name": "unnamedWire#118",
         "path": [
           {
-            "x": 285.0,
-            "y": 165.0
+            "x": 300.0,
+            "y": 500.0
           },
           {
-            "x": 285.0,
-            "y": 225.0
+            "x": 300.0,
+            "y": 590.0
           },
           {
-            "x": 30.0,
-            "y": 225.0
+            "x": 240.0,
+            "y": 590.0
           },
           {
-            "x": 30.0,
-            "y": 525.0
+            "x": 240.0,
+            "y": 650.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#0",
+          "compName": "GUIandor414#0",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIram2#2",
-          "pinName": "WE"
+          "compName": "GUIandor414#1",
+          "pinName": "C3"
         },
+        "name": "unnamedWire#119",
         "path": [
           {
-            "x": 280.0,
-            "y": 175.0
+            "x": 295.0,
+            "y": 510.0
           },
           {
-            "x": 280.0,
-            "y": 220.0
+            "x": 295.0,
+            "y": 585.0
           },
           {
-            "x": 25.0,
-            "y": 220.0
+            "x": 235.0,
+            "y": 585.0
           },
           {
-            "x": 25.0,
-            "y": 675.0
+            "x": 235.0,
+            "y": 660.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#0",
-          "pinName": "Y4"
+          "compName": "WireCrossPoint#27",
+          "pinName": ""
         },
         "pin2": {
           "compName": "GUIram2#3",
-          "pinName": "WE"
+          "pinName": "B1"
         },
+        "name": "unnamedWire#41",
         "path": [
           {
-            "x": 275.0,
-            "y": 185.0
+            "x": 55.0,
+            "y": 815.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIand41#1",
+          "pinName": "Y4"
+        },
+        "pin2": {
+          "compName": "GUIandor414#0",
+          "pinName": "C4"
+        },
+        "name": "unnamedWire#116",
+        "path": [
+          {
+            "x": 290.0,
+            "y": 410.0
           },
           {
-            "x": 275.0,
-            "y": 215.0
+            "x": 290.0,
+            "y": 430.0
           },
           {
-            "x": 20.0,
-            "y": 215.0
+            "x": 230.0,
+            "y": 430.0
           },
           {
-            "x": 20.0,
-            "y": 825.0
+            "x": 230.0,
+            "y": 520.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#16",
+          "compName": "WireCrossPoint#23",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#24",
+          "compName": "WireCrossPoint#27",
           "pinName": ""
         },
+        "name": "unnamedWire#40",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#24",
-          "pinName": ""
+          "compName": "GUIandor414#0",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "GUIram2#0",
-          "pinName": "A0"
+          "compName": "GUIandor414#1",
+          "pinName": "C1"
         },
-        "path": []
+        "name": "unnamedWire#117",
+        "path": [
+          {
+            "x": 305.0,
+            "y": 490.0
+          },
+          {
+            "x": 305.0,
+            "y": 595.0
+          },
+          {
+            "x": 245.0,
+            "y": 595.0
+          },
+          {
+            "x": 245.0,
+            "y": 640.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#17",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "A3"
         },
         "pin2": {
           "compName": "WireCrossPoint#25",
           "pinName": ""
         },
+        "name": "unnamedWire#43",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#25",
-          "pinName": ""
-        },
+          "compName": "_submodelinterface",
+          "pinName": "A2"
+        },
         "pin2": {
-          "compName": "GUIram2#0",
-          "pinName": "A1"
+          "compName": "WireCrossPoint#24",
+          "pinName": ""
         },
+        "name": "unnamedWire#42",
         "path": [
           {
-            "x": 45.0,
-            "y": 345.0
+            "x": 40.0,
+            "y": 250.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIram2#0",
-          "pinName": "B0"
+          "pinName": "D1"
         },
+        "name": "unnamedWire#45",
         "path": [
           {
-            "x": 50.0,
-            "y": 355.0
+            "x": 60.0,
+            "y": 385.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
+          "compName": "_submodelinterface",
+          "pinName": "B3"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#27",
+          "pinName": ""
+        },
+        "name": "unnamedWire#44",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIram2#0",
-          "pinName": "B1"
+          "pinName": "D3"
         },
+        "name": "unnamedWire#47",
         "path": [
           {
-            "x": 55.0,
-            "y": 365.0
+            "x": 70.0,
+            "y": 405.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#16",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram2#1",
-          "pinName": "A0"
+          "compName": "GUIram2#0",
+          "pinName": "D2"
         },
-        "path": []
+        "name": "unnamedWire#46",
+        "path": [
+          {
+            "x": 65.0,
+            "y": 395.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#17",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIram2#1",
-          "pinName": "A1"
+          "pinName": "D1"
         },
+        "name": "unnamedWire#49",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram2#1",
-          "pinName": "B0"
+          "compName": "GUIram2#0",
+          "pinName": "D4"
         },
-        "path": []
+        "name": "unnamedWire#48",
+        "path": [
+          {
+            "x": 75.0,
+            "y": 415.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
-          "pinName": ""
+          "compName": "GUIram2#0",
+          "pinName": "QA4"
         },
         "pin2": {
-          "compName": "GUIram2#1",
-          "pinName": "B1"
+          "compName": "GUIand41#2",
+          "pinName": "A4"
         },
-        "path": []
+        "name": "unnamedWire#100",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 365.0
+          },
+          {
+            "x": 140.0,
+            "y": 360.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#16",
-          "pinName": ""
+          "compName": "GUIram2#1",
+          "pinName": "QA3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#20",
-          "pinName": ""
+          "compName": "GUIandor414#3",
+          "pinName": "A3"
         },
-        "path": []
+        "name": "unnamedWire#103",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 505.0
+          },
+          {
+            "x": 140.0,
+            "y": 500.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#17",
-          "pinName": ""
+          "compName": "GUIram2#1",
+          "pinName": "QA4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#21",
-          "pinName": ""
+          "compName": "GUIandor414#3",
+          "pinName": "A4"
         },
-        "path": []
+        "name": "unnamedWire#104",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 515.0
+          },
+          {
+            "x": 140.0,
+            "y": 510.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#18",
-          "pinName": ""
+          "compName": "GUIram2#1",
+          "pinName": "QA1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#26",
-          "pinName": ""
+          "compName": "GUIandor414#3",
+          "pinName": "A1"
         },
-        "path": []
+        "name": "unnamedWire#101",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 485.0
+          },
+          {
+            "x": 140.0,
+            "y": 480.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B2"
+          "compName": "GUIram2#1",
+          "pinName": "QA2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#26",
-          "pinName": ""
+          "compName": "GUIandor414#3",
+          "pinName": "A2"
         },
-        "path": []
+        "name": "unnamedWire#102",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 495.0
+          },
+          {
+            "x": 140.0,
+            "y": 490.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#26",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#22",
-          "pinName": ""
+          "compName": "GUIram2#1",
+          "pinName": "D2"
         },
+        "name": "unnamedWire#50",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
-          "pinName": ""
+          "compName": "GUIram2#2",
+          "pinName": "QA3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#23",
-          "pinName": ""
+          "compName": "GUIandor414#4",
+          "pinName": "A3"
         },
-        "path": []
+        "name": "unnamedWire#107",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 655.0
+          },
+          {
+            "x": 140.0,
+            "y": 650.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
-          "pinName": ""
+          "compName": "GUIram2#2",
+          "pinName": "QA4"
         },
         "pin2": {
-          "compName": "GUIram2#2",
-          "pinName": "A0"
+          "compName": "GUIandor414#4",
+          "pinName": "A4"
         },
-        "path": []
+        "name": "unnamedWire#108",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 665.0
+          },
+          {
+            "x": 140.0,
+            "y": 660.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#21",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram2#2",
-          "pinName": "A1"
+          "compName": "GUIram2#1",
+          "pinName": "D4"
         },
+        "name": "unnamedWire#52",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#22",
-          "pinName": ""
+          "compName": "GUIram2#2",
+          "pinName": "QA1"
         },
         "pin2": {
-          "compName": "GUIram2#2",
-          "pinName": "B0"
+          "compName": "GUIandor414#4",
+          "pinName": "A1"
         },
-        "path": []
+        "name": "unnamedWire#105",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 635.0
+          },
+          {
+            "x": 140.0,
+            "y": 630.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#23",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram2#2",
-          "pinName": "B1"
+          "compName": "GUIram2#1",
+          "pinName": "D3"
         },
+        "name": "unnamedWire#51",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
-          "pinName": ""
+          "compName": "GUIram2#2",
+          "pinName": "QA2"
         },
         "pin2": {
-          "compName": "GUIram2#3",
-          "pinName": "A0"
+          "compName": "GUIandor414#4",
+          "pinName": "A2"
         },
+        "name": "unnamedWire#106",
         "path": [
           {
-            "x": 40.0,
-            "y": 785.0
+            "x": 140.0,
+            "y": 645.0
+          },
+          {
+            "x": 140.0,
+            "y": 640.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#21",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#54",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#53",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#56",
+        "path": []
+      },
+      {
+        "pin1": {
           "compName": "GUIram2#3",
+          "pinName": "QA1"
+        },
+        "pin2": {
+          "compName": "GUIandor414#5",
           "pinName": "A1"
         },
+        "name": "unnamedWire#109",
         "path": [
           {
-            "x": 45.0,
-            "y": 795.0
+            "x": 140.0,
+            "y": 785.0
+          },
+          {
+            "x": 140.0,
+            "y": 780.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#22",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram2#3",
-          "pinName": "B0"
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#55",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIand41#0",
+          "pinName": "Y2"
+        },
+        "pin2": {
+          "compName": "GUIram2#1",
+          "pinName": "WE"
         },
+        "name": "unnamedWire#14",
         "path": [
           {
-            "x": 50.0,
-            "y": 805.0
+            "x": 285.0,
+            "y": 165.0
+          },
+          {
+            "x": 285.0,
+            "y": 225.0
+          },
+          {
+            "x": 30.0,
+            "y": 225.0
+          },
+          {
+            "x": 30.0,
+            "y": 525.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#23",
-          "pinName": ""
+          "compName": "GUIand41#0",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#27",
-          "pinName": ""
+          "compName": "GUIram2#0",
+          "pinName": "WE"
         },
-        "path": []
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 290.0,
+            "y": 155.0
+          },
+          {
+            "x": 290.0,
+            "y": 230.0
+          },
+          {
+            "x": 35.0,
+            "y": 230.0
+          },
+          {
+            "x": 35.0,
+            "y": 375.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#27",
-          "pinName": ""
+          "compName": "GUIand41#0",
+          "pinName": "Y4"
         },
         "pin2": {
           "compName": "GUIram2#3",
-          "pinName": "B1"
+          "pinName": "WE"
         },
+        "name": "unnamedWire#16",
         "path": [
           {
-            "x": 55.0,
-            "y": 815.0
+            "x": 275.0,
+            "y": 185.0
+          },
+          {
+            "x": 275.0,
+            "y": 215.0
+          },
+          {
+            "x": 20.0,
+            "y": 215.0
+          },
+          {
+            "x": 20.0,
+            "y": 825.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A2"
+          "compName": "GUIand41#0",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#24",
-          "pinName": ""
+          "compName": "GUIram2#2",
+          "pinName": "WE"
         },
+        "name": "unnamedWire#15",
         "path": [
           {
-            "x": 40.0,
-            "y": 250.0
+            "x": 280.0,
+            "y": 175.0
+          },
+          {
+            "x": 280.0,
+            "y": 220.0
+          },
+          {
+            "x": 25.0,
+            "y": 220.0
+          },
+          {
+            "x": 25.0,
+            "y": 675.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A3"
+          "compName": "WireCrossPoint#24",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#25",
+          "compName": "GUIram2#0",
+          "pinName": "A0"
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
+        "pin2": {
+          "compName": "WireCrossPoint#24",
+          "pinName": ""
+        },
+        "name": "unnamedWire#17",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B3"
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#27",
+          "compName": "WireCrossPoint#25",
           "pinName": ""
         },
+        "name": "unnamedWire#19",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#18",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIram2#0",
-          "pinName": "D1"
+          "pinName": "B0"
         },
+        "name": "unnamedWire#21",
         "path": [
           {
-            "x": 60.0,
-            "y": 385.0
+            "x": 50.0,
+            "y": 355.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#25",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIram2#0",
-          "pinName": "D2"
+          "pinName": "A1"
         },
+        "name": "unnamedWire#20",
         "path": [
           {
-            "x": 65.0,
-            "y": 395.0
+            "x": 45.0,
+            "y": 345.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram2#0",
-          "pinName": "D3"
+          "compName": "GUIram2#1",
+          "pinName": "A0"
         },
-        "path": [
-          {
-            "x": 70.0,
-            "y": 405.0
-          }
-        ]
+        "name": "unnamedWire#23",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIram2#0",
-          "pinName": "D4"
+          "pinName": "B1"
         },
+        "name": "unnamedWire#22",
         "path": [
           {
-            "x": 75.0,
-            "y": 415.0
+            "x": 55.0,
+            "y": 365.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#18",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIram2#1",
-          "pinName": "D1"
+          "pinName": "B0"
         },
+        "name": "unnamedWire#25",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#17",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIram2#1",
-          "pinName": "D2"
+          "pinName": "A1"
         },
+        "name": "unnamedWire#24",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram2#1",
-          "pinName": "D3"
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
         },
+        "name": "unnamedWire#27",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIram2#1",
-          "pinName": "D4"
+          "pinName": "B1"
         },
+        "name": "unnamedWire#26",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#18",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#26",
           "pinName": ""
         },
+        "name": "unnamedWire#29",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#17",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#21",
           "pinName": ""
         },
+        "name": "unnamedWire#28",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "B2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#26",
           "pinName": ""
         },
+        "name": "unnamedWire#30",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#23",
           "pinName": ""
         },
+        "name": "unnamedWire#32",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#26",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram2#2",
-          "pinName": "D1"
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
         },
+        "name": "unnamedWire#31",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#21",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIram2#2",
-          "pinName": "D2"
+          "pinName": "A1"
         },
+        "name": "unnamedWire#34",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#20",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIram2#2",
-          "pinName": "D3"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#11",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIram2#2",
-          "pinName": "D4"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#8",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#12",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#13",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#10",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#14",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#11",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#15",
-          "pinName": ""
+          "pinName": "A0"
         },
+        "name": "unnamedWire#33",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram2#3",
-          "pinName": "D1"
+          "compName": "GUIandor414#1",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#79",
+        "path": [
+          {
+            "x": 220.0,
+            "y": 720.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
-          "pinName": ""
+          "compName": "GUIram2#0",
+          "pinName": "QB1"
         },
         "pin2": {
-          "compName": "GUIram2#3",
-          "pinName": "D2"
+          "compName": "GUIand41#1",
+          "pinName": "A1"
         },
-        "path": []
+        "name": "unnamedWire#81",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 375.0
+          },
+          {
+            "x": 140.0,
+            "y": 380.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram2#3",
-          "pinName": "D3"
+          "compName": "GUIandor414#2",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#80",
+        "path": [
+          {
+            "x": 215.0,
+            "y": 870.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
-          "pinName": ""
+          "compName": "GUIram2#0",
+          "pinName": "QB3"
         },
         "pin2": {
-          "compName": "GUIram2#3",
-          "pinName": "D4"
+          "compName": "GUIand41#1",
+          "pinName": "A3"
         },
-        "path": []
+        "name": "unnamedWire#83",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 395.0
+          },
+          {
+            "x": 140.0,
+            "y": 400.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D1"
+          "compName": "GUIram2#0",
+          "pinName": "QB2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#12",
-          "pinName": ""
+          "compName": "GUIand41#1",
+          "pinName": "A2"
         },
+        "name": "unnamedWire#82",
         "path": [
           {
-            "x": 60.0,
-            "y": 950.0
+            "x": 140.0,
+            "y": 385.0
+          },
+          {
+            "x": 140.0,
+            "y": 390.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D2"
+          "compName": "GUIram2#1",
+          "pinName": "QB1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#13",
-          "pinName": ""
+          "compName": "GUIandor414#0",
+          "pinName": "A1"
         },
+        "name": "unnamedWire#85",
         "path": [
           {
-            "x": 65.0,
-            "y": 1050.0
+            "x": 140.0,
+            "y": 525.0
+          },
+          {
+            "x": 140.0,
+            "y": 530.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D3"
+          "compName": "GUIram2#0",
+          "pinName": "QB4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#14",
-          "pinName": ""
+          "compName": "GUIand41#1",
+          "pinName": "A4"
         },
+        "name": "unnamedWire#84",
         "path": [
           {
-            "x": 70.0,
-            "y": 1150.0
+            "x": 140.0,
+            "y": 405.0
+          },
+          {
+            "x": 140.0,
+            "y": 410.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D4"
+          "compName": "GUIram2#1",
+          "pinName": "QB3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
-          "pinName": ""
+          "compName": "GUIandor414#0",
+          "pinName": "A3"
         },
+        "name": "unnamedWire#87",
         "path": [
           {
-            "x": 75.0,
-            "y": 1250.0
+            "x": 140.0,
+            "y": 545.0
+          },
+          {
+            "x": 140.0,
+            "y": 550.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIdemux2#0",
-          "pinName": "Y00"
+          "compName": "GUIram2#1",
+          "pinName": "QB2"
         },
         "pin2": {
-          "compName": "GUIand41#2",
-          "pinName": "B"
+          "compName": "GUIandor414#0",
+          "pinName": "A2"
         },
+        "name": "unnamedWire#86",
         "path": [
           {
-            "x": 135.0,
-            "y": 50.0
+            "x": 140.0,
+            "y": 535.0
           },
           {
-            "x": 135.0,
-            "y": 370.0
+            "x": 140.0,
+            "y": 540.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIdemux2#0",
-          "pinName": "Y01"
+          "compName": "GUIram2#2",
+          "pinName": "QB1"
         },
         "pin2": {
-          "compName": "GUIandor414#3",
-          "pinName": "B"
+          "compName": "GUIandor414#1",
+          "pinName": "A1"
         },
+        "name": "unnamedWire#89",
         "path": [
           {
-            "x": 130.0,
-            "y": 60.0
+            "x": 140.0,
+            "y": 675.0
           },
           {
-            "x": 130.0,
-            "y": 520.0
+            "x": 140.0,
+            "y": 680.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIdemux2#0",
-          "pinName": "Y10"
+          "compName": "GUIram2#1",
+          "pinName": "QB4"
         },
         "pin2": {
-          "compName": "GUIandor414#4",
-          "pinName": "B"
+          "compName": "GUIandor414#0",
+          "pinName": "A4"
         },
+        "name": "unnamedWire#88",
         "path": [
           {
-            "x": 125.0,
-            "y": 70.0
+            "x": 140.0,
+            "y": 555.0
           },
           {
-            "x": 125.0,
-            "y": 670.0
+            "x": 140.0,
+            "y": 560.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIdemux2#0",
-          "pinName": "Y11"
+          "compName": "GUIandor414#4",
+          "pinName": "Y4"
         },
         "pin2": {
           "compName": "GUIandor414#5",
-          "pinName": "B"
+          "pinName": "C4"
         },
+        "name": "unnamedWire#140",
         "path": [
           {
-            "x": 120.0,
-            "y": 80.0
+            "x": 195.0,
+            "y": 620.0
           },
           {
-            "x": 120.0,
-            "y": 820.0
+            "x": 195.0,
+            "y": 715.0
+          },
+          {
+            "x": 135.0,
+            "y": 715.0
+          },
+          {
+            "x": 135.0,
+            "y": 770.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand41#1",
-          "pinName": "B"
+          "compName": "GUIand41#0",
+          "pinName": "A2"
         },
-        "path": [
-          {
-            "x": 230.0,
-            "y": 420.0
-          }
-        ]
+        "name": "unnamedWire#9",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUIandor414#5",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "B"
+          "compName": "_submodelinterface",
+          "pinName": "QA3"
         },
+        "name": "unnamedWire#143",
         "path": [
           {
-            "x": 225.0,
-            "y": 570.0
+            "x": 200.0,
+            "y": 760.0
+          },
+          {
+            "x": 200.0,
+            "y": 890.0
+          },
+          {
+            "x": 320.0,
+            "y": 890.0
+          },
+          {
+            "x": 320.0,
+            "y": 250.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#1",
-          "pinName": "B"
+          "compName": "GUIand41#0",
+          "pinName": "A1"
         },
-        "path": [
-          {
-            "x": 220.0,
-            "y": 720.0
-          }
-        ]
+        "name": "unnamedWire#8",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "GUIandor414#5",
+          "pinName": "Y4"
         },
         "pin2": {
-          "compName": "GUIandor414#2",
-          "pinName": "B"
+          "compName": "_submodelinterface",
+          "pinName": "QA4"
         },
+        "name": "unnamedWire#144",
         "path": [
           {
-            "x": 215.0,
-            "y": 870.0
+            "x": 195.0,
+            "y": 770.0
+          },
+          {
+            "x": 195.0,
+            "y": 895.0
+          },
+          {
+            "x": 325.0,
+            "y": 895.0
+          },
+          {
+            "x": 325.0,
+            "y": 350.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#0",
-          "pinName": "QB1"
+          "compName": "GUIdemux2#1",
+          "pinName": "Y11"
         },
         "pin2": {
-          "compName": "GUIand41#1",
-          "pinName": "A1"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIandor414#5",
+          "pinName": "Y1"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "QA1"
+        },
+        "name": "unnamedWire#141",
         "path": [
           {
-            "x": 140.0,
-            "y": 375.0
+            "x": 210.0,
+            "y": 740.0
           },
           {
-            "x": 140.0,
-            "y": 380.0
+            "x": 210.0,
+            "y": 880.0
+          },
+          {
+            "x": 310.0,
+            "y": 880.0
+          },
+          {
+            "x": 310.0,
+            "y": 50.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#0",
-          "pinName": "QB2"
+          "compName": "GUIdemux2#1",
+          "pinName": "Y10"
         },
         "pin2": {
-          "compName": "GUIand41#1",
-          "pinName": "A2"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIandor414#5",
+          "pinName": "Y2"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "QA2"
         },
+        "name": "unnamedWire#142",
         "path": [
           {
-            "x": 140.0,
-            "y": 385.0
+            "x": 205.0,
+            "y": 750.0
           },
           {
-            "x": 140.0,
-            "y": 390.0
+            "x": 205.0,
+            "y": 885.0
+          },
+          {
+            "x": 315.0,
+            "y": 885.0
+          },
+          {
+            "x": 315.0,
+            "y": 150.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#0",
-          "pinName": "QB3"
+          "compName": "GUIram2#2",
+          "pinName": "QB2"
         },
         "pin2": {
-          "compName": "GUIand41#1",
-          "pinName": "A3"
+          "compName": "GUIandor414#1",
+          "pinName": "A2"
         },
+        "name": "unnamedWire#90",
         "path": [
           {
             "x": 140.0,
-            "y": 395.0
+            "y": 685.0
           },
           {
             "x": 140.0,
-            "y": 400.0
+            "y": 690.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#0",
+          "compName": "GUIram2#2",
           "pinName": "QB4"
         },
         "pin2": {
-          "compName": "GUIand41#1",
+          "compName": "GUIandor414#1",
           "pinName": "A4"
         },
+        "name": "unnamedWire#92",
         "path": [
           {
             "x": 140.0,
-            "y": 405.0
+            "y": 705.0
           },
           {
             "x": 140.0,
-            "y": 410.0
+            "y": 710.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#1",
-          "pinName": "QB1"
+          "compName": "GUIram2#2",
+          "pinName": "QB3"
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "A1"
+          "compName": "GUIandor414#1",
+          "pinName": "A3"
         },
+        "name": "unnamedWire#91",
         "path": [
           {
             "x": 140.0,
-            "y": 525.0
+            "y": 695.0
           },
           {
             "x": 140.0,
-            "y": 530.0
+            "y": 700.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#1",
-          "pinName": "QB2"
+          "compName": "_submodelinterface",
+          "pinName": "A1"
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "A2"
+          "compName": "GUIdemux2#0",
+          "pinName": "S1"
         },
+        "name": "unnamedWire#1",
         "path": [
           {
-            "x": 140.0,
-            "y": 535.0
+            "x": 10.0,
+            "y": 150.0
           },
           {
-            "x": 140.0,
-            "y": 540.0
+            "x": 10.0,
+            "y": 60.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#1",
-          "pinName": "QB3"
+          "compName": "GUIram2#3",
+          "pinName": "QB2"
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "A3"
+          "compName": "GUIandor414#2",
+          "pinName": "A2"
         },
+        "name": "unnamedWire#94",
         "path": [
           {
             "x": 140.0,
-            "y": 545.0
+            "y": 835.0
           },
           {
             "x": 140.0,
-            "y": 550.0
+            "y": 840.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#1",
-          "pinName": "QB4"
+          "compName": "_submodelinterface",
+          "pinName": "A0"
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "A4"
+          "compName": "GUIdemux2#0",
+          "pinName": "S0"
         },
-        "path": [
-          {
-            "x": 140.0,
-            "y": 555.0
-          },
-          {
-            "x": 140.0,
-            "y": 560.0
-          }
-        ]
+        "name": "unnamedWire#0",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIram2#2",
+          "compName": "GUIram2#3",
           "pinName": "QB1"
         },
         "pin2": {
-          "compName": "GUIandor414#1",
+          "compName": "GUIandor414#2",
           "pinName": "A1"
         },
+        "name": "unnamedWire#93",
         "path": [
           {
             "x": 140.0,
-            "y": 675.0
+            "y": 825.0
           },
           {
             "x": 140.0,
-            "y": 680.0
+            "y": 830.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#2",
-          "pinName": "QB2"
+          "compName": "GUIram2#3",
+          "pinName": "QB4"
         },
         "pin2": {
-          "compName": "GUIandor414#1",
-          "pinName": "A2"
+          "compName": "GUIandor414#2",
+          "pinName": "A4"
         },
+        "name": "unnamedWire#96",
         "path": [
           {
             "x": 140.0,
-            "y": 685.0
+            "y": 855.0
           },
           {
             "x": 140.0,
-            "y": 690.0
+            "y": 860.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#2",
+          "compName": "GUIram2#3",
           "pinName": "QB3"
         },
         "pin2": {
-          "compName": "GUIandor414#1",
+          "compName": "GUIandor414#2",
           "pinName": "A3"
         },
+        "name": "unnamedWire#95",
         "path": [
           {
             "x": 140.0,
-            "y": 695.0
+            "y": 845.0
           },
           {
             "x": 140.0,
-            "y": 700.0
+            "y": 850.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#2",
-          "pinName": "QB4"
+          "compName": "GUIdemux2#1",
+          "pinName": "Y01"
         },
         "pin2": {
-          "compName": "GUIandor414#1",
-          "pinName": "A4"
-        },
-        "path": [
-          {
-            "x": 140.0,
-            "y": 705.0
-          },
-          {
-            "x": 140.0,
-            "y": 710.0
-          }
-        ]
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#5",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIram2#3",
-          "pinName": "QB1"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#2",
-          "pinName": "A1"
+          "compName": "GUIand41#0",
+          "pinName": "A3"
         },
-        "path": [
-          {
-            "x": 140.0,
-            "y": 825.0
-          },
-          {
-            "x": 140.0,
-            "y": 830.0
-          }
-        ]
+        "name": "unnamedWire#10",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIram2#3",
-          "pinName": "QB2"
+          "compName": "GUIram2#0",
+          "pinName": "QA2"
         },
         "pin2": {
-          "compName": "GUIandor414#2",
+          "compName": "GUIand41#2",
           "pinName": "A2"
         },
+        "name": "unnamedWire#98",
         "path": [
           {
             "x": 140.0,
-            "y": 835.0
+            "y": 345.0
           },
           {
             "x": 140.0,
-            "y": 840.0
+            "y": 340.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#3",
-          "pinName": "QB3"
+          "compName": "GUIdemux2#1",
+          "pinName": "Y00"
         },
         "pin2": {
-          "compName": "GUIandor414#2",
-          "pinName": "A3"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIram2#0",
+          "pinName": "QA1"
+        },
+        "pin2": {
+          "compName": "GUIand41#2",
+          "pinName": "A1"
         },
+        "name": "unnamedWire#97",
         "path": [
           {
             "x": 140.0,
-            "y": 845.0
+            "y": 335.0
           },
           {
             "x": 140.0,
-            "y": 850.0
+            "y": 330.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#3",
-          "pinName": "QB4"
+          "compName": "_submodelinterface",
+          "pinName": "B1"
         },
         "pin2": {
-          "compName": "GUIandor414#2",
-          "pinName": "A4"
+          "compName": "GUIdemux2#1",
+          "pinName": "S1"
         },
+        "name": "unnamedWire#3",
         "path": [
           {
-            "x": 140.0,
-            "y": 855.0
+            "x": 10.0,
+            "y": 550.0
           },
           {
-            "x": 140.0,
-            "y": 860.0
+            "x": 10.0,
+            "y": 165.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#0",
-          "pinName": "QA1"
+          "compName": "_submodelinterface",
+          "pinName": "WE"
         },
         "pin2": {
-          "compName": "GUIand41#2",
-          "pinName": "A1"
+          "compName": "GUIand41#0",
+          "pinName": "B"
         },
+        "name": "unnamedWire#12",
         "path": [
           {
-            "x": 140.0,
-            "y": 335.0
+            "x": 15.0,
+            "y": 850.0
           },
           {
-            "x": 140.0,
-            "y": 330.0
+            "x": 15.0,
+            "y": 195.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#0",
-          "pinName": "QA2"
+          "compName": "_submodelinterface",
+          "pinName": "B0"
         },
         "pin2": {
-          "compName": "GUIand41#2",
-          "pinName": "A2"
+          "compName": "GUIdemux2#1",
+          "pinName": "S0"
         },
+        "name": "unnamedWire#2",
         "path": [
           {
-            "x": 140.0,
-            "y": 345.0
+            "x": 5.0,
+            "y": 450.0
           },
           {
-            "x": 140.0,
-            "y": 340.0
+            "x": 5.0,
+            "y": 155.0
           }
         ]
       },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIand41#0",
+          "pinName": "A4"
+        },
+        "name": "unnamedWire#11",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "GUIram2#0",
@@ -2049,6 +2439,7 @@ mograsim version: 0.1.3
           "compName": "GUIand41#2",
           "pinName": "A3"
         },
+        "name": "unnamedWire#99",
         "path": [
           {
             "x": 140.0,
@@ -2062,488 +2453,455 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIram2#0",
-          "pinName": "QA4"
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand41#2",
-          "pinName": "A4"
+          "compName": "GUIram2#2",
+          "pinName": "D2"
         },
-        "path": [
-          {
-            "x": 140.0,
-            "y": 365.0
-          },
-          {
-            "x": 140.0,
-            "y": 360.0
-          }
-        ]
+        "name": "unnamedWire#58",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIram2#1",
-          "pinName": "QA1"
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIram2#2",
+          "pinName": "D1"
+        },
+        "name": "unnamedWire#57",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIram2#2",
+          "pinName": "D3"
+        },
+        "name": "unnamedWire#59",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIand41#2",
+          "pinName": "Y4"
         },
         "pin2": {
           "compName": "GUIandor414#3",
-          "pinName": "A1"
+          "pinName": "C4"
         },
+        "name": "unnamedWire#132",
         "path": [
           {
-            "x": 140.0,
-            "y": 485.0
+            "x": 195.0,
+            "y": 360.0
           },
           {
-            "x": 140.0,
-            "y": 480.0
+            "x": 195.0,
+            "y": 415.0
+          },
+          {
+            "x": 135.0,
+            "y": 415.0
+          },
+          {
+            "x": 135.0,
+            "y": 470.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#1",
-          "pinName": "QA2"
+          "compName": "GUIandor414#3",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "GUIandor414#3",
-          "pinName": "A2"
+          "compName": "GUIandor414#4",
+          "pinName": "C1"
         },
+        "name": "unnamedWire#133",
         "path": [
           {
-            "x": 140.0,
-            "y": 495.0
+            "x": 210.0,
+            "y": 440.0
           },
           {
-            "x": 140.0,
-            "y": 490.0
+            "x": 210.0,
+            "y": 580.0
+          },
+          {
+            "x": 150.0,
+            "y": 580.0
+          },
+          {
+            "x": 150.0,
+            "y": 590.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#1",
-          "pinName": "QA3"
+          "compName": "GUIand41#2",
+          "pinName": "Y2"
         },
         "pin2": {
           "compName": "GUIandor414#3",
-          "pinName": "A3"
+          "pinName": "C2"
         },
+        "name": "unnamedWire#130",
         "path": [
           {
-            "x": 140.0,
-            "y": 505.0
+            "x": 205.0,
+            "y": 340.0
           },
           {
-            "x": 140.0,
-            "y": 500.0
+            "x": 205.0,
+            "y": 425.0
+          },
+          {
+            "x": 145.0,
+            "y": 425.0
+          },
+          {
+            "x": 145.0,
+            "y": 450.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#1",
-          "pinName": "QA4"
+          "compName": "GUIand41#2",
+          "pinName": "Y3"
         },
         "pin2": {
           "compName": "GUIandor414#3",
-          "pinName": "A4"
+          "pinName": "C3"
         },
+        "name": "unnamedWire#131",
         "path": [
+          {
+            "x": 200.0,
+            "y": 350.0
+          },
+          {
+            "x": 200.0,
+            "y": 420.0
+          },
           {
             "x": 140.0,
-            "y": 515.0
+            "y": 420.0
           },
           {
             "x": 140.0,
-            "y": 510.0
+            "y": 460.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#2",
-          "pinName": "QA1"
+          "compName": "GUIandor414#3",
+          "pinName": "Y4"
         },
         "pin2": {
           "compName": "GUIandor414#4",
-          "pinName": "A1"
+          "pinName": "C4"
         },
+        "name": "unnamedWire#136",
         "path": [
           {
-            "x": 140.0,
-            "y": 635.0
+            "x": 195.0,
+            "y": 470.0
           },
           {
-            "x": 140.0,
-            "y": 630.0
+            "x": 195.0,
+            "y": 565.0
+          },
+          {
+            "x": 135.0,
+            "y": 565.0
+          },
+          {
+            "x": 135.0,
+            "y": 620.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#2",
-          "pinName": "QA2"
+          "compName": "GUIandor414#4",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "GUIandor414#4",
-          "pinName": "A2"
+          "compName": "GUIandor414#5",
+          "pinName": "C1"
         },
+        "name": "unnamedWire#137",
         "path": [
           {
-            "x": 140.0,
-            "y": 645.0
+            "x": 210.0,
+            "y": 590.0
           },
           {
-            "x": 140.0,
-            "y": 640.0
+            "x": 210.0,
+            "y": 730.0
+          },
+          {
+            "x": 150.0,
+            "y": 730.0
+          },
+          {
+            "x": 150.0,
+            "y": 740.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#2",
-          "pinName": "QA3"
+          "compName": "GUIandor414#3",
+          "pinName": "Y2"
         },
         "pin2": {
           "compName": "GUIandor414#4",
-          "pinName": "A3"
+          "pinName": "C2"
         },
+        "name": "unnamedWire#134",
         "path": [
           {
-            "x": 140.0,
-            "y": 655.0
+            "x": 205.0,
+            "y": 450.0
           },
           {
-            "x": 140.0,
-            "y": 650.0
+            "x": 205.0,
+            "y": 575.0
+          },
+          {
+            "x": 145.0,
+            "y": 575.0
+          },
+          {
+            "x": 145.0,
+            "y": 600.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#2",
-          "pinName": "QA4"
+          "compName": "GUIandor414#3",
+          "pinName": "Y3"
         },
         "pin2": {
           "compName": "GUIandor414#4",
-          "pinName": "A4"
+          "pinName": "C3"
         },
+        "name": "unnamedWire#135",
         "path": [
           {
-            "x": 140.0,
-            "y": 665.0
+            "x": 200.0,
+            "y": 460.0
           },
           {
-            "x": 140.0,
-            "y": 660.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUIram2#3",
-          "pinName": "QA1"
-        },
-        "pin2": {
-          "compName": "GUIandor414#5",
-          "pinName": "A1"
-        },
-        "path": [
+            "x": 200.0,
+            "y": 570.0
+          },
           {
             "x": 140.0,
-            "y": 785.0
+            "y": 570.0
           },
           {
             "x": 140.0,
-            "y": 780.0
+            "y": 610.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram2#3",
-          "pinName": "QA2"
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#5",
-          "pinName": "A2"
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 140.0,
-            "y": 795.0
-          },
-          {
-            "x": 140.0,
-            "y": 790.0
-          }
-        ]
+        "name": "unnamedWire#61",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIram2#3",
-          "pinName": "QA3"
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#5",
-          "pinName": "A3"
+          "compName": "GUIram2#2",
+          "pinName": "D4"
         },
-        "path": [
-          {
-            "x": 140.0,
-            "y": 805.0
-          },
-          {
-            "x": 140.0,
-            "y": 800.0
-          }
-        ]
+        "name": "unnamedWire#60",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIram2#3",
-          "pinName": "QA4"
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#5",
-          "pinName": "A4"
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 140.0,
-            "y": 815.0
-          },
-          {
-            "x": 140.0,
-            "y": 810.0
-          }
-        ]
+        "name": "unnamedWire#63",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIand41#1",
-          "pinName": "Y1"
+          "compName": "GUIandor414#4",
+          "pinName": "Y2"
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "C1"
+          "compName": "GUIandor414#5",
+          "pinName": "C2"
         },
+        "name": "unnamedWire#138",
         "path": [
           {
-            "x": 305.0,
-            "y": 380.0
+            "x": 205.0,
+            "y": 600.0
           },
           {
-            "x": 305.0,
-            "y": 445.0
+            "x": 205.0,
+            "y": 725.0
           },
           {
-            "x": 245.0,
-            "y": 445.0
+            "x": 145.0,
+            "y": 725.0
           },
           {
-            "x": 245.0,
-            "y": 490.0
+            "x": 145.0,
+            "y": 750.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#1",
-          "pinName": "Y2"
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "C2"
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 300.0,
-            "y": 390.0
-          },
-          {
-            "x": 300.0,
-            "y": 440.0
-          },
-          {
-            "x": 240.0,
-            "y": 440.0
-          },
-          {
-            "x": 240.0,
-            "y": 500.0
-          }
-        ]
+        "name": "unnamedWire#62",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIand41#1",
+          "compName": "GUIandor414#4",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIandor414#0",
+          "compName": "GUIandor414#5",
           "pinName": "C3"
         },
+        "name": "unnamedWire#139",
         "path": [
           {
-            "x": 295.0,
-            "y": 400.0
+            "x": 200.0,
+            "y": 610.0
           },
           {
-            "x": 295.0,
-            "y": 435.0
+            "x": 200.0,
+            "y": 720.0
           },
           {
-            "x": 235.0,
-            "y": 435.0
+            "x": 140.0,
+            "y": 720.0
           },
           {
-            "x": 235.0,
-            "y": 510.0
+            "x": 140.0,
+            "y": 760.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#1",
-          "pinName": "Y4"
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#0",
-          "pinName": "C4"
+          "compName": "GUIram2#3",
+          "pinName": "D1"
         },
-        "path": [
-          {
-            "x": 290.0,
-            "y": 410.0
-          },
-          {
-            "x": 290.0,
-            "y": 430.0
-          },
-          {
-            "x": 230.0,
-            "y": 430.0
-          },
-          {
-            "x": 230.0,
-            "y": 520.0
-          }
-        ]
+        "name": "unnamedWire#65",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIandor414#0",
-          "pinName": "Y1"
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#1",
-          "pinName": "C1"
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 305.0,
-            "y": 490.0
-          },
-          {
-            "x": 305.0,
-            "y": 595.0
-          },
-          {
-            "x": 245.0,
-            "y": 595.0
-          },
-          {
-            "x": 245.0,
-            "y": 640.0
-          }
-        ]
+        "name": "unnamedWire#64",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIandor414#0",
-          "pinName": "Y2"
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#1",
-          "pinName": "C2"
+          "compName": "GUIram2#3",
+          "pinName": "D3"
         },
-        "path": [
-          {
-            "x": 300.0,
-            "y": 500.0
-          },
-          {
-            "x": 300.0,
-            "y": 590.0
-          },
-          {
-            "x": 240.0,
-            "y": 590.0
-          },
-          {
-            "x": 240.0,
-            "y": 650.0
-          }
-        ]
+        "name": "unnamedWire#67",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIandor414#0",
-          "pinName": "Y3"
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIandor414#1",
-          "pinName": "C3"
+          "compName": "GUIram2#3",
+          "pinName": "D2"
         },
-        "path": [
-          {
-            "x": 295.0,
-            "y": 510.0
-          },
-          {
-            "x": 295.0,
-            "y": 585.0
-          },
-          {
-            "x": 235.0,
-            "y": 585.0
-          },
-          {
-            "x": 235.0,
-            "y": 660.0
-          }
-        ]
+        "name": "unnamedWire#66",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIandor414#0",
-          "pinName": "Y4"
-        },
-        "pin2": {
-          "compName": "GUIandor414#1",
-          "pinName": "C4"
-        },
-        "path": [
-          {
-            "x": 290.0,
-            "y": 520.0
-          },
-          {
-            "x": 290.0,
-            "y": 580.0
-          },
-          {
-            "x": 230.0,
-            "y": 580.0
-          },
+          "compName": "_submodelinterface",
+          "pinName": "D1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "name": "unnamedWire#69",
+        "path": [
           {
-            "x": 230.0,
-            "y": 670.0
+            "x": 60.0,
+            "y": 950.0
           }
         ]
       },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIram2#3",
+          "pinName": "D4"
+        },
+        "name": "unnamedWire#68",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "GUIandor414#1",
@@ -2553,6 +2911,7 @@ mograsim version: 0.1.3
           "compName": "GUIandor414#2",
           "pinName": "C1"
         },
+        "name": "unnamedWire#121",
         "path": [
           {
             "x": 305.0,
@@ -2581,6 +2940,7 @@ mograsim version: 0.1.3
           "compName": "GUIandor414#2",
           "pinName": "C2"
         },
+        "name": "unnamedWire#122",
         "path": [
           {
             "x": 300.0,
@@ -2602,57 +2962,30 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIandor414#1",
-          "pinName": "Y3"
-        },
-        "pin2": {
-          "compName": "GUIandor414#2",
-          "pinName": "C3"
-        },
-        "path": [
-          {
-            "x": 295.0,
-            "y": 660.0
-          },
-          {
-            "x": 295.0,
-            "y": 735.0
-          },
-          {
-            "x": 235.0,
-            "y": 735.0
-          },
-          {
-            "x": 235.0,
-            "y": 810.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUIandor414#1",
+          "compName": "GUIandor414#0",
           "pinName": "Y4"
         },
         "pin2": {
-          "compName": "GUIandor414#2",
+          "compName": "GUIandor414#1",
           "pinName": "C4"
         },
+        "name": "unnamedWire#120",
         "path": [
           {
             "x": 290.0,
-            "y": 670.0
+            "y": 520.0
           },
           {
             "x": 290.0,
-            "y": 730.0
+            "y": 580.0
           },
           {
             "x": 230.0,
-            "y": 730.0
+            "y": 580.0
           },
           {
             "x": 230.0,
-            "y": 820.0
+            "y": 670.0
           }
         ]
       },
@@ -2665,6 +2998,7 @@ mograsim version: 0.1.3
           "compName": "_submodelinterface",
           "pinName": "QB1"
         },
+        "name": "unnamedWire#125",
         "path": [
           {
             "x": 330.0,
@@ -2685,6 +3019,7 @@ mograsim version: 0.1.3
           "compName": "_submodelinterface",
           "pinName": "QB2"
         },
+        "name": "unnamedWire#126",
         "path": [
           {
             "x": 335.0,
@@ -2698,500 +3033,471 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIandor414#2",
-          "pinName": "Y3"
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "QB3"
-        },
-        "path": [
-          {
-            "x": 340.0,
-            "y": 810.0
-          },
-          {
-            "x": 340.0,
-            "y": 650.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUIandor414#2",
-          "pinName": "Y4"
-        },
-        "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "QB4"
-        },
-        "path": [
-          {
-            "x": 345.0,
-            "y": 820.0
-          },
-          {
-            "x": 345.0,
-            "y": 750.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUIand41#2",
-          "pinName": "Y1"
-        },
-        "pin2": {
-          "compName": "GUIandor414#3",
-          "pinName": "C1"
-        },
-        "path": [
-          {
-            "x": 210.0,
-            "y": 330.0
-          },
-          {
-            "x": 210.0,
-            "y": 430.0
-          },
-          {
-            "x": 150.0,
-            "y": 430.0
-          },
-          {
-            "x": 150.0,
-            "y": 440.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUIand41#2",
-          "pinName": "Y2"
+          "pinName": "D2"
         },
         "pin2": {
-          "compName": "GUIandor414#3",
-          "pinName": "C2"
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
         },
+        "name": "unnamedWire#70",
         "path": [
           {
-            "x": 205.0,
-            "y": 340.0
-          },
-          {
-            "x": 205.0,
-            "y": 425.0
-          },
-          {
-            "x": 145.0,
-            "y": 425.0
-          },
-          {
-            "x": 145.0,
-            "y": 450.0
+            "x": 65.0,
+            "y": 1050.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand41#2",
+          "compName": "GUIandor414#1",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIandor414#3",
+          "compName": "GUIandor414#2",
           "pinName": "C3"
         },
+        "name": "unnamedWire#123",
         "path": [
           {
-            "x": 200.0,
-            "y": 350.0
-          },
-          {
-            "x": 200.0,
-            "y": 420.0
-          },
-          {
-            "x": 140.0,
-            "y": 420.0
-          },
-          {
-            "x": 140.0,
-            "y": 460.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUIand41#2",
-          "pinName": "Y4"
-        },
-        "pin2": {
-          "compName": "GUIandor414#3",
-          "pinName": "C4"
-        },
-        "path": [
-          {
-            "x": 195.0,
-            "y": 360.0
-          },
-          {
-            "x": 195.0,
-            "y": 415.0
-          },
-          {
-            "x": 135.0,
-            "y": 415.0
-          },
-          {
-            "x": 135.0,
-            "y": 470.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUIandor414#3",
-          "pinName": "Y1"
-        },
-        "pin2": {
-          "compName": "GUIandor414#4",
-          "pinName": "C1"
-        },
-        "path": [
-          {
-            "x": 210.0,
-            "y": 440.0
-          },
-          {
-            "x": 210.0,
-            "y": 580.0
-          },
-          {
-            "x": 150.0,
-            "y": 580.0
-          },
-          {
-            "x": 150.0,
-            "y": 590.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUIandor414#3",
-          "pinName": "Y2"
-        },
-        "pin2": {
-          "compName": "GUIandor414#4",
-          "pinName": "C2"
-        },
-        "path": [
-          {
-            "x": 205.0,
-            "y": 450.0
+            "x": 295.0,
+            "y": 660.0
           },
           {
-            "x": 205.0,
-            "y": 575.0
+            "x": 295.0,
+            "y": 735.0
           },
           {
-            "x": 145.0,
-            "y": 575.0
+            "x": 235.0,
+            "y": 735.0
           },
           {
-            "x": 145.0,
-            "y": 600.0
+            "x": 235.0,
+            "y": 810.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#3",
-          "pinName": "Y3"
+          "compName": "GUIandor414#1",
+          "pinName": "Y4"
         },
         "pin2": {
-          "compName": "GUIandor414#4",
-          "pinName": "C3"
+          "compName": "GUIandor414#2",
+          "pinName": "C4"
         },
+        "name": "unnamedWire#124",
         "path": [
           {
-            "x": 200.0,
-            "y": 460.0
+            "x": 290.0,
+            "y": 670.0
           },
           {
-            "x": 200.0,
-            "y": 570.0
+            "x": 290.0,
+            "y": 730.0
           },
           {
-            "x": 140.0,
-            "y": 570.0
+            "x": 230.0,
+            "y": 730.0
           },
           {
-            "x": 140.0,
-            "y": 610.0
+            "x": 230.0,
+            "y": 820.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#3",
-          "pinName": "Y4"
+          "compName": "_submodelinterface",
+          "pinName": "D4"
         },
         "pin2": {
-          "compName": "GUIandor414#4",
-          "pinName": "C4"
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
         },
+        "name": "unnamedWire#72",
         "path": [
           {
-            "x": 195.0,
-            "y": 470.0
-          },
-          {
-            "x": 195.0,
-            "y": 565.0
-          },
-          {
-            "x": 135.0,
-            "y": 565.0
-          },
-          {
-            "x": 135.0,
-            "y": 620.0
+            "x": 75.0,
+            "y": 1250.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#4",
+          "compName": "GUIand41#2",
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "GUIandor414#5",
+          "compName": "GUIandor414#3",
           "pinName": "C1"
         },
+        "name": "unnamedWire#129",
         "path": [
           {
             "x": 210.0,
-            "y": 590.0
+            "y": 330.0
           },
           {
             "x": 210.0,
-            "y": 730.0
+            "y": 430.0
           },
           {
             "x": 150.0,
-            "y": 730.0
+            "y": 430.0
           },
           {
             "x": 150.0,
-            "y": 740.0
+            "y": 440.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#4",
-          "pinName": "Y2"
+          "compName": "_submodelinterface",
+          "pinName": "D3"
         },
         "pin2": {
-          "compName": "GUIandor414#5",
-          "pinName": "C2"
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
         },
+        "name": "unnamedWire#71",
         "path": [
           {
-            "x": 205.0,
-            "y": 600.0
-          },
-          {
-            "x": 205.0,
-            "y": 725.0
-          },
+            "x": 70.0,
+            "y": 1150.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIdemux2#0",
+          "pinName": "Y01"
+        },
+        "pin2": {
+          "compName": "GUIandor414#3",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#74",
+        "path": [
           {
-            "x": 145.0,
-            "y": 725.0
+            "x": 130.0,
+            "y": 60.0
           },
           {
-            "x": 145.0,
-            "y": 750.0
+            "x": 130.0,
+            "y": 520.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#4",
+          "compName": "GUIandor414#2",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIandor414#5",
-          "pinName": "C3"
+          "compName": "_submodelinterface",
+          "pinName": "QB3"
         },
+        "name": "unnamedWire#127",
         "path": [
           {
-            "x": 200.0,
-            "y": 610.0
-          },
-          {
-            "x": 200.0,
-            "y": 720.0
-          },
-          {
-            "x": 140.0,
-            "y": 720.0
+            "x": 340.0,
+            "y": 810.0
           },
           {
-            "x": 140.0,
-            "y": 760.0
+            "x": 340.0,
+            "y": 650.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#4",
-          "pinName": "Y4"
+          "compName": "GUIdemux2#0",
+          "pinName": "Y00"
         },
         "pin2": {
-          "compName": "GUIandor414#5",
-          "pinName": "C4"
+          "compName": "GUIand41#2",
+          "pinName": "B"
         },
+        "name": "unnamedWire#73",
         "path": [
-          {
-            "x": 195.0,
-            "y": 620.0
-          },
-          {
-            "x": 195.0,
-            "y": 715.0
-          },
           {
             "x": 135.0,
-            "y": 715.0
+            "y": 50.0
           },
           {
             "x": 135.0,
-            "y": 770.0
+            "y": 370.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#5",
-          "pinName": "Y1"
+          "compName": "GUIandor414#2",
+          "pinName": "Y4"
         },
         "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "QA1"
+          "pinName": "QB4"
         },
+        "name": "unnamedWire#128",
         "path": [
           {
-            "x": 210.0,
-            "y": 740.0
-          },
-          {
-            "x": 210.0,
-            "y": 880.0
-          },
-          {
-            "x": 310.0,
-            "y": 880.0
+            "x": 345.0,
+            "y": 820.0
           },
           {
-            "x": 310.0,
-            "y": 50.0
+            "x": 345.0,
+            "y": 750.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#5",
-          "pinName": "Y2"
+          "compName": "GUIdemux2#0",
+          "pinName": "Y11"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "QA2"
+          "compName": "GUIandor414#5",
+          "pinName": "B"
         },
+        "name": "unnamedWire#76",
         "path": [
           {
-            "x": 205.0,
-            "y": 750.0
-          },
-          {
-            "x": 205.0,
-            "y": 885.0
-          },
-          {
-            "x": 315.0,
-            "y": 885.0
+            "x": 120.0,
+            "y": 80.0
           },
           {
-            "x": 315.0,
-            "y": 150.0
+            "x": 120.0,
+            "y": 820.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#5",
-          "pinName": "Y3"
+          "compName": "GUIdemux2#0",
+          "pinName": "Y10"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "QA3"
+          "compName": "GUIandor414#4",
+          "pinName": "B"
         },
+        "name": "unnamedWire#75",
         "path": [
           {
-            "x": 200.0,
-            "y": 760.0
-          },
-          {
-            "x": 200.0,
-            "y": 890.0
-          },
-          {
-            "x": 320.0,
-            "y": 890.0
+            "x": 125.0,
+            "y": 70.0
           },
           {
-            "x": 320.0,
-            "y": 250.0
+            "x": 125.0,
+            "y": 670.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIandor414#5",
-          "pinName": "Y4"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "QA4"
+          "compName": "GUIandor414#0",
+          "pinName": "B"
         },
+        "name": "unnamedWire#78",
         "path": [
           {
-            "x": 195.0,
-            "y": 770.0
-          },
-          {
-            "x": 195.0,
-            "y": 895.0
-          },
-          {
-            "x": 325.0,
-            "y": 895.0
-          },
+            "x": 225.0,
+            "y": 570.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIand41#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#77",
+        "path": [
           {
-            "x": 325.0,
-            "y": 350.0
+            "x": 230.0,
+            "y": 420.0
           }
         ]
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIram4",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {
+      "c00": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#0"
+        }
+      },
+      "c11": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#3"
+        }
+      },
+      "c10": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#2"
+        }
+      },
+      "c01": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#1"
+        }
+      },
+      "c1000": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#0",
+          "prefix": "c10"
+        }
+      },
+      "c1011": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#3",
+          "prefix": "c10"
+        }
+      },
+      "c1110": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#2",
+          "prefix": "c11"
+        }
+      },
+      "c1001": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#1",
+          "prefix": "c10"
+        }
+      },
+      "c1100": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#0",
+          "prefix": "c11"
+        }
+      },
+      "c1111": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#3",
+          "prefix": "c11"
+        }
+      },
+      "c0000": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#0",
+          "prefix": "c00"
+        }
+      },
+      "c0011": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#3",
+          "prefix": "c00"
+        }
+      },
+      "c0110": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#2",
+          "prefix": "c01"
+        }
+      },
+      "c0010": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#2",
+          "prefix": "c00"
+        }
+      },
+      "c1010": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#2",
+          "prefix": "c10"
+        }
+      },
+      "c0101": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#1",
+          "prefix": "c01"
+        }
+      },
+      "c0001": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#1",
+          "prefix": "c00"
+        }
+      },
+      "c0100": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#0",
+          "prefix": "c01"
+        }
+      },
+      "c0111": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#3",
+          "prefix": "c01"
+        }
+      },
+      "c1101": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram2#1",
+          "prefix": "c11"
+        }
+      }
+    },
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler",
+        "params": {
+          "vectorPartTargets": [
+            "c00.q",
+            "c01.q",
+            "c10.q",
+            "c11.q"
+          ],
+          "vectorPartLengthes": [
+            16,
+            16,
+            16,
+            16
+          ]
+        }
+      }
+    }
   }
 }
\ No newline at end of file
index 219e1b9..1693ebf 100644 (file)
@@ -120,673 +120,706 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 20.0,
           "y": 52.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 20.0,
           "y": 2.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#3",
         "pos": {
           "x": 20.0,
           "y": 152.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#3",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
         "pos": {
           "x": 20.0,
           "y": 102.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#2",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#11",
         "pos": {
           "x": 65.0,
           "y": 77.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#11",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#10",
         "pos": {
           "x": 65.0,
           "y": 52.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#10",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 6.5,
           "y": 66.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 6.5,
           "y": 16.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
           "x": 4.0,
           "y": 41.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 6.5,
           "y": 116.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
         "pos": {
           "x": 4.0,
           "y": 141.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
         "pos": {
           "x": 4.0,
           "y": 91.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#4",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#9",
         "pos": {
           "x": 65.0,
           "y": 27.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#9",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#8",
         "pos": {
           "x": 65.0,
           "y": 2.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#8",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#5",
         "pos": {
           "x": 20.0,
           "y": 77.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#5",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#4",
         "pos": {
           "x": 20.0,
           "y": 27.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#4",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#7",
         "pos": {
           "x": 20.0,
           "y": 177.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#7",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#6",
         "pos": {
           "x": 20.0,
           "y": 127.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#6",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A1"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "A"
+          "compName": "GUINandGate#2",
+          "pinName": "B"
         },
-        "path": [
-          {
-            "x": 15.0,
-            "y": 62.5
-          },
-          {
-            "x": 15.0,
-            "y": 7.5
-          }
-        ]
+        "name": "unnamedWire#14"
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A2"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
           "compName": "GUINandGate#1",
-          "pinName": "A"
+          "pinName": "B"
         },
+        "name": "unnamedWire#13"
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#16"
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#3",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#15",
         "path": [
           {
-            "x": 17.5,
-            "y": 87.5
-          },
-          {
-            "x": 17.5,
-            "y": 57.5
+            "x": 7.5,
+            "y": 167.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A3"
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "A"
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#18"
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#4",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#17"
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#5",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#19"
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#7",
+          "pinName": "B"
         },
+        "name": "unnamedWire#21",
         "path": [
           {
-            "x": 17.5,
-            "y": 112.5
-          },
-          {
-            "x": 17.5,
-            "y": 107.5
+            "x": 5.0,
+            "y": 192.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A4"
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#3",
-          "pinName": "A"
+          "compName": "GUINandGate#6",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#20"
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#4",
+          "pinName": "Y"
         },
+        "pin2": {
+          "compName": "GUINandGate#8",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#23",
         "path": [
           {
-            "x": 17.5,
-            "y": 137.5
+            "x": 45.0,
+            "y": 37.5
           },
           {
-            "x": 17.5,
-            "y": 157.5
+            "x": 45.0,
+            "y": 17.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B1"
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#4",
+          "compName": "GUINandGate#8",
           "pinName": "A"
         },
+        "name": "unnamedWire#22",
         "path": [
           {
-            "x": 10.0,
-            "y": 162.5
+            "x": 42.5,
+            "y": 12.5
           },
           {
-            "x": 10.0,
-            "y": 32.5
+            "x": 42.5,
+            "y": 7.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B2"
+          "compName": "GUINandGate#5",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#5",
-          "pinName": "A"
+          "compName": "GUINandGate#9",
+          "pinName": "B"
         },
+        "name": "unnamedWire#25",
         "path": [
           {
-            "x": 12.5,
-            "y": 187.5
+            "x": 50.0,
+            "y": 87.5
           },
           {
-            "x": 12.5,
-            "y": 82.5
+            "x": 50.0,
+            "y": 42.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B3"
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#6",
+          "compName": "GUINandGate#9",
           "pinName": "A"
         },
+        "name": "unnamedWire#24",
         "path": [
           {
-            "x": 15.0,
-            "y": 212.5
+            "x": 47.5,
+            "y": 62.5
           },
           {
-            "x": 15.0,
-            "y": 132.5
+            "x": 47.5,
+            "y": 32.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B4"
+          "compName": "GUINandGate#6",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#7",
-          "pinName": "A"
+          "compName": "GUINandGate#10",
+          "pinName": "B"
         },
+        "name": "unnamedWire#27",
         "path": [
           {
-            "x": 10.0,
-            "y": 237.5
+            "x": 55.0,
+            "y": 137.5
           },
           {
-            "x": 10.0,
-            "y": 182.5
+            "x": 55.0,
+            "y": 67.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "SA"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        }
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "SB"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
-        }
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
-        }
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#2",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "B"
-        }
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUINandGate#10",
+          "pinName": "A"
         },
-        "pin2": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
-        }
+        "name": "unnamedWire#26",
+        "path": [
+          {
+            "x": 52.5,
+            "y": 112.5
+          },
+          {
+            "x": 52.5,
+            "y": 57.5
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUINandGate#7",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#1",
+          "compName": "GUINandGate#11",
           "pinName": "B"
-        }
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
         },
-        "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "B"
-        }
+        "name": "unnamedWire#29",
+        "path": [
+          {
+            "x": 60.0,
+            "y": 187.5
+          },
+          {
+            "x": 60.0,
+            "y": 92.5
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUINandGate#3",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#3",
-          "pinName": "B"
+          "compName": "GUINandGate#11",
+          "pinName": "A"
         },
+        "name": "unnamedWire#28",
         "path": [
           {
-            "x": 7.5,
-            "y": 167.5
+            "x": 57.5,
+            "y": 162.5
+          },
+          {
+            "x": 57.5,
+            "y": 82.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "SB"
         },
         "pin2": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
-        }
-      },
-      {
-        "pin1": {
           "compName": "WireCrossPoint#3",
           "pinName": ""
         },
-        "pin2": {
-          "compName": "GUINandGate#4",
-          "pinName": "B"
-        }
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
-        }
+        "name": "unnamedWire#9"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "SA"
         },
         "pin2": {
-          "compName": "GUINandGate#5",
-          "pinName": "B"
-        }
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
-        "pin2": {
-          "compName": "GUINandGate#6",
-          "pinName": "B"
-        }
+        "name": "unnamedWire#8"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "B4"
         },
         "pin2": {
           "compName": "GUINandGate#7",
-          "pinName": "B"
+          "pinName": "A"
         },
+        "name": "unnamedWire#7",
         "path": [
           {
-            "x": 5.0,
-            "y": 192.5
+            "x": 10.0,
+            "y": 237.5
+          },
+          {
+            "x": 10.0,
+            "y": 182.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "B3"
         },
         "pin2": {
-          "compName": "GUINandGate#8",
+          "compName": "GUINandGate#6",
           "pinName": "A"
         },
+        "name": "unnamedWire#6",
         "path": [
           {
-            "x": 42.5,
-            "y": 12.5
+            "x": 15.0,
+            "y": 212.5
           },
           {
-            "x": 42.5,
-            "y": 7.5
+            "x": 15.0,
+            "y": 132.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#4",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "A2"
         },
         "pin2": {
-          "compName": "GUINandGate#8",
-          "pinName": "B"
+          "compName": "GUINandGate#1",
+          "pinName": "A"
         },
+        "name": "unnamedWire#1",
         "path": [
           {
-            "x": 45.0,
-            "y": 37.5
+            "x": 17.5,
+            "y": 87.5
           },
           {
-            "x": 45.0,
-            "y": 17.5
+            "x": 17.5,
+            "y": 57.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#1",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "A1"
         },
         "pin2": {
-          "compName": "GUINandGate#9",
+          "compName": "GUINandGate#0",
           "pinName": "A"
         },
+        "name": "unnamedWire#0",
         "path": [
           {
-            "x": 47.5,
+            "x": 15.0,
             "y": 62.5
           },
           {
-            "x": 47.5,
-            "y": 32.5
+            "x": 15.0,
+            "y": 7.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#5",
+          "compName": "GUINandGate#8",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#9",
-          "pinName": "B"
+          "compName": "_submodelinterface",
+          "pinName": "Y1"
         },
-        "path": [
-          {
-            "x": 50.0,
-            "y": 87.5
-          },
-          {
-            "x": 50.0,
-            "y": 42.5
-          }
-        ]
+        "name": "unnamedWire#30",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#2",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "B2"
         },
         "pin2": {
-          "compName": "GUINandGate#10",
+          "compName": "GUINandGate#5",
           "pinName": "A"
         },
+        "name": "unnamedWire#5",
         "path": [
           {
-            "x": 52.5,
-            "y": 112.5
+            "x": 12.5,
+            "y": 187.5
           },
           {
-            "x": 52.5,
-            "y": 57.5
+            "x": 12.5,
+            "y": 82.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#6",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#10",
-          "pinName": "B"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 55.0,
-            "y": 137.5
-          },
-          {
-            "x": 55.0,
-            "y": 67.5
-          }
-        ]
+        "name": "unnamedWire#10"
       },
       {
         "pin1": {
-          "compName": "GUINandGate#3",
+          "compName": "GUINandGate#10",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#11",
+          "compName": "_submodelinterface",
+          "pinName": "Y3"
+        },
+        "name": "unnamedWire#32",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "B1"
+        },
+        "pin2": {
+          "compName": "GUINandGate#4",
           "pinName": "A"
         },
+        "name": "unnamedWire#4",
         "path": [
           {
-            "x": 57.5,
+            "x": 10.0,
             "y": 162.5
           },
           {
-            "x": 57.5,
-            "y": 82.5
+            "x": 10.0,
+            "y": 32.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#7",
+          "compName": "GUINandGate#9",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#11",
-          "pinName": "B"
+          "compName": "_submodelinterface",
+          "pinName": "Y2"
         },
+        "name": "unnamedWire#31",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "A4"
+        },
+        "pin2": {
+          "compName": "GUINandGate#3",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#3",
         "path": [
           {
-            "x": 60.0,
-            "y": 187.5
+            "x": 17.5,
+            "y": 137.5
           },
           {
-            "x": 60.0,
-            "y": 92.5
+            "x": 17.5,
+            "y": 157.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#8",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y1"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
-        "path": []
+        "name": "unnamedWire#12"
       },
       {
         "pin1": {
-          "compName": "GUINandGate#9",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "A3"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y2"
+          "compName": "GUINandGate#2",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 17.5,
+            "y": 112.5
+          },
+          {
+            "x": 17.5,
+            "y": 107.5
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#10",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y3"
+          "compName": "GUINandGate#0",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#11"
       },
       {
         "pin1": {
@@ -797,16 +830,18 @@ mograsim version: 0.1.3
           "compName": "_submodelinterface",
           "pinName": "Y4"
         },
+        "name": "unnamedWire#33",
         "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIsel2_4",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 1cae789..cb7c3b4 100644 (file)
@@ -160,118 +160,118 @@ mograsim version: 0.1.3
     "innerScale": 0.2,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 50.0,
           "y": 620.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 50.0,
           "y": 570.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#3",
         "pos": {
           "x": 50.0,
           "y": 720.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#3",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
         "pos": {
           "x": 50.0,
           "y": 670.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#2",
         "params": 1
       },
       {
+        "id": "GUInot4",
+        "name": "GUInot4#0",
         "pos": {
           "x": 75.0,
           "y": 250.0
-        },
-        "id": "GUInot4",
-        "name": "GUInot4#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 29.0,
           "y": 634.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 29.0,
           "y": 584.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 29.0,
           "y": 684.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#5",
         "pos": {
           "x": 152.5,
           "y": 65.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#5",
         "params": 1
       },
       {
+        "id": "GUIsel2_4",
+        "name": "GUIsel2_4#0",
         "pos": {
           "x": 35.0,
           "y": 250.0
-        },
-        "id": "GUIsel2_4",
-        "name": "GUIsel2_4#0"
+        }
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#4",
         "pos": {
           "x": 152.5,
           "y": 15.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#4",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#7",
         "pos": {
           "x": 152.5,
           "y": 165.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#7",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#6",
         "pos": {
           "x": 152.5,
           "y": 115.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#6",
         "params": 1
       }
     ],
@@ -279,505 +279,515 @@ mograsim version: 0.1.3
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "SA"
+          "pinName": "SC"
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "SA"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
+        "name": "unnamedWire#14",
         "path": [
           {
-            "x": 25.0,
-            "y": 25.0
-          },
-          {
-            "x": 25.0,
-            "y": 255.0
+            "x": 30.0,
+            "y": 125.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "SB"
+          "compName": "GUINandGate#7",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "SB"
-        },
-        "path": [
-          {
-            "x": 20.0,
-            "y": 75.0
-          },
-          {
-            "x": 20.0,
-            "y": 265.0
-          }
-        ]
-      },
-      {
-        "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "A1"
-        },
-        "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "A1"
+          "pinName": "Y4"
         },
-        "path": [
-          {
-            "x": 15.0,
-            "y": 175.0
-          },
-          {
-            "x": 15.0,
-            "y": 275.0
-          }
-        ]
+        "name": "unnamedWire#36",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A2"
+          "compName": "GUIsel2_4#0",
+          "pinName": "Y4"
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "A2"
+          "compName": "GUInot4#0",
+          "pinName": "A4"
         },
-        "path": [
-          {
-            "x": 10.0,
-            "y": 225.0
-          },
-          {
-            "x": 10.0,
-            "y": 285.0
-          }
-        ]
+        "name": "unnamedWire#13",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A3"
+          "compName": "GUINandGate#6",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "A3"
+          "compName": "_submodelinterface",
+          "pinName": "Y3"
         },
-        "path": [
-          {
-            "x": 5.0,
-            "y": 275.0
-          },
-          {
-            "x": 5.0,
-            "y": 295.0
-          }
-        ]
+        "name": "unnamedWire#35",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A4"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "A4"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
+        "name": "unnamedWire#16",
         "path": [
           {
-            "x": 5.0,
-            "y": 325.0
-          },
-          {
-            "x": 5.0,
-            "y": 305.0
+            "x": 30.0,
+            "y": 125.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B1"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "B1"
+          "compName": "GUINandGate#0",
+          "pinName": "B"
         },
-        "path": [
-          {
-            "x": 10.0,
-            "y": 375.0
-          },
-          {
-            "x": 10.0,
-            "y": 315.0
-          }
-        ]
+        "name": "unnamedWire#15",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B2"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "B2"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
+        "name": "unnamedWire#18",
         "path": [
           {
-            "x": 15.0,
-            "y": 425.0
-          },
-          {
-            "x": 15.0,
-            "y": 325.0
+            "x": 30.0,
+            "y": 125.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B3"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "B3"
+          "compName": "GUINandGate#1",
+          "pinName": "B"
         },
-        "path": [
-          {
-            "x": 20.0,
-            "y": 475.0
-          },
-          {
-            "x": 20.0,
-            "y": 335.0
-          }
-        ]
+        "name": "unnamedWire#17",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B4"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "B4"
+          "compName": "GUINandGate#2",
+          "pinName": "B"
         },
-        "path": [
-          {
-            "x": 25.0,
-            "y": 525.0
-          },
-          {
-            "x": 25.0,
-            "y": 345.0
-          }
-        ]
+        "name": "unnamedWire#19",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "Y1"
+          "compName": "_submodelinterface",
+          "pinName": "C1"
         },
         "pin2": {
-          "compName": "GUInot4#0",
-          "pinName": "A1"
+          "compName": "GUINandGate#0",
+          "pinName": "A"
         },
+        "name": "unnamedWire#21",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "Y2"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUInot4#0",
-          "pinName": "A2"
+          "compName": "GUINandGate#3",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#20",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 735.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "Y3"
+          "compName": "_submodelinterface",
+          "pinName": "C3"
         },
         "pin2": {
-          "compName": "GUInot4#0",
-          "pinName": "A3"
+          "compName": "GUINandGate#2",
+          "pinName": "A"
         },
+        "name": "unnamedWire#23",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "Y4"
+          "compName": "_submodelinterface",
+          "pinName": "C2"
         },
         "pin2": {
-          "compName": "GUInot4#0",
-          "pinName": "A4"
+          "compName": "GUINandGate#1",
+          "pinName": "A"
         },
+        "name": "unnamedWire#22",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "SC"
+          "compName": "GUInot4#0",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#4",
+          "pinName": "A"
         },
+        "name": "unnamedWire#25",
         "path": [
           {
-            "x": 30.0,
-            "y": 125.0
+            "x": 115.0,
+            "y": 255.0
+          },
+          {
+            "x": 115.0,
+            "y": 20.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "C4"
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "B"
+          "compName": "GUINandGate#3",
+          "pinName": "A"
         },
+        "name": "unnamedWire#24",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUInot4#0",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUINandGate#6",
+          "pinName": "A"
         },
+        "name": "unnamedWire#27",
         "path": [
           {
-            "x": 30.0,
-            "y": 125.0
+            "x": 125.0,
+            "y": 275.0
+          },
+          {
+            "x": 125.0,
+            "y": 120.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUInot4#0",
+          "pinName": "Y2"
         },
         "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "B"
+          "compName": "GUINandGate#5",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#26",
+        "path": [
+          {
+            "x": 120.0,
+            "y": 265.0
+          },
+          {
+            "x": 120.0,
+            "y": 70.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUINandGate#4",
+          "pinName": "B"
         },
+        "name": "unnamedWire#29",
         "path": [
           {
-            "x": 30.0,
-            "y": 125.0
+            "x": 135.0,
+            "y": 580.0
+          },
+          {
+            "x": 135.0,
+            "y": 30.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUInot4#0",
+          "pinName": "Y4"
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "B"
+          "compName": "GUINandGate#7",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#28",
+        "path": [
+          {
+            "x": 130.0,
+            "y": 285.0
+          },
+          {
+            "x": 130.0,
+            "y": 170.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "B4"
         },
         "pin2": {
-          "compName": "GUINandGate#3",
-          "pinName": "B"
+          "compName": "GUIsel2_4#0",
+          "pinName": "B4"
         },
+        "name": "unnamedWire#9",
         "path": [
           {
-            "x": 30.0,
-            "y": 735.0
+            "x": 25.0,
+            "y": 525.0
+          },
+          {
+            "x": 25.0,
+            "y": 345.0
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "C1"
+          "pinName": "B3"
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "A"
+          "compName": "GUIsel2_4#0",
+          "pinName": "B3"
         },
-        "path": []
+        "name": "unnamedWire#8",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 475.0
+          },
+          {
+            "x": 20.0,
+            "y": 335.0
+          }
+        ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "C2"
+          "pinName": "B2"
         },
         "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "A"
+          "compName": "GUIsel2_4#0",
+          "pinName": "B2"
         },
-        "path": []
+        "name": "unnamedWire#7",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 425.0
+          },
+          {
+            "x": 15.0,
+            "y": 325.0
+          }
+        ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "C3"
+          "pinName": "B1"
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "A"
+          "compName": "GUIsel2_4#0",
+          "pinName": "B1"
         },
-        "path": []
+        "name": "unnamedWire#6",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 375.0
+          },
+          {
+            "x": 10.0,
+            "y": 315.0
+          }
+        ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "C4"
+          "pinName": "SB"
         },
         "pin2": {
-          "compName": "GUINandGate#3",
-          "pinName": "A"
+          "compName": "GUIsel2_4#0",
+          "pinName": "SB"
         },
-        "path": []
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 75.0
+          },
+          {
+            "x": 20.0,
+            "y": 265.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUInot4#0",
-          "pinName": "Y1"
+          "compName": "_submodelinterface",
+          "pinName": "SA"
         },
         "pin2": {
-          "compName": "GUINandGate#4",
-          "pinName": "A"
+          "compName": "GUIsel2_4#0",
+          "pinName": "SA"
         },
+        "name": "unnamedWire#0",
         "path": [
           {
-            "x": 115.0,
-            "y": 255.0
+            "x": 25.0,
+            "y": 25.0
           },
           {
-            "x": 115.0,
-            "y": 20.0
+            "x": 25.0,
+            "y": 255.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUInot4#0",
-          "pinName": "Y2"
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
         },
         "pin2": {
           "compName": "GUINandGate#5",
-          "pinName": "A"
+          "pinName": "B"
         },
+        "name": "unnamedWire#30",
         "path": [
           {
-            "x": 120.0,
-            "y": 265.0
+            "x": 140.0,
+            "y": 630.0
           },
           {
-            "x": 120.0,
-            "y": 70.0
+            "x": 140.0,
+            "y": 80.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUInot4#0",
-          "pinName": "Y3"
+          "compName": "_submodelinterface",
+          "pinName": "A4"
         },
         "pin2": {
-          "compName": "GUINandGate#6",
-          "pinName": "A"
+          "compName": "GUIsel2_4#0",
+          "pinName": "A4"
         },
+        "name": "unnamedWire#5",
         "path": [
           {
-            "x": 125.0,
-            "y": 275.0
+            "x": 5.0,
+            "y": 325.0
           },
           {
-            "x": 125.0,
-            "y": 120.0
+            "x": 5.0,
+            "y": 305.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUInot4#0",
-          "pinName": "Y4"
+          "compName": "GUIsel2_4#0",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "GUINandGate#7",
-          "pinName": "A"
+          "compName": "GUInot4#0",
+          "pinName": "A1"
         },
-        "path": [
-          {
-            "x": 130.0,
-            "y": 285.0
-          },
-          {
-            "x": 130.0,
-            "y": 170.0
-          }
-        ]
+        "name": "unnamedWire#10",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
+          "compName": "GUINandGate#3",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#4",
+          "compName": "GUINandGate#7",
           "pinName": "B"
         },
+        "name": "unnamedWire#32",
         "path": [
           {
-            "x": 135.0,
-            "y": 580.0
+            "x": 150.0,
+            "y": 730.0
           },
           {
-            "x": 135.0,
-            "y": 30.0
+            "x": 150.0,
+            "y": 180.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#1",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "A3"
         },
         "pin2": {
-          "compName": "GUINandGate#5",
-          "pinName": "B"
+          "compName": "GUIsel2_4#0",
+          "pinName": "A3"
         },
+        "name": "unnamedWire#4",
         "path": [
           {
-            "x": 140.0,
-            "y": 630.0
+            "x": 5.0,
+            "y": 275.0
           },
           {
-            "x": 140.0,
-            "y": 80.0
+            "x": 5.0,
+            "y": 295.0
           }
         ]
       },
@@ -790,6 +800,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#6",
           "pinName": "B"
         },
+        "name": "unnamedWire#31",
         "path": [
           {
             "x": 145.0,
@@ -803,33 +814,35 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUINandGate#3",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "A2"
         },
         "pin2": {
-          "compName": "GUINandGate#7",
-          "pinName": "B"
+          "compName": "GUIsel2_4#0",
+          "pinName": "A2"
         },
+        "name": "unnamedWire#3",
         "path": [
           {
-            "x": 150.0,
-            "y": 730.0
+            "x": 10.0,
+            "y": 225.0
           },
           {
-            "x": 150.0,
-            "y": 180.0
+            "x": 10.0,
+            "y": 285.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#4",
-          "pinName": "Y"
+          "compName": "GUIsel2_4#0",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y1"
+          "compName": "GUInot4#0",
+          "pinName": "A3"
         },
+        "name": "unnamedWire#12",
         "path": []
       },
       {
@@ -841,38 +854,63 @@ mograsim version: 0.1.3
           "compName": "_submodelinterface",
           "pinName": "Y2"
         },
+        "name": "unnamedWire#34",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#6",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "A1"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y3"
+          "compName": "GUIsel2_4#0",
+          "pinName": "A1"
+        },
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 175.0
+          },
+          {
+            "x": 15.0,
+            "y": 275.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIsel2_4#0",
+          "pinName": "Y2"
+        },
+        "pin2": {
+          "compName": "GUInot4#0",
+          "pinName": "A2"
         },
+        "name": "unnamedWire#11",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#7",
+          "compName": "GUINandGate#4",
           "pinName": "Y"
         },
         "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "Y4"
+          "pinName": "Y1"
         },
+        "name": "unnamedWire#33",
         "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIsel3_4",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 9e3ec59..a15e5df 100644 (file)
@@ -32,91 +32,97 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 35.0,
           "y": 2.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 7.5,
           "y": 15.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#3",
         "pos": {
           "x": 62.5,
           "y": 15.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 4.0,
           "y": 36.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
         "pos": {
           "x": 35.0,
           "y": 27.5
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 4.0,
           "y": 11.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 29.0,
           "y": 24.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A"
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#3",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#9"
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B"
-        },
-        "pin2": {
           "compName": "WireCrossPoint#1",
           "pinName": ""
         },
-        "path": []
+        "pin2": {
+          "compName": "GUINandGate#2",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#8",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 42.5
+          }
+        ]
       },
       {
         "pin1": {
@@ -124,41 +130,57 @@ mograsim version: 0.1.3
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
+          "compName": "GUINandGate#1",
           "pinName": "A"
         },
+        "name": "unnamedWire#7",
         "path": [
           {
             "x": 5.0,
-            "y": 20.0
+            "y": 7.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "B"
+          "compName": "GUINandGate#2",
+          "pinName": "A"
         },
+        "name": "unnamedWire#6",
         "path": [
           {
-            "x": 5.0,
-            "y": 30.0
+            "x": 30.0,
+            "y": 32.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "B"
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
           "pinName": ""
-        }
+        },
+        "name": "unnamedWire#0",
+        "path": []
       },
       {
         "pin1": {
@@ -169,6 +191,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#1",
           "pinName": "B"
         },
+        "name": "unnamedWire#5",
         "path": [
           {
             "x": 30.0,
@@ -178,35 +201,25 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUINandGate#2",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "A"
+          "compName": "GUINandGate#3",
+          "pinName": "B"
         },
-        "path": [
-          {
-            "x": 30.0,
-            "y": 32.5
-          }
-        ]
+        "name": "unnamedWire#10"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "A"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 5.0,
-            "y": 7.5
-          }
-        ]
+        "name": "unnamedWire#4"
       },
       {
         "pin1": {
@@ -214,35 +227,33 @@ mograsim version: 0.1.3
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#2",
+          "compName": "GUINandGate#0",
           "pinName": "B"
         },
+        "name": "unnamedWire#3",
         "path": [
           {
             "x": 5.0,
-            "y": 42.5
+            "y": 30.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#1",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#3",
+          "compName": "GUINandGate#0",
           "pinName": "A"
-        }
-      },
-      {
-        "pin1": {
-          "compName": "GUINandGate#2",
-          "pinName": "Y"
         },
-        "pin2": {
-          "compName": "GUINandGate#3",
-          "pinName": "B"
-        }
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 20.0
+          }
+        ]
       },
       {
         "pin1": {
@@ -252,16 +263,18 @@ mograsim version: 0.1.3
         "pin2": {
           "compName": "_submodelinterface",
           "pinName": "Y"
-        }
+        },
+        "name": "unnamedWire#11"
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIxor",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 7563d83..503d854 100644 (file)
@@ -320,1338 +320,1044 @@ mograsim version: 0.1.3
     "innerScale": 0.1,
     "subComps": [
       {
+        "id": "GUIsel3_4",
+        "name": "GUIsel3_4#0",
         "pos": {
           "x": 45.0,
           "y": 2310.0
-        },
-        "id": "GUIsel3_4",
-        "name": "GUIsel3_4#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#14",
         "pos": {
           "x": 144.0,
           "y": 2524.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#14",
         "params": 1
       },
       {
+        "id": "GUIsel3_4",
+        "name": "GUIsel3_4#1",
         "pos": {
           "x": 45.0,
           "y": 2510.0
-        },
-        "id": "GUIsel3_4",
-        "name": "GUIsel3_4#1"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#13",
         "pos": {
           "x": 139.0,
           "y": 2514.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#13",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#16",
         "pos": {
           "x": 234.0,
           "y": 2524.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#16",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#15",
         "pos": {
           "x": 219.0,
           "y": 2494.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#15",
         "params": 1
       },
       {
+        "id": "GUIAm2901DestDecode",
+        "name": "GUIAm2901DestDecode#0",
         "pos": {
           "x": 15.0,
           "y": 45.0
-        },
-        "id": "GUIAm2901DestDecode",
-        "name": "GUIAm2901DestDecode#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#18",
         "pos": {
           "x": 39.0,
           "y": 2634.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#18",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#17",
         "pos": {
           "x": 34.0,
           "y": 2624.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#17",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#19",
         "pos": {
           "x": 279.0,
           "y": 2114.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#19",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 154.0,
           "y": 89.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 154.0,
           "y": 949.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
           "x": 154.0,
           "y": 2319.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 154.0,
           "y": 2264.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
         "pos": {
           "x": 34.0,
           "y": 2324.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
         "pos": {
           "x": 39.0,
           "y": 2314.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#4",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
         "pos": {
           "x": 219.0,
           "y": 2224.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#7",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
         "pos": {
           "x": 29.0,
           "y": 2334.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#6",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
         "pos": {
           "x": 229.0,
           "y": 2244.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#9",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
         "pos": {
           "x": 224.0,
           "y": 2234.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#8",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
         "pos": {
           "x": 234.0,
           "y": 2254.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#10",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#12",
         "pos": {
           "x": 134.0,
           "y": 2504.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#12",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#11",
         "pos": {
           "x": 129.0,
           "y": 2494.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#11",
         "params": 1
       },
       {
+        "id": "GUIdlatch4",
+        "name": "GUIdlatch4#1",
         "pos": {
           "x": 160.0,
           "y": 2275.0
-        },
-        "id": "GUIdlatch4",
-        "name": "GUIdlatch4#1"
+        }
       },
       {
+        "id": "GUIdlatch4",
+        "name": "GUIdlatch4#0",
         "pos": {
           "x": 160.0,
           "y": 2220.0
-        },
-        "id": "GUIdlatch4",
-        "name": "GUIdlatch4#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#40",
         "pos": {
           "x": 314.0,
           "y": 449.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#40",
         "params": 1
       },
       {
+        "id": "GUIAm2901QReg",
+        "name": "GUIAm2901QReg#0",
         "pos": {
           "x": 90.0,
           "y": 2490.0
-        },
-        "id": "GUIAm2901QReg",
-        "name": "GUIAm2901QReg#0"
+        }
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 320.0,
           "y": 440.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#36",
         "pos": {
           "x": 9.0,
           "y": 2384.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#36",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 160.0,
           "y": 75.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#35",
         "pos": {
           "x": 24.0,
           "y": 2414.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#35",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#38",
         "pos": {
           "x": 19.0,
           "y": 2434.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#38",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#37",
         "pos": {
           "x": 14.0,
           "y": 2424.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#37",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#39",
         "pos": {
           "x": 24.0,
           "y": 2444.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#39",
         "params": 1
       },
       {
+        "id": "GUIand",
+        "name": "GUIand#0",
         "pos": {
           "x": 190.0,
           "y": 65.0
-        },
-        "id": "GUIand",
-        "name": "GUIand#0"
+        }
       },
       {
+        "id": "GUImux1_4",
+        "name": "GUImux1_4#0",
         "pos": {
           "x": 275.0,
           "y": 135.0
-        },
-        "id": "GUImux1_4",
-        "name": "GUImux1_4#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#30",
         "pos": {
           "x": 9.0,
           "y": 2354.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#30",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#32",
         "pos": {
           "x": 19.0,
           "y": 2374.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#32",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#31",
         "pos": {
           "x": 14.0,
           "y": 2364.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#31",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#34",
         "pos": {
           "x": 19.0,
           "y": 2404.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#34",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#33",
         "pos": {
           "x": 14.0,
           "y": 2394.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#33",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#25",
         "pos": {
           "x": 269.0,
           "y": 2104.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#25",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#24",
         "pos": {
           "x": 264.0,
           "y": 2099.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#24",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#27",
         "pos": {
           "x": 259.0,
           "y": 459.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#27",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#26",
         "pos": {
           "x": 254.0,
           "y": 449.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#26",
         "params": 1
       },
       {
+        "id": "GUIor4",
+        "name": "GUIor4#0",
         "pos": {
           "x": 275.0,
           "y": 445.0
-        },
-        "id": "GUIor4",
-        "name": "GUIor4#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#29",
         "pos": {
           "x": 269.0,
           "y": 479.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#29",
         "params": 1
       },
       {
+        "id": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode",
+        "name": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
         "pos": {
           "x": 240.0,
           "y": 2110.0
-        },
-        "id": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode",
-        "name": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#28",
         "pos": {
           "x": 264.0,
           "y": 469.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#28",
         "params": 1
       },
       {
+        "id": "GUIram4",
+        "name": "GUIram4#0",
         "pos": {
           "x": 95.0,
           "y": 2220.0
-        },
-        "id": "GUIram4",
-        "name": "GUIram4#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#21",
         "pos": {
           "x": 329.0,
           "y": 949.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#21",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#20",
         "pos": {
           "x": 294.0,
           "y": 2144.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#20",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#23",
         "pos": {
           "x": 259.0,
           "y": 2094.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#23",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#22",
         "pos": {
           "x": 254.0,
           "y": 2089.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#22",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I8"
+          "compName": "GUIram4#0",
+          "pinName": "QA2"
         },
         "pin2": {
-          "compName": "GUIAm2901DestDecode#0",
-          "pinName": "I8"
+          "compName": "GUIdlatch4#0",
+          "pinName": "D2"
         },
+        "name": "unnamedWire#36",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I7"
+          "compName": "GUIram4#0",
+          "pinName": "QA1"
         },
         "pin2": {
-          "compName": "GUIAm2901DestDecode#0",
-          "pinName": "I7"
+          "compName": "GUIdlatch4#0",
+          "pinName": "D1"
         },
-        "path": [
-          {
-            "x": 5.0,
-            "y": 150.0
-          },
-          {
-            "x": 5.0,
-            "y": 60.0
-          }
-        ]
+        "name": "unnamedWire#35",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I6"
+          "compName": "GUIram4#0",
+          "pinName": "QA4"
         },
         "pin2": {
-          "compName": "GUIAm2901DestDecode#0",
-          "pinName": "I6"
+          "compName": "GUIdlatch4#0",
+          "pinName": "D4"
         },
-        "path": [
-          {
-            "x": 10.0,
-            "y": 250.0
-          },
-          {
-            "x": 10.0,
-            "y": 70.0
-          }
-        ]
+        "name": "unnamedWire#38",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I5"
+          "compName": "GUIram4#0",
+          "pinName": "QA3"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "I5"
+          "compName": "GUIdlatch4#0",
+          "pinName": "D3"
         },
-        "path": [
-          {
-            "x": 130.0,
-            "y": 350.0
-          },
-          {
-            "x": 130.0,
-            "y": 2115.0
-          }
-        ]
+        "name": "unnamedWire#37",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I4"
+          "compName": "GUIram4#0",
+          "pinName": "QB1"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "I4"
+          "compName": "GUIdlatch4#1",
+          "pinName": "D1"
         },
+        "name": "unnamedWire#39",
         "path": [
           {
-            "x": 125.0,
-            "y": 450.0
+            "x": 150.0,
+            "y": 2265.0
           },
           {
-            "x": 125.0,
-            "y": 2125.0
+            "x": 150.0,
+            "y": 2280.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I3"
+          "compName": "WireCrossPoint#26",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "I3"
+          "compName": "GUImux1_4#0",
+          "pinName": "I1_1"
         },
+        "name": "unnamedWire#110",
         "path": [
           {
-            "x": 120.0,
-            "y": 550.0
-          },
-          {
-            "x": 120.0,
-            "y": 2135.0
+            "x": 255.0,
+            "y": 190.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I2"
+          "compName": "WireCrossPoint#27",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "I2"
+          "compName": "GUImux1_4#0",
+          "pinName": "I1_2"
         },
+        "name": "unnamedWire#111",
         "path": [
           {
-            "x": 115.0,
-            "y": 650.0
-          },
-          {
-            "x": 115.0,
-            "y": 2145.0
+            "x": 260.0,
+            "y": 200.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I1"
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "I1"
+          "compName": "WireCrossPoint#30",
+          "pinName": ""
         },
+        "name": "unnamedWire#114",
         "path": [
           {
-            "x": 110.0,
-            "y": 750.0
-          },
-          {
-            "x": 110.0,
-            "y": 2155.0
+            "x": 10.0,
+            "y": 2090.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I0"
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "I0"
+          "compName": "WireCrossPoint#31",
+          "pinName": ""
         },
+        "name": "unnamedWire#115",
         "path": [
           {
-            "x": 105.0,
-            "y": 850.0
-          },
-          {
-            "x": 105.0,
-            "y": 2165.0
+            "x": 15.0,
+            "y": 2095.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "C"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#28",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUImux1_4#0",
+          "pinName": "I1_3"
         },
-        "path": []
+        "name": "unnamedWire#112",
+        "path": [
+          {
+            "x": 265.0,
+            "y": 210.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#29",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "A"
+          "compName": "GUImux1_4#0",
+          "pinName": "I1_4"
         },
+        "name": "unnamedWire#113",
         "path": [
           {
-            "x": 155.0,
-            "y": 80.0
+            "x": 270.0,
+            "y": 220.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#30",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "B"
+          "compName": "GUIsel3_4#0",
+          "pinName": "A2"
         },
+        "name": "unnamedWire#118",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#31",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUIsel3_4#0",
+          "pinName": "A3"
         },
+        "name": "unnamedWire#119",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUIram4#0",
+          "pinName": "QB3"
         },
         "pin2": {
-          "compName": "GUIdlatch4#0",
-          "pinName": "C"
+          "compName": "GUIdlatch4#1",
+          "pinName": "D3"
         },
-        "path": []
+        "name": "unnamedWire#41",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 2285.0
+          },
+          {
+            "x": 140.0,
+            "y": 2300.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#24",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#32",
           "pinName": ""
         },
-        "path": []
+        "name": "unnamedWire#116",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 2100.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "GUIram4#0",
+          "pinName": "QB2"
         },
         "pin2": {
           "compName": "GUIdlatch4#1",
-          "pinName": "C"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIAm2901QReg#0",
-          "pinName": "C"
+          "pinName": "D2"
         },
+        "name": "unnamedWire#40",
         "path": [
           {
-            "x": 155.0,
-            "y": 2485.0
-          },
-          {
-            "x": 80.0,
-            "y": 2485.0
+            "x": 145.0,
+            "y": 2275.0
           },
           {
-            "x": 80.0,
-            "y": 2495.0
+            "x": 145.0,
+            "y": 2290.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901DestDecode#0",
-          "pinName": "LSH"
+          "compName": "_submodelinterface",
+          "pinName": "IRAMn"
         },
         "pin2": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
+          "compName": "GUIsel3_4#0",
+          "pinName": "A1"
         },
+        "name": "unnamedWire#117",
         "path": [
           {
-            "x": 55.0,
-            "y": 90.0
-          },
-          {
-            "x": 55.0,
-            "y": 125.0
+            "x": 5.0,
+            "y": 2350.0
           },
           {
-            "x": 40.0,
-            "y": 125.0
+            "x": 5.0,
+            "y": 2345.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901DestDecode#0",
-          "pinName": "NSH"
+          "compName": "_submodelinterface",
+          "pinName": "Cn"
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "Cn"
         },
+        "name": "unnamedWire#43",
         "path": [
           {
-            "x": 60.0,
-            "y": 50.0
-          },
-          {
-            "x": 60.0,
-            "y": 120.0
+            "x": 100.0,
+            "y": 1050.0
           },
           {
-            "x": 35.0,
-            "y": 120.0
+            "x": 100.0,
+            "y": 2175.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901DestDecode#0",
-          "pinName": "RSH"
+          "compName": "GUIram4#0",
+          "pinName": "QB4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
-        },
-        "path": [
-          {
-            "x": 65.0,
-            "y": 60.0
-          },
-          {
-            "x": 65.0,
-            "y": 115.0
-          },
-          {
-            "x": 30.0,
-            "y": 115.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "SA"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "SB"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "SC"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIsel3_4#1",
-          "pinName": "SA"
-        },
-        "path": [
-          {
-            "x": 40.0,
-            "y": 2515.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIsel3_4#1",
-          "pinName": "SB"
-        },
-        "path": [
-          {
-            "x": 35.0,
-            "y": 2525.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIsel3_4#1",
-          "pinName": "SC"
-        },
-        "path": [
-          {
-            "x": 30.0,
-            "y": 2535.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A0"
-        },
-        "pin2": {
-          "compName": "GUIram4#0",
-          "pinName": "A0"
-        },
-        "path": [
-          {
-            "x": 80.0,
-            "y": 1550.0
-          },
-          {
-            "x": 80.0,
-            "y": 2225.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A1"
-        },
-        "pin2": {
-          "compName": "GUIram4#0",
-          "pinName": "A1"
-        },
-        "path": [
-          {
-            "x": 75.0,
-            "y": 1650.0
-          },
-          {
-            "x": 75.0,
-            "y": 2235.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A2"
-        },
-        "pin2": {
-          "compName": "GUIram4#0",
-          "pinName": "A2"
-        },
-        "path": [
-          {
-            "x": 70.0,
-            "y": 1750.0
-          },
-          {
-            "x": 70.0,
-            "y": 2245.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A3"
-        },
-        "pin2": {
-          "compName": "GUIram4#0",
-          "pinName": "A3"
+          "compName": "GUIdlatch4#1",
+          "pinName": "D4"
         },
+        "name": "unnamedWire#42",
         "path": [
           {
-            "x": 65.0,
-            "y": 1850.0
+            "x": 135.0,
+            "y": 2295.0
           },
           {
-            "x": 65.0,
-            "y": 2255.0
+            "x": 135.0,
+            "y": 2310.0
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "B0"
+          "pinName": "D2"
         },
         "pin2": {
-          "compName": "GUIram4#0",
-          "pinName": "B0"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "D2"
         },
+        "name": "unnamedWire#45",
         "path": [
           {
-            "x": 60.0,
-            "y": 1950.0
+            "x": 175.0,
+            "y": 1250.0
           },
           {
-            "x": 60.0,
-            "y": 2265.0
+            "x": 175.0,
+            "y": 2195.0
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "B1"
+          "pinName": "D1"
         },
         "pin2": {
-          "compName": "GUIram4#0",
-          "pinName": "B1"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "D1"
         },
+        "name": "unnamedWire#44",
         "path": [
           {
-            "x": 55.0,
-            "y": 2050.0
+            "x": 180.0,
+            "y": 1150.0
           },
           {
-            "x": 55.0,
-            "y": 2275.0
+            "x": 180.0,
+            "y": 2185.0
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "B2"
+          "pinName": "D4"
         },
         "pin2": {
-          "compName": "GUIram4#0",
-          "pinName": "B2"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "D4"
         },
+        "name": "unnamedWire#47",
         "path": [
           {
-            "x": 50.0,
-            "y": 2150.0
+            "x": 165.0,
+            "y": 1450.0
           },
           {
-            "x": 50.0,
-            "y": 2285.0
+            "x": 165.0,
+            "y": 2215.0
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "B3"
+          "pinName": "D3"
         },
         "pin2": {
-          "compName": "GUIram4#0",
-          "pinName": "B3"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "D3"
         },
+        "name": "unnamedWire#46",
         "path": [
           {
-            "x": 45.0,
-            "y": 2250.0
+            "x": 170.0,
+            "y": 1350.0
           },
           {
-            "x": 45.0,
-            "y": 2295.0
+            "x": 170.0,
+            "y": 2205.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIram4#0",
-          "pinName": "QA1"
-        },
-        "pin2": {
           "compName": "GUIdlatch4#0",
-          "pinName": "D1"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUIram4#0",
-          "pinName": "QA2"
+          "pinName": "Q2"
         },
         "pin2": {
-          "compName": "GUIdlatch4#0",
-          "pinName": "D2"
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
         },
+        "name": "unnamedWire#49",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIram4#0",
-          "pinName": "QA3"
-        },
-        "pin2": {
           "compName": "GUIdlatch4#0",
-          "pinName": "D3"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUIram4#0",
-          "pinName": "QA4"
+          "pinName": "Q1"
         },
         "pin2": {
-          "compName": "GUIdlatch4#0",
-          "pinName": "D4"
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
         },
+        "name": "unnamedWire#48",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIram4#0",
-          "pinName": "QB1"
-        },
-        "pin2": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "D1"
-        },
-        "path": [
-          {
-            "x": 150.0,
-            "y": 2265.0
-          },
-          {
-            "x": 150.0,
-            "y": 2280.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUIram4#0",
-          "pinName": "QB2"
-        },
-        "pin2": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "D2"
-        },
-        "path": [
-          {
-            "x": 145.0,
-            "y": 2275.0
-          },
-          {
-            "x": 145.0,
-            "y": 2290.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUIram4#0",
-          "pinName": "QB3"
-        },
-        "pin2": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "D3"
-        },
-        "path": [
-          {
-            "x": 140.0,
-            "y": 2285.0
-          },
-          {
-            "x": 140.0,
-            "y": 2300.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUIram4#0",
-          "pinName": "QB4"
-        },
-        "pin2": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "D4"
-        },
-        "path": [
-          {
-            "x": 135.0,
-            "y": 2295.0
-          },
-          {
-            "x": 135.0,
-            "y": 2310.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "Cn"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "F3"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "Cn"
+          "compName": "WireCrossPoint#24",
+          "pinName": ""
         },
+        "name": "unnamedWire#100",
         "path": [
           {
-            "x": 100.0,
-            "y": 1050.0
+            "x": 290.0,
+            "y": 2135.0
           },
           {
-            "x": 100.0,
-            "y": 2175.0
+            "x": 290.0,
+            "y": 2100.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D1"
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "D1"
+          "compName": "WireCrossPoint#27",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 180.0,
-            "y": 1150.0
-          },
-          {
-            "x": 180.0,
-            "y": 2185.0
-          }
-        ]
+        "name": "unnamedWire#103",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D2"
+          "compName": "WireCrossPoint#24",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "D2"
+          "compName": "WireCrossPoint#28",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 175.0,
-            "y": 1250.0
-          },
-          {
-            "x": 175.0,
-            "y": 2195.0
-          }
-        ]
+        "name": "unnamedWire#104",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D3"
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "D3"
+          "compName": "WireCrossPoint#25",
+          "pinName": ""
         },
+        "name": "unnamedWire#101",
         "path": [
           {
-            "x": 170.0,
-            "y": 1350.0
-          },
-          {
-            "x": 170.0,
-            "y": 2205.0
+            "x": 295.0,
+            "y": 2105.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D4"
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "D4"
-        },
-        "path": [
-          {
-            "x": 165.0,
-            "y": 1450.0
-          },
-          {
-            "x": 165.0,
-            "y": 2215.0
-          }
-        ]
+          "compName": "WireCrossPoint#26",
+          "pinName": ""
+        },
+        "name": "unnamedWire#102",
+        "path": []
       },
       {
         "pin1": {
           "compName": "GUIdlatch4#0",
-          "pinName": "Q1"
+          "pinName": "Q3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
+        "name": "unnamedWire#50",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#0",
-          "pinName": "Q2"
+          "compName": "WireCrossPoint#27",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#8",
+          "compName": "GUIor4#0",
+          "pinName": "A2"
+        },
+        "name": "unnamedWire#107",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#28",
           "pinName": ""
         },
+        "pin2": {
+          "compName": "GUIor4#0",
+          "pinName": "A3"
+        },
+        "name": "unnamedWire#108",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#0",
-          "pinName": "Q3"
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
+          "compName": "GUImux1_4#0",
+          "pinName": "I0_1"
+        },
+        "name": "unnamedWire#52",
+        "path": [
+          {
+            "x": 220.0,
+            "y": 150.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#25",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#29",
           "pinName": ""
         },
+        "name": "unnamedWire#105",
         "path": []
       },
       {
@@ -1663,21 +1369,35 @@ mograsim version: 0.1.3
           "compName": "WireCrossPoint#10",
           "pinName": ""
         },
+        "name": "unnamedWire#51",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#26",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIor4#0",
+          "pinName": "A1"
+        },
+        "name": "unnamedWire#106",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUImux1_4#0",
-          "pinName": "I0_1"
+          "pinName": "I0_3"
         },
+        "name": "unnamedWire#54",
         "path": [
           {
-            "x": 220.0,
-            "y": 150.0
+            "x": 230.0,
+            "y": 170.0
           }
         ]
       },
@@ -1690,6 +1410,7 @@ mograsim version: 0.1.3
           "compName": "GUImux1_4#0",
           "pinName": "I0_2"
         },
+        "name": "unnamedWire#53",
         "path": [
           {
             "x": 225.0,
@@ -1699,19 +1420,27 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUImux1_4#0",
-          "pinName": "I0_3"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "A1"
         },
-        "path": [
-          {
-            "x": 230.0,
-            "y": 170.0
-          }
-        ]
+        "name": "unnamedWire#56",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#29",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIor4#0",
+          "pinName": "A4"
+        },
+        "name": "unnamedWire#109",
+        "path": []
       },
       {
         "pin1": {
@@ -1722,6 +1451,7 @@ mograsim version: 0.1.3
           "compName": "GUImux1_4#0",
           "pinName": "I0_4"
         },
+        "name": "unnamedWire#55",
         "path": [
           {
             "x": 235.0,
@@ -1731,373 +1461,404 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "A1"
+          "compName": "GUIdlatch4#0",
+          "pinName": "C"
         },
+        "name": "unnamedWire#14",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "A2"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
+        "name": "unnamedWire#13",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "A3"
+          "compName": "GUIdlatch4#1",
+          "pinName": "C"
         },
+        "name": "unnamedWire#16",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "A4"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
+        "name": "unnamedWire#15",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "Q1"
+          "compName": "GUIAm2901DestDecode#0",
+          "pinName": "LSH"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "B1"
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
         },
+        "name": "unnamedWire#18",
         "path": [
           {
-            "x": 200.0,
-            "y": 2280.0
+            "x": 55.0,
+            "y": 90.0
           },
           {
-            "x": 200.0,
-            "y": 2265.0
+            "x": 55.0,
+            "y": 125.0
+          },
+          {
+            "x": 40.0,
+            "y": 125.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "Q2"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "B2"
+          "compName": "GUIAm2901QReg#0",
+          "pinName": "C"
         },
+        "name": "unnamedWire#17",
         "path": [
           {
-            "x": 205.0,
-            "y": 2290.0
+            "x": 155.0,
+            "y": 2485.0
           },
           {
-            "x": 205.0,
-            "y": 2275.0
+            "x": 80.0,
+            "y": 2485.0
+          },
+          {
+            "x": 80.0,
+            "y": 2495.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "Q3"
+          "compName": "GUIAm2901DestDecode#0",
+          "pinName": "NSH"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "B3"
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
         },
+        "name": "unnamedWire#19",
         "path": [
           {
-            "x": 210.0,
-            "y": 2300.0
+            "x": 60.0,
+            "y": 50.0
           },
           {
-            "x": 210.0,
-            "y": 2285.0
+            "x": 60.0,
+            "y": 120.0
+          },
+          {
+            "x": 35.0,
+            "y": 120.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIdlatch4#1",
-          "pinName": "Q4"
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "B4"
+          "compName": "GUIsel3_4#0",
+          "pinName": "SA"
         },
-        "path": [
-          {
-            "x": 215.0,
-            "y": 2310.0
-          },
-          {
-            "x": 215.0,
-            "y": 2295.0
-          }
-        ]
+        "name": "unnamedWire#21",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIAm2901QReg#0",
-          "pinName": "Q1"
+          "compName": "GUIAm2901DestDecode#0",
+          "pinName": "RSH"
         },
         "pin2": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
-        "path": []
+        "name": "unnamedWire#20",
+        "path": [
+          {
+            "x": 65.0,
+            "y": 60.0
+          },
+          {
+            "x": 65.0,
+            "y": 115.0
+          },
+          {
+            "x": 30.0,
+            "y": 115.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901QReg#0",
-          "pinName": "Q2"
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#12",
-          "pinName": ""
+          "compName": "GUIsel3_4#0",
+          "pinName": "SC"
         },
+        "name": "unnamedWire#23",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIAm2901QReg#0",
-          "pinName": "Q3"
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#13",
-          "pinName": ""
+          "compName": "GUIsel3_4#0",
+          "pinName": "SB"
         },
+        "name": "unnamedWire#22",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIAm2901QReg#0",
-          "pinName": "Q4"
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#14",
-          "pinName": ""
+          "compName": "GUIsel3_4#1",
+          "pinName": "SB"
         },
-        "path": []
+        "name": "unnamedWire#25",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 2525.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
-          "pinName": ""
+          "compName": "GUIsel3_4#1",
+          "pinName": "SA"
         },
-        "path": []
+        "name": "unnamedWire#24",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 2515.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "A0"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "OQn"
+          "compName": "GUIram4#0",
+          "pinName": "A0"
         },
+        "name": "unnamedWire#27",
         "path": [
           {
-            "x": 335.0,
-            "y": 2495.0
+            "x": 80.0,
+            "y": 1550.0
           },
           {
-            "x": 335.0,
-            "y": 1050.0
+            "x": 80.0,
+            "y": 2225.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#16",
-          "pinName": ""
+          "compName": "GUIsel3_4#1",
+          "pinName": "SC"
         },
-        "path": []
+        "name": "unnamedWire#26",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 2535.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#16",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "A2"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "OQn+3"
+          "compName": "GUIram4#0",
+          "pinName": "A2"
         },
+        "name": "unnamedWire#29",
         "path": [
           {
-            "x": 340.0,
-            "y": 2525.0
+            "x": 70.0,
+            "y": 1750.0
           },
           {
-            "x": 340.0,
-            "y": 1150.0
+            "x": 70.0,
+            "y": 2245.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "A1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#17",
-          "pinName": ""
+          "compName": "GUIram4#0",
+          "pinName": "A1"
         },
+        "name": "unnamedWire#28",
         "path": [
           {
-            "x": 135.0,
-            "y": 2670.0
-          },
-          {
-            "x": 30.0,
-            "y": 2670.0
-          },
-          {
-            "x": 30.0,
-            "y": 2635.0
+            "x": 75.0,
+            "y": 1650.0
           },
           {
-            "x": 35.0,
-            "y": 2635.0
+            "x": 75.0,
+            "y": 2235.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "A3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#18",
-          "pinName": ""
+          "compName": "GUIram4#0",
+          "pinName": "A3"
         },
+        "name": "unnamedWire#30",
         "path": [
           {
-            "x": 140.0,
-            "y": 2675.0
-          },
-          {
-            "x": 35.0,
-            "y": 2675.0
-          },
-          {
-            "x": 35.0,
-            "y": 2640.0
+            "x": 65.0,
+            "y": 1850.0
           },
           {
-            "x": 40.0,
-            "y": 2640.0
+            "x": 65.0,
+            "y": 2255.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#17",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIsel3_4#1",
-          "pinName": "C1"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#18",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "B1"
         },
         "pin2": {
-          "compName": "GUIsel3_4#1",
-          "pinName": "C2"
+          "compName": "GUIram4#0",
+          "pinName": "B1"
         },
-        "path": []
+        "name": "unnamedWire#32",
+        "path": [
+          {
+            "x": 55.0,
+            "y": 2050.0
+          },
+          {
+            "x": 55.0,
+            "y": 2275.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "B0"
         },
         "pin2": {
-          "compName": "GUIsel3_4#1",
-          "pinName": "C3"
+          "compName": "GUIram4#0",
+          "pinName": "B0"
         },
+        "name": "unnamedWire#31",
         "path": [
           {
-            "x": 145.0,
-            "y": 2680.0
-          },
-          {
-            "x": 40.0,
-            "y": 2680.0
+            "x": 60.0,
+            "y": 1950.0
           },
           {
-            "x": 40.0,
-            "y": 2645.0
+            "x": 60.0,
+            "y": 2265.0
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "IQn+3"
+          "pinName": "B3"
         },
         "pin2": {
-          "compName": "GUIsel3_4#1",
-          "pinName": "C4"
+          "compName": "GUIram4#0",
+          "pinName": "B3"
         },
+        "name": "unnamedWire#34",
         "path": [
           {
-            "x": 5.0,
-            "y": 2650.0
+            "x": 45.0,
+            "y": 2250.0
           },
           {
-            "x": 5.0,
-            "y": 2655.0
+            "x": 45.0,
+            "y": 2295.0
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "IQn"
+          "pinName": "B2"
         },
         "pin2": {
-          "compName": "GUIsel3_4#1",
-          "pinName": "A1"
+          "compName": "GUIram4#0",
+          "pinName": "B2"
         },
+        "name": "unnamedWire#33",
         "path": [
           {
-            "x": 5.0,
-            "y": 2550.0
+            "x": 50.0,
+            "y": 2150.0
           },
           {
-            "x": 5.0,
-            "y": 2545.0
+            "x": 50.0,
+            "y": 2285.0
           }
         ]
       },
@@ -2110,6 +1871,7 @@ mograsim version: 0.1.3
           "compName": "GUIsel3_4#1",
           "pinName": "A2"
         },
+        "name": "unnamedWire#79",
         "path": [
           {
             "x": 130.0,
@@ -2135,20 +1897,104 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
+          "compName": "GUImux1_4#0",
+          "pinName": "Y2"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y2"
+        },
+        "name": "unnamedWire#150",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUImux1_4#0",
+          "pinName": "Y3"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y3"
+        },
+        "name": "unnamedWire#151",
+        "path": [
+          {
+            "x": 335.0,
+            "y": 160.0
+          },
+          {
+            "x": 335.0,
+            "y": 250.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#40",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "Q1"
+          "compName": "GUINandGate#1",
+          "pinName": "A"
         },
+        "name": "unnamedWire#154",
         "path": [
           {
-            "x": 220.0,
-            "y": 2305.0
+            "x": 315.0,
+            "y": 445.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#40",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#155",
+        "path": [
+          {
+            "x": 315.0,
+            "y": 455.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUImux1_4#0",
+          "pinName": "Y4"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y4"
+        },
+        "name": "unnamedWire#152",
+        "path": [
+          {
+            "x": 325.0,
+            "y": 170.0
+          },
+          {
+            "x": 325.0,
+            "y": 350.0
           }
         ]
       },
+      {
+        "pin1": {
+          "compName": "GUIor4#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#40",
+          "pinName": ""
+        },
+        "name": "unnamedWire#153",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "WireCrossPoint#12",
@@ -2158,6 +2004,7 @@ mograsim version: 0.1.3
           "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
           "pinName": "Q2"
         },
+        "name": "unnamedWire#81",
         "path": [
           {
             "x": 225.0,
@@ -2171,21 +2018,30 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "F\u003d0"
+        },
+        "name": "unnamedWire#156",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "Q3"
+          "pinName": "Q1"
         },
+        "name": "unnamedWire#80",
         "path": [
           {
-            "x": 230.0,
-            "y": 2515.0
-          },
-          {
-            "x": 230.0,
-            "y": 2325.0
+            "x": 220.0,
+            "y": 2305.0
           }
         ]
       },
@@ -2198,6 +2054,7 @@ mograsim version: 0.1.3
           "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
           "pinName": "Q4"
         },
+        "name": "unnamedWire#83",
         "path": [
           {
             "x": 235.0,
@@ -2207,17 +2064,22 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#17",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIsel3_4#1",
-          "pinName": "A3"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "Q3"
         },
+        "name": "unnamedWire#82",
         "path": [
           {
-            "x": 35.0,
-            "y": 2565.0
+            "x": 230.0,
+            "y": 2515.0
+          },
+          {
+            "x": 230.0,
+            "y": 2325.0
           }
         ]
       },
@@ -2230,6 +2092,7 @@ mograsim version: 0.1.3
           "compName": "GUIsel3_4#1",
           "pinName": "A4"
         },
+        "name": "unnamedWire#85",
         "path": [
           {
             "x": 40.0,
@@ -2239,14 +2102,20 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIsel3_4#1",
-          "pinName": "Y1"
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901QReg#0",
-          "pinName": "D1"
+          "compName": "GUIsel3_4#1",
+          "pinName": "A3"
         },
-        "path": []
+        "name": "unnamedWire#84",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 2565.0
+          }
+        ]
       },
       {
         "pin1": {
@@ -2257,17 +2126,19 @@ mograsim version: 0.1.3
           "compName": "GUIAm2901QReg#0",
           "pinName": "D2"
         },
+        "name": "unnamedWire#87",
         "path": []
       },
       {
         "pin1": {
           "compName": "GUIsel3_4#1",
-          "pinName": "Y3"
+          "pinName": "Y1"
         },
         "pin2": {
           "compName": "GUIAm2901QReg#0",
-          "pinName": "D3"
+          "pinName": "D1"
         },
+        "name": "unnamedWire#86",
         "path": []
       },
       {
@@ -2279,560 +2150,646 @@ mograsim version: 0.1.3
           "compName": "GUIAm2901QReg#0",
           "pinName": "D4"
         },
+        "name": "unnamedWire#89",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "Cn+4"
+          "compName": "GUIsel3_4#1",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Cn+4"
+          "compName": "GUIAm2901QReg#0",
+          "pinName": "D3"
         },
-        "path": [
-          {
-            "x": 315.0,
-            "y": 2155.0
-          },
-          {
-            "x": 315.0,
-            "y": 550.0
-          }
-        ]
+        "name": "unnamedWire#88",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "OVR"
+          "compName": "GUIsel3_4#0",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "OVR"
+          "compName": "GUIram4#0",
+          "pinName": "D1"
         },
-        "path": [
-          {
-            "x": 320.0,
-            "y": 2165.0
-          },
-          {
-            "x": 320.0,
-            "y": 650.0
-          }
-        ]
+        "name": "unnamedWire#140",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "F1"
+          "compName": "_submodelinterface",
+          "pinName": "C"
         },
         "pin2": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
+        "name": "unnamedWire#9",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "F4"
+          "compName": "GUIsel3_4#0",
+          "pinName": "Y4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#20",
-          "pinName": ""
+          "compName": "GUIram4#0",
+          "pinName": "D4"
         },
+        "name": "unnamedWire#143",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I0"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "ORAMn"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "I0"
         },
+        "name": "unnamedWire#8",
         "path": [
           {
-            "x": 325.0,
-            "y": 2115.0
+            "x": 105.0,
+            "y": 850.0
           },
           {
-            "x": 325.0,
-            "y": 850.0
+            "x": 105.0,
+            "y": 2165.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
-          "pinName": ""
+          "compName": "GUIAm2901DestDecode#0",
+          "pinName": "RAMWE"
         },
         "pin2": {
-          "compName": "WireCrossPoint#21",
-          "pinName": ""
+          "compName": "GUIand#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#144",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I1"
+        },
+        "pin2": {
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "I1"
         },
+        "name": "unnamedWire#7",
         "path": [
           {
-            "x": 330.0,
-            "y": 2145.0
+            "x": 110.0,
+            "y": 750.0
+          },
+          {
+            "x": 110.0,
+            "y": 2155.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#21",
-          "pinName": ""
+          "compName": "GUIsel3_4#0",
+          "pinName": "Y2"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "ORAMn+3"
+          "compName": "GUIram4#0",
+          "pinName": "D2"
         },
+        "name": "unnamedWire#141",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#21",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I2"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "F3"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "I2"
         },
+        "name": "unnamedWire#6",
         "path": [
           {
-            "x": 330.0,
-            "y": 750.0
+            "x": 115.0,
+            "y": 650.0
+          },
+          {
+            "x": 115.0,
+            "y": 2145.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
-          "pinName": ""
+          "compName": "GUIsel3_4#0",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#22",
-          "pinName": ""
+          "compName": "GUIram4#0",
+          "pinName": "D3"
         },
-        "path": [
-          {
-            "x": 280.0,
-            "y": 2090.0
-          }
-        ]
+        "name": "unnamedWire#142",
+        "path": []
       },
       {
         "pin1": {
           "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "F2"
+          "pinName": "Cn+4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#23",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "Cn+4"
         },
+        "name": "unnamedWire#90",
         "path": [
           {
-            "x": 285.0,
-            "y": 2125.0
+            "x": 315.0,
+            "y": 2155.0
           },
           {
-            "x": 285.0,
-            "y": 2095.0
+            "x": 315.0,
+            "y": 550.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "F3"
+          "compName": "GUIAm2901DestDecode#0",
+          "pinName": "QWE"
         },
         "pin2": {
-          "compName": "WireCrossPoint#24",
-          "pinName": ""
+          "compName": "GUIAm2901QReg#0",
+          "pinName": "WE"
         },
+        "name": "unnamedWire#147",
         "path": [
           {
-            "x": 290.0,
-            "y": 2135.0
+            "x": 85.0,
+            "y": 100.0
           },
           {
-            "x": 290.0,
-            "y": 2100.0
+            "x": 85.0,
+            "y": 2505.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
-          "pinName": ""
+          "compName": "GUIAm2901DestDecode#0",
+          "pinName": "YF"
         },
         "pin2": {
-          "compName": "WireCrossPoint#25",
-          "pinName": ""
+          "compName": "GUImux1_4#0",
+          "pinName": "S0"
         },
+        "name": "unnamedWire#148",
         "path": [
           {
-            "x": 295.0,
-            "y": 2105.0
+            "x": 70.0,
+            "y": 80.0
+          },
+          {
+            "x": 70.0,
+            "y": 140.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#22",
-          "pinName": ""
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "F1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#26",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
+        "name": "unnamedWire#92",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#23",
-          "pinName": ""
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUIand#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#145"
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "OVR"
         },
         "pin2": {
-          "compName": "WireCrossPoint#27",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "OVR"
         },
-        "path": []
+        "name": "unnamedWire#91",
+        "path": [
+          {
+            "x": 320.0,
+            "y": 2165.0
+          },
+          {
+            "x": 320.0,
+            "y": 650.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#24",
-          "pinName": ""
+          "compName": "GUIand#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#28",
-          "pinName": ""
+          "compName": "GUIram4#0",
+          "pinName": "WE"
         },
-        "path": []
+        "name": "unnamedWire#146",
+        "path": [
+          {
+            "x": 230.0,
+            "y": 70.0
+          },
+          {
+            "x": 230.0,
+            "y": 105.0
+          },
+          {
+            "x": 90.0,
+            "y": 105.0
+          },
+          {
+            "x": 90.0,
+            "y": 2305.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#25",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I7"
         },
         "pin2": {
-          "compName": "WireCrossPoint#29",
-          "pinName": ""
+          "compName": "GUIAm2901DestDecode#0",
+          "pinName": "I7"
         },
-        "path": []
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 150.0
+          },
+          {
+            "x": 5.0,
+            "y": 60.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#26",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIor4#0",
-          "pinName": "A1"
+          "compName": "_submodelinterface",
+          "pinName": "ORAMn"
         },
-        "path": []
+        "name": "unnamedWire#94",
+        "path": [
+          {
+            "x": 325.0,
+            "y": 2115.0
+          },
+          {
+            "x": 325.0,
+            "y": 850.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#27",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I8"
         },
         "pin2": {
-          "compName": "GUIor4#0",
-          "pinName": "A2"
+          "compName": "GUIAm2901DestDecode#0",
+          "pinName": "I8"
         },
+        "name": "unnamedWire#0",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#28",
-          "pinName": ""
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "F4"
         },
         "pin2": {
-          "compName": "GUIor4#0",
-          "pinName": "A3"
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
         },
+        "name": "unnamedWire#93",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#29",
+          "compName": "WireCrossPoint#21",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIor4#0",
-          "pinName": "A4"
+          "compName": "_submodelinterface",
+          "pinName": "ORAMn+3"
         },
+        "name": "unnamedWire#96",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#26",
-          "pinName": ""
+          "compName": "GUImux1_4#0",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "GUImux1_4#0",
-          "pinName": "I1_1"
+          "compName": "_submodelinterface",
+          "pinName": "Y1"
         },
+        "name": "unnamedWire#149",
         "path": [
           {
-            "x": 255.0,
-            "y": 190.0
+            "x": 335.0,
+            "y": 140.0
+          },
+          {
+            "x": 335.0,
+            "y": 50.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#27",
+          "compName": "WireCrossPoint#20",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUImux1_4#0",
-          "pinName": "I1_2"
+          "compName": "WireCrossPoint#21",
+          "pinName": ""
         },
+        "name": "unnamedWire#95",
         "path": [
           {
-            "x": 260.0,
-            "y": 200.0
+            "x": 330.0,
+            "y": 2145.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#28",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I3"
         },
         "pin2": {
-          "compName": "GUImux1_4#0",
-          "pinName": "I1_3"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "I3"
         },
+        "name": "unnamedWire#5",
         "path": [
           {
-            "x": 265.0,
-            "y": 210.0
+            "x": 120.0,
+            "y": 550.0
+          },
+          {
+            "x": 120.0,
+            "y": 2135.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#29",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUImux1_4#0",
-          "pinName": "I1_4"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 270.0,
-            "y": 220.0
-          }
-        ]
+        "name": "unnamedWire#10",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#22",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#30",
+          "compName": "WireCrossPoint#22",
           "pinName": ""
         },
+        "name": "unnamedWire#98",
         "path": [
           {
-            "x": 10.0,
+            "x": 280.0,
             "y": 2090.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#23",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#31",
-          "pinName": ""
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "I4"
         },
+        "name": "unnamedWire#4",
         "path": [
           {
-            "x": 15.0,
-            "y": 2095.0
+            "x": 125.0,
+            "y": 450.0
+          },
+          {
+            "x": 125.0,
+            "y": 2125.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#24",
+          "compName": "WireCrossPoint#21",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#32",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "F3"
         },
+        "name": "unnamedWire#97",
         "path": [
           {
-            "x": 20.0,
-            "y": 2100.0
+            "x": 330.0,
+            "y": 750.0
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "IRAMn"
+          "pinName": "I5"
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "A1"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "I5"
         },
+        "name": "unnamedWire#3",
         "path": [
           {
-            "x": 5.0,
-            "y": 2350.0
+            "x": 130.0,
+            "y": 350.0
           },
           {
-            "x": 5.0,
-            "y": 2345.0
+            "x": 130.0,
+            "y": 2115.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#30",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "A2"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#31",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "A3"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#32",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "A4"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#31",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#33",
-          "pinName": ""
+          "compName": "GUINandGate#0",
+          "pinName": "B"
         },
+        "name": "unnamedWire#12",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#32",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I6"
         },
         "pin2": {
-          "compName": "WireCrossPoint#34",
-          "pinName": ""
+          "compName": "GUIAm2901DestDecode#0",
+          "pinName": "I6"
         },
-        "path": []
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 250.0
+          },
+          {
+            "x": 10.0,
+            "y": 70.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#25",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#35",
-          "pinName": ""
+          "compName": "GUINandGate#0",
+          "pinName": "A"
         },
+        "name": "unnamedWire#11",
         "path": [
           {
-            "x": 25.0,
-            "y": 2105.0
+            "x": 155.0,
+            "y": 80.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#30",
-          "pinName": ""
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "F2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#36",
+          "compName": "WireCrossPoint#23",
           "pinName": ""
         },
-        "path": []
+        "name": "unnamedWire#99",
+        "path": [
+          {
+            "x": 285.0,
+            "y": 2125.0
+          },
+          {
+            "x": 285.0,
+            "y": 2095.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#36",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "B1"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "A3"
         },
+        "name": "unnamedWire#58",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#33",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "B2"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "A2"
         },
+        "name": "unnamedWire#57",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#34",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "B3"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "A4"
         },
+        "name": "unnamedWire#59",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#35",
+          "compName": "WireCrossPoint#37",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIsel3_4#0",
-          "pinName": "B4"
+          "pinName": "C1"
         },
+        "name": "unnamedWire#132",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#33",
+          "compName": "WireCrossPoint#38",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#37",
-          "pinName": ""
+          "compName": "GUIsel3_4#0",
+          "pinName": "C2"
         },
+        "name": "unnamedWire#133",
         "path": []
       },
       {
@@ -2844,6 +2801,7 @@ mograsim version: 0.1.3
           "compName": "WireCrossPoint#38",
           "pinName": ""
         },
+        "name": "unnamedWire#130",
         "path": []
       },
       {
@@ -2855,29 +2813,42 @@ mograsim version: 0.1.3
           "compName": "WireCrossPoint#39",
           "pinName": ""
         },
+        "name": "unnamedWire#131",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#37",
+          "compName": "WireCrossPoint#36",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "C1"
+          "compName": "GUIsel3_4#1",
+          "pinName": "B1"
         },
-        "path": []
+        "name": "unnamedWire#136",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 2585.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#38",
+          "compName": "WireCrossPoint#37",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "C2"
+          "compName": "GUIsel3_4#1",
+          "pinName": "B2"
         },
-        "path": []
+        "name": "unnamedWire#137",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 2595.0
+          }
+        ]
       },
       {
         "pin1": {
@@ -2888,6 +2859,7 @@ mograsim version: 0.1.3
           "compName": "GUIsel3_4#0",
           "pinName": "C3"
         },
+        "name": "unnamedWire#134",
         "path": []
       },
       {
@@ -2899,6 +2871,7 @@ mograsim version: 0.1.3
           "compName": "GUIsel3_4#0",
           "pinName": "C4"
         },
+        "name": "unnamedWire#135",
         "path": [
           {
             "x": 5.0,
@@ -2912,33 +2885,64 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#36",
-          "pinName": ""
+          "compName": "GUIdlatch4#1",
+          "pinName": "Q2"
         },
         "pin2": {
-          "compName": "GUIsel3_4#1",
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "B2"
+        },
+        "name": "unnamedWire#61",
+        "path": [
+          {
+            "x": 205.0,
+            "y": 2290.0
+          },
+          {
+            "x": 205.0,
+            "y": 2275.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIdlatch4#1",
+          "pinName": "Q1"
+        },
+        "pin2": {
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
           "pinName": "B1"
         },
+        "name": "unnamedWire#60",
         "path": [
           {
-            "x": 10.0,
-            "y": 2585.0
+            "x": 200.0,
+            "y": 2280.0
+          },
+          {
+            "x": 200.0,
+            "y": 2265.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#37",
-          "pinName": ""
+          "compName": "GUIdlatch4#1",
+          "pinName": "Q4"
         },
         "pin2": {
-          "compName": "GUIsel3_4#1",
-          "pinName": "B2"
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "B4"
         },
+        "name": "unnamedWire#63",
         "path": [
           {
-            "x": 15.0,
-            "y": 2595.0
+            "x": 215.0,
+            "y": 2310.0
+          },
+          {
+            "x": 215.0,
+            "y": 2295.0
           }
         ]
       },
@@ -2951,6 +2955,7 @@ mograsim version: 0.1.3
           "compName": "GUIsel3_4#1",
           "pinName": "B3"
         },
+        "name": "unnamedWire#138",
         "path": [
           {
             "x": 20.0,
@@ -2958,6 +2963,27 @@ mograsim version: 0.1.3
           }
         ]
       },
+      {
+        "pin1": {
+          "compName": "GUIdlatch4#1",
+          "pinName": "Q3"
+        },
+        "pin2": {
+          "compName": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "B3"
+        },
+        "name": "unnamedWire#62",
+        "path": [
+          {
+            "x": 210.0,
+            "y": 2300.0
+          },
+          {
+            "x": 210.0,
+            "y": 2285.0
+          }
+        ]
+      },
       {
         "pin1": {
           "compName": "WireCrossPoint#39",
@@ -2967,6 +2993,7 @@ mograsim version: 0.1.3
           "compName": "GUIsel3_4#1",
           "pinName": "B4"
         },
+        "name": "unnamedWire#139",
         "path": [
           {
             "x": 25.0,
@@ -2976,270 +3003,419 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "Y1"
+          "compName": "GUIAm2901QReg#0",
+          "pinName": "Q2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "name": "unnamedWire#65",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2901QReg#0",
+          "pinName": "Q1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#64",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2901QReg#0",
+          "pinName": "Q4"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#67",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2901QReg#0",
+          "pinName": "Q3"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "name": "unnamedWire#66",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "OQn"
+        },
+        "name": "unnamedWire#69",
+        "path": [
+          {
+            "x": 335.0,
+            "y": 2495.0
+          },
+          {
+            "x": 335.0,
+            "y": 1050.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "name": "unnamedWire#68",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#31",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#33",
+          "pinName": ""
+        },
+        "name": "unnamedWire#121",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#32",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#34",
+          "pinName": ""
+        },
+        "name": "unnamedWire#122",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#32",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram4#0",
-          "pinName": "D1"
+          "compName": "GUIsel3_4#0",
+          "pinName": "A4"
         },
+        "name": "unnamedWire#120",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "Y2"
+          "compName": "WireCrossPoint#36",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram4#0",
-          "pinName": "D2"
+          "compName": "GUIsel3_4#0",
+          "pinName": "B1"
         },
+        "name": "unnamedWire#125",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "Y3"
+          "compName": "WireCrossPoint#33",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram4#0",
-          "pinName": "D3"
+          "compName": "GUIsel3_4#0",
+          "pinName": "B2"
         },
+        "name": "unnamedWire#126",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "Y4"
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram4#0",
-          "pinName": "D4"
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
         },
+        "name": "unnamedWire#70",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIAm2901DestDecode#0",
-          "pinName": "RAMWE"
+          "compName": "WireCrossPoint#25",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand#0",
-          "pinName": "A"
+          "compName": "WireCrossPoint#35",
+          "pinName": ""
         },
-        "path": []
+        "name": "unnamedWire#123",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 2105.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#30",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand#0",
-          "pinName": "B"
-        }
+          "compName": "WireCrossPoint#36",
+          "pinName": ""
+        },
+        "name": "unnamedWire#124",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIand#0",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIram4#0",
-          "pinName": "WE"
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
         },
+        "name": "unnamedWire#72",
         "path": [
           {
-            "x": 230.0,
-            "y": 70.0
+            "x": 135.0,
+            "y": 2670.0
           },
           {
-            "x": 230.0,
-            "y": 105.0
+            "x": 30.0,
+            "y": 2670.0
           },
           {
-            "x": 90.0,
-            "y": 105.0
+            "x": 30.0,
+            "y": 2635.0
           },
           {
-            "x": 90.0,
-            "y": 2305.0
+            "x": 35.0,
+            "y": 2635.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901DestDecode#0",
-          "pinName": "QWE"
+          "compName": "WireCrossPoint#33",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901QReg#0",
-          "pinName": "WE"
+          "compName": "WireCrossPoint#37",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 85.0,
-            "y": 100.0
-          },
-          {
-            "x": 85.0,
-            "y": 2505.0
-          }
-        ]
+        "name": "unnamedWire#129",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIAm2901DestDecode#0",
-          "pinName": "YF"
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUImux1_4#0",
-          "pinName": "S0"
+          "compName": "_submodelinterface",
+          "pinName": "OQn+3"
         },
+        "name": "unnamedWire#71",
         "path": [
           {
-            "x": 70.0,
-            "y": 80.0
+            "x": 340.0,
+            "y": 2525.0
           },
           {
-            "x": 70.0,
-            "y": 140.0
+            "x": 340.0,
+            "y": 1150.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUImux1_4#0",
-          "pinName": "Y1"
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y1"
+          "compName": "GUIsel3_4#1",
+          "pinName": "C1"
         },
-        "path": [
-          {
-            "x": 335.0,
-            "y": 140.0
-          },
-          {
-            "x": 335.0,
-            "y": 50.0
-          }
-        ]
+        "name": "unnamedWire#74",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUImux1_4#0",
-          "pinName": "Y2"
+          "compName": "WireCrossPoint#34",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y2"
+          "compName": "GUIsel3_4#0",
+          "pinName": "B3"
         },
+        "name": "unnamedWire#127",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUImux1_4#0",
-          "pinName": "Y3"
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y3"
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
         },
+        "name": "unnamedWire#73",
         "path": [
           {
-            "x": 335.0,
-            "y": 160.0
+            "x": 140.0,
+            "y": 2675.0
           },
           {
-            "x": 335.0,
-            "y": 250.0
+            "x": 35.0,
+            "y": 2675.0
+          },
+          {
+            "x": 35.0,
+            "y": 2640.0
+          },
+          {
+            "x": 40.0,
+            "y": 2640.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUImux1_4#0",
-          "pinName": "Y4"
+          "compName": "WireCrossPoint#35",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y4"
+          "compName": "GUIsel3_4#0",
+          "pinName": "B4"
+        },
+        "name": "unnamedWire#128",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIsel3_4#1",
+          "pinName": "C3"
         },
+        "name": "unnamedWire#76",
         "path": [
           {
-            "x": 325.0,
-            "y": 170.0
+            "x": 145.0,
+            "y": 2680.0
           },
           {
-            "x": 325.0,
-            "y": 350.0
+            "x": 40.0,
+            "y": 2680.0
+          },
+          {
+            "x": 40.0,
+            "y": 2645.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIor4#0",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#40",
-          "pinName": ""
+          "compName": "GUIsel3_4#1",
+          "pinName": "C2"
         },
+        "name": "unnamedWire#75",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#40",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "IQn"
         },
         "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "A"
+          "compName": "GUIsel3_4#1",
+          "pinName": "A1"
         },
+        "name": "unnamedWire#78",
         "path": [
           {
-            "x": 315.0,
-            "y": 445.0
+            "x": 5.0,
+            "y": 2550.0
+          },
+          {
+            "x": 5.0,
+            "y": 2545.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#40",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "IQn+3"
         },
         "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "B"
+          "compName": "GUIsel3_4#1",
+          "pinName": "C4"
         },
+        "name": "unnamedWire#77",
         "path": [
           {
-            "x": 315.0,
-            "y": 455.0
+            "x": 5.0,
+            "y": 2650.0
+          },
+          {
+            "x": 5.0,
+            "y": 2655.0
           }
         ]
-      },
-      {
-        "pin1": {
-          "compName": "GUINandGate#1",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "F\u003d0"
-        },
-        "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIAm2901",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {
+      "qreg": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIAm2901QReg#0"
+        }
+      },
+      "regs": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIram4#0"
+        }
+      }
+    },
+    "atomicHighLevelStates": {}
   }
 }
\ No newline at end of file
index a24476b..a575c5c 100644 (file)
@@ -80,602 +80,635 @@ mograsim version: 0.1.3
     "innerScale": 0.25,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 15.0,
           "y": 50.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "GUInand3",
+        "name": "GUInand3#0",
         "pos": {
           "x": 55.0,
           "y": 10.0
-        },
-        "id": "GUInand3",
-        "name": "GUInand3#0"
+        }
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 15.0,
           "y": 10.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#3",
         "pos": {
           "x": 55.0,
           "y": 70.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#3",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
         "pos": {
           "x": 55.0,
           "y": 45.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#2",
         "params": 1
       },
       {
+        "id": "GUIand",
+        "name": "GUIand#0",
         "pos": {
           "x": 100.0,
           "y": 135.0
-        },
-        "id": "GUIand",
-        "name": "GUIand#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 4.0,
           "y": 24.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 4.0,
           "y": 19.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
           "x": 9.0,
           "y": 59.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 4.0,
           "y": 44.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
         "pos": {
           "x": 9.0,
           "y": 64.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
         "pos": {
           "x": 9.0,
           "y": 54.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#4",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
         "pos": {
           "x": 49.0,
           "y": 99.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#7",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
         "pos": {
           "x": 9.0,
           "y": 84.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#6",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
         "pos": {
           "x": 39.0,
           "y": 19.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#9",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
         "pos": {
           "x": 49.0,
           "y": 74.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#8",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
         "pos": {
           "x": 39.0,
           "y": 34.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#10",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#4",
         "pos": {
           "x": 100.0,
           "y": 50.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#4",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I5"
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#3",
+          "pinName": "B"
         },
+        "name": "unnamedWire#14",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "A"
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 5.0,
-            "y": 15.0
-          }
-        ]
+        "name": "unnamedWire#13",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
-        "path": []
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 50.0,
+            "y": 100.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "B"
+          "compName": "_submodelinterface",
+          "pinName": "SN"
         },
-        "path": []
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 105.0
+          },
+          {
+            "x": 135.0,
+            "y": 105.0
+          },
+          {
+            "x": 135.0,
+            "y": 100.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
+        "name": "unnamedWire#18",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "A"
+          "compName": "_submodelinterface",
+          "pinName": "RN"
         },
+        "name": "unnamedWire#17",
         "path": [
           {
-            "x": 45.0,
-            "y": 45.0
-          },
-          {
-            "x": 45.0,
-            "y": 50.0
+            "x": 50.0,
+            "y": 220.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "FN"
+          "compName": "GUInand3#0",
+          "pinName": "B"
         },
+        "name": "unnamedWire#19",
         "path": [
           {
-            "x": 5.0,
-            "y": 180.0
+            "x": 50.0,
+            "y": 25.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I4"
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
+        "name": "unnamedWire#21",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#4",
+          "compName": "GUINandGate#3",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#23",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUInand3#0",
-          "pinName": "A"
+          "compName": "_submodelinterface",
+          "pinName": "CinE"
         },
+        "name": "unnamedWire#22",
         "path": [
           {
-            "x": 10.0,
-            "y": 40.0
+            "x": 40.0,
+            "y": 5.0
           },
           {
-            "x": 45.0,
-            "y": 40.0
+            "x": 115.0,
+            "y": 5.0
           },
           {
-            "x": 45.0,
-            "y": 15.0
+            "x": 115.0,
+            "y": 20.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "A"
+          "compName": "GUIand#0",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#25",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 150.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "GUInand3#0",
+          "pinName": "C"
         },
+        "name": "unnamedWire#24",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "GUInand3#0",
+          "pinName": "Y"
         },
         "pin2": {
+          "compName": "GUINandGate#4",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#27"
+      },
+      {
+        "pin1": {
           "compName": "GUINandGate#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUINandGate#2",
           "pinName": "B"
         },
+        "name": "unnamedWire#26",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "GUINandGate#3",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "GUIand#0",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#29"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "GUINandGate#2",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#3",
+          "compName": "GUINandGate#4",
           "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#28"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "SN"
+          "compName": "GUInand3#0",
+          "pinName": "A"
         },
+        "name": "unnamedWire#9",
         "path": [
           {
             "x": 10.0,
-            "y": 105.0
+            "y": 40.0
           },
           {
-            "x": 135.0,
-            "y": 105.0
+            "x": 45.0,
+            "y": 40.0
           },
           {
-            "x": 135.0,
-            "y": 100.0
+            "x": 45.0,
+            "y": 15.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I3"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
-        "path": [
-          {
-            "x": 50.0,
-            "y": 100.0
-          }
-        ]
+        "name": "unnamedWire#8",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I4"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "RN"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 50.0,
-            "y": 220.0
-          }
-        ]
+        "name": "unnamedWire#7",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#8",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "FN"
         },
-        "path": []
+        "name": "unnamedWire#6",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 180.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUInand3#0",
-          "pinName": "B"
+          "compName": "GUINandGate#0",
+          "pinName": "A"
         },
+        "name": "unnamedWire#1",
         "path": [
           {
-            "x": 50.0,
-            "y": 25.0
+            "x": 5.0,
+            "y": 15.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I5"
         },
         "pin2": {
-          "compName": "GUINandGate#3",
-          "pinName": "A"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
+        "name": "unnamedWire#0",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
+          "compName": "GUINandGate#4",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "L"
         },
+        "name": "unnamedWire#30",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "CinE"
+          "compName": "GUINandGate#2",
+          "pinName": "A"
         },
+        "name": "unnamedWire#5",
         "path": [
           {
-            "x": 40.0,
-            "y": 5.0
-          },
-          {
-            "x": 115.0,
-            "y": 5.0
+            "x": 45.0,
+            "y": 45.0
           },
           {
-            "x": 115.0,
-            "y": 20.0
+            "x": 45.0,
+            "y": 50.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
-          "pinName": ""
+          "compName": "GUINandGate#1",
+          "pinName": "A"
         },
+        "name": "unnamedWire#10",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUInand3#0",
-          "pinName": "C"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
+        "name": "unnamedWire#4",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
-          "pinName": ""
-        },
-        "pin2": {
           "compName": "GUIand#0",
-          "pinName": "B"
-        },
-        "path": [
-          {
-            "x": 40.0,
-            "y": 150.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUINandGate#1",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "B"
+          "compName": "_submodelinterface",
+          "pinName": "SBE"
         },
+        "name": "unnamedWire#31",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUInand3#0",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#4",
-          "pinName": "A"
-        }
+          "compName": "GUINandGate#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#3",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#2",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#4",
+          "compName": "GUINandGate#1",
           "pinName": "B"
-        }
-      },
-      {
-        "pin1": {
-          "compName": "GUINandGate#3",
-          "pinName": "Y"
         },
-        "pin2": {
-          "compName": "GUIand#0",
-          "pinName": "A"
-        }
+        "name": "unnamedWire#12",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#4",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "L"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
+        "name": "unnamedWire#2",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIand#0",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "SBE"
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
         },
+        "name": "unnamedWire#11",
         "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIAm2901ALUFuncDecode",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 62d78f1..c6f61c4 100644 (file)
@@ -152,1165 +152,1030 @@ mograsim version: 0.1.3
     "innerScale": 0.25,
     "subComps": [
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#14",
         "pos": {
           "x": 34.0,
           "y": 354.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#14",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#13",
         "pos": {
           "x": 34.0,
           "y": 254.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#13",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#16",
         "pos": {
           "x": 36.5,
           "y": 264.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#16",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#15",
         "pos": {
           "x": 36.5,
           "y": 164.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#15",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#18",
         "pos": {
           "x": 84.0,
           "y": 374.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#18",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#17",
         "pos": {
           "x": 36.5,
           "y": 364.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#17",
         "params": 1
       },
       {
+        "id": "GUIAm2901ALUFuncDecode",
+        "name": "GUIAm2901ALUFuncDecode#0",
         "pos": {
           "x": 20.0,
           "y": 2.5
-        },
-        "id": "GUIAm2901ALUFuncDecode",
-        "name": "GUIAm2901ALUFuncDecode#0"
+        }
       },
       {
+        "id": "GUIAm2901ALUOneBit",
+        "name": "GUIAm2901ALUOneBit#0",
         "pos": {
           "x": 45.0,
           "y": 80.0
-        },
-        "id": "GUIAm2901ALUOneBit",
-        "name": "GUIAm2901ALUOneBit#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#19",
         "pos": {
           "x": 84.0,
           "y": 384.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#19",
         "params": 1
       },
       {
+        "id": "GUIxor",
+        "name": "GUIxor#0",
         "pos": {
           "x": 95.0,
           "y": 400.0
-        },
-        "id": "GUIxor",
-        "name": "GUIxor#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 24.0,
           "y": 194.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 24.0,
           "y": 94.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
           "x": 26.5,
           "y": 104.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 24.0,
           "y": 294.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
         "pos": {
           "x": 26.5,
           "y": 304.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
         "pos": {
           "x": 26.5,
           "y": 204.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#4",
         "params": 1
       },
       {
+        "id": "GUIAm2901ALUOneBit",
+        "name": "GUIAm2901ALUOneBit#1",
         "pos": {
           "x": 45.0,
           "y": 180.0
-        },
-        "id": "GUIAm2901ALUOneBit",
-        "name": "GUIAm2901ALUOneBit#1"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
         "pos": {
           "x": 29.0,
           "y": 224.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#7",
         "params": 1
       },
       {
+        "id": "GUIAm2901ALUOneBit",
+        "name": "GUIAm2901ALUOneBit#2",
         "pos": {
           "x": 45.0,
           "y": 280.0
-        },
-        "id": "GUIAm2901ALUOneBit",
-        "name": "GUIAm2901ALUOneBit#2"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
         "pos": {
           "x": 29.0,
           "y": 124.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#6",
         "params": 1
       },
       {
+        "id": "GUIAm2901ALUOneBit",
+        "name": "GUIAm2901ALUOneBit#3",
         "pos": {
           "x": 45.0,
           "y": 380.0
-        },
-        "id": "GUIAm2901ALUOneBit",
-        "name": "GUIAm2901ALUOneBit#3"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
         "pos": {
           "x": 31.5,
           "y": 144.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#9",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
         "pos": {
           "x": 29.0,
           "y": 324.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#8",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
         "pos": {
           "x": 31.5,
           "y": 244.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#10",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#12",
         "pos": {
           "x": 34.0,
           "y": 154.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#12",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#11",
         "pos": {
           "x": 31.5,
           "y": 344.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#11",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I5"
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUFuncDecode#0",
-          "pinName": "I5"
+          "compName": "GUIAm2901ALUOneBit#2",
+          "pinName": "FN"
         },
-        "path": [
-          {
-            "x": 5.0,
-            "y": 20.0
-          },
-          {
-            "x": 5.0,
-            "y": 7.5
-          }
-        ]
+        "name": "unnamedWire#36",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I4"
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
         },
         "pin2": {
+          "compName": "GUIAm2901ALUOneBit#1",
+          "pinName": "FN"
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
           "compName": "GUIAm2901ALUFuncDecode#0",
-          "pinName": "I4"
+          "pinName": "L"
         },
+        "pin2": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "name": "unnamedWire#38",
         "path": [
           {
-            "x": 10.0,
-            "y": 60.0
+            "x": 67.5,
+            "y": 17.5
           },
           {
-            "x": 10.0,
-            "y": 17.5
+            "x": 67.5,
+            "y": 75.0
+          },
+          {
+            "x": 37.5,
+            "y": 75.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I3"
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUFuncDecode#0",
-          "pinName": "I3"
+          "compName": "GUIAm2901ALUOneBit#3",
+          "pinName": "FN"
         },
+        "name": "unnamedWire#37",
         "path": [
           {
-            "x": 15.0,
-            "y": 100.0
-          },
-          {
-            "x": 15.0,
-            "y": 27.5
+            "x": 35.0,
+            "y": 455.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUFuncDecode#0",
-          "pinName": "SBE"
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
-        "path": [
-          {
-            "x": 62.5,
-            "y": 37.5
-          },
-          {
-            "x": 62.5,
-            "y": 70.0
-          },
-          {
-            "x": 25.0,
-            "y": 70.0
-          }
-        ]
+        "name": "unnamedWire#39",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUIAm2901ALUOneBit#0",
+          "pinName": "L"
         },
+        "name": "unnamedWire#41",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#17",
           "pinName": ""
         },
+        "name": "unnamedWire#40",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#17",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#0",
-          "pinName": "CoutE"
+          "compName": "GUIAm2901ALUOneBit#2",
+          "pinName": "L"
         },
+        "name": "unnamedWire#43",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIAm2901ALUOneBit#1",
-          "pinName": "CoutE"
+          "pinName": "L"
         },
+        "name": "unnamedWire#42",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "R1"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#2",
-          "pinName": "CoutE"
+          "compName": "GUIAm2901ALUOneBit#0",
+          "pinName": "R"
         },
-        "path": []
+        "name": "unnamedWire#45",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 180.0
+          },
+          {
+            "x": 10.0,
+            "y": 115.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#17",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIAm2901ALUOneBit#3",
-          "pinName": "CoutE"
+          "pinName": "L"
         },
+        "name": "unnamedWire#44",
         "path": [
           {
-            "x": 25.0,
-            "y": 395.0
+            "x": 37.5,
+            "y": 465.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUFuncDecode#0",
-          "pinName": "CinE"
+          "compName": "_submodelinterface",
+          "pinName": "R3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "GUIAm2901ALUOneBit#2",
+          "pinName": "R"
         },
+        "name": "unnamedWire#47",
         "path": [
           {
-            "x": 70.0,
-            "y": 7.5
-          },
-          {
-            "x": 70.0,
-            "y": 77.5
+            "x": 10.0,
+            "y": 260.0
           },
           {
-            "x": 27.5,
-            "y": 77.5
+            "x": 10.0,
+            "y": 315.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIAm2901ALUOneBit#0",
-          "pinName": "CinE"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "R2"
         },
         "pin2": {
           "compName": "GUIAm2901ALUOneBit#1",
-          "pinName": "CinE"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIAm2901ALUOneBit#2",
-          "pinName": "CinE"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIAm2901ALUOneBit#3",
-          "pinName": "CinE"
+          "pinName": "R"
         },
+        "name": "unnamedWire#46",
         "path": [
           {
-            "x": 27.5,
-            "y": 405.0
+            "x": 10.0,
+            "y": 220.0
+          },
+          {
+            "x": 10.0,
+            "y": 215.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUFuncDecode#0",
-          "pinName": "RN"
+          "compName": "_submodelinterface",
+          "pinName": "S1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "GUIAm2901ALUOneBit#0",
+          "pinName": "S"
         },
+        "name": "unnamedWire#49",
         "path": [
           {
-            "x": 57.5,
-            "y": 57.5
-          },
-          {
-            "x": 57.5,
-            "y": 65.0
+            "x": 15.0,
+            "y": 340.0
           },
           {
-            "x": 30.0,
-            "y": 65.0
+            "x": 15.0,
+            "y": 135.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "R4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
-          "pinName": ""
+          "compName": "GUIAm2901ALUOneBit#3",
+          "pinName": "R"
         },
-        "path": []
+        "name": "unnamedWire#48",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 300.0
+          },
+          {
+            "x": 20.0,
+            "y": 415.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#8",
-          "pinName": ""
+          "compName": "GUIAm2901ALUOneBit#3",
+          "pinName": "CoutE"
         },
-        "path": []
+        "name": "unnamedWire#9",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 395.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#0",
-          "pinName": "RN"
+          "compName": "GUIAm2901ALUOneBit#2",
+          "pinName": "CoutE"
         },
+        "name": "unnamedWire#8",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUIAm2901ALUOneBit#1",
-          "pinName": "RN"
+          "pinName": "CoutE"
         },
+        "name": "unnamedWire#7",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#2",
-          "pinName": "RN"
+          "compName": "GUIAm2901ALUOneBit#0",
+          "pinName": "CoutE"
         },
+        "name": "unnamedWire#6",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I4"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#3",
-          "pinName": "RN"
+          "compName": "GUIAm2901ALUFuncDecode#0",
+          "pinName": "I4"
         },
+        "name": "unnamedWire#1",
         "path": [
           {
-            "x": 30.0,
-            "y": 425.0
+            "x": 10.0,
+            "y": 60.0
+          },
+          {
+            "x": 10.0,
+            "y": 17.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUFuncDecode#0",
-          "pinName": "SN"
+          "compName": "_submodelinterface",
+          "pinName": "S2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
+          "compName": "GUIAm2901ALUOneBit#1",
+          "pinName": "S"
         },
+        "name": "unnamedWire#50",
         "path": [
           {
-            "x": 65.0,
-            "y": 27.5
-          },
-          {
-            "x": 65.0,
-            "y": 72.5
+            "x": 5.0,
+            "y": 380.0
           },
           {
-            "x": 32.5,
-            "y": 72.5
+            "x": 5.0,
+            "y": 235.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#10",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#10",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#11",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIAm2901ALUOneBit#0",
-          "pinName": "SN"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#10",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIAm2901ALUOneBit#1",
-          "pinName": "SN"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#11",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I5"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#2",
-          "pinName": "SN"
+          "compName": "GUIAm2901ALUFuncDecode#0",
+          "pinName": "I5"
         },
-        "path": []
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 20.0
+          },
+          {
+            "x": 5.0,
+            "y": 7.5
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "S4"
         },
         "pin2": {
           "compName": "GUIAm2901ALUOneBit#3",
-          "pinName": "SN"
+          "pinName": "S"
         },
+        "name": "unnamedWire#52",
         "path": [
           {
-            "x": 32.5,
-            "y": 445.0
+            "x": 10.0,
+            "y": 460.0
+          },
+          {
+            "x": 10.0,
+            "y": 435.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUFuncDecode#0",
-          "pinName": "FN"
+          "compName": "_submodelinterface",
+          "pinName": "S3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#12",
-          "pinName": ""
+          "compName": "GUIAm2901ALUOneBit#2",
+          "pinName": "S"
         },
+        "name": "unnamedWire#51",
         "path": [
           {
-            "x": 60.0,
-            "y": 47.5
-          },
-          {
-            "x": 60.0,
-            "y": 67.5
+            "x": 10.0,
+            "y": 420.0
           },
           {
-            "x": 35.0,
-            "y": 67.5
+            "x": 10.0,
+            "y": 335.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#13",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#13",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#14",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#0",
-          "pinName": "FN"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
-        "pin2": {
-          "compName": "GUIAm2901ALUOneBit#1",
-          "pinName": "FN"
-        },
+        "name": "unnamedWire#5",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
-          "pinName": ""
+          "compName": "GUIAm2901ALUFuncDecode#0",
+          "pinName": "CinE"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#2",
-          "pinName": "FN"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
-        "pin2": {
-          "compName": "GUIAm2901ALUOneBit#3",
-          "pinName": "FN"
-        },
+        "name": "unnamedWire#10",
         "path": [
           {
-            "x": 35.0,
-            "y": 455.0
+            "x": 70.0,
+            "y": 7.5
+          },
+          {
+            "x": 70.0,
+            "y": 77.5
+          },
+          {
+            "x": 27.5,
+            "y": 77.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUFuncDecode#0",
-          "pinName": "L"
+          "compName": "GUIAm2901ALUOneBit#0",
+          "pinName": "Cout"
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
-          "pinName": ""
+          "compName": "GUIAm2901ALUOneBit#1",
+          "pinName": "Cin"
         },
+        "name": "unnamedWire#54",
         "path": [
           {
-            "x": 67.5,
-            "y": 17.5
+            "x": 85.0,
+            "y": 85.0
           },
           {
-            "x": 67.5,
-            "y": 75.0
+            "x": 85.0,
+            "y": 175.0
           },
           {
-            "x": 37.5,
-            "y": 75.0
+            "x": 40.0,
+            "y": 175.0
+          },
+          {
+            "x": 40.0,
+            "y": 185.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#16",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#16",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#17",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#15",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIAm2901ALUOneBit#0",
-          "pinName": "L"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#16",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "GUIAm2901ALUOneBit#1",
-          "pinName": "L"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#17",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#2",
-          "pinName": "L"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#17",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
-        "pin2": {
-          "compName": "GUIAm2901ALUOneBit#3",
-          "pinName": "L"
-        },
-        "path": [
-          {
-            "x": 37.5,
-            "y": 465.0
-          }
-        ]
+        "name": "unnamedWire#4",
+        "path": []
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "R1"
+          "pinName": "Cn"
         },
         "pin2": {
           "compName": "GUIAm2901ALUOneBit#0",
-          "pinName": "R"
+          "pinName": "Cin"
         },
+        "name": "unnamedWire#53",
         "path": [
           {
-            "x": 10.0,
-            "y": 180.0
+            "x": 5.0,
+            "y": 140.0
           },
           {
-            "x": 10.0,
-            "y": 115.0
+            "x": 5.0,
+            "y": 85.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "R2"
+          "compName": "GUIAm2901ALUFuncDecode#0",
+          "pinName": "SBE"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#1",
-          "pinName": "R"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
+        "name": "unnamedWire#3",
         "path": [
           {
-            "x": 10.0,
-            "y": 220.0
+            "x": 62.5,
+            "y": 37.5
           },
           {
-            "x": 10.0,
-            "y": 215.0
+            "x": 62.5,
+            "y": 70.0
+          },
+          {
+            "x": 25.0,
+            "y": 70.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "R3"
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#2",
-          "pinName": "R"
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 10.0,
-            "y": 260.0
-          },
-          {
-            "x": 10.0,
-            "y": 315.0
-          }
-        ]
+        "name": "unnamedWire#12",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "R4"
+          "compName": "GUIAm2901ALUOneBit#2",
+          "pinName": "Cout"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#3",
-          "pinName": "R"
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
         },
+        "name": "unnamedWire#56",
         "path": [
           {
-            "x": 20.0,
-            "y": 300.0
-          },
-          {
-            "x": 20.0,
-            "y": 415.0
+            "x": 85.0,
+            "y": 285.0
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "S1"
+          "pinName": "I3"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#0",
-          "pinName": "S"
+          "compName": "GUIAm2901ALUFuncDecode#0",
+          "pinName": "I3"
         },
+        "name": "unnamedWire#2",
         "path": [
           {
             "x": 15.0,
-            "y": 340.0
+            "y": 100.0
           },
           {
             "x": 15.0,
-            "y": 135.0
+            "y": 27.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "S2"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#1",
-          "pinName": "S"
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 5.0,
-            "y": 380.0
-          },
-          {
-            "x": 5.0,
-            "y": 235.0
-          }
-        ]
+        "name": "unnamedWire#11",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "S3"
+          "compName": "GUIAm2901ALUOneBit#1",
+          "pinName": "Cout"
         },
         "pin2": {
           "compName": "GUIAm2901ALUOneBit#2",
-          "pinName": "S"
+          "pinName": "Cin"
         },
+        "name": "unnamedWire#55",
         "path": [
           {
-            "x": 10.0,
-            "y": 420.0
+            "x": 85.0,
+            "y": 185.0
           },
           {
-            "x": 10.0,
-            "y": 335.0
+            "x": 85.0,
+            "y": 275.0
+          },
+          {
+            "x": 40.0,
+            "y": 275.0
+          },
+          {
+            "x": 40.0,
+            "y": 285.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "S4"
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
         },
         "pin2": {
+          "compName": "GUIAm2901ALUOneBit#1",
+          "pinName": "CinE"
+        },
+        "name": "unnamedWire#14",
+        "path": []
+      },
+      {
+        "pin1": {
           "compName": "GUIAm2901ALUOneBit#3",
-          "pinName": "S"
+          "pinName": "Cout"
         },
-        "path": [
-          {
-            "x": 10.0,
-            "y": 460.0
-          },
-          {
-            "x": 10.0,
-            "y": 435.0
-          }
-        ]
+        "pin2": {
+          "compName": "WireCrossPoint#19",
+          "pinName": ""
+        },
+        "name": "unnamedWire#58",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "Cn"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
         "pin2": {
           "compName": "GUIAm2901ALUOneBit#0",
-          "pinName": "Cin"
+          "pinName": "CinE"
         },
-        "path": [
-          {
-            "x": 5.0,
-            "y": 140.0
-          },
-          {
-            "x": 5.0,
-            "y": 85.0
-          }
-        ]
+        "name": "unnamedWire#13",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUOneBit#0",
-          "pinName": "Cout"
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#1",
+          "compName": "GUIAm2901ALUOneBit#3",
           "pinName": "Cin"
         },
+        "name": "unnamedWire#57",
         "path": [
-          {
-            "x": 85.0,
-            "y": 85.0
-          },
-          {
-            "x": 85.0,
-            "y": 175.0
-          },
           {
             "x": 40.0,
-            "y": 175.0
+            "y": 375.0
           },
           {
             "x": 40.0,
-            "y": 185.0
+            "y": 385.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUOneBit#1",
-          "pinName": "Cout"
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#2",
-          "pinName": "Cin"
+          "compName": "GUIAm2901ALUOneBit#3",
+          "pinName": "CinE"
         },
+        "name": "unnamedWire#16",
         "path": [
           {
-            "x": 85.0,
-            "y": 185.0
-          },
-          {
-            "x": 85.0,
-            "y": 275.0
-          },
-          {
-            "x": 40.0,
-            "y": 275.0
-          },
-          {
-            "x": 40.0,
-            "y": 285.0
+            "x": 27.5,
+            "y": 405.0
           }
         ]
       },
       {
         "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
           "compName": "GUIAm2901ALUOneBit#2",
-          "pinName": "Cout"
+          "pinName": "CinE"
+        },
+        "name": "unnamedWire#15",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2901ALUOneBit#0",
+          "pinName": "F"
         },
         "pin2": {
-          "compName": "WireCrossPoint#18",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "F1"
         },
+        "name": "unnamedWire#59",
         "path": [
           {
-            "x": 85.0,
-            "y": 285.0
+            "x": 90.0,
+            "y": 95.0
+          },
+          {
+            "x": 90.0,
+            "y": 20.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUOneBit#3",
-          "pinName": "Cin"
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2901ALUFuncDecode#0",
+          "pinName": "RN"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
         },
+        "name": "unnamedWire#17",
         "path": [
           {
-            "x": 40.0,
-            "y": 375.0
+            "x": 57.5,
+            "y": 57.5
+          },
+          {
+            "x": 57.5,
+            "y": 65.0
           },
           {
-            "x": 40.0,
-            "y": 385.0
+            "x": 30.0,
+            "y": 65.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUOneBit#3",
-          "pinName": "Cout"
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
+        "name": "unnamedWire#19",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUOneBit#0",
+          "compName": "GUIAm2901ALUOneBit#2",
           "pinName": "F"
         },
         "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "F1"
+          "pinName": "F3"
         },
+        "name": "unnamedWire#61",
         "path": [
           {
-            "x": 90.0,
-            "y": 95.0
+            "x": 100.0,
+            "y": 295.0
           },
           {
-            "x": 90.0,
-            "y": 20.0
+            "x": 100.0,
+            "y": 100.0
           }
         ]
       },
@@ -1323,6 +1188,7 @@ mograsim version: 0.1.3
           "compName": "_submodelinterface",
           "pinName": "F2"
         },
+        "name": "unnamedWire#60",
         "path": [
           {
             "x": 95.0,
@@ -1336,21 +1202,22 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUOneBit#2",
-          "pinName": "F"
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "F3"
+          "compName": "GUIxor#0",
+          "pinName": "A"
         },
+        "name": "unnamedWire#63",
         "path": [
           {
-            "x": 100.0,
-            "y": 295.0
+            "x": 90.0,
+            "y": 375.0
           },
           {
-            "x": 100.0,
-            "y": 100.0
+            "x": 90.0,
+            "y": 405.0
           }
         ]
       },
@@ -1363,6 +1230,7 @@ mograsim version: 0.1.3
           "compName": "_submodelinterface",
           "pinName": "F4"
         },
+        "name": "unnamedWire#62",
         "path": [
           {
             "x": 105.0,
@@ -1376,24 +1244,49 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIxor#0",
-          "pinName": "A"
+          "compName": "GUIAm2901ALUOneBit#1",
+          "pinName": "RN"
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#19",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Cn+4"
         },
+        "name": "unnamedWire#65",
         "path": [
           {
-            "x": 90.0,
-            "y": 375.0
+            "x": 130.0,
+            "y": 385.0
           },
           {
-            "x": 90.0,
-            "y": 405.0
+            "x": 130.0,
+            "y": 180.0
           }
         ]
       },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2901ALUOneBit#0",
+          "pinName": "RN"
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "WireCrossPoint#19",
@@ -1403,6 +1296,7 @@ mograsim version: 0.1.3
           "compName": "GUIxor#0",
           "pinName": "B"
         },
+        "name": "unnamedWire#64",
         "path": [
           {
             "x": 85.0,
@@ -1412,24 +1306,33 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Cn+4"
+          "compName": "GUIAm2901ALUOneBit#3",
+          "pinName": "RN"
         },
+        "name": "unnamedWire#23",
         "path": [
           {
-            "x": 130.0,
-            "y": 385.0
-          },
-          {
-            "x": 130.0,
-            "y": 180.0
+            "x": 30.0,
+            "y": 425.0
           }
         ]
       },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2901ALUOneBit#2",
+          "pinName": "RN"
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "GUIxor#0",
@@ -1438,16 +1341,181 @@ mograsim version: 0.1.3
         "pin2": {
           "compName": "_submodelinterface",
           "pinName": "OVR"
-        }
+        },
+        "name": "unnamedWire#66"
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#25",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2901ALUFuncDecode#0",
+          "pinName": "SN"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#24",
+        "path": [
+          {
+            "x": 65.0,
+            "y": 27.5
+          },
+          {
+            "x": 65.0,
+            "y": 72.5
+          },
+          {
+            "x": 32.5,
+            "y": 72.5
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2901ALUOneBit#0",
+          "pinName": "SN"
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2901ALUOneBit#2",
+          "pinName": "SN"
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2901ALUOneBit#1",
+          "pinName": "SN"
+        },
+        "name": "unnamedWire#28",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2901ALUOneBit#3",
+          "pinName": "SN"
+        },
+        "name": "unnamedWire#30",
+        "path": [
+          {
+            "x": 32.5,
+            "y": 445.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "name": "unnamedWire#32",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIAm2901ALUFuncDecode#0",
+          "pinName": "FN"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "name": "unnamedWire#31",
+        "path": [
+          {
+            "x": 60.0,
+            "y": 47.5
+          },
+          {
+            "x": 60.0,
+            "y": 67.5
+          },
+          {
+            "x": 35.0,
+            "y": 67.5
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIAm2901ALUOneBit#0",
+          "pinName": "FN"
+        },
+        "name": "unnamedWire#34",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#33",
+        "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIAm2901ALUInclDecode",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 75c63dd..12e2850 100644 (file)
@@ -240,1074 +240,1125 @@ mograsim version: 0.1.3
     "innerScale": 0.25,
     "subComps": [
       {
+        "id": "GUIsel3_4",
+        "name": "GUIsel3_4#0",
         "pos": {
           "x": 45.0,
           "y": 575.0
-        },
-        "id": "GUIsel3_4",
-        "name": "GUIsel3_4#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 14.0,
           "y": 499.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 9.0,
           "y": 459.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "GUIAm2901ALUInclDecode",
+        "name": "GUIAm2901ALUInclDecode#0",
         "pos": {
           "x": 60.0,
           "y": 15.0
-        },
-        "id": "GUIAm2901ALUInclDecode",
-        "name": "GUIAm2901ALUInclDecode#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
           "x": 24.0,
           "y": 579.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 19.0,
           "y": 539.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "GUIsel2_4",
+        "name": "GUIsel2_4#0",
         "pos": {
           "x": 45.0,
           "y": 365.0
-        },
-        "id": "GUIsel2_4",
-        "name": "GUIsel2_4#0"
+        }
       },
       {
+        "id": "GUIAm2901SourceDecode",
+        "name": "GUIAm2901SourceDecode#0",
         "pos": {
           "x": 15.0,
           "y": 165.0
-        },
-        "id": "GUIAm2901SourceDecode",
-        "name": "GUIAm2901SourceDecode#0"
+        }
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I5"
+          "compName": "GUIsel2_4#0",
+          "pinName": "Y1"
         },
         "pin2": {
           "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "I5"
+          "pinName": "R1"
         },
-        "path": []
+        "name": "unnamedWire#36",
+        "path": [
+          {
+            "x": 82.5,
+            "y": 370.0
+          },
+          {
+            "x": 82.5,
+            "y": 162.5
+          },
+          {
+            "x": 20.0,
+            "y": 162.5
+          },
+          {
+            "x": 20.0,
+            "y": 60.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I4"
+          "compName": "GUIAm2901SourceDecode#0",
+          "pinName": "RD"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "I4"
+          "compName": "GUIsel2_4#0",
+          "pinName": "SA"
         },
+        "name": "unnamedWire#35",
         "path": [
           {
-            "x": 5.0,
-            "y": 60.0
+            "x": 55.0,
+            "y": 210.0
           },
           {
-            "x": 5.0,
-            "y": 30.0
+            "x": 55.0,
+            "y": 220.0
+          },
+          {
+            "x": 25.0,
+            "y": 220.0
+          },
+          {
+            "x": 25.0,
+            "y": 370.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I3"
+          "compName": "GUIsel2_4#0",
+          "pinName": "Y3"
         },
         "pin2": {
           "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "I3"
+          "pinName": "R3"
         },
+        "name": "unnamedWire#38",
         "path": [
           {
-            "x": 15.0,
-            "y": 100.0
+            "x": 87.5,
+            "y": 390.0
           },
           {
-            "x": 15.0,
-            "y": 40.0
+            "x": 87.5,
+            "y": 157.5
+          },
+          {
+            "x": 25.0,
+            "y": 157.5
+          },
+          {
+            "x": 25.0,
+            "y": 80.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I2"
+          "compName": "GUIsel2_4#0",
+          "pinName": "Y2"
         },
         "pin2": {
-          "compName": "GUIAm2901SourceDecode#0",
-          "pinName": "I2"
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "R2"
         },
+        "name": "unnamedWire#37",
         "path": [
           {
-            "x": 5.0,
-            "y": 140.0
+            "x": 85.0,
+            "y": 380.0
           },
           {
-            "x": 5.0,
-            "y": 170.0
+            "x": 85.0,
+            "y": 160.0
+          },
+          {
+            "x": 22.5,
+            "y": 160.0
+          },
+          {
+            "x": 22.5,
+            "y": 70.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I1"
-        },
-        "pin2": {
-          "compName": "GUIAm2901SourceDecode#0",
-          "pinName": "I1"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I0"
+          "compName": "GUIsel2_4#0",
+          "pinName": "Y4"
         },
         "pin2": {
-          "compName": "GUIAm2901SourceDecode#0",
-          "pinName": "I0"
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "R4"
         },
+        "name": "unnamedWire#39",
         "path": [
           {
-            "x": 5.0,
-            "y": 220.0
+            "x": 90.0,
+            "y": 400.0
           },
           {
-            "x": 5.0,
-            "y": 190.0
+            "x": 90.0,
+            "y": 155.0
+          },
+          {
+            "x": 27.5,
+            "y": 155.0
+          },
+          {
+            "x": 27.5,
+            "y": 90.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "Cn"
+          "compName": "GUIsel3_4#0",
+          "pinName": "Y2"
         },
         "pin2": {
           "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "Cn"
+          "pinName": "S2"
         },
+        "name": "unnamedWire#41",
         "path": [
           {
-            "x": 10.0,
-            "y": 260.0
+            "x": 95.0,
+            "y": 590.0
           },
           {
-            "x": 10.0,
-            "y": 50.0
+            "x": 95.0,
+            "y": 150.0
+          },
+          {
+            "x": 32.5,
+            "y": 150.0
+          },
+          {
+            "x": 32.5,
+            "y": 110.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D1"
+          "compName": "GUIsel3_4#0",
+          "pinName": "Y1"
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "A1"
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "S1"
         },
+        "name": "unnamedWire#40",
         "path": [
           {
-            "x": 15.0,
-            "y": 300.0
+            "x": 92.5,
+            "y": 580.0
           },
           {
-            "x": 15.0,
-            "y": 390.0
+            "x": 92.5,
+            "y": 152.5
+          },
+          {
+            "x": 30.0,
+            "y": 152.5
+          },
+          {
+            "x": 30.0,
+            "y": 100.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D2"
+          "compName": "GUIsel3_4#0",
+          "pinName": "Y4"
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "A2"
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "S4"
         },
+        "name": "unnamedWire#43",
         "path": [
           {
-            "x": 10.0,
-            "y": 340.0
+            "x": 100.0,
+            "y": 610.0
           },
           {
-            "x": 10.0,
-            "y": 400.0
+            "x": 100.0,
+            "y": 145.0
+          },
+          {
+            "x": 37.5,
+            "y": 145.0
+          },
+          {
+            "x": 37.5,
+            "y": 130.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D3"
+          "compName": "GUIsel3_4#0",
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "A3"
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "S3"
         },
+        "name": "unnamedWire#42",
         "path": [
           {
-            "x": 5.0,
-            "y": 380.0
+            "x": 97.5,
+            "y": 600.0
           },
           {
-            "x": 5.0,
-            "y": 410.0
+            "x": 97.5,
+            "y": 147.5
+          },
+          {
+            "x": 35.0,
+            "y": 147.5
+          },
+          {
+            "x": 35.0,
+            "y": 120.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D4"
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "F2"
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "A4"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "A1"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "pinName": "F2"
         },
-        "path": []
+        "name": "unnamedWire#45",
+        "path": [
+          {
+            "x": 135.0,
+            "y": 30.0
+          },
+          {
+            "x": 135.0,
+            "y": 60.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A2"
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "F1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "F1"
         },
+        "name": "unnamedWire#44",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A3"
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "F4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "F4"
         },
-        "path": []
+        "name": "unnamedWire#47",
+        "path": [
+          {
+            "x": 125.0,
+            "y": 50.0
+          },
+          {
+            "x": 125.0,
+            "y": 140.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A4"
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "F3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "F3"
         },
-        "path": []
+        "name": "unnamedWire#46",
+        "path": [
+          {
+            "x": 130.0,
+            "y": 40.0
+          },
+          {
+            "x": 130.0,
+            "y": 100.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "OVR"
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "B1"
+          "compName": "_submodelinterface",
+          "pinName": "OVR"
         },
+        "name": "unnamedWire#49",
         "path": [
           {
-            "x": 10.0,
-            "y": 430.0
+            "x": 115.0,
+            "y": 70.0
+          },
+          {
+            "x": 115.0,
+            "y": 220.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "Cn+4"
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "B2"
+          "compName": "_submodelinterface",
+          "pinName": "Cn+4"
         },
+        "name": "unnamedWire#48",
         "path": [
           {
-            "x": 15.0,
-            "y": 440.0
+            "x": 120.0,
+            "y": 60.0
+          },
+          {
+            "x": 120.0,
+            "y": 180.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "D3"
         },
         "pin2": {
           "compName": "GUIsel2_4#0",
-          "pinName": "B3"
+          "pinName": "A3"
         },
+        "name": "unnamedWire#9",
         "path": [
           {
-            "x": 20.0,
-            "y": 450.0
+            "x": 5.0,
+            "y": 380.0
+          },
+          {
+            "x": 5.0,
+            "y": 410.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "D2"
         },
         "pin2": {
           "compName": "GUIsel2_4#0",
-          "pinName": "B4"
+          "pinName": "A2"
         },
+        "name": "unnamedWire#8",
         "path": [
           {
-            "x": 25.0,
-            "y": 460.0
+            "x": 10.0,
+            "y": 340.0
+          },
+          {
+            "x": 10.0,
+            "y": 400.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "D1"
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
+          "compName": "GUIsel2_4#0",
           "pinName": "A1"
         },
+        "name": "unnamedWire#7",
         "path": [
           {
-            "x": 10.0,
-            "y": 610.0
+            "x": 15.0,
+            "y": 300.0
+          },
+          {
+            "x": 15.0,
+            "y": 390.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "Cn"
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "A2"
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "Cn"
         },
+        "name": "unnamedWire#6",
         "path": [
           {
-            "x": 15.0,
-            "y": 620.0
+            "x": 10.0,
+            "y": 260.0
+          },
+          {
+            "x": 10.0,
+            "y": 50.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I4"
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "A3"
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "I4"
         },
+        "name": "unnamedWire#1",
         "path": [
           {
-            "x": 20.0,
-            "y": 630.0
+            "x": 5.0,
+            "y": 60.0
+          },
+          {
+            "x": 5.0,
+            "y": 30.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I5"
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "A4"
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "I5"
         },
-        "path": [
-          {
-            "x": 25.0,
-            "y": 640.0
-          }
-        ]
+        "name": "unnamedWire#0",
+        "path": []
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "B1"
+          "pinName": "I0"
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "B1"
+          "compName": "GUIAm2901SourceDecode#0",
+          "pinName": "I0"
         },
+        "name": "unnamedWire#5",
         "path": [
           {
             "x": 5.0,
-            "y": 620.0
+            "y": 220.0
           },
           {
             "x": 5.0,
-            "y": 650.0
+            "y": 190.0
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "B2"
+          "pinName": "D4"
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "B2"
+          "compName": "GUIsel2_4#0",
+          "pinName": "A4"
         },
+        "name": "unnamedWire#10",
         "path": []
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "B3"
+          "pinName": "I1"
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "B3"
+          "compName": "GUIAm2901SourceDecode#0",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I2"
+        },
+        "pin2": {
+          "compName": "GUIAm2901SourceDecode#0",
+          "pinName": "I2"
         },
+        "name": "unnamedWire#3",
         "path": [
           {
             "x": 5.0,
-            "y": 700.0
+            "y": 140.0
           },
           {
             "x": 5.0,
-            "y": 670.0
+            "y": 170.0
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "B4"
+          "pinName": "A2"
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "B4"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 10.0,
-            "y": 740.0
-          },
-          {
-            "x": 10.0,
-            "y": 680.0
-          }
-        ]
+        "name": "unnamedWire#12",
+        "path": []
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "Q1"
+          "pinName": "I3"
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "C1"
+          "compName": "GUIAm2901ALUInclDecode#0",
+          "pinName": "I3"
         },
+        "name": "unnamedWire#2",
         "path": [
           {
             "x": 15.0,
-            "y": 780.0
+            "y": 100.0
           },
           {
             "x": 15.0,
-            "y": 690.0
+            "y": 40.0
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "Q2"
+          "pinName": "A1"
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "C2"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 20.0,
-            "y": 820.0
-          },
-          {
-            "x": 20.0,
-            "y": 700.0
-          }
-        ]
+        "name": "unnamedWire#11",
+        "path": []
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "Q3"
+          "pinName": "A4"
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "C3"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 25.0,
-            "y": 860.0
-          },
-          {
-            "x": 25.0,
-            "y": 710.0
-          }
-        ]
+        "name": "unnamedWire#14",
+        "path": []
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "Q4"
+          "pinName": "A3"
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "C4"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
+        "pin2": {
+          "compName": "GUIsel2_4#0",
+          "pinName": "B2"
+        },
+        "name": "unnamedWire#16",
         "path": [
           {
-            "x": 30.0,
-            "y": 900.0
-          },
-          {
-            "x": 30.0,
-            "y": 720.0
+            "x": 15.0,
+            "y": 440.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901SourceDecode#0",
-          "pinName": "SQ"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "SC"
+          "compName": "GUIsel2_4#0",
+          "pinName": "B1"
         },
+        "name": "unnamedWire#15",
         "path": [
           {
-            "x": 75.0,
-            "y": 170.0
-          },
-          {
-            "x": 75.0,
-            "y": 240.0
-          },
-          {
-            "x": 30.0,
-            "y": 240.0
-          },
-          {
-            "x": 30.0,
-            "y": 600.0
+            "x": 10.0,
+            "y": 430.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901SourceDecode#0",
-          "pinName": "RA"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
         "pin2": {
           "compName": "GUIsel2_4#0",
-          "pinName": "SB"
+          "pinName": "B4"
         },
+        "name": "unnamedWire#18",
         "path": [
           {
-            "x": 70.0,
-            "y": 180.0
-          },
-          {
-            "x": 70.0,
-            "y": 235.0
-          },
-          {
-            "x": 20.0,
-            "y": 235.0
-          },
-          {
-            "x": 20.0,
-            "y": 380.0
+            "x": 25.0,
+            "y": 460.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901SourceDecode#0",
-          "pinName": "SB"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "SB"
+          "compName": "GUIsel2_4#0",
+          "pinName": "B3"
         },
+        "name": "unnamedWire#17",
         "path": [
           {
-            "x": 65.0,
-            "y": 190.0
-          },
-          {
-            "x": 65.0,
-            "y": 230.0
-          },
-          {
-            "x": 35.0,
-            "y": 230.0
-          },
-          {
-            "x": 35.0,
-            "y": 590.0
+            "x": 20.0,
+            "y": 450.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901SourceDecode#0",
-          "pinName": "SA"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
           "compName": "GUIsel3_4#0",
-          "pinName": "SA"
+          "pinName": "A1"
         },
+        "name": "unnamedWire#19",
         "path": [
           {
-            "x": 60.0,
-            "y": 200.0
-          },
-          {
-            "x": 60.0,
-            "y": 225.0
-          },
-          {
-            "x": 40.0,
-            "y": 225.0
-          },
-          {
-            "x": 40.0,
-            "y": 580.0
+            "x": 10.0,
+            "y": 610.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901SourceDecode#0",
-          "pinName": "RD"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "SA"
+          "compName": "GUIsel3_4#0",
+          "pinName": "A3"
         },
+        "name": "unnamedWire#21",
         "path": [
           {
-            "x": 55.0,
-            "y": 210.0
-          },
-          {
-            "x": 55.0,
-            "y": 220.0
-          },
-          {
-            "x": 25.0,
-            "y": 220.0
-          },
-          {
-            "x": 25.0,
-            "y": 370.0
+            "x": 20.0,
+            "y": 630.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "Y1"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "R1"
+          "compName": "GUIsel3_4#0",
+          "pinName": "A2"
         },
+        "name": "unnamedWire#20",
         "path": [
           {
-            "x": 82.5,
-            "y": 370.0
-          },
-          {
-            "x": 82.5,
-            "y": 162.5
-          },
-          {
-            "x": 20.0,
-            "y": 162.5
-          },
-          {
-            "x": 20.0,
-            "y": 60.0
+            "x": 15.0,
+            "y": 620.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "Y2"
+          "compName": "_submodelinterface",
+          "pinName": "B1"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "R2"
+          "compName": "GUIsel3_4#0",
+          "pinName": "B1"
         },
+        "name": "unnamedWire#23",
         "path": [
           {
-            "x": 85.0,
-            "y": 380.0
-          },
-          {
-            "x": 85.0,
-            "y": 160.0
-          },
-          {
-            "x": 22.5,
-            "y": 160.0
+            "x": 5.0,
+            "y": 620.0
           },
           {
-            "x": 22.5,
-            "y": 70.0
+            "x": 5.0,
+            "y": 650.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "Y3"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "R3"
+          "compName": "GUIsel3_4#0",
+          "pinName": "A4"
         },
+        "name": "unnamedWire#22",
         "path": [
-          {
-            "x": 87.5,
-            "y": 390.0
-          },
-          {
-            "x": 87.5,
-            "y": 157.5
-          },
-          {
-            "x": 25.0,
-            "y": 157.5
-          },
           {
             "x": 25.0,
-            "y": 80.0
+            "y": 640.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIsel2_4#0",
-          "pinName": "Y4"
+          "compName": "_submodelinterface",
+          "pinName": "B3"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "R4"
+          "compName": "GUIsel3_4#0",
+          "pinName": "B3"
         },
+        "name": "unnamedWire#25",
         "path": [
           {
-            "x": 90.0,
-            "y": 400.0
-          },
-          {
-            "x": 90.0,
-            "y": 155.0
-          },
-          {
-            "x": 27.5,
-            "y": 155.0
+            "x": 5.0,
+            "y": 700.0
           },
           {
-            "x": 27.5,
-            "y": 90.0
+            "x": 5.0,
+            "y": 670.0
           }
         ]
       },
       {
         "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "B2"
+        },
+        "pin2": {
           "compName": "GUIsel3_4#0",
-          "pinName": "Y1"
+          "pinName": "B2"
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "Q1"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "S1"
+          "compName": "GUIsel3_4#0",
+          "pinName": "C1"
         },
+        "name": "unnamedWire#27",
         "path": [
           {
-            "x": 92.5,
-            "y": 580.0
-          },
-          {
-            "x": 92.5,
-            "y": 152.5
-          },
-          {
-            "x": 30.0,
-            "y": 152.5
+            "x": 15.0,
+            "y": 780.0
           },
           {
-            "x": 30.0,
-            "y": 100.0
+            "x": 15.0,
+            "y": 690.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "Y2"
+          "compName": "_submodelinterface",
+          "pinName": "B4"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "S2"
+          "compName": "GUIsel3_4#0",
+          "pinName": "B4"
         },
+        "name": "unnamedWire#26",
         "path": [
           {
-            "x": 95.0,
-            "y": 590.0
-          },
-          {
-            "x": 95.0,
-            "y": 150.0
-          },
-          {
-            "x": 32.5,
-            "y": 150.0
+            "x": 10.0,
+            "y": 740.0
           },
           {
-            "x": 32.5,
-            "y": 110.0
+            "x": 10.0,
+            "y": 680.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "Y3"
+          "compName": "_submodelinterface",
+          "pinName": "Q3"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "S3"
+          "compName": "GUIsel3_4#0",
+          "pinName": "C3"
         },
+        "name": "unnamedWire#29",
         "path": [
           {
-            "x": 97.5,
-            "y": 600.0
-          },
-          {
-            "x": 97.5,
-            "y": 147.5
-          },
-          {
-            "x": 35.0,
-            "y": 147.5
+            "x": 25.0,
+            "y": 860.0
           },
           {
-            "x": 35.0,
-            "y": 120.0
+            "x": 25.0,
+            "y": 710.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIsel3_4#0",
-          "pinName": "Y4"
+          "compName": "_submodelinterface",
+          "pinName": "Q2"
         },
         "pin2": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "S4"
+          "compName": "GUIsel3_4#0",
+          "pinName": "C2"
         },
+        "name": "unnamedWire#28",
         "path": [
           {
-            "x": 100.0,
-            "y": 610.0
-          },
-          {
-            "x": 100.0,
-            "y": 145.0
-          },
-          {
-            "x": 37.5,
-            "y": 145.0
+            "x": 20.0,
+            "y": 820.0
           },
           {
-            "x": 37.5,
-            "y": 130.0
+            "x": 20.0,
+            "y": 700.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "F1"
-        },
-        "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "F1"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "F2"
+          "pinName": "Q4"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "F2"
+          "compName": "GUIsel3_4#0",
+          "pinName": "C4"
         },
+        "name": "unnamedWire#30",
         "path": [
           {
-            "x": 135.0,
-            "y": 30.0
+            "x": 30.0,
+            "y": 900.0
           },
           {
-            "x": 135.0,
-            "y": 60.0
+            "x": 30.0,
+            "y": 720.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "F3"
+          "compName": "GUIAm2901SourceDecode#0",
+          "pinName": "RA"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "F3"
+          "compName": "GUIsel2_4#0",
+          "pinName": "SB"
         },
+        "name": "unnamedWire#32",
         "path": [
           {
-            "x": 130.0,
-            "y": 40.0
+            "x": 70.0,
+            "y": 180.0
           },
           {
-            "x": 130.0,
-            "y": 100.0
+            "x": 70.0,
+            "y": 235.0
+          },
+          {
+            "x": 20.0,
+            "y": 235.0
+          },
+          {
+            "x": 20.0,
+            "y": 380.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "F4"
+          "compName": "GUIAm2901SourceDecode#0",
+          "pinName": "SQ"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "F4"
+          "compName": "GUIsel3_4#0",
+          "pinName": "SC"
         },
+        "name": "unnamedWire#31",
         "path": [
           {
-            "x": 125.0,
-            "y": 50.0
+            "x": 75.0,
+            "y": 170.0
           },
           {
-            "x": 125.0,
-            "y": 140.0
+            "x": 75.0,
+            "y": 240.0
+          },
+          {
+            "x": 30.0,
+            "y": 240.0
+          },
+          {
+            "x": 30.0,
+            "y": 600.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "Cn+4"
+          "compName": "GUIAm2901SourceDecode#0",
+          "pinName": "SA"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Cn+4"
+          "compName": "GUIsel3_4#0",
+          "pinName": "SA"
         },
+        "name": "unnamedWire#34",
         "path": [
           {
-            "x": 120.0,
-            "y": 60.0
+            "x": 60.0,
+            "y": 200.0
           },
           {
-            "x": 120.0,
-            "y": 180.0
+            "x": 60.0,
+            "y": 225.0
+          },
+          {
+            "x": 40.0,
+            "y": 225.0
+          },
+          {
+            "x": 40.0,
+            "y": 580.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIAm2901ALUInclDecode#0",
-          "pinName": "OVR"
+          "compName": "GUIAm2901SourceDecode#0",
+          "pinName": "SB"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "OVR"
+          "compName": "GUIsel3_4#0",
+          "pinName": "SB"
         },
+        "name": "unnamedWire#33",
         "path": [
           {
-            "x": 115.0,
-            "y": 70.0
+            "x": 65.0,
+            "y": 190.0
           },
           {
-            "x": 115.0,
-            "y": 220.0
+            "x": 65.0,
+            "y": 230.0
+          },
+          {
+            "x": 35.0,
+            "y": 230.0
+          },
+          {
+            "x": 35.0,
+            "y": 590.0
           }
         ]
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index b6b05e1..5abfdb5 100644 (file)
@@ -96,188 +96,242 @@ mograsim version: 0.1.3
     "innerScale": 0.2,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 60.0,
           "y": 55.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 54.0,
           "y": 69.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 49.0,
           "y": 59.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "GUImux1",
+        "name": "GUImux1#0",
         "pos": {
           "x": 90.0,
           "y": 70.0
-        },
-        "id": "GUImux1",
-        "name": "GUImux1#0"
+        }
       },
       {
+        "id": "GUIand",
+        "name": "GUIand#0",
         "pos": {
           "x": 10.0,
           "y": 20.0
-        },
-        "id": "GUIand",
-        "name": "GUIand#0"
+        }
       },
       {
+        "id": "GUIxor",
+        "name": "GUIxor#1",
         "pos": {
           "x": 10.0,
           "y": 290.0
-        },
-        "id": "GUIxor",
-        "name": "GUIxor#1"
+        }
       },
       {
+        "id": "GUIxor",
+        "name": "GUIxor#2",
         "pos": {
           "x": 135.0,
           "y": 70.0
-        },
-        "id": "GUIxor",
-        "name": "GUIxor#2"
+        }
       },
       {
+        "id": "GUIfulladder",
+        "name": "GUIfulladder#0",
         "pos": {
           "x": 60.0,
           "y": 20.0
-        },
-        "id": "GUIfulladder",
-        "name": "GUIfulladder#0"
+        }
       },
       {
+        "id": "GUIxor",
+        "name": "GUIxor#0",
         "pos": {
           "x": 10.0,
           "y": 190.0
-        },
-        "id": "GUIxor",
-        "name": "GUIxor#0"
+        }
       },
       {
+        "id": "GUIand",
+        "name": "GUIand#1",
         "pos": {
           "x": 135.0,
           "y": 20.0
-        },
-        "id": "GUIand",
-        "name": "GUIand#1"
+        }
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "Cin"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand#0",
-          "pinName": "A"
+          "compName": "GUIfulladder#0",
+          "pinName": "C"
         },
-        "path": []
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 55.0,
+            "y": 45.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "CoutE"
+          "compName": "GUIxor#1",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUIand#1",
-          "pinName": "A"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
+        "name": "unnamedWire#13",
         "path": [
           {
-            "x": 5.0,
-            "y": 75.0
+            "x": 55.0,
+            "y": 295.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "GUIfulladder#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUImux1#0",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 100.0,
+            "y": 25.0
           },
           {
-            "x": 5.0,
-            "y": 10.0
+            "x": 100.0,
+            "y": 65.0
           },
           {
-            "x": 130.0,
-            "y": 10.0
+            "x": 85.0,
+            "y": 65.0
           },
           {
-            "x": 130.0,
-            "y": 25.0
+            "x": 85.0,
+            "y": 85.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "CinE"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand#0",
+          "compName": "GUINandGate#0",
           "pinName": "B"
         },
+        "name": "unnamedWire#15",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUImux1#0",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#18",
         "path": [
           {
-            "x": 7.5,
-            "y": 125.0
+            "x": 82.5,
+            "y": 65.0
           },
           {
-            "x": 7.5,
-            "y": 35.0
+            "x": 82.5,
+            "y": 95.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "R"
+          "compName": "GUIfulladder#0",
+          "pinName": "Z"
         },
         "pin2": {
-          "compName": "GUIxor#0",
-          "pinName": "A"
-        }
+          "compName": "GUIand#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#17",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "RN"
+          "compName": "GUImux1#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUIxor#0",
-          "pinName": "B"
-        }
+          "compName": "GUIxor#2",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#19",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "S"
+          "compName": "GUIand#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUIxor#1",
+          "compName": "GUIfulladder#0",
           "pinName": "A"
-        }
+        },
+        "name": "unnamedWire#9",
+        "path": []
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "SN"
+          "pinName": "L"
         },
         "pin2": {
-          "compName": "GUIxor#1",
-          "pinName": "B"
-        }
+          "compName": "GUImux1#0",
+          "pinName": "S0"
+        },
+        "name": "unnamedWire#8",
+        "path": [
+          {
+            "x": 87.5,
+            "y": 425.0
+          },
+          {
+            "x": 87.5,
+            "y": 75.0
+          }
+        ]
       },
       {
         "pin1": {
@@ -288,6 +342,7 @@ mograsim version: 0.1.3
           "compName": "GUIxor#2",
           "pinName": "B"
         },
+        "name": "unnamedWire#7",
         "path": [
           {
             "x": 130.0,
@@ -302,34 +357,66 @@ mograsim version: 0.1.3
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "L"
+          "pinName": "SN"
         },
         "pin2": {
-          "compName": "GUImux1#0",
-          "pinName": "S0"
+          "compName": "GUIxor#1",
+          "pinName": "B"
         },
+        "name": "unnamedWire#6"
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "CoutE"
+        },
+        "pin2": {
+          "compName": "GUIand#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#1",
         "path": [
           {
-            "x": 87.5,
-            "y": 425.0
+            "x": 5.0,
+            "y": 75.0
           },
           {
-            "x": 87.5,
-            "y": 75.0
+            "x": 5.0,
+            "y": 10.0
+          },
+          {
+            "x": 130.0,
+            "y": 10.0
+          },
+          {
+            "x": 130.0,
+            "y": 25.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIand#0",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "Cin"
         },
         "pin2": {
-          "compName": "GUIfulladder#0",
+          "compName": "GUIand#0",
           "pinName": "A"
         },
+        "name": "unnamedWire#0",
         "path": []
       },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "S"
+        },
+        "pin2": {
+          "compName": "GUIxor#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#5"
+      },
       {
         "pin1": {
           "compName": "GUIxor#0",
@@ -339,6 +426,7 @@ mograsim version: 0.1.3
           "compName": "WireCrossPoint#0",
           "pinName": ""
         },
+        "name": "unnamedWire#10",
         "path": [
           {
             "x": 50.0,
@@ -348,174 +436,109 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUIxor#2",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUIfulladder#0",
-          "pinName": "B"
+          "compName": "_submodelinterface",
+          "pinName": "F"
         },
-        "path": [
-          {
-            "x": 50.0,
-            "y": 35.0
-          }
-        ]
+        "name": "unnamedWire#21",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "RN"
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "A"
+          "compName": "GUIxor#0",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#4"
       },
       {
         "pin1": {
-          "compName": "GUIxor#1",
+          "compName": "GUIand#1",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "Cout"
         },
-        "path": [
-          {
-            "x": 55.0,
-            "y": 295.0
-          }
-        ]
+        "name": "unnamedWire#20",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "R"
         },
         "pin2": {
-          "compName": "GUIfulladder#0",
-          "pinName": "C"
+          "compName": "GUIxor#0",
+          "pinName": "A"
         },
-        "path": [
-          {
-            "x": 55.0,
-            "y": 45.0
-          }
-        ]
+        "name": "unnamedWire#3"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
           "compName": "GUINandGate#0",
-          "pinName": "B"
+          "pinName": "A"
         },
+        "name": "unnamedWire#12",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIfulladder#0",
-          "pinName": "Y"
+          "compName": "_submodelinterface",
+          "pinName": "CinE"
         },
         "pin2": {
-          "compName": "GUImux1#0",
-          "pinName": "I0"
+          "compName": "GUIand#0",
+          "pinName": "B"
         },
+        "name": "unnamedWire#2",
         "path": [
           {
-            "x": 100.0,
-            "y": 25.0
-          },
-          {
-            "x": 100.0,
-            "y": 65.0
-          },
-          {
-            "x": 85.0,
-            "y": 65.0
+            "x": 7.5,
+            "y": 125.0
           },
           {
-            "x": 85.0,
-            "y": 85.0
+            "x": 7.5,
+            "y": 35.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUIfulladder#0",
-          "pinName": "Z"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIand#1",
+          "compName": "GUIfulladder#0",
           "pinName": "B"
         },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUINandGate#0",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "GUImux1#0",
-          "pinName": "I1"
-        },
+        "name": "unnamedWire#11",
         "path": [
           {
-            "x": 82.5,
-            "y": 65.0
-          },
-          {
-            "x": 82.5,
-            "y": 95.0
+            "x": 50.0,
+            "y": 35.0
           }
         ]
-      },
-      {
-        "pin1": {
-          "compName": "GUImux1#0",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "GUIxor#2",
-          "pinName": "A"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUIand#1",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Cout"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUIxor#2",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "F"
-        },
-        "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIAm2901ALUOneBit",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index d80d080..150c099 100644 (file)
@@ -80,593 +80,652 @@ mograsim version: 0.1.3
     "innerScale": 0.25,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 15.0,
           "y": 50.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#14",
         "pos": {
           "x": 74.0,
           "y": 159.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#14",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 15.0,
           "y": 10.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#13",
         "pos": {
           "x": 74.0,
           "y": 104.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#13",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#3",
         "pos": {
           "x": 15.0,
           "y": 150.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#3",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
         "pos": {
           "x": 15.0,
           "y": 90.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#15",
         "pos": {
           "x": 109.0,
           "y": 214.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#15",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 4.0,
           "y": 14.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 4.0,
           "y": 19.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
           "x": 9.0,
           "y": 59.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 4.0,
           "y": 24.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
         "pos": {
           "x": 9.0,
           "y": 104.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
         "pos": {
           "x": 9.0,
           "y": 64.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#4",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
         "pos": {
           "x": 39.0,
           "y": 59.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#7",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
         "pos": {
           "x": 4.0,
           "y": 154.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#6",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
         "pos": {
           "x": 44.0,
           "y": 54.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#9",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
         "pos": {
           "x": 44.0,
           "y": 19.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#8",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
         "pos": {
           "x": 39.0,
           "y": 134.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#10",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#12",
         "pos": {
           "x": 74.0,
           "y": 99.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#12",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#11",
         "pos": {
           "x": 74.0,
           "y": 19.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#11",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#12",
         "pos": {
           "x": 115.0,
           "y": 210.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#12",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#11",
         "pos": {
           "x": 110.0,
           "y": 105.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#11",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#10",
         "pos": {
           "x": 80.0,
           "y": 145.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#10",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#9",
         "pos": {
           "x": 80.0,
           "y": 90.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#9",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#8",
         "pos": {
           "x": 80.0,
           "y": 10.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#8",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#5",
         "pos": {
           "x": 50.0,
           "y": 50.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#5",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#4",
         "pos": {
           "x": 50.0,
           "y": 10.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#4",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#7",
         "pos": {
           "x": 50.0,
           "y": 130.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#7",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#6",
         "pos": {
           "x": 50.0,
           "y": 90.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#6",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I8"
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#3",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 165.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#7",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "LSH"
         },
-        "path": []
+        "name": "unnamedWire#36",
+        "path": [
+          {
+            "x": 125.0,
+            "y": 140.0
+          },
+          {
+            "x": 125.0,
+            "y": 180.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUINandGate#3",
+          "pinName": "A"
         },
+        "name": "unnamedWire#13",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "A"
+          "compName": "GUINandGate#9",
+          "pinName": "B"
         },
+        "name": "unnamedWire#35",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUINandGate#1",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "B"
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
         },
+        "name": "unnamedWire#16",
         "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I7"
+          "compName": "GUINandGate#3",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
+        "name": "unnamedWire#38",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#1",
+          "compName": "GUINandGate#4",
           "pinName": "A"
         },
+        "name": "unnamedWire#15",
         "path": [
           {
-            "x": 10.0,
-            "y": 55.0
+            "x": 5.0,
+            "y": 5.0
+          },
+          {
+            "x": 40.0,
+            "y": 5.0
+          },
+          {
+            "x": 40.0,
+            "y": 15.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
+          "compName": "GUINandGate#10",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#37",
+        "path": [
+          {
+            "x": 75.0,
+            "y": 150.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#1",
+          "compName": "GUINandGate#5",
           "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#18",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 65.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "GUINandGate#4",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#17",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 25.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#2",
+          "compName": "GUINandGate#10",
           "pinName": "B"
         },
+        "name": "unnamedWire#39",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "A"
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 5.0,
-            "y": 95.0
-          }
-        ]
+        "name": "unnamedWire#19",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I6"
+          "compName": "GUINandGate#9",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "GUINandGate#11",
+          "pinName": "A"
         },
+        "name": "unnamedWire#41"
+      },
+      {
+        "pin1": {
+          "compName": "GUINandGate#8",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "RSH"
+        },
+        "name": "unnamedWire#40",
         "path": [
           {
-            "x": 5.0,
-            "y": 100.0
+            "x": 130.0,
+            "y": 20.0
+          },
+          {
+            "x": 130.0,
+            "y": 60.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#3",
-          "pinName": "A"
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
         },
+        "name": "unnamedWire#21",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "GUINandGate#10",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#3",
-          "pinName": "B"
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
         },
+        "name": "unnamedWire#43",
         "path": [
           {
-            "x": 5.0,
-            "y": 165.0
+            "x": 110.0,
+            "y": 155.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#4",
-          "pinName": "A"
+          "compName": "_submodelinterface",
+          "pinName": "NSH"
         },
+        "name": "unnamedWire#20",
         "path": [
           {
-            "x": 5.0,
+            "x": 45.0,
             "y": 5.0
           },
           {
-            "x": 40.0,
+            "x": 135.0,
             "y": 5.0
           },
           {
-            "x": 40.0,
-            "y": 15.0
+            "x": 135.0,
+            "y": 20.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#1",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#7",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#4",
+          "compName": "GUINandGate#11",
           "pinName": "B"
         },
+        "name": "unnamedWire#42",
         "path": [
           {
-            "x": 40.0,
-            "y": 25.0
+            "x": 75.0,
+            "y": 170.0
+          },
+          {
+            "x": 105.0,
+            "y": 170.0
+          },
+          {
+            "x": 105.0,
+            "y": 120.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#5",
-          "pinName": "B"
+          "compName": "GUINandGate#6",
+          "pinName": "A"
         },
+        "name": "unnamedWire#23",
         "path": [
           {
-            "x": 40.0,
-            "y": 65.0
+            "x": 45.0,
+            "y": 95.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#0",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#8",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "NSH"
+          "compName": "GUINandGate#12",
+          "pinName": "B"
         },
+        "name": "unnamedWire#45",
         "path": [
           {
-            "x": 45.0,
-            "y": 5.0
-          },
-          {
-            "x": 135.0,
-            "y": 5.0
-          },
-          {
-            "x": 135.0,
-            "y": 20.0
+            "x": 110.0,
+            "y": 225.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
+          "compName": "GUINandGate#5",
+          "pinName": "A"
         },
+        "name": "unnamedWire#22",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#5",
+          "compName": "GUINandGate#12",
           "pinName": "A"
         },
+        "name": "unnamedWire#44",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
+          "compName": "GUINandGate#2",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#6",
-          "pinName": "A"
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
         },
+        "name": "unnamedWire#25",
         "path": [
           {
-            "x": 45.0,
-            "y": 95.0
+            "x": 40.0,
+            "y": 100.0
           }
         ]
       },
+      {
+        "pin1": {
+          "compName": "GUINandGate#12",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "QWE"
+        },
+        "name": "unnamedWire#47",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "WireCrossPoint#5",
@@ -676,6 +735,7 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#6",
           "pinName": "B"
         },
+        "name": "unnamedWire#24",
         "path": [
           {
             "x": 10.0,
@@ -693,17 +753,29 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUINandGate#2",
+          "compName": "GUINandGate#11",
           "pinName": "Y"
         },
         "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "YF"
+        },
+        "name": "unnamedWire#46"
+      },
+      {
+        "pin1": {
           "compName": "WireCrossPoint#10",
           "pinName": ""
         },
+        "pin2": {
+          "compName": "GUINandGate#7",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#27",
         "path": [
           {
             "x": 40.0,
-            "y": 100.0
+            "y": 145.0
           }
         ]
       },
@@ -716,21 +788,23 @@ mograsim version: 0.1.3
           "compName": "GUINandGate#7",
           "pinName": "A"
         },
+        "name": "unnamedWire#26",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#7",
-          "pinName": "B"
+          "compName": "GUINandGate#8",
+          "pinName": "A"
         },
+        "name": "unnamedWire#29",
         "path": [
           {
-            "x": 40.0,
-            "y": 145.0
+            "x": 75.0,
+            "y": 15.0
           }
         ]
       },
@@ -743,293 +817,268 @@ mograsim version: 0.1.3
           "compName": "WireCrossPoint#11",
           "pinName": ""
         },
+        "name": "unnamedWire#28",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#8",
-          "pinName": "A"
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 75.0,
-            "y": 15.0
-          }
-        ]
+        "name": "unnamedWire#9",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#8",
+          "compName": "GUINandGate#1",
           "pinName": "B"
         },
-        "path": [
-          {
-            "x": 75.0,
-            "y": 25.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUINandGate#5",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "RAMWE"
-        },
-        "path": [
-          {
-            "x": 125.0,
-            "y": 60.0
-          },
-          {
-            "x": 125.0,
-            "y": 100.0
-          }
-        ]
+        "name": "unnamedWire#8",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#6",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
+        "name": "unnamedWire#7",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#9",
+          "compName": "GUINandGate#1",
           "pinName": "A"
         },
+        "name": "unnamedWire#6",
         "path": [
           {
-            "x": 75.0,
-            "y": 95.0
+            "x": 10.0,
+            "y": 55.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
+        "name": "unnamedWire#1",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I8"
         },
         "pin2": {
-          "compName": "GUINandGate#9",
-          "pinName": "B"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
+        "name": "unnamedWire#0",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#7",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "LSH"
+          "compName": "GUINandGate#8",
+          "pinName": "B"
         },
+        "name": "unnamedWire#30",
         "path": [
           {
-            "x": 125.0,
-            "y": 140.0
-          },
-          {
-            "x": 125.0,
-            "y": 180.0
+            "x": 75.0,
+            "y": 25.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "_submodelinterface",
+          "pinName": "I7"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#10",
-          "pinName": "A"
+          "compName": "GUINandGate#2",
+          "pinName": "B"
         },
-        "path": [
-          {
-            "x": 75.0,
-            "y": 150.0
-          }
-        ]
+        "name": "unnamedWire#10",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#3",
+          "compName": "GUINandGate#6",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
+        "name": "unnamedWire#32",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#10",
+          "compName": "GUINandGate#0",
           "pinName": "B"
         },
+        "name": "unnamedWire#4",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#8",
+          "compName": "GUINandGate#5",
           "pinName": "Y"
         },
         "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "RSH"
+          "pinName": "RAMWE"
         },
+        "name": "unnamedWire#31",
         "path": [
           {
-            "x": 130.0,
-            "y": 20.0
+            "x": 125.0,
+            "y": 60.0
           },
           {
-            "x": 130.0,
-            "y": 60.0
+            "x": 125.0,
+            "y": 100.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#9",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#11",
+          "compName": "GUINandGate#0",
           "pinName": "A"
-        }
+        },
+        "name": "unnamedWire#3",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I6"
         },
         "pin2": {
-          "compName": "GUINandGate#11",
-          "pinName": "B"
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
         },
+        "name": "unnamedWire#12",
         "path": [
           {
-            "x": 75.0,
-            "y": 170.0
-          },
-          {
-            "x": 105.0,
-            "y": 170.0
-          },
-          {
-            "x": 105.0,
-            "y": 120.0
+            "x": 5.0,
+            "y": 100.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#10",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
-        "path": [
-          {
-            "x": 110.0,
-            "y": 155.0
-          }
-        ]
+        "name": "unnamedWire#34",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#12",
-          "pinName": "A"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
+        "name": "unnamedWire#2",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#12",
-          "pinName": "B"
+          "compName": "GUINandGate#2",
+          "pinName": "A"
         },
+        "name": "unnamedWire#11",
         "path": [
           {
-            "x": 110.0,
-            "y": 225.0
+            "x": 5.0,
+            "y": 95.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#11",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "YF"
-        }
-      },
-      {
-        "pin1": {
-          "compName": "GUINandGate#12",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "QWE"
+          "compName": "GUINandGate#9",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#33",
+        "path": [
+          {
+            "x": 75.0,
+            "y": 95.0
+          }
+        ]
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIAm2901DestDecode",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 6af804d..0f8ba03 100644 (file)
@@ -88,141 +88,178 @@ mograsim version: 0.1.3
     "innerScale": 0.4,
     "subComps": [
       {
+        "id": "GUIdff",
+        "name": "GUIdff#1",
         "pos": {
           "x": 50.0,
           "y": 32.5
-        },
-        "id": "GUIdff",
-        "name": "GUIdff#1"
+        }
       },
       {
+        "id": "GUIdff",
+        "name": "GUIdff#0",
         "pos": {
           "x": 50.0,
           "y": 7.5
-        },
-        "id": "GUIdff",
-        "name": "GUIdff#0"
+        }
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 41.5,
           "y": 36.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 41.5,
           "y": 19.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 41.5,
           "y": 61.5
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "GUIand",
+        "name": "GUIand#0",
         "pos": {
           "x": 5.0,
           "y": 15.0
-        },
-        "id": "GUIand",
-        "name": "GUIand#0"
+        }
       },
       {
+        "id": "GUIdff",
+        "name": "GUIdff#3",
         "pos": {
           "x": 50.0,
           "y": 82.5
-        },
-        "id": "GUIdff",
-        "name": "GUIdff#3"
+        }
       },
       {
+        "id": "GUIdff",
+        "name": "GUIdff#2",
         "pos": {
           "x": 50.0,
           "y": 57.5
-        },
-        "id": "GUIdff",
-        "name": "GUIdff#2"
+        }
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "C"
+          "compName": "GUIdff#1",
+          "pinName": "Q"
         },
         "pin2": {
-          "compName": "GUIand#0",
-          "pinName": "A"
-        }
+          "compName": "_submodelinterface",
+          "pinName": "Q2"
+        },
+        "name": "unnamedWire#14",
+        "path": []
       },
       {
         "pin1": {
+          "compName": "GUIdff#0",
+          "pinName": "Q"
+        },
+        "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "WE"
+          "pinName": "Q1"
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "GUIdff#3",
+          "pinName": "Q"
         },
         "pin2": {
-          "compName": "GUIand#0",
-          "pinName": "B"
-        }
+          "compName": "_submodelinterface",
+          "pinName": "Q4"
+        },
+        "name": "unnamedWire#16",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUIand#0",
-          "pinName": "Y"
+          "compName": "GUIdff#2",
+          "pinName": "Q"
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "Q3"
         },
+        "name": "unnamedWire#15",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "D1"
         },
         "pin2": {
           "compName": "GUIdff#0",
-          "pinName": "C"
+          "pinName": "D"
         },
+        "name": "unnamedWire#9",
         "path": [
           {
-            "x": 42.5,
-            "y": 12.5
+            "x": 17.5,
+            "y": 62.5
+          },
+          {
+            "x": 17.5,
+            "y": 42.5
+          },
+          {
+            "x": 45.0,
+            "y": 42.5
+          },
+          {
+            "x": 45.0,
+            "y": 22.5
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUIdff#3",
+          "pinName": "C"
         },
-        "path": []
+        "name": "unnamedWire#8",
+        "path": [
+          {
+            "x": 42.5,
+            "y": 87.5
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdff#1",
+          "compName": "GUIdff#2",
           "pinName": "C"
         },
+        "name": "unnamedWire#7",
         "path": []
       },
       {
@@ -234,62 +271,42 @@ mograsim version: 0.1.3
           "compName": "WireCrossPoint#2",
           "pinName": ""
         },
+        "name": "unnamedWire#6",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "WE"
         },
         "pin2": {
-          "compName": "GUIdff#2",
-          "pinName": "C"
+          "compName": "GUIand#0",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#1"
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "C"
         },
         "pin2": {
-          "compName": "GUIdff#3",
-          "pinName": "C"
+          "compName": "GUIand#0",
+          "pinName": "A"
         },
-        "path": [
-          {
-            "x": 42.5,
-            "y": 87.5
-          }
-        ]
+        "name": "unnamedWire#0"
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D1"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdff#0",
-          "pinName": "D"
+          "compName": "GUIdff#1",
+          "pinName": "C"
         },
-        "path": [
-          {
-            "x": 17.5,
-            "y": 62.5
-          },
-          {
-            "x": 17.5,
-            "y": 42.5
-          },
-          {
-            "x": 45.0,
-            "y": 42.5
-          },
-          {
-            "x": 45.0,
-            "y": 22.5
-          }
-        ]
+        "name": "unnamedWire#5",
+        "path": []
       },
       {
         "pin1": {
@@ -300,6 +317,7 @@ mograsim version: 0.1.3
           "compName": "GUIdff#1",
           "pinName": "D"
         },
+        "name": "unnamedWire#10",
         "path": [
           {
             "x": 22.5,
@@ -313,21 +331,30 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D3"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUIdff#2",
-          "pinName": "D"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUIdff#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#3",
         "path": [
           {
-            "x": 27.5,
-            "y": 112.5
-          },
-          {
-            "x": 27.5,
-            "y": 72.5
+            "x": 42.5,
+            "y": 12.5
           }
         ]
       },
@@ -340,6 +367,7 @@ mograsim version: 0.1.3
           "compName": "GUIdff#3",
           "pinName": "D"
         },
+        "name": "unnamedWire#12",
         "path": [
           {
             "x": 32.5,
@@ -353,56 +381,97 @@ mograsim version: 0.1.3
       },
       {
         "pin1": {
-          "compName": "GUIdff#0",
-          "pinName": "Q"
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Q1"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUIdff#1",
-          "pinName": "Q"
+          "compName": "GUIand#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Q2"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
+        "name": "unnamedWire#2",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUIdff#2",
-          "pinName": "Q"
-        },
-        "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "Q3"
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "GUIdff#3",
-          "pinName": "Q"
+          "pinName": "D3"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Q4"
+          "compName": "GUIdff#2",
+          "pinName": "D"
         },
-        "path": []
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 27.5,
+            "y": 112.5
+          },
+          {
+            "x": 27.5,
+            "y": 72.5
+          }
+        ]
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "GUIAm2901QReg",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer",
+  "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q1": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#0",
+          "subStateID": "q"
+        }
+      },
+      "q2": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#1",
+          "subStateID": "q"
+        }
+      },
+      "q": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler",
+        "params": {
+          "vectorPartTargets": [
+            "q1",
+            "q2",
+            "q3",
+            "q4"
+          ],
+          "vectorPartLengthes": [
+            1,
+            1,
+            1,
+            1
+          ]
+        }
+      },
+      "q3": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#2",
+          "subStateID": "q"
+        }
+      },
+      "q4": {
+        "id": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
+        "params": {
+          "delegateTarget": "GUIdff#3",
+          "subStateID": "q"
+        }
+      }
+    }
   }
 }
\ No newline at end of file
index e36193d..8c086bf 100644 (file)
@@ -72,1005 +72,1057 @@ mograsim version: 0.1.3
     "innerScale": 0.25,
     "subComps": [
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#1",
         "pos": {
           "x": 10.0,
           "y": 50.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#14",
         "pos": {
           "x": 94.0,
           "y": 19.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#14",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#0",
         "pos": {
           "x": 10.0,
           "y": 10.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#13",
         "pos": {
           "x": 64.0,
           "y": 139.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#13",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#3",
         "pos": {
           "x": 40.0,
           "y": 10.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#3",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#2",
         "pos": {
           "x": 10.0,
           "y": 90.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#15",
         "pos": {
           "x": 94.0,
           "y": 179.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#15",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 6.5,
           "y": 19.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 4.0,
           "y": 19.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
           "x": 6.5,
           "y": 59.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 4.0,
           "y": 144.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
         "pos": {
           "x": 6.5,
           "y": 104.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
         "pos": {
           "x": 6.5,
           "y": 99.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#4",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
         "pos": {
           "x": 34.0,
           "y": 59.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#7",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
         "pos": {
           "x": 31.5,
           "y": 54.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#6",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
         "pos": {
           "x": 34.0,
           "y": 134.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#9",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
         "pos": {
           "x": 34.0,
           "y": 64.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#8",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
         "pos": {
           "x": 36.5,
           "y": 99.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#10",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#12",
         "pos": {
           "x": 64.0,
           "y": 99.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#12",
         "params": 1
       },
       {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#11",
         "pos": {
           "x": 64.0,
           "y": 59.0
         },
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#11",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#12",
         "pos": {
           "x": 70.0,
           "y": 170.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#12",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#11",
         "pos": {
           "x": 70.0,
           "y": 130.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#11",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#14",
         "pos": {
           "x": 100.0,
           "y": 170.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#14",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#13",
         "pos": {
           "x": 100.0,
           "y": 10.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#13",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#10",
         "pos": {
           "x": 70.0,
           "y": 90.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#10",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#9",
         "pos": {
           "x": 70.0,
           "y": 50.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#9",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#8",
         "pos": {
           "x": 70.0,
           "y": 10.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#8",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#5",
         "pos": {
           "x": 40.0,
           "y": 90.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#5",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#4",
         "pos": {
           "x": 40.0,
           "y": 50.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#4",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#7",
         "pos": {
           "x": 40.0,
           "y": 170.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#7",
         "params": 1
       },
       {
+        "id": "GUINandGate",
+        "name": "GUINandGate#6",
         "pos": {
           "x": 40.0,
           "y": 130.0
         },
-        "id": "GUINandGate",
-        "name": "GUINandGate#6",
         "params": 1
       }
     ],
     "innerWires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I2"
+          "compName": "GUINandGate#6",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
+        "name": "unnamedWire#36",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#3",
-          "pinName": "A"
+          "compName": "GUINandGate#10",
+          "pinName": "B"
         },
+        "name": "unnamedWire#35",
         "path": [
           {
-            "x": 5.0,
-            "y": 5.0
-          },
-          {
-            "x": 35.0,
-            "y": 5.0
-          },
-          {
-            "x": 35.0,
-            "y": 15.0
+            "x": 65.0,
+            "y": 105.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "GUINandGate#11",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#38",
+        "path": [
+          {
+            "x": 65.0,
+            "y": 145.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
+          "compName": "GUINandGate#11",
           "pinName": "A"
         },
+        "name": "unnamedWire#37",
         "path": [
           {
-            "x": 7.5,
-            "y": 15.0
+            "x": 65.0,
+            "y": 135.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "GUINandGate#7",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "GUINandGate#12",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#39"
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#0",
-          "pinName": "B"
+          "compName": "GUINandGate#13",
+          "pinName": "A"
         },
+        "name": "unnamedWire#41",
         "path": [
           {
-            "x": 7.5,
-            "y": 25.0
+            "x": 95.0,
+            "y": 15.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "GUINandGate#8",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
+        "name": "unnamedWire#40",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "GUINandGate#9",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#6",
-          "pinName": "B"
+          "compName": "_submodelinterface",
+          "pinName": "RA"
         },
+        "name": "unnamedWire#43",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#12",
+          "compName": "GUINandGate#13",
           "pinName": "B"
         },
+        "name": "unnamedWire#42",
         "path": [
           {
-            "x": 5.0,
-            "y": 195.0
-          },
-          {
-            "x": 65.0,
-            "y": 195.0
-          },
-          {
-            "x": 65.0,
-            "y": 185.0
+            "x": 95.0,
+            "y": 25.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I1"
+          "compName": "GUINandGate#11",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "SA"
         },
+        "name": "unnamedWire#45",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "GUINandGate#10",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "A"
+          "compName": "_submodelinterface",
+          "pinName": "SB"
         },
-        "path": [
-          {
-            "x": 7.5,
-            "y": 55.0
-          }
-        ]
+        "name": "unnamedWire#44",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#1",
-          "pinName": "B"
+          "compName": "GUINandGate#14",
+          "pinName": "A"
         },
+        "name": "unnamedWire#47",
         "path": [
           {
-            "x": 7.5,
-            "y": 65.0
+            "x": 95.0,
+            "y": 175.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I0"
+          "compName": "GUINandGate#12",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
+        "name": "unnamedWire#46",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "GUINandGate#13",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "SQ"
+        },
+        "name": "unnamedWire#49",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "A"
+          "compName": "GUINandGate#14",
+          "pinName": "B"
         },
+        "name": "unnamedWire#48",
         "path": [
           {
-            "x": 7.5,
-            "y": 95.0
+            "x": 95.0,
+            "y": 185.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "GUINandGate#1",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#9",
+        "path": [
+          {
+            "x": 7.5,
+            "y": 55.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I1"
         },
         "pin2": {
-          "compName": "GUINandGate#2",
-          "pinName": "B"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
+        "name": "unnamedWire#8",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#5",
+          "compName": "GUINandGate#12",
           "pinName": "B"
         },
+        "name": "unnamedWire#7",
         "path": [
           {
-            "x": 7.5,
-            "y": 112.5
+            "x": 5.0,
+            "y": 195.0
           },
           {
-            "x": 32.5,
-            "y": 112.5
+            "x": 65.0,
+            "y": 195.0
           },
           {
-            "x": 32.5,
-            "y": 105.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUINandGate#0",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
-        },
-        "path": [
-          {
-            "x": 32.5,
-            "y": 20.0
+            "x": 65.0,
+            "y": 185.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#4",
-          "pinName": "A"
+          "compName": "GUINandGate#6",
+          "pinName": "B"
         },
+        "name": "unnamedWire#6",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#5",
+          "compName": "GUINandGate#3",
           "pinName": "A"
         },
+        "name": "unnamedWire#1",
         "path": [
           {
-            "x": 32.5,
-            "y": 95.0
+            "x": 5.0,
+            "y": 5.0
+          },
+          {
+            "x": 35.0,
+            "y": 5.0
+          },
+          {
+            "x": 35.0,
+            "y": 15.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#1",
+          "compName": "GUINandGate#14",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "RD"
         },
+        "name": "unnamedWire#50",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I2"
         },
         "pin2": {
-          "compName": "GUINandGate#3",
-          "pinName": "B"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 35.0,
-            "y": 25.0
-          }
-        ]
+        "name": "unnamedWire#0",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
+        "name": "unnamedWire#5",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#4",
+          "compName": "GUINandGate#1",
           "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#10",
+        "path": [
+          {
+            "x": 7.5,
+            "y": 65.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
+          "compName": "GUINandGate#0",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#4",
+        "path": [
+          {
+            "x": 7.5,
+            "y": 25.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#6",
+          "compName": "GUINandGate#0",
           "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#3",
+        "path": [
+          {
+            "x": 7.5,
+            "y": 15.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#7",
+          "compName": "GUINandGate#2",
           "pinName": "A"
         },
+        "name": "unnamedWire#12",
         "path": [
           {
-            "x": 35.0,
-            "y": 175.0
+            "x": 7.5,
+            "y": 95.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#2",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
+        "name": "unnamedWire#2",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "I0"
         },
         "pin2": {
-          "compName": "GUINandGate#8",
-          "pinName": "B"
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 37.5,
-            "y": 35.0
-          },
-          {
-            "x": 65.0,
-            "y": 35.0
-          },
-          {
-            "x": 65.0,
-            "y": 25.0
-          }
-        ]
+        "name": "unnamedWire#11",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#7",
+          "compName": "GUINandGate#2",
           "pinName": "B"
         },
-        "path": [
-          {
-            "x": 37.5,
-            "y": 185.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "GUINandGate#3",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "GUINandGate#8",
-          "pinName": "A"
-        }
+        "name": "unnamedWire#14",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#4",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
+        "name": "unnamedWire#13",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
-          "pinName": ""
+          "compName": "GUINandGate#0",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "GUINandGate#9",
-          "pinName": "A"
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
         },
+        "name": "unnamedWire#16",
         "path": [
           {
-            "x": 65.0,
-            "y": 55.0
+            "x": 32.5,
+            "y": 20.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#9",
+          "compName": "GUINandGate#5",
           "pinName": "B"
         },
+        "name": "unnamedWire#15",
         "path": [
           {
-            "x": 65.0,
-            "y": 65.0
+            "x": 7.5,
+            "y": 112.5
+          },
+          {
+            "x": 32.5,
+            "y": 112.5
+          },
+          {
+            "x": 32.5,
+            "y": 105.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#5",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#12",
-          "pinName": ""
-        },
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#10",
+          "compName": "GUINandGate#5",
           "pinName": "A"
         },
+        "name": "unnamedWire#18",
         "path": [
           {
-            "x": 65.0,
+            "x": 32.5,
             "y": 95.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#10",
-          "pinName": "B"
+          "compName": "GUINandGate#4",
+          "pinName": "A"
         },
-        "path": [
-          {
-            "x": 65.0,
-            "y": 105.0
-          }
-        ]
+        "name": "unnamedWire#17",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#6",
+          "compName": "GUINandGate#1",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
+        "name": "unnamedWire#19",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#11",
-          "pinName": "A"
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
         },
-        "path": [
-          {
-            "x": 65.0,
-            "y": 135.0
-          }
-        ]
+        "name": "unnamedWire#21",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#11",
+          "compName": "GUINandGate#3",
           "pinName": "B"
         },
+        "name": "unnamedWire#20",
         "path": [
           {
-            "x": 65.0,
-            "y": 145.0
+            "x": 35.0,
+            "y": 25.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#7",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#12",
-          "pinName": "A"
-        }
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#23",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#8",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#14",
-          "pinName": ""
+          "compName": "GUINandGate#4",
+          "pinName": "B"
         },
+        "name": "unnamedWire#22",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#13",
+          "compName": "GUINandGate#7",
           "pinName": "A"
         },
+        "name": "unnamedWire#25",
         "path": [
           {
-            "x": 95.0,
-            "y": 15.0
+            "x": 35.0,
+            "y": 175.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#13",
+          "compName": "GUINandGate#6",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "GUINandGate#8",
           "pinName": "B"
         },
+        "name": "unnamedWire#27",
         "path": [
           {
-            "x": 95.0,
+            "x": 37.5,
+            "y": 35.0
+          },
+          {
+            "x": 65.0,
+            "y": 35.0
+          },
+          {
+            "x": 65.0,
             "y": 25.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#9",
+          "compName": "GUINandGate#2",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "RA"
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
         },
+        "name": "unnamedWire#26",
         "path": []
       },
       {
         "pin1": {
-          "compName": "GUINandGate#10",
+          "compName": "GUINandGate#3",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "SB"
+          "compName": "GUINandGate#8",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#29"
       },
       {
         "pin1": {
-          "compName": "GUINandGate#11",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "SA"
+          "compName": "GUINandGate#7",
+          "pinName": "B"
         },
-        "path": []
+        "name": "unnamedWire#28",
+        "path": [
+          {
+            "x": 37.5,
+            "y": 185.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#12",
+          "compName": "GUINandGate#4",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
+        "name": "unnamedWire#30",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#14",
-          "pinName": "A"
+          "compName": "GUINandGate#9",
+          "pinName": "B"
         },
+        "name": "unnamedWire#32",
         "path": [
           {
-            "x": 95.0,
-            "y": 175.0
+            "x": 65.0,
+            "y": 65.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "pin2": {
-          "compName": "GUINandGate#14",
-          "pinName": "B"
+          "compName": "GUINandGate#9",
+          "pinName": "A"
         },
+        "name": "unnamedWire#31",
         "path": [
           {
-            "x": 95.0,
-            "y": 185.0
+            "x": 65.0,
+            "y": 55.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#13",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "SQ"
+          "compName": "GUINandGate#10",
+          "pinName": "A"
         },
-        "path": []
+        "name": "unnamedWire#34",
+        "path": [
+          {
+            "x": 65.0,
+            "y": 95.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "GUINandGate#14",
+          "compName": "GUINandGate#5",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "RD"
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
         },
+        "name": "unnamedWire#33",
         "path": []
       }
     ]
   },
-  "symbolRendererSnippetID": "SimpleRectangularLikeSymbolRenderer",
+  "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer",
   "symbolRendererParams": {
     "centerText": "Am2901SourceDecode",
-    "horizontalComponentCenter": 17.5,
     "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
     "pinLabelMargin": 0.5
-  }
+  },
+  "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer"
 }
\ No newline at end of file
index 96aad40..3d22b9c 100644 (file)
@@ -8,6 +8,7 @@ import org.eclipse.swt.widgets.Shell;
 
 import net.mograsim.logic.model.model.ViewModelModifiable;
 import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
 import net.mograsim.logic.model.serializing.SubmodelComponentSerializer;
 
 public class SaveLoadManager
@@ -47,12 +48,14 @@ public class SaveLoadManager
        {
                try
                {
-                       SubmodelComponentSerializer.serialize(editor.toBeEdited, c ->
+                       IdentifierGetter idGetter = new IdentifierGetter();
+                       idGetter.componentIDs = c ->
                        {
                                if (Editor.identifierPerComponent.containsKey(c))
                                        return Editor.identifierPerComponent.get(c);
                                return "class:" + c.getClass().getCanonicalName();
-                       }, savePath);
+                       };
+                       SubmodelComponentSerializer.serialize(editor.toBeEdited, idGetter, savePath);
                }
                catch (IOException e)
                {
index d2bff5f..c3afb70 100644 (file)
@@ -11,6 +11,7 @@ import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
 import net.mograsim.logic.model.editor.Editor;
 import net.mograsim.logic.model.editor.Editor.ComponentInfo;
 import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
 
 public class ComponentHandle extends Handle
 {
@@ -85,7 +86,7 @@ public class ComponentHandle extends Handle
        public Optional<ComponentInfo> reqCopy(Point refPoint)
        {
                return Optional.of(new ComponentInfo(parent.getPosX() - refPoint.x, parent.getPosY() - refPoint.y, Editor.getIdentifier(parent),
-                               parent.getParamsForSerializing()));
+                               parent.getParamsForSerializing(new IdentifierGetter())));
        }
 
        @Override
index 7e23160..7fe6e43 100644 (file)
@@ -17,6 +17,7 @@ import net.mograsim.logic.model.editor.Editor;
 import net.mograsim.logic.model.editor.states.EditorState;
 import net.mograsim.logic.model.model.ViewModelModifiable;
 import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.model.wires.GUIWire;
 import net.mograsim.logic.model.model.wires.MovablePin;
 import net.mograsim.logic.model.model.wires.Pin;
@@ -86,7 +87,7 @@ public class HandleManager
                        ViewModelModifiable model = editor.getSubmodel();
                        Map<String, GUIComponent> compsByName = model.getComponentsByName();
                        Set<GUIComponent> comps = new HashSet<>(compsByName.values());
-                       GUIComponent interfaceComp = compsByName.get("_submodelinterface");
+                       GUIComponent interfaceComp = compsByName.get(SubmodelComponent.SUBMODEL_INTERFACE_NAME);
                        comps.remove(interfaceComp);
                        registerInterfaceComponent(interfaceComp);
                        comps.forEach(c -> registerComponent(c));
@@ -342,6 +343,7 @@ public class HandleManager
        {
                EditorState entryState = editor.stateManager.getState();
 
+               // TODO: As soon as wires connected to a component being removed also are removed, change priority
                if (!cornerHandle.click(clicked.x, clicked.y, stateMask, entryState))
                        if (!click(handlePerPin.values(), clicked, entryState, stateMask))
                                if (!click(handlePerInterfacePin.values(), clicked, entryState, stateMask))
index 9aa8056..2c82d13 100644 (file)
@@ -163,7 +163,8 @@ public class LogicUICanvas extends ZoomableCanvas
 
        private void addComponentSelectorItems(List<GUIComponent> componentsByItemIndex, String base, Combo componentSelector, ViewModel model)
        {
-               for (GUIComponent c : model.getComponentsByName().values())
+               model.getComponentsByName().values().stream().sorted((c1, c2) -> c1.name.compareTo(c2.name)).forEach(c ->
+               {
                        if (!(c instanceof WireCrossPoint || c instanceof SubmodelInterface))
                        {
                                String item = base + c.name;
@@ -172,6 +173,6 @@ public class LogicUICanvas extends ZoomableCanvas
                                if (c instanceof SubmodelComponent)
                                        addComponentSelectorItems(componentsByItemIndex, item + " -> ", componentSelector, ((SubmodelComponent) c).submodel);
                        }
+               });
        }
-
 }
\ No newline at end of file
index 55d0d72..d9dbdc4 100644 (file)
@@ -10,7 +10,16 @@ public class ViewModelModifiable extends ViewModel
        public String getDefaultComponentName(GUIComponent component)
        {
                Set<String> componentNames = getComponentsByName().keySet();
-               String nameBase = component.getClass().getSimpleName() + '#';
+               // TODO get the ID of component^^
+               // The following does not work because this code is called in the constructor of DeserializedSubmodelComponent at a time where
+               // idForSerializingOverride is not yet set
+//             String componentID = null;
+//             if (component instanceof DeserializedSubmodelComponent)
+//                     componentID = ((DeserializedSubmodelComponent) component).idForSerializingOverride;
+//             if (componentID == null)
+//                     componentID = component.getClass().getSimpleName();
+               String componentID = component.getClass().getSimpleName();
+               String nameBase = componentID + '#';
                for (int i = 0;; i++)
                {
                        String nameCandidate = nameBase + i;
index 1cf7460..85b1e5a 100644 (file)
@@ -14,6 +14,8 @@ import net.haspamelodica.swt.helper.gcs.GeneralGC;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
 import net.mograsim.logic.model.model.ViewModelModifiable;
 import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.serializing.JSONSerializable;
 import net.mograsim.logic.model.snippets.HighLevelStateHandler;
 
 /**
@@ -24,7 +26,7 @@ import net.mograsim.logic.model.snippets.HighLevelStateHandler;
  * 
  * @author Daniel Kirschten
  */
-public abstract class GUIComponent
+public abstract class GUIComponent implements JSONSerializable
 {
        /**
         * The model this component is a part of.
@@ -159,6 +161,11 @@ public abstract class GUIComponent
                this.highLevelStateHandler = highLevelStateHandler;
        }
 
+       public HighLevelStateHandler getHighLevelStateHandler()
+       {
+               return highLevelStateHandler;
+       }
+
        /**
         * Gets the current value of the given high-level state. <br>
         * See {@link HighLevelStateHandler} for an explanation of high-level state IDs.
@@ -287,8 +294,8 @@ public abstract class GUIComponent
 
        // serializing
 
-       @SuppressWarnings("static-method") // this method is intended to be overridden
-       public JsonElement getParamsForSerializing()
+       @Override
+       public JsonElement getParamsForSerializing(IdentifierGetter idGetter)
        {
                return JsonNull.INSTANCE;
        }
index b14aaec..ef7d010 100644 (file)
@@ -16,6 +16,7 @@ import net.mograsim.logic.model.model.ViewModelModifiable;
 import net.mograsim.logic.model.model.components.GUIComponent;
 import net.mograsim.logic.model.model.wires.MovablePin;
 import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
 import net.mograsim.preferences.Preferences;
 
 public class SimpleRectangularGUIGate extends GUIComponent
@@ -94,7 +95,7 @@ public class SimpleRectangularGUIGate extends GUIComponent
         * @see GUIComponent#getParamsForSerializing()
         */
        @Override
-       public JsonElement getParamsForSerializing()
+       public JsonElement getParamsForSerializing(IdentifierGetter idGetter)
        {
                return new JsonPrimitive(logicWidth);
        }
index 4429b0e..ec91151 100644 (file)
@@ -12,6 +12,7 @@ import net.mograsim.logic.model.model.ViewModelModifiable;
 import net.mograsim.logic.model.model.components.GUIComponent;
 import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter;
 import net.mograsim.logic.model.modeladapter.componentadapters.NoLogicAdapter;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
 import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
 import net.mograsim.preferences.Preferences;
 
@@ -49,7 +50,7 @@ public class TextComponent extends GUIComponent
        // serializing
 
        @Override
-       public JsonElement getParamsForSerializing()
+       public JsonElement getParamsForSerializing(IdentifierGetter idGetter)
        {
                return new JsonPrimitive(text);
        }
index c04e7ae..041a41e 100644 (file)
@@ -47,7 +47,7 @@ public class SimpleRectangularSubmodelComponent extends SubmodelComponent
                SimpleRectangularLikeParams rendererParams = new SimpleRectangularLikeParams();
                rendererParams.centerText = label;
                rendererParams.centerTextHeight = labelFontHeight;
-               rendererParams.horizontalComponentCenter = getWidth() / 2;
+               rendererParams.horizontalComponentCenter = width / 2;
                rendererParams.pinLabelHeight = pinNameFontHeight;
                rendererParams.pinLabelMargin = pinNameMargin;
                setSymbolRenderer(new SimpleRectangularLikeSymbolRenderer(this, rendererParams));
index 4c1fec7..45c36bf 100644 (file)
@@ -295,7 +295,7 @@ public abstract class SubmodelComponent extends GUIComponent
         * 
         * @author Daniel Kirschten
         */
-       protected Renderer getSymbolRenderer()
+       public Renderer getSymbolRenderer()
        {
                return symbolRenderer;
        }
@@ -316,7 +316,7 @@ public abstract class SubmodelComponent extends GUIComponent
         * 
         * @author Daniel Kirschten
         */
-       protected Renderer getOutlineRenderer()
+       public Renderer getOutlineRenderer()
        {
                return outlineRenderer;
        }
index f7150a2..49faee9 100644 (file)
@@ -10,6 +10,7 @@ import net.mograsim.logic.core.types.BitVectorFormatter;
 import net.mograsim.logic.core.wires.Wire.ReadEnd;
 import net.mograsim.logic.model.model.ViewModelModifiable;
 import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
 import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
 import net.mograsim.preferences.ColorDefinition;
 import net.mograsim.preferences.ColorManager;
@@ -115,7 +116,7 @@ public class WireCrossPoint extends GUIComponent
        // serializing
 
        @Override
-       public JsonElement getParamsForSerializing()
+       public JsonElement getParamsForSerializing(IdentifierGetter idGetter)
        {
                return new JsonPrimitive(pin.logicWidth);
        }
index 8d0016c..f765afb 100644 (file)
@@ -81,12 +81,5 @@ public class DeserializedSubmodelComponent extends SubmodelComponent
                super.removeSubmodelInterface(name);
        }
 
-       // TODO only used in EditorCanvas. Replace with setting maxVisibleRegionFillRatioForAlpha0 / min...1.
-       @Override
-       public Renderer getOutlineRenderer()
-       {
-               return super.getOutlineRenderer();
-       }
-
        // TODO static initializer?
 }
\ No newline at end of file
diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/IdentifierGetter.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/IdentifierGetter.java
new file mode 100644 (file)
index 0000000..f1bb5f0
--- /dev/null
@@ -0,0 +1,36 @@
+package net.mograsim.logic.model.serializing;
+
+import java.util.function.Function;
+
+import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.snippets.HighLevelStateHandler;
+import net.mograsim.logic.model.snippets.Renderer;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.AtomicHighLevelStateHandler;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.SubcomponentHighLevelStateHandler;
+
+//TODO better name
+public class IdentifierGetter
+{
+       // TODO save IDs for everything than can be deserialized / serialized (=every JSONSerializable?)
+       public Function<GUIComponent, String> componentIDs;
+       public Function<Renderer, String> symbolRendererIDs;
+       public Function<Renderer, String> outlineRendererIDs;
+       public Function<HighLevelStateHandler, String> highLevelStateHandlerIDs;
+       public Function<SubcomponentHighLevelStateHandler, String> subcomponentHighLevelStateHandlerIDs;
+       public Function<AtomicHighLevelStateHandler, String> atomicHighLevelStateHandlerIDs;
+
+       /**
+        * Creates a new IdentifierGetter using "class:" concatenated with a component's / snippet's complete (canonical) class name as the
+        * default for all ID getter functions.
+        */
+       public IdentifierGetter()
+       {
+               Function<Object, String> defaultSnippetIDGetter = c -> "class:" + c.getClass().getCanonicalName();
+               this.componentIDs = defaultSnippetIDGetter::apply;
+               this.symbolRendererIDs = defaultSnippetIDGetter::apply;
+               this.outlineRendererIDs = defaultSnippetIDGetter::apply;
+               this.highLevelStateHandlerIDs = defaultSnippetIDGetter::apply;
+               this.subcomponentHighLevelStateHandlerIDs = defaultSnippetIDGetter::apply;
+               this.atomicHighLevelStateHandlerIDs = defaultSnippetIDGetter::apply;
+       }
+}
\ No newline at end of file
index 6513f3d..f97b901 100644 (file)
@@ -3,7 +3,6 @@ package net.mograsim.logic.model.serializing;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.UncheckedIOException;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -57,7 +56,7 @@ public class IndirectGUIComponentCreator
                standardComponentIDs.put(standardComponentID, associatedComponentID);
        }
 
-       public static Collection<String> getStandardComponentIDs()
+       public static Set<String> getStandardComponentIDs()
        {
                return standardComponentIDSetUnmodifiable;
        }
diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/JSONSerializable.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/JSONSerializable.java
new file mode 100644 (file)
index 0000000..f40807d
--- /dev/null
@@ -0,0 +1,15 @@
+package net.mograsim.logic.model.serializing;
+
+import com.google.gson.JsonElement;
+
+import net.mograsim.logic.model.util.JsonHandler;
+
+public interface JSONSerializable
+{
+       public Object getParamsForSerializing(IdentifierGetter idGetter);
+
+       public default JsonElement getParamsForSerializingJSON(IdentifierGetter idGetter)
+       {
+               return JsonHandler.toJsonTree(getParamsForSerializing(idGetter));
+       }
+}
\ No newline at end of file
index 3701d9c..077c591 100644 (file)
@@ -6,13 +6,11 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.function.Function;
 
-import com.google.gson.Gson;
 import com.google.gson.JsonElement;
 
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
 import net.mograsim.logic.model.model.ViewModelModifiable;
 import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.components.submodels.SimpleRectangularSubmodelComponent;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.model.wires.GUIWire;
 import net.mograsim.logic.model.model.wires.MovablePin;
@@ -22,8 +20,9 @@ import net.mograsim.logic.model.serializing.SubmodelComponentParams.SubmodelPara
 import net.mograsim.logic.model.serializing.SubmodelComponentParams.SubmodelParameters.InnerComponentParams;
 import net.mograsim.logic.model.serializing.SubmodelComponentParams.SubmodelParameters.InnerWireParams;
 import net.mograsim.logic.model.serializing.SubmodelComponentParams.SubmodelParameters.InnerWireParams.InnerPinParams;
+import net.mograsim.logic.model.snippets.HighLevelStateHandler;
+import net.mograsim.logic.model.snippets.Renderer;
 import net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers;
-import net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer.SimpleRectangularLikeParams;
 import net.mograsim.logic.model.util.JsonHandler;
 
 /**
@@ -134,20 +133,20 @@ public final class SubmodelComponentSerializer
         * 
         * @author Daniel Kirschten
         */
-       public static void serialize(SubmodelComponent comp, Function<GUIComponent, String> getIdentifier, String targetPath) throws IOException
+       public static void serialize(SubmodelComponent comp, IdentifierGetter idGetter, String targetPath) throws IOException
        {
-               JsonHandler.writeJson(serialize(comp, getIdentifier), targetPath);
+               JsonHandler.writeJson(serialize(comp, idGetter), targetPath);
        }
 
        /**
-        * {@link #serialize(SubmodelComponent, Function)} using <code>"class:"</code> concatenated with a component's complete (canonical)
-        * class name for the ID of a component.
+        * {@link #serialize(SubmodelComponent, Function)} using a default {@link IdentifierGetter} (see <code>IdentifierGetter</code>'s
+        * {@link IdentifierGetter#IdentifierGetter() default constructor})
         * 
         * @author Daniel Kirschten
         */
        public static SubmodelComponentParams serialize(SubmodelComponent comp)
        {
-               return serialize(comp, c -> "class:" + c.getClass().getCanonicalName());
+               return serialize(comp, new IdentifierGetter());
        }
 
        // "core" methods
@@ -170,12 +169,6 @@ public final class SubmodelComponentSerializer
                DeserializedSubmodelComponent comp = new DeserializedSubmodelComponent(model, name, idForSerializingOverride,
                                paramsForSerializingOverride);
                comp.setSubmodelScale(params.submodel.innerScale);
-               comp.setSymbolRenderer(SubmodelComponentSnippetSuppliers.symbolRendererSupplier.getSnippetSupplier(params.symbolRendererSnippetID)
-                               .create(comp, params.symbolRendererParams));
-               comp.setOutlineRenderer(SubmodelComponentSnippetSuppliers.outlineRendererSupplier
-                               .getSnippetSupplier(params.outlineRendererSnippetID).create(comp, params.outlineRendererParams));
-               comp.setHighLevelStateHandler(SubmodelComponentSnippetSuppliers.highLevelStateHandlerSupplier
-                               .getSnippetSupplier(params.highLevelStateHandlerSnippetID).create(comp, params.highLevelStateHandlerParams));
                comp.setSize(params.width, params.height);
                for (InterfacePinParams iPinParams : params.interfacePins)
                        comp.addSubmodelInterface(
@@ -197,6 +190,12 @@ public final class SubmodelComponentSerializer
                        new GUIWire(submodelModifiable, innerWire.name, componentsByName.get(innerWire.pin1.compName).getPin(innerWire.pin1.pinName),
                                        componentsByName.get(innerWire.pin2.compName).getPin(innerWire.pin2.pinName), innerWire.path);
                }
+               comp.setSymbolRenderer(SubmodelComponentSnippetSuppliers.symbolRendererSupplier.getSnippetSupplier(params.symbolRendererSnippetID)
+                               .create(comp, params.symbolRendererParams));
+               comp.setOutlineRenderer(SubmodelComponentSnippetSuppliers.outlineRendererSupplier
+                               .getSnippetSupplier(params.outlineRendererSnippetID).create(comp, params.outlineRendererParams));
+               comp.setHighLevelStateHandler(SubmodelComponentSnippetSuppliers.highLevelStateHandlerSupplier
+                               .getSnippetSupplier(params.highLevelStateHandlerSnippetID).create(comp, params.highLevelStateHandlerParams));
                return comp;
        }
 
@@ -209,13 +208,15 @@ public final class SubmodelComponentSerializer
         * component's {@link DeserializedSubmodelComponent#paramsForSerializingOverride paramsForSerializingOverride} are written.<br>
         * If this case doesn't apply (e.g. if the subcomponent is not a <code>SubmodelComponent</code>; or it is a
         * <code>SubmodelComponent</code>, but hasn't been deserialized; or it has no
-        * {@link DeserializedSubmodelComponent#idForSerializingOverride idForSerializingOverride} set), the ID returned by
-        * <code>getIdentifier</code> and the params obtained by {@link GUIComponent#getParamsForSerializing() getParams()} are written.
+        * {@link DeserializedSubmodelComponent#idForSerializingOverride idForSerializingOverride} set), the ID defined by <code>idGetter</code>
+        * and the params obtained by {@link GUIComponent#getParamsForSerializing() getParams()} are written.<br>
+        * CodeSnippets are serialized using the ID defined by <code>idGetter</code> and the params obtained by the respective
+        * <coce>getParamsForSerializing</code> methods ({@link Renderer#getParamsForSerializing()}).
         * 
         * @author Fabian Stemmler
         * @author Daniel Kirschten
         */
-       public static SubmodelComponentParams serialize(SubmodelComponent comp, Function<GUIComponent, String> getIdentifier)
+       public static SubmodelComponentParams serialize(SubmodelComponent comp, IdentifierGetter idGetter)
        {
                SubmodelParameters submodelParams = new SubmodelParameters();
                submodelParams.innerScale = comp.getSubmodelScale();
@@ -237,8 +238,8 @@ public final class SubmodelComponentSerializer
                                innerComponentParams.params = innerCompCasted.paramsForSerializingOverride;
                        } else
                        {
-                               innerComponentParams.id = getIdentifier.apply(innerComponent);
-                               innerComponentParams.params = innerComponent.getParamsForSerializing();
+                               innerComponentParams.id = idGetter.componentIDs.apply(innerComponent);
+                               innerComponentParams.params = innerComponent.getParamsForSerializing(idGetter);
                        }
                        innerComponentParams.name = innerComponent.name;
                        i1++;
@@ -285,20 +286,25 @@ public final class SubmodelComponentSerializer
                }
                params.interfacePins = iPins;
 
-               // TODO This code does not belong here
-               if (comp instanceof SimpleRectangularSubmodelComponent)
+               Renderer symbolRenderer = comp.getSymbolRenderer();
+               if (symbolRenderer != null)
                {
-                       SimpleRectangularSubmodelComponent compCasted = (SimpleRectangularSubmodelComponent) comp;
+                       params.symbolRendererSnippetID = idGetter.symbolRendererIDs.apply(symbolRenderer);
+                       params.symbolRendererParams = symbolRenderer.getParamsForSerializingJSON(idGetter);
+               }
 
-                       SimpleRectangularLikeParams symbolRendererParams = new SimpleRectangularLikeParams();
-                       symbolRendererParams.centerText = compCasted.label;
-                       symbolRendererParams.centerTextHeight = SimpleRectangularSubmodelComponent.labelFontHeight;
-                       symbolRendererParams.horizontalComponentCenter = compCasted.getWidth() / 2;
-                       symbolRendererParams.pinLabelHeight = SimpleRectangularSubmodelComponent.pinNameFontHeight;
-                       symbolRendererParams.pinLabelMargin = SimpleRectangularSubmodelComponent.pinNameMargin;
+               Renderer outlineRenderer = comp.getOutlineRenderer();
+               if (outlineRenderer != null)
+               {
+                       params.outlineRendererSnippetID = idGetter.outlineRendererIDs.apply(outlineRenderer);
+                       params.outlineRendererParams = outlineRenderer.getParamsForSerializingJSON(idGetter);
+               }
 
-                       params.symbolRendererSnippetID = "simpleRectangularLike";
-                       params.symbolRendererParams = new Gson().toJsonTree(symbolRendererParams);
+               HighLevelStateHandler highLevelStateHandler = comp.getHighLevelStateHandler();
+               if (highLevelStateHandler != null)
+               {
+                       params.highLevelStateHandlerSnippetID = idGetter.highLevelStateHandlerIDs.apply(highLevelStateHandler);
+                       params.highLevelStateHandlerParams = highLevelStateHandler.getParamsForSerializingJSON(idGetter);
                }
 
                return params;
index 86b5765..619254a 100644 (file)
@@ -1,11 +1,14 @@
 package net.mograsim.logic.model.snippets;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 
 public class CodeSnippetSupplier<C, S>
 {
        private final Map<String, String> standardSnippetIDClassNames = new HashMap<>();
+       private final Set<String> standardSnippetIDSetUnmodifiable = Collections.unmodifiableSet(standardSnippetIDClassNames.keySet());
        private final Map<String, SnippetDefinintion<C, ?, S>> snippetSuppliersForClassNames = new HashMap<>();
        private final SnippetDefinintion<C, ?, S> defaultSnippetSupplier;
 
@@ -19,6 +22,11 @@ public class CodeSnippetSupplier<C, S>
                standardSnippetIDClassNames.put(standardSnippetID, associatedSnippetClassName);
        }
 
+       public Set<String> getStandardSnippetIDs()
+       {
+               return standardSnippetIDSetUnmodifiable;
+       }
+
        public void setSnippetSupplier(String id, SnippetDefinintion<C, ?, S> snippetSupplier)
        {
                snippetSuppliersForClassNames.put(id, snippetSupplier);
index 74f01d0..cbe58eb 100644 (file)
@@ -1,6 +1,7 @@
 package net.mograsim.logic.model.snippets;
 
 import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.serializing.JSONSerializable;
 
 /**
  * A high level state ID consists of parts separated by dots ('.').<br>
@@ -13,7 +14,7 @@ import net.mograsim.logic.model.model.components.GUIComponent;
  * 
  * @author Daniel Kirschten
  */
-public interface HighLevelStateHandler
+public interface HighLevelStateHandler extends JSONSerializable
 {
        /**
         * Gets the current value of the given high-level state. <br>
index 45a2c5e..5ed33bd 100644 (file)
@@ -2,8 +2,9 @@ package net.mograsim.logic.model.snippets;
 
 import net.haspamelodica.swt.helper.gcs.GeneralGC;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
+import net.mograsim.logic.model.serializing.JSONSerializable;
 
-public interface Renderer
+public interface Renderer extends JSONSerializable
 {
        public void render(GeneralGC gc, Rectangle visibleRegion);
 }
\ No newline at end of file
index 77e715c..c5fecf2 100644 (file)
@@ -13,6 +13,13 @@ public interface SnippetDefinintion<C, P, S>
 
        public default S create(C context, JsonElement params)
        {
+               Class<P> paramClass = getParamClass();
+               if (paramClass.equals(Void.class))
+               {
+                       if (params != null)
+                               throw new IllegalArgumentException("Params given where none were expected");
+                       return create(context, (P) null);
+               }
                return create(context, new Gson().fromJson(params, getParamClass()));
        }
 
index 1ee7b4c..35dc24a 100644 (file)
@@ -1,6 +1,7 @@
 package net.mograsim.logic.model.snippets.highlevelstatehandlers;
 
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
 import net.mograsim.logic.model.snippets.HighLevelStateHandler;
 import net.mograsim.logic.model.snippets.SnippetDefinintion;
 import net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers;
@@ -35,6 +36,12 @@ public class DefaultHighLevelStateHandler implements HighLevelStateHandler
                throw new IllegalArgumentException("No high level state with ID " + stateID);
        }
 
+       @Override
+       public Void getParamsForSerializing(IdentifierGetter idGetter)
+       {
+               return null;
+       }
+
        static
        {
                SubmodelComponentSnippetSuppliers.highLevelStateHandlerSupplier.setSnippetSupplier(
index 1c3ac62..9afa7c4 100644 (file)
@@ -2,10 +2,12 @@ package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.function.BiFunction;
 import java.util.function.Function;
 
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
 import net.mograsim.logic.model.snippets.HighLevelStateHandler;
 import net.mograsim.logic.model.snippets.SnippetDefinintion;
 import net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers;
@@ -139,6 +141,33 @@ public class StandardHighLevelStateHandler implements HighLevelStateHandler
                }
        }
 
+       @Override
+       public StandardHighLevelStateHandlerParams getParamsForSerializing(IdentifierGetter idGetter)
+       {
+               StandardHighLevelStateHandlerParams params = new StandardHighLevelStateHandlerParams();
+               params.subcomponentHighLevelStates = new HashMap<>();
+               params.atomicHighLevelStates = new HashMap<>();
+               for (Entry<String, SubcomponentHighLevelStateHandler> e : subcomponentHighLevelStateHandlers.entrySet())
+               {
+                       String stateID = e.getKey();
+                       SubcomponentHighLevelStateHandler handler = e.getValue();
+                       SubcomponentHighLevelStateHandlerParams handlerParams = new SubcomponentHighLevelStateHandlerParams();
+                       handlerParams.id = idGetter.subcomponentHighLevelStateHandlerIDs.apply(handler);
+                       handlerParams.params = handler.getParamsForSerializingJSON(idGetter);
+                       params.subcomponentHighLevelStates.put(stateID, handlerParams);
+               }
+               for (Entry<String, AtomicHighLevelStateHandler> e : atomicHighLevelStateHandlers.entrySet())
+               {
+                       String stateID = e.getKey();
+                       AtomicHighLevelStateHandler handler = e.getValue();
+                       AtomicHighLevelStateHandlerParams handlerParams = new AtomicHighLevelStateHandlerParams();
+                       handlerParams.id = idGetter.atomicHighLevelStateHandlerIDs.apply(handler);
+                       handlerParams.params = handler.getParamsForSerializingJSON(idGetter);
+                       params.atomicHighLevelStates.put(stateID, handlerParams);
+               }
+               return params;
+       }
+
        public static class StandardHighLevelStateHandlerParams
        {
                public Map<String, SubcomponentHighLevelStateHandlerParams> subcomponentHighLevelStates;
index dedc6d5..97ace09 100644 (file)
@@ -1,10 +1,11 @@
 package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic;
 
-import com.google.gson.JsonObject;
+import com.google.gson.JsonElement;
 
+import net.mograsim.logic.model.serializing.JSONSerializable;
 import net.mograsim.logic.model.snippets.HighLevelStateHandler;
 
-public interface AtomicHighLevelStateHandler
+public interface AtomicHighLevelStateHandler extends JSONSerializable
 {
        /**
         * Gets the current value of the atomic high level state represented by this AtomicHighLevelStateHandler.<br>
@@ -25,6 +26,6 @@ public interface AtomicHighLevelStateHandler
        public static class AtomicHighLevelStateHandlerParams
        {
                public String id;
-               public JsonObject params;
+               public JsonElement params;
        }
 }
\ No newline at end of file
index c4a56b0..dd7af34 100644 (file)
@@ -6,7 +6,10 @@ import java.util.List;
 import net.mograsim.logic.core.types.Bit;
 import net.mograsim.logic.core.types.BitVector;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.snippets.SnippetDefinintion;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
 
 public class BitVectorSplittingAtomicHighLevelStateHandler implements AtomicHighLevelStateHandler
 {
@@ -70,7 +73,7 @@ public class BitVectorSplittingAtomicHighLevelStateHandler implements AtomicHigh
                        if (vectorPart.length() != vectorPartLengthes.get(partIndex))
                                throw new IllegalArgumentException(
                                                "Illegal vector part length: " + vectorPart.length() + "; expected " + vectorPartLengthes.get(partIndex));
-                       result = result.concat(vectorPart);// TODO is the bit order correct?
+                       result = vectorPart.concat(result);
                }
                return result;
        }
@@ -79,18 +82,34 @@ public class BitVectorSplittingAtomicHighLevelStateHandler implements AtomicHigh
        public void setHighLevelState(Object newState)
        {
                BitVector newStateCasted = (BitVector) newState;
-               for (int partIndex = 0, bitIndex = 0; partIndex < vectorPartTargets.size(); partIndex++)
+               for (int partIndex = vectorPartTargets.size() - 1, bitIndex = 0; partIndex >= 0; partIndex--)
                {
                        int vectorPartLength = vectorPartLengthes.get(partIndex);
-                       BitVector vectorPart = newStateCasted.subVector(bitIndex, vectorPartLength);// TODO is the bit order correct?
+                       BitVector vectorPart = newStateCasted.subVector(bitIndex, bitIndex + vectorPartLength);
                        component.setHighLevelState(vectorPartTargets.get(partIndex), vectorPart);
                        bitIndex += vectorPartLength;
                }
        }
 
+       @Override
+       public BitVectorSplittingAtomicHighLevelStateHandlerParams getParamsForSerializing(IdentifierGetter idGetter)
+       {
+               BitVectorSplittingAtomicHighLevelStateHandlerParams params = new BitVectorSplittingAtomicHighLevelStateHandlerParams();
+               params.vectorPartTargets = new ArrayList<>(vectorPartTargets);
+               params.vectorPartLengthes = new ArrayList<>(vectorPartLengthes);
+               return params;
+       }
+
        public static class BitVectorSplittingAtomicHighLevelStateHandlerParams
        {
                public List<String> vectorPartTargets;
                public List<Integer> vectorPartLengthes;
        }
+
+       static
+       {
+               StandardHighLevelStateHandlerSnippetSuppliers.atomicHandlerSupplier
+                               .setSnippetSupplier(BitVectorSplittingAtomicHighLevelStateHandler.class.getCanonicalName(), SnippetDefinintion.create(
+                                               BitVectorSplittingAtomicHighLevelStateHandlerParams.class, BitVectorSplittingAtomicHighLevelStateHandler::new));
+       }
 }
\ No newline at end of file
index bd21132..de9bc4a 100644 (file)
@@ -2,7 +2,10 @@ package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic
 
 import net.mograsim.logic.model.model.components.GUIComponent;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.snippets.SnippetDefinintion;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
 
 public class DelegatingAtomicHighLevelStateHandler implements AtomicHighLevelStateHandler
 {
@@ -62,9 +65,25 @@ public class DelegatingAtomicHighLevelStateHandler implements AtomicHighLevelSta
                delegateTarget.setHighLevelState(subStateID, newState);
        }
 
+       @Override
+       public DelegatingAtomicHighLevelStateHandlerParams getParamsForSerializing(IdentifierGetter idGetter)
+       {
+               DelegatingAtomicHighLevelStateHandlerParams params = new DelegatingAtomicHighLevelStateHandlerParams();
+               params.delegateTarget = delegateTarget.name;
+               params.subStateID = subStateID;
+               return params;
+       }
+
        public static class DelegatingAtomicHighLevelStateHandlerParams
        {
                public String delegateTarget;
                public String subStateID;
        }
+
+       static
+       {
+               StandardHighLevelStateHandlerSnippetSuppliers.atomicHandlerSupplier.setSnippetSupplier(
+                               DelegatingAtomicHighLevelStateHandler.class.getCanonicalName(),
+                               SnippetDefinintion.create(DelegatingAtomicHighLevelStateHandlerParams.class, DelegatingAtomicHighLevelStateHandler::new));
+       }
 }
\ No newline at end of file
index 2a18646..b800934 100644 (file)
@@ -10,7 +10,10 @@ import net.mograsim.logic.core.types.Bit;
 import net.mograsim.logic.core.types.BitVector;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.model.wires.GUIWire;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.snippets.SnippetDefinintion;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
 
 public class WireForcingAtomicHighLevelStateHandler implements AtomicHighLevelStateHandler
 {
@@ -75,7 +78,7 @@ public class WireForcingAtomicHighLevelStateHandler implements AtomicHighLevelSt
        @Override
        public Object getHighLevelState()
        {
-               BitVector result = BitVector.of(Bit.U, logicWidth);
+               BitVector result = BitVector.of(Bit.ZERO, logicWidth);
                for (GUIWire wire : wiresToForceInverted)
                        if (wire.hasLogicModelBinding())
                                result = result.or(wire.getWireValues());
@@ -103,9 +106,25 @@ public class WireForcingAtomicHighLevelStateHandler implements AtomicHighLevelSt
                                wire.forceWireValues(vector);
        }
 
+       @Override
+       public WireForcingAtomicHighLevelStateHandlerParams getParamsForSerializing(IdentifierGetter idGetter)
+       {
+               WireForcingAtomicHighLevelStateHandlerParams params = new WireForcingAtomicHighLevelStateHandlerParams();
+               params.wiresToForce = wiresToForce.stream().map(w -> w.name).collect(Collectors.toList());
+               params.wiresToForceInverted = wiresToForceInverted.stream().map(w -> w.name).collect(Collectors.toList());
+               return params;
+       }
+
        public static class WireForcingAtomicHighLevelStateHandlerParams
        {
                public List<String> wiresToForce;
                public List<String> wiresToForceInverted;
        }
+
+       static
+       {
+               StandardHighLevelStateHandlerSnippetSuppliers.atomicHandlerSupplier.setSnippetSupplier(
+                               WireForcingAtomicHighLevelStateHandler.class.getCanonicalName(),
+                               SnippetDefinintion.create(WireForcingAtomicHighLevelStateHandlerParams.class, WireForcingAtomicHighLevelStateHandler::new));
+       }
 }
\ No newline at end of file
index de32e70..d06f1c2 100644 (file)
@@ -4,7 +4,7 @@ mograsim version: 0.1.3
     "delegating": "net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.DelegatingSubcomponentHighLevelStateHandler"
   },
   "standardAtomicHandlerSuppliers": {
-    "delegating": "net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler"
+    "delegating": "net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler",
     "bitVectorSplitting": "net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler"
   }
 }
\ No newline at end of file
index bc864d1..3347377 100644 (file)
@@ -2,7 +2,10 @@ package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcom
 
 import net.mograsim.logic.model.model.components.GUIComponent;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
+import net.mograsim.logic.model.snippets.SnippetDefinintion;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
 
 public class DelegatingSubcomponentHighLevelStateHandler implements SubcomponentHighLevelStateHandler
 {
@@ -68,9 +71,25 @@ public class DelegatingSubcomponentHighLevelStateHandler implements Subcomponent
                return prefix == null ? subStateID : prefix + '.' + subStateID;
        }
 
+       @Override
+       public DelegatingSubcomponentHighLevelStateHandlerParams getParamsForSerializing(IdentifierGetter idGetter)
+       {
+               DelegatingSubcomponentHighLevelStateHandlerParams params = new DelegatingSubcomponentHighLevelStateHandlerParams();
+               params.delegateTarget = delegateTarget.name;
+               params.prefix = prefix;
+               return params;
+       }
+
        public static class DelegatingSubcomponentHighLevelStateHandlerParams
        {
                public String delegateTarget;
                public String prefix;
        }
+
+       static
+       {
+               StandardHighLevelStateHandlerSnippetSuppliers.subcomponentHandlerSupplier
+                               .setSnippetSupplier(DelegatingSubcomponentHighLevelStateHandler.class.getCanonicalName(), SnippetDefinintion
+                                               .create(DelegatingSubcomponentHighLevelStateHandlerParams.class, DelegatingSubcomponentHighLevelStateHandler::new));
+       }
 }
\ No newline at end of file
index 412bd19..4c82bdc 100644 (file)
@@ -1,10 +1,11 @@
 package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent;
 
-import com.google.gson.JsonObject;
+import com.google.gson.JsonElement;
 
+import net.mograsim.logic.model.serializing.JSONSerializable;
 import net.mograsim.logic.model.snippets.HighLevelStateHandler;
 
-public interface SubcomponentHighLevelStateHandler
+public interface SubcomponentHighLevelStateHandler extends JSONSerializable
 {
        /**
         * Gets the current value of the given high level state of the subcomponent represented by this SubcomponentHighLevelStateHandler.<br>
@@ -25,6 +26,6 @@ public interface SubcomponentHighLevelStateHandler
        public static class SubcomponentHighLevelStateHandlerParams
        {
                public String id;
-               public JsonObject params;
+               public JsonElement params;
        }
 }
\ No newline at end of file
index c7afe7a..13a8eb4 100644 (file)
@@ -4,6 +4,7 @@ import net.haspamelodica.swt.helper.gcs.GeneralGC;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
 import net.mograsim.logic.model.model.components.GUIComponent;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
 import net.mograsim.logic.model.snippets.Renderer;
 import net.mograsim.logic.model.snippets.SnippetDefinintion;
 import net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers;
@@ -34,6 +35,12 @@ public class DefaultOutlineRenderer implements Renderer
                gc.drawRectangle(component.getBounds());
        }
 
+       @Override
+       public Void getParamsForSerializing(IdentifierGetter idGetter)
+       {
+               return null;
+       }
+
        static
        {
                SubmodelComponentSnippetSuppliers.outlineRendererSupplier.setSnippetSupplier(DefaultOutlineRenderer.class.getCanonicalName(),
index bf40639..7705203 100644 (file)
@@ -6,6 +6,7 @@ import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
 import net.mograsim.logic.model.model.components.GUIComponent;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
 import net.mograsim.logic.model.snippets.Renderer;
 import net.mograsim.logic.model.snippets.SnippetDefinintion;
 import net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers;
@@ -21,12 +22,14 @@ import net.mograsim.preferences.Preferences;
 public class CenteredTextSymbolRenderer implements Renderer
 {
        private final GUIComponent component;
-       private final CenteredTextParams params;
+       private final String text;
+       private final double fontHeight;
 
        public CenteredTextSymbolRenderer(SubmodelComponent component, CenteredTextParams params)
        {
                this.component = component;
-               this.params = params;
+               this.text = params.text;
+               this.fontHeight = params.fontHeight;
 
        }
 
@@ -34,16 +37,25 @@ public class CenteredTextSymbolRenderer implements Renderer
        public void render(GeneralGC gc, Rectangle visibleRegion)
        {
                Font oldFont = gc.getFont();
-               gc.setFont(new Font(oldFont.getName(), params.fontHeight, oldFont.getStyle()));
+               gc.setFont(new Font(oldFont.getName(), fontHeight, oldFont.getStyle()));
                ColorDefinition fg = Preferences.current().getColorDefinition("net.mograsim.logic.model.color.text");
                if (fg != null)
                        gc.setForeground(ColorManager.current().toColor(fg));
-               Point idSize = gc.textExtent(params.text);
+               Point idSize = gc.textExtent(text);
                Rectangle bounds = component.getBounds();
-               gc.drawText(params.text, bounds.x + (bounds.width - idSize.x) / 2, bounds.y + (bounds.height - idSize.y) / 2, true);
+               gc.drawText(text, bounds.x + (bounds.width - idSize.x) / 2, bounds.y + (bounds.height - idSize.y) / 2, true);
                gc.setFont(oldFont);
        }
 
+       @Override
+       public CenteredTextParams getParamsForSerializing(IdentifierGetter idGetter)
+       {
+               CenteredTextParams params = new CenteredTextParams();
+               params.text = text;
+               params.fontHeight = fontHeight;
+               return params;
+       }
+
        public static class CenteredTextParams
        {
                public String text;
index c102b59..d24ff22 100644 (file)
@@ -5,6 +5,7 @@ import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
 import net.mograsim.logic.model.model.components.GUIComponent;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
 import net.mograsim.logic.model.snippets.Renderer;
 import net.mograsim.logic.model.snippets.SnippetDefinintion;
 import net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers;
@@ -39,6 +40,12 @@ public class DefaultSymbolRenderer implements Renderer
                gc.drawText(id, bounds.x + (bounds.width - idSize.x) / 2, bounds.y + (bounds.height - idSize.y) / 2, true);
        }
 
+       @Override
+       public Void getParamsForSerializing(IdentifierGetter idGetter)
+       {
+               return null;
+       }
+
        static
        {
                SubmodelComponentSnippetSuppliers.symbolRendererSupplier.setSnippetSupplier(DefaultSymbolRenderer.class.getCanonicalName(),
index d6386e3..be820a6 100644 (file)
@@ -11,6 +11,7 @@ import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
 import net.mograsim.logic.model.model.components.GUIComponent;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.serializing.IdentifierGetter;
 import net.mograsim.logic.model.snippets.Renderer;
 import net.mograsim.logic.model.snippets.SnippetDefinintion;
 import net.mograsim.logic.model.snippets.SubmodelComponentSnippetSuppliers;
@@ -27,12 +28,20 @@ import net.mograsim.preferences.Preferences;
 public class SimpleRectangularLikeSymbolRenderer implements Renderer
 {
        private final GUIComponent component;
-       private final SimpleRectangularLikeParams params;
+       private final String centerText;
+       private final double centerTextHeight;
+       private final double horizontalComponentCenter;
+       private final double pinLabelHeight;
+       private final double pinLabelMargin;
 
        public SimpleRectangularLikeSymbolRenderer(SubmodelComponent component, SimpleRectangularLikeParams params)
        {
                this.component = component;
-               this.params = params;
+               this.centerText = params.centerText;
+               this.centerTextHeight = params.centerTextHeight;
+               this.horizontalComponentCenter = params.horizontalComponentCenter;
+               this.pinLabelHeight = params.pinLabelHeight;
+               this.pinLabelMargin = params.pinLabelMargin;
        }
 
        @Override
@@ -44,13 +53,13 @@ public class SimpleRectangularLikeSymbolRenderer implements Renderer
                double height = component.getHeight();
 
                Font oldFont = gc.getFont();
-               gc.setFont(new Font(oldFont.getName(), params.centerTextHeight, oldFont.getStyle()));
-               Point textExtent = gc.textExtent(params.centerText);
+               gc.setFont(new Font(oldFont.getName(), centerTextHeight, oldFont.getStyle()));
+               Point textExtent = gc.textExtent(centerText);
                Color textColor = Preferences.current().getColor("net.mograsim.logic.model.color.text");
                if (textColor != null)
                        gc.setForeground(textColor);
-               gc.drawText(params.centerText, posX + (width - textExtent.x) / 2, posY + (height - textExtent.y) / 2, true);
-               gc.setFont(new Font(oldFont.getName(), params.pinLabelHeight, oldFont.getStyle()));
+               gc.drawText(centerText, posX + (width - textExtent.x) / 2, posY + (height - textExtent.y) / 2, true);
+               gc.setFont(new Font(oldFont.getName(), pinLabelHeight, oldFont.getStyle()));
                for (Entry<String, Pin> pinEntry : component.getPins().entrySet())
                {
                        String pinName = pinEntry.getKey();
@@ -58,13 +67,24 @@ public class SimpleRectangularLikeSymbolRenderer implements Renderer
                        double pinX = pin.getRelX();
                        double pinY = posY + pin.getRelY();
                        textExtent = gc.textExtent(pinName);
-                       gc.drawText(pinName,
-                                       posX + pinX + (pinX > params.horizontalComponentCenter ? -textExtent.x - params.pinLabelMargin : params.pinLabelMargin),
+                       gc.drawText(pinName, posX + pinX + (pinX > horizontalComponentCenter ? -textExtent.x - pinLabelMargin : pinLabelMargin),
                                        pinY - textExtent.y / 2, true);
                }
                gc.setFont(oldFont);
        }
 
+       @Override
+       public SimpleRectangularLikeParams getParamsForSerializing(IdentifierGetter idGetter)
+       {
+               SimpleRectangularLikeParams params = new SimpleRectangularLikeParams();
+               params.centerText = centerText;
+               params.centerTextHeight = centerTextHeight;
+               params.horizontalComponentCenter = horizontalComponentCenter;
+               params.pinLabelHeight = pinLabelHeight;
+               params.pinLabelMargin = pinLabelMargin;
+               return params;
+       }
+
        public static class SimpleRectangularLikeParams
        {
                public String centerText;
index 2ada2e7..8dffc94 100644 (file)
@@ -10,6 +10,7 @@ import java.util.stream.Collectors;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
+import com.google.gson.JsonElement;
 
 public class JsonHandler
 {
@@ -54,4 +55,9 @@ public class JsonHandler
        {
                return String.format("mograsim version: %s\n%s", Version.jsonCompVersion.toString(), parser.toJson(o));
        }
+
+       public static JsonElement toJsonTree(Object o)
+       {
+               return parser.toJsonTree(o);
+       }
 }