The final restructured version for automatic build using maven tycho
[Mograsim.git] / tests / net.mograsim.logic.model.am2900.tests / src / net / mograsim / logic / model / am2900 / am2910 / TestableAm2910Impl.java
diff --git a/tests/net.mograsim.logic.model.am2900.tests/src/net/mograsim/logic/model/am2900/am2910/TestableAm2910Impl.java b/tests/net.mograsim.logic.model.am2900.tests/src/net/mograsim/logic/model/am2900/am2910/TestableAm2910Impl.java
new file mode 100644 (file)
index 0000000..48b8569
--- /dev/null
@@ -0,0 +1,159 @@
+package net.mograsim.logic.model.am2900.am2910;
+
+import net.mograsim.logic.core.components.CoreBitDisplay;
+import net.mograsim.logic.core.components.CoreManualSwitch;
+import net.mograsim.logic.core.types.BitVector;
+import net.mograsim.logic.model.am2900.util.TestEnvironmentHelper;
+import net.mograsim.logic.model.am2900.util.TestEnvironmentHelper.DebugState;
+import net.mograsim.logic.model.model.components.ModelComponent;
+
+public class TestableAm2910Impl implements TestableAm2910
+{
+
+       private ModelComponent am2901;
+       private CoreManualSwitch I;
+       private CoreManualSwitch C;
+       private CoreManualSwitch CI;
+       private CoreManualSwitch D;
+       private CoreManualSwitch _CC;
+       private CoreManualSwitch _CCEN;
+       private CoreManualSwitch _RLD;
+       private CoreManualSwitch _OE;
+       private CoreBitDisplay _FULL;
+       private CoreBitDisplay Y;
+       private CoreBitDisplay _PL, _MAP, _VECT;
+
+       private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this, "Am2910");
+
+       @Override
+       public void setup()
+       {
+               testHelper.setup(DebugState.NO_DEBUG);
+       }
+
+       @Override
+       public Result run()
+       {
+               return testHelper.run();
+       }
+
+       @Override
+       public void clockOn(boolean isClockOn)
+       {
+               if (isClockOn)
+                       C.switchFullOn();
+               else
+                       C.switchFullOff();
+       }
+
+       @Override
+       public void setInstruction(Am2910_Inst inst)
+       {
+               I.setState(BitVector.from(inst.ordinal(), 4));
+       }
+
+       @Override
+       public void set_CCEN(String val_1_bit)
+       {
+               _CCEN.setState(BitVector.parse(val_1_bit));
+       }
+
+       @Override
+       public void setD(String val_12_bit)
+       {
+               D.setState(BitVector.parse(val_12_bit));
+       }
+
+       @Override
+       public void set_CC(String val_1_bit)
+       {
+               _CC.setState(BitVector.parse(val_1_bit));
+       }
+
+       @Override
+       public void setCI(String val_1_bit)
+       {
+               CI.setState(BitVector.parse(val_1_bit));
+       }
+
+       @Override
+       public void set_RLD(String val_1_bit)
+       {
+               _RLD.setState(BitVector.parse(val_1_bit));
+       }
+
+       @Override
+       public void set_OE(String val_1_bit)
+       {
+               _OE.setState(BitVector.parse(val_1_bit));
+       }
+
+       @Override
+       public void setDirectly(Register r, String val_X_bit)
+       {
+               am2901.setHighLevelState(regToStateID(r), BitVector.parse(val_X_bit));
+       }
+
+       @Override
+       public String getY()
+       {
+               return Y.getDisplayedValue().toString();
+       }
+
+       @Override
+       public String get_FULL()
+       {
+               return _FULL.getDisplayedValue().toString();
+       }
+
+       @Override
+       public String get_PL()
+       {
+               return _PL.getDisplayedValue().toString();
+       }
+
+       @Override
+       public String get_MAP()
+       {
+               return _MAP.getDisplayedValue().toString();
+       }
+
+       @Override
+       public String get_VECT()
+       {
+               return _VECT.getDisplayedValue().toString();
+       }
+
+       @Override
+       public String getDirectly(Register r)
+       {
+               return am2901.getHighLevelState(regToStateID(r)).toString();
+       }
+
+       private static String regToStateID(Register r)
+       {
+               switch (r)
+               {
+               case S_0:
+               case S_1:
+               case S_2:
+               case S_3:
+               case S_4:
+                       return "stack.c" + BitVector.from(r.ordinal(), 3);
+               case SP:
+                       return "sp.q";
+               case PC:
+                       return "mupc.q";
+               case REG_COUNT:
+                       return "r.q";
+               default:
+                       throw new IllegalArgumentException("unknown: " + r);
+               }
+       }
+
+       @Override
+       public TestEnvironmentHelper getTestEnvironmentHelper()
+       {
+               return testHelper;
+       }
+}