1 package net.mograsim.logic.model.am2900.am2901;
3 import net.mograsim.logic.core.components.BitDisplay;
4 import net.mograsim.logic.core.components.ManualSwitch;
5 import net.mograsim.logic.core.timeline.Timeline;
6 import net.mograsim.logic.core.types.Bit;
7 import net.mograsim.logic.core.types.BitVector;
8 import net.mograsim.logic.model.am2900.TestEnvironmentHelper;
9 import net.mograsim.logic.model.am2900.TestEnvironmentHelper.DebugState;
10 import net.mograsim.logic.model.am2900.TestUtil;
11 import net.mograsim.logic.model.model.components.GUIComponent;
13 public class TestableAm2901Impl implements TestableAm2901
15 private GUIComponent am2901;
16 private Timeline timeline;
17 private ManualSwitch I8, I7, I6, I5, I4, I3, I2, I1, I0;
18 private ManualSwitch C;
19 private ManualSwitch Cn;
20 private ManualSwitch D1, D2, D3, D4;
21 private ManualSwitch A0, A1, A2, A3;
22 private ManualSwitch B0, B1, B2, B3;
23 private ManualSwitch IRAMn, IRAMn_3, IQn, IQn_3;
24 private BitDisplay Y1, Y2, Y3, Y4;
25 private BitDisplay F_0, Cn_4, OVR, F3;
26 private BitDisplay ORAMn, ORAMn_3, OQn, OQn_3;
28 private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this, "GUIAm2901");
33 return testHelper.run();
39 testHelper.setup(DebugState.NO_DEBUG);
43 public void setDest(Am2901_Dest dest)
45 var bits = TestUtil.of(dest.ordinal(), 3);
46 I8.setState(bits.getLSBit(2));
47 I7.setState(bits.getLSBit(1));
48 I6.setState(bits.getLSBit(0));
52 public void setFunc(Am2901_Func func)
54 var bits = TestUtil.of(func.ordinal(), 3);
55 I5.setState(bits.getLSBit(2));
56 I4.setState(bits.getLSBit(1));
57 I3.setState(bits.getLSBit(0));
61 public void setSrc(Am2901_Src src)
63 var bits = TestUtil.of(src.ordinal(), 3);
64 I2.setState(bits.getLSBit(2));
65 I1.setState(bits.getLSBit(1));
66 I0.setState(bits.getLSBit(0));
70 public void setReg_A(String val_4_bit)
72 var bits = BitVector.parse(val_4_bit);
73 A3.setState(bits.getLSBit(3));
74 A2.setState(bits.getLSBit(2));
75 A1.setState(bits.getLSBit(1));
76 A0.setState(bits.getLSBit(0));
80 public void setReg_B(String val_4_bit)
82 var bits = BitVector.parse(val_4_bit);
83 B3.setState(bits.getLSBit(3));
84 B2.setState(bits.getLSBit(2));
85 B1.setState(bits.getLSBit(1));
86 B0.setState(bits.getLSBit(0));
90 public void setCarryIn(String val_1_bit)
92 Cn.setState(Bit.parse(val_1_bit));
96 public void setNotOutEnable(String val_1_bit)
98 throw new UnsupportedOperationException(); // TODO
102 public void setD(String val_4_bit)
104 var bits = BitVector.parse(val_4_bit);
105 D4.setState(bits.getLSBit(3));
106 D3.setState(bits.getLSBit(2));
107 D2.setState(bits.getLSBit(1));
108 D1.setState(bits.getLSBit(0));
112 public void setQ_0(String val_1_bit)
114 IQn.setState(Bit.parse(val_1_bit));
118 public void setQ_3(String val_1_bit)
120 IQn_3.setState(Bit.parse(val_1_bit));
124 public void setRAM_0(String val_1_bit)
126 IRAMn.setState(Bit.parse(val_1_bit));
130 public void setRAM_3(String val_1_bit)
132 IRAMn_3.setState(Bit.parse(val_1_bit));
136 public void clockOn(boolean isClockOn)
138 C.setState(isClockOn ? Bit.ONE : Bit.ZERO);
142 public String getQ_0()
144 return OQn.getDisplayedValue().toString();
148 public String getQ_3()
150 return OQn_3.getDisplayedValue().toString();
154 public String getRAM_0()
156 return ORAMn.getDisplayedValue().toString();
160 public String getRAM_3()
162 return ORAMn_3.getDisplayedValue().toString();
166 public String getNotP()
168 throw new UnsupportedOperationException(); // TODO
172 public String getNotG()
174 throw new UnsupportedOperationException(); // TODO
178 public String getCarryOut()
180 return Cn_4.getDisplayedValue().toString();
184 public String getSign()
186 return F3.getDisplayedValue().toString();
190 public String getZero()
192 return F_0.getDisplayedValue().toString();
196 public String getOverflow()
198 return OVR.getDisplayedValue().toString();
204 var y3 = Y4.getDisplayedValue();
205 var y2 = Y3.getDisplayedValue();
206 var y1 = Y2.getDisplayedValue();
207 var y0 = Y1.getDisplayedValue();
208 return y3.concat(y2).concat(y1).concat(y0).toString();
212 public void setDirectly(Register r, String val_4_bit)
214 am2901.setHighLevelState(regToStateID(r), BitVector.parse(val_4_bit));
218 public String getDirectly(Register r)
220 return ((BitVector) am2901.getHighLevelState(regToStateID(r))).toString();
223 private static String regToStateID(Register r)
227 return "regs.c" + r.toBitString() + ".q";