Added methods to set and get the complete micro-/makro-status
authorChristian Femers <femers@in.tum.de>
Mon, 2 Sep 2019 22:43:35 +0000 (00:43 +0200)
committerChristian Femers <femers@in.tum.de>
Mon, 2 Sep 2019 22:43:35 +0000 (00:43 +0200)
net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2904/TestableAm2904.java
net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2904/TestableAm2904Impl.java

index 9f4cbf1..e41e3fe 100644 (file)
@@ -73,6 +73,8 @@ public interface TestableAm2904 extends TestableCircuit
 
        void setDirectly(Register r, String val_1_bit);
 
+       void setDirectly(CompleteStatus r, String z_c_n_ovr);
+
        String getC0();
 
        String getCT();
@@ -89,6 +91,8 @@ public interface TestableAm2904 extends TestableCircuit
 
        String getDirectly(Register r);
 
+       String getDirectly(CompleteStatus r);
+
        enum Am2904_ShiftDir
        {
                RIGHT, LEFT;
@@ -223,4 +227,10 @@ public interface TestableAm2904 extends TestableCircuit
        {
                µZ, µC, µN, µOVR, MZ, MC, MN, MOVR;
        }
+
+       enum CompleteStatus
+       {
+               micro, MAKRO;
+       }
+
 }
index 2e84000..03e9d5b 100644 (file)
@@ -208,6 +208,12 @@ public class TestableAm2904Impl implements TestableAm2904
                am2904.setHighLevelState(regToStateID(r), bv);
        }
 
+       @Override
+       public void setDirectly(CompleteStatus r, String z_c_n_ovr)
+       {
+               am2904.setHighLevelState(regToStateID(r), BitVector.parse(z_c_n_ovr));
+       }
+
        @Override
        public String getC0()
        {
@@ -262,11 +268,25 @@ public class TestableAm2904Impl implements TestableAm2904
                return bv.getMSBit(r.ordinal() % 4).getSymbol();
        }
 
+       @Override
+       public String getDirectly(CompleteStatus r)
+       {
+               var bv = (BitVector) am2904.getHighLevelState(regToStateID(r));
+               return bv.toString();
+       }
+
        private static String regToStateID(Register r)
        {
-               if (r.ordinal() > 3)
-                       return "msr.q";
-               return "musr.q";
+               if (r.ordinal() < 4)
+                       return "musr.q";
+               return "msr.q";
+       }
+
+       private static String regToStateID(CompleteStatus r)
+       {
+               if (r == CompleteStatus.micro)
+                       return "musr.q";
+               return "msr.q";
        }
 
        @Override