1 package net.mograsim.logic.ui.model.components.mi.nandbased;
3 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
4 import net.mograsim.logic.core.types.BitVector;
5 import net.mograsim.logic.ui.model.ViewModelModifiable;
6 import net.mograsim.logic.ui.model.components.SimpleRectangularSubmodelComponent;
7 import net.mograsim.logic.ui.model.wires.GUIWire;
8 import net.mograsim.logic.ui.model.wires.Pin;
9 import net.mograsim.logic.ui.model.wires.WireCrossPoint;
11 public class GUIram2 extends SimpleRectangularSubmodelComponent
13 private GUIdlatch4 cell00;
14 private GUIdlatch4 cell01;
15 private GUIdlatch4 cell10;
16 private GUIdlatch4 cell11;
18 public GUIram2(ViewModelModifiable model)
20 super(model, 1, "GUIram2");
22 setInputPins("A0", "A1", "B0", "B1", "WE", "D1", "D2", "D3", "D4");
23 setOutputPins("QA1", "QA2", "QA3", "QA4", "QB1", "QB2", "QB3", "QB4");
24 initSubmodelComponents();
27 @SuppressWarnings("unused") // for GUIWires being created
28 private void initSubmodelComponents()
31 Pin A0 = getSubmodelPin("A0");
32 Pin A1 = getSubmodelPin("A1");
33 Pin B0 = getSubmodelPin("B0");
34 Pin B1 = getSubmodelPin("B1");
35 Pin WE = getSubmodelPin("WE");
36 Pin D1 = getSubmodelPin("D1");
37 Pin D2 = getSubmodelPin("D2");
38 Pin D3 = getSubmodelPin("D3");
39 Pin D4 = getSubmodelPin("D4");
40 Pin QA1 = getSubmodelPin("QA1");
41 Pin QA2 = getSubmodelPin("QA2");
42 Pin QA3 = getSubmodelPin("QA3");
43 Pin QA4 = getSubmodelPin("QA4");
44 Pin QB1 = getSubmodelPin("QB1");
45 Pin QB2 = getSubmodelPin("QB2");
46 Pin QB3 = getSubmodelPin("QB3");
47 Pin QB4 = getSubmodelPin("QB4");
49 GUIdemux2 demuxA = new GUIdemux2 (submodelModifiable);
50 GUIdemux2 demuxB = new GUIdemux2 (submodelModifiable);
51 GUIand41 weAndB = new GUIand41 (submodelModifiable);
52 cell00 = new GUIdlatch4 (submodelModifiable);
53 cell01 = new GUIdlatch4 (submodelModifiable);
54 cell10 = new GUIdlatch4 (submodelModifiable);
55 cell11 = new GUIdlatch4 (submodelModifiable);
56 GUIand41 andA00 = new GUIand41 (submodelModifiable);
57 GUIandor414 andorA01 = new GUIandor414(submodelModifiable);
58 GUIandor414 andorA10 = new GUIandor414(submodelModifiable);
59 GUIandor414 andorA11 = new GUIandor414(submodelModifiable);
60 GUIand41 andB00 = new GUIand41 (submodelModifiable);
61 GUIandor414 andorB01 = new GUIandor414(submodelModifiable);
62 GUIandor414 andorB10 = new GUIandor414(submodelModifiable);
63 GUIandor414 andorB11 = new GUIandor414(submodelModifiable);
65 WireCrossPoint cpB00 = new WireCrossPoint(submodelModifiable, 1);
66 WireCrossPoint cpB01 = new WireCrossPoint(submodelModifiable, 1);
67 WireCrossPoint cpB10 = new WireCrossPoint(submodelModifiable, 1);
68 WireCrossPoint cpB11 = new WireCrossPoint(submodelModifiable, 1);
69 WireCrossPoint cpD1in = new WireCrossPoint(submodelModifiable, 1);
70 WireCrossPoint cpD2in = new WireCrossPoint(submodelModifiable, 1);
71 WireCrossPoint cpD3in = new WireCrossPoint(submodelModifiable, 1);
72 WireCrossPoint cpD4in = new WireCrossPoint(submodelModifiable, 1);
73 WireCrossPoint cpD101 = new WireCrossPoint(submodelModifiable, 1);
74 WireCrossPoint cpD201 = new WireCrossPoint(submodelModifiable, 1);
75 WireCrossPoint cpD301 = new WireCrossPoint(submodelModifiable, 1);
76 WireCrossPoint cpD401 = new WireCrossPoint(submodelModifiable, 1);
77 WireCrossPoint cpD110 = new WireCrossPoint(submodelModifiable, 1);
78 WireCrossPoint cpD210 = new WireCrossPoint(submodelModifiable, 1);
79 WireCrossPoint cpD310 = new WireCrossPoint(submodelModifiable, 1);
80 WireCrossPoint cpD410 = new WireCrossPoint(submodelModifiable, 1);
81 WireCrossPoint cpQ100 = new WireCrossPoint(submodelModifiable, 1);
82 WireCrossPoint cpQ200 = new WireCrossPoint(submodelModifiable, 1);
83 WireCrossPoint cpQ300 = new WireCrossPoint(submodelModifiable, 1);
84 WireCrossPoint cpQ400 = new WireCrossPoint(submodelModifiable, 1);
85 WireCrossPoint cpQ101 = new WireCrossPoint(submodelModifiable, 1);
86 WireCrossPoint cpQ201 = new WireCrossPoint(submodelModifiable, 1);
87 WireCrossPoint cpQ301 = new WireCrossPoint(submodelModifiable, 1);
88 WireCrossPoint cpQ401 = new WireCrossPoint(submodelModifiable, 1);
89 WireCrossPoint cpQ110 = new WireCrossPoint(submodelModifiable, 1);
90 WireCrossPoint cpQ210 = new WireCrossPoint(submodelModifiable, 1);
91 WireCrossPoint cpQ310 = new WireCrossPoint(submodelModifiable, 1);
92 WireCrossPoint cpQ410 = new WireCrossPoint(submodelModifiable, 1);
93 WireCrossPoint cpQ111 = new WireCrossPoint(submodelModifiable, 1);
94 WireCrossPoint cpQ211 = new WireCrossPoint(submodelModifiable, 1);
95 WireCrossPoint cpQ311 = new WireCrossPoint(submodelModifiable, 1);
96 WireCrossPoint cpQ411 = new WireCrossPoint(submodelModifiable, 1);
98 demuxA .moveTo( 55, 45);
99 demuxB .moveTo( 55, 150);
100 weAndB .moveTo(130, 150);
101 cell00 .moveTo( 55, 325);
102 cell01 .moveTo( 55, 475);
103 cell10 .moveTo( 55, 625);
104 cell11 .moveTo( 55, 775);
105 andA00 .moveTo(235, 375);
106 andorA01.moveTo(235, 485);
107 andorA10.moveTo(235, 635);
108 andorA11.moveTo(235, 785);
109 andB00 .moveTo(135, 325);
110 andorB01.moveTo(135, 435);
111 andorB10.moveTo(135, 585);
112 andorB11.moveTo(135, 735);
113 cpB00 .moveCenterTo(110, 155);
114 cpB01 .moveCenterTo(105, 165);
115 cpB10 .moveCenterTo(100, 175);
116 cpB11 .moveCenterTo( 95, 185);
117 cpD1in.moveCenterTo( 35, 550);
118 cpD2in.moveCenterTo( 40, 650);
119 cpD3in.moveCenterTo( 45, 750);
120 cpD4in.moveCenterTo( 50, 810);
121 cpD101.moveCenterTo( 35, 480);
122 cpD201.moveCenterTo( 40, 490);
123 cpD301.moveCenterTo( 45, 500);
124 cpD401.moveCenterTo( 50, 510);
125 cpD110.moveCenterTo( 35, 630);
126 cpD210.moveCenterTo( 40, 640);
127 cpD310.moveCenterTo( 45, 650);
128 cpD410.moveCenterTo( 50, 660);
129 cpQ100.moveCenterTo(130, 330);
130 cpQ200.moveCenterTo(125, 340);
131 cpQ300.moveCenterTo(120, 350);
132 cpQ400.moveCenterTo(115, 360);
133 cpQ101.moveCenterTo(130, 480);
134 cpQ201.moveCenterTo(125, 490);
135 cpQ301.moveCenterTo(120, 500);
136 cpQ401.moveCenterTo(115, 510);
137 cpQ110.moveCenterTo(130, 630);
138 cpQ210.moveCenterTo(125, 640);
139 cpQ310.moveCenterTo(120, 650);
140 cpQ410.moveCenterTo(115, 660);
141 cpQ111.moveCenterTo(130, 780);
142 cpQ211.moveCenterTo(125, 790);
143 cpQ311.moveCenterTo(120, 800);
144 cpQ411.moveCenterTo(115, 810);
146 new GUIWire(submodelModifiable, A0, demuxA.getPin("S0"), new Point[0]);
147 new GUIWire(submodelModifiable, A1, demuxA.getPin("S1"), new Point(10, 150), new Point(10, 60));
148 new GUIWire(submodelModifiable, B0, demuxB.getPin("S0"), new Point( 5, 250), new Point( 5, 155));
149 new GUIWire(submodelModifiable, B1, demuxB.getPin("S1"), new Point(10, 350), new Point(10, 165));
150 new GUIWire(submodelModifiable, demuxB.getPin("Y00"), cpB00, new Point[0]);
151 new GUIWire(submodelModifiable, demuxB.getPin("Y01"), cpB01, new Point[0]);
152 new GUIWire(submodelModifiable, demuxB.getPin("Y10"), cpB10, new Point[0]);
153 new GUIWire(submodelModifiable, demuxB.getPin("Y11"), cpB11, new Point[0]);
154 new GUIWire(submodelModifiable, cpB00, weAndB.getPin("A1"), new Point[0]);
155 new GUIWire(submodelModifiable, cpB01, weAndB.getPin("A2"), new Point[0]);
156 new GUIWire(submodelModifiable, cpB10, weAndB.getPin("A3"), new Point[0]);
157 new GUIWire(submodelModifiable, cpB11, weAndB.getPin("A4"), new Point[0]);
158 new GUIWire(submodelModifiable, WE, weAndB.getPin("B"), new Point(5, 450), new Point(5, 300), new Point(125, 300), new Point(125, 195));
159 new GUIWire(submodelModifiable, weAndB.getPin("Y1"), cell00.getPin("C"), new Point(185, 155), new Point(185, 250), new Point(30, 250), new Point(30, 370));
160 new GUIWire(submodelModifiable, weAndB.getPin("Y2"), cell01.getPin("C"), new Point(180, 165), new Point(180, 245), new Point(25, 245), new Point(25, 520));
161 new GUIWire(submodelModifiable, weAndB.getPin("Y3"), cell10.getPin("C"), new Point(175, 175), new Point(175, 240), new Point(20, 240), new Point(20, 670));
162 new GUIWire(submodelModifiable, weAndB.getPin("Y4"), cell11.getPin("C"), new Point(170, 185), new Point(170, 235), new Point(15, 235), new Point(15, 820));
163 new GUIWire(submodelModifiable, D1, cpD1in , new Point[0]);
164 new GUIWire(submodelModifiable, D2, cpD2in , new Point[0]);
165 new GUIWire(submodelModifiable, D3, cpD3in , new Point[0]);
166 new GUIWire(submodelModifiable, D4, cpD4in , new Point(50, 850));
167 new GUIWire(submodelModifiable, cpD101, cell00.getPin("D1"), new Point(35, 330));
168 new GUIWire(submodelModifiable, cpD201, cell00.getPin("D2"), new Point(40, 340));
169 new GUIWire(submodelModifiable, cpD301, cell00.getPin("D3"), new Point(45, 350));
170 new GUIWire(submodelModifiable, cpD401, cell00.getPin("D4"), new Point(50, 360));
171 new GUIWire(submodelModifiable, cpD101, cell01.getPin("D1"), new Point[0]);
172 new GUIWire(submodelModifiable, cpD201, cell01.getPin("D2"), new Point[0]);
173 new GUIWire(submodelModifiable, cpD301, cell01.getPin("D3"), new Point[0]);
174 new GUIWire(submodelModifiable, cpD401, cell01.getPin("D4"), new Point[0]);
175 new GUIWire(submodelModifiable, cpD101, cpD1in , new Point[0]);
176 new GUIWire(submodelModifiable, cpD1in, cpD110 , new Point[0]);
177 new GUIWire(submodelModifiable, cpD201, cpD210 , new Point[0]);
178 new GUIWire(submodelModifiable, cpD301, cpD310 , new Point[0]);
179 new GUIWire(submodelModifiable, cpD401, cpD410 , new Point[0]);
180 new GUIWire(submodelModifiable, cpD110, cell10.getPin("D1"), new Point[0]);
181 new GUIWire(submodelModifiable, cpD210, cell10.getPin("D2"), new Point[0]);
182 new GUIWire(submodelModifiable, cpD310, cell10.getPin("D3"), new Point[0]);
183 new GUIWire(submodelModifiable, cpD410, cell10.getPin("D4"), new Point[0]);
184 new GUIWire(submodelModifiable, cpD210, cpD2in , new Point[0]);
185 new GUIWire(submodelModifiable, cpD310, cpD3in , new Point[0]);
186 new GUIWire(submodelModifiable, cpD410, cpD4in , new Point[0]);
187 new GUIWire(submodelModifiable, cpD110, cell11.getPin("D1"), new Point(35, 780));
188 new GUIWire(submodelModifiable, cpD2in, cell11.getPin("D2"), new Point(40, 790));
189 new GUIWire(submodelModifiable, cpD3in, cell11.getPin("D3"), new Point(45, 800));
190 new GUIWire(submodelModifiable, cpD4in, cell11.getPin("D4"), new Point[0]);
191 new GUIWire(submodelModifiable, cell00.getPin("Q1"), cpQ100, new Point[0]);
192 new GUIWire(submodelModifiable, cell00.getPin("Q2"), cpQ200, new Point[0]);
193 new GUIWire(submodelModifiable, cell00.getPin("Q3"), cpQ300, new Point[0]);
194 new GUIWire(submodelModifiable, cell00.getPin("Q4"), cpQ400, new Point[0]);
195 new GUIWire(submodelModifiable, cell01.getPin("Q1"), cpQ101, new Point[0]);
196 new GUIWire(submodelModifiable, cell01.getPin("Q2"), cpQ201, new Point[0]);
197 new GUIWire(submodelModifiable, cell01.getPin("Q3"), cpQ301, new Point[0]);
198 new GUIWire(submodelModifiable, cell01.getPin("Q4"), cpQ401, new Point[0]);
199 new GUIWire(submodelModifiable, cell10.getPin("Q1"), cpQ110, new Point[0]);
200 new GUIWire(submodelModifiable, cell10.getPin("Q2"), cpQ210, new Point[0]);
201 new GUIWire(submodelModifiable, cell10.getPin("Q3"), cpQ310, new Point[0]);
202 new GUIWire(submodelModifiable, cell10.getPin("Q4"), cpQ410, new Point[0]);
203 new GUIWire(submodelModifiable, cell11.getPin("Q1"), cpQ111, new Point[0]);
204 new GUIWire(submodelModifiable, cell11.getPin("Q2"), cpQ211, new Point[0]);
205 new GUIWire(submodelModifiable, cell11.getPin("Q3"), cpQ311, new Point[0]);
206 new GUIWire(submodelModifiable, cell11.getPin("Q4"), cpQ411, new Point[0]);
207 new GUIWire(submodelModifiable, demuxA.getPin("Y00"), andA00 .getPin("B"), new Point(210, 50), new Point(210, 420));
208 new GUIWire(submodelModifiable, demuxA.getPin("Y01"), andorA01.getPin("B"), new Point(205, 60), new Point(205, 570));
209 new GUIWire(submodelModifiable, demuxA.getPin("Y10"), andorA10.getPin("B"), new Point(200, 70), new Point(200, 720));
210 new GUIWire(submodelModifiable, demuxA.getPin("Y11"), andorA11.getPin("B"), new Point(195, 80), new Point(195, 870));
211 new GUIWire(submodelModifiable, cpB00 , andB00 .getPin("B"), new Point(110, 370));
212 new GUIWire(submodelModifiable, cpB01 , andorB01.getPin("B"), new Point(105, 520));
213 new GUIWire(submodelModifiable, cpB10 , andorB10.getPin("B"), new Point(100, 670));
214 new GUIWire(submodelModifiable, cpB11 , andorB11.getPin("B"), new Point(95, 820));
215 new GUIWire(submodelModifiable, cpQ100, andA00 .getPin("A1"), new Point(130, 380));
216 new GUIWire(submodelModifiable, cpQ200, andA00 .getPin("A2"), new Point(125, 390));
217 new GUIWire(submodelModifiable, cpQ300, andA00 .getPin("A3"), new Point(120, 400));
218 new GUIWire(submodelModifiable, cpQ400, andA00 .getPin("A4"), new Point(115, 410));
219 new GUIWire(submodelModifiable, cpQ101, andorA01.getPin("A1"), new Point(130, 530));
220 new GUIWire(submodelModifiable, cpQ201, andorA01.getPin("A2"), new Point(125, 540));
221 new GUIWire(submodelModifiable, cpQ301, andorA01.getPin("A3"), new Point(120, 550));
222 new GUIWire(submodelModifiable, cpQ401, andorA01.getPin("A4"), new Point(115, 560));
223 new GUIWire(submodelModifiable, cpQ110, andorA10.getPin("A1"), new Point(130, 680));
224 new GUIWire(submodelModifiable, cpQ210, andorA10.getPin("A2"), new Point(125, 690));
225 new GUIWire(submodelModifiable, cpQ310, andorA10.getPin("A3"), new Point(120, 700));
226 new GUIWire(submodelModifiable, cpQ410, andorA10.getPin("A4"), new Point(115, 710));
227 new GUIWire(submodelModifiable, cpQ111, andorA11.getPin("A1"), new Point(130, 830));
228 new GUIWire(submodelModifiable, cpQ211, andorA11.getPin("A2"), new Point(125, 840));
229 new GUIWire(submodelModifiable, cpQ311, andorA11.getPin("A3"), new Point(120, 850));
230 new GUIWire(submodelModifiable, cpQ411, andorA11.getPin("A4"), new Point(115, 860));
231 new GUIWire(submodelModifiable, cpQ100, andB00 .getPin("A1"), new Point[0]);
232 new GUIWire(submodelModifiable, cpQ200, andB00 .getPin("A2"), new Point[0]);
233 new GUIWire(submodelModifiable, cpQ300, andB00 .getPin("A3"), new Point[0]);
234 new GUIWire(submodelModifiable, cpQ400, andB00 .getPin("A4"), new Point[0]);
235 new GUIWire(submodelModifiable, cpQ101, andorB01.getPin("A1"), new Point[0]);
236 new GUIWire(submodelModifiable, cpQ201, andorB01.getPin("A2"), new Point[0]);
237 new GUIWire(submodelModifiable, cpQ301, andorB01.getPin("A3"), new Point[0]);
238 new GUIWire(submodelModifiable, cpQ401, andorB01.getPin("A4"), new Point[0]);
239 new GUIWire(submodelModifiable, cpQ110, andorB10.getPin("A1"), new Point[0]);
240 new GUIWire(submodelModifiable, cpQ210, andorB10.getPin("A2"), new Point[0]);
241 new GUIWire(submodelModifiable, cpQ310, andorB10.getPin("A3"), new Point[0]);
242 new GUIWire(submodelModifiable, cpQ410, andorB10.getPin("A4"), new Point[0]);
243 new GUIWire(submodelModifiable, cpQ111, andorB11.getPin("A1"), new Point[0]);
244 new GUIWire(submodelModifiable, cpQ211, andorB11.getPin("A2"), new Point[0]);
245 new GUIWire(submodelModifiable, cpQ311, andorB11.getPin("A3"), new Point[0]);
246 new GUIWire(submodelModifiable, cpQ411, andorB11.getPin("A4"), new Point[0]);
247 new GUIWire(submodelModifiable, andA00 .getPin("Y1"), andorA01.getPin("C1"), new Point(290, 380), new Point(290, 445), new Point(230, 445), new Point(230, 490));
248 new GUIWire(submodelModifiable, andA00 .getPin("Y2"), andorA01.getPin("C2"), new Point(285, 390), new Point(285, 440), new Point(225, 440), new Point(225, 500));
249 new GUIWire(submodelModifiable, andA00 .getPin("Y3"), andorA01.getPin("C3"), new Point(280, 400), new Point(280, 435), new Point(220, 435), new Point(220, 510));
250 new GUIWire(submodelModifiable, andA00 .getPin("Y4"), andorA01.getPin("C4"), new Point(275, 410), new Point(275, 430), new Point(215, 430), new Point(215, 520));
251 new GUIWire(submodelModifiable, andorA01.getPin("Y1"), andorA10.getPin("C1"), new Point(290, 490), new Point(290, 595), new Point(230, 595), new Point(230, 640));
252 new GUIWire(submodelModifiable, andorA01.getPin("Y2"), andorA10.getPin("C2"), new Point(285, 500), new Point(285, 590), new Point(225, 590), new Point(225, 650));
253 new GUIWire(submodelModifiable, andorA01.getPin("Y3"), andorA10.getPin("C3"), new Point(280, 510), new Point(280, 585), new Point(220, 585), new Point(220, 660));
254 new GUIWire(submodelModifiable, andorA01.getPin("Y4"), andorA10.getPin("C4"), new Point(275, 520), new Point(275, 580), new Point(215, 580), new Point(215, 670));
255 new GUIWire(submodelModifiable, andorA10.getPin("Y1"), andorA11.getPin("C1"), new Point(290, 640), new Point(290, 745), new Point(230, 745), new Point(230, 790));
256 new GUIWire(submodelModifiable, andorA10.getPin("Y2"), andorA11.getPin("C2"), new Point(285, 650), new Point(285, 740), new Point(225, 740), new Point(225, 800));
257 new GUIWire(submodelModifiable, andorA10.getPin("Y3"), andorA11.getPin("C3"), new Point(280, 660), new Point(280, 735), new Point(220, 735), new Point(220, 810));
258 new GUIWire(submodelModifiable, andorA10.getPin("Y4"), andorA11.getPin("C4"), new Point(275, 670), new Point(275, 730), new Point(215, 730), new Point(215, 820));
259 new GUIWire(submodelModifiable, andorA11.getPin("Y1"), QA1 , new Point(300, 790), new Point(300, 50));
260 new GUIWire(submodelModifiable, andorA11.getPin("Y2"), QA2 , new Point(305, 800), new Point(305, 150));
261 new GUIWire(submodelModifiable, andorA11.getPin("Y3"), QA3 , new Point(310, 810), new Point(310, 250));
262 new GUIWire(submodelModifiable, andorA11.getPin("Y4"), QA4 , new Point(315, 820), new Point(315, 350));
263 new GUIWire(submodelModifiable, andB00 .getPin("Y1"), andorB01.getPin("C1"), new Point(190, 330), new Point(190, 430), new Point(130, 430), new Point(130, 440));
264 new GUIWire(submodelModifiable, andB00 .getPin("Y2"), andorB01.getPin("C2"), new Point(185, 340), new Point(185, 425), new Point(125, 425), new Point(125, 450));
265 new GUIWire(submodelModifiable, andB00 .getPin("Y3"), andorB01.getPin("C3"), new Point(180, 350), new Point(180, 420), new Point(120, 420), new Point(120, 460));
266 new GUIWire(submodelModifiable, andB00 .getPin("Y4"), andorB01.getPin("C4"), new Point(175, 360), new Point(175, 415), new Point(115, 415), new Point(115, 470));
267 new GUIWire(submodelModifiable, andorB01.getPin("Y1"), andorB10.getPin("C1"), new Point(190, 440), new Point(190, 580), new Point(130, 580), new Point(130, 590));
268 new GUIWire(submodelModifiable, andorB01.getPin("Y2"), andorB10.getPin("C2"), new Point(185, 450), new Point(185, 575), new Point(125, 575), new Point(125, 600));
269 new GUIWire(submodelModifiable, andorB01.getPin("Y3"), andorB10.getPin("C3"), new Point(180, 460), new Point(180, 570), new Point(120, 570), new Point(120, 610));
270 new GUIWire(submodelModifiable, andorB01.getPin("Y4"), andorB10.getPin("C4"), new Point(175, 470), new Point(175, 565), new Point(115, 565), new Point(115, 620));
271 new GUIWire(submodelModifiable, andorB10.getPin("Y1"), andorB11.getPin("C1"), new Point(190, 590), new Point(190, 730), new Point(130, 730), new Point(130, 740));
272 new GUIWire(submodelModifiable, andorB10.getPin("Y2"), andorB11.getPin("C2"), new Point(185, 600), new Point(185, 725), new Point(125, 725), new Point(125, 750));
273 new GUIWire(submodelModifiable, andorB10.getPin("Y3"), andorB11.getPin("C3"), new Point(180, 610), new Point(180, 720), new Point(120, 720), new Point(120, 760));
274 new GUIWire(submodelModifiable, andorB10.getPin("Y4"), andorB11.getPin("C4"), new Point(175, 620), new Point(175, 715), new Point(115, 715), new Point(115, 770));
275 new GUIWire(submodelModifiable, andorB11.getPin("Y1"), QB1 , new Point(190, 740), new Point(190, 880), new Point(325, 880), new Point(325, 450));
276 new GUIWire(submodelModifiable, andorB11.getPin("Y2"), QB2 , new Point(185, 750), new Point(185, 885), new Point(330, 885), new Point(330, 550));
277 new GUIWire(submodelModifiable, andorB11.getPin("Y3"), QB3 , new Point(180, 760), new Point(180, 890), new Point(335, 890), new Point(335, 650));
278 new GUIWire(submodelModifiable, andorB11.getPin("Y4"), QB4 , new Point(175, 770), new Point(175, 895), new Point(340, 895), new Point(340, 750));
283 public void setHighLevelState(String stateID, Object newState)
288 BitVector newStateCasted = (BitVector) newState;
289 setHighLevelState("c00.q", newStateCasted.subVector(0, 4));
290 setHighLevelState("c01.q", newStateCasted.subVector(4, 8));
291 setHighLevelState("c10.q", newStateCasted.subVector(8, 12));
292 setHighLevelState("c11.q", newStateCasted.subVector(12, 16));
295 int indexOfDot = stateID.indexOf('.');
296 if (indexOfDot != -1)
297 switch (stateID.substring(0, indexOfDot))
300 cell00.setHighLevelState(stateID.substring(indexOfDot + 1), newState);
303 cell01.setHighLevelState(stateID.substring(indexOfDot + 1), newState);
306 cell10.setHighLevelState(stateID.substring(indexOfDot + 1), newState);
309 cell11.setHighLevelState(stateID.substring(indexOfDot + 1), newState);
312 super.setHighLevelState(stateID, newState);
316 super.setHighLevelState(stateID, newState);
321 public Object getHighLevelState(String stateID)
326 BitVector q00 = (BitVector) getHighLevelState("c00.q");
327 BitVector q01 = (BitVector) getHighLevelState("c01.q");
328 BitVector q10 = (BitVector) getHighLevelState("c10.q");
329 BitVector q11 = (BitVector) getHighLevelState("c11.q");
330 return q00.concat(q01).concat(q10).concat(q11);
332 int indexOfDot = stateID.indexOf('.');
333 if (indexOfDot != -1)
334 switch (stateID.substring(0, indexOfDot))
337 return cell00.getHighLevelState(stateID.substring(indexOfDot + 1));
339 return cell01.getHighLevelState(stateID.substring(indexOfDot + 1));
341 return cell10.getHighLevelState(stateID.substring(indexOfDot + 1));
343 return cell11.getHighLevelState(stateID.substring(indexOfDot + 1));
345 return super.getHighLevelState(stateID);
347 return super.getHighLevelState(stateID);