From 56293586fd93882b6c4c96a81ae87a5a78c09066 Mon Sep 17 00:00:00 2001 From: Christian Femers Date: Tue, 3 Sep 2019 00:43:35 +0200 Subject: [PATCH] Added methods to set and get the complete micro-/makro-status --- .../model/am2900/am2904/TestableAm2904.java | 10 +++++++ .../am2900/am2904/TestableAm2904Impl.java | 26 ++++++++++++++++--- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2904/TestableAm2904.java b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2904/TestableAm2904.java index 9f4cbf1f..e41e3fef 100644 --- a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2904/TestableAm2904.java +++ b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2904/TestableAm2904.java @@ -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; + } + } diff --git a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2904/TestableAm2904Impl.java b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2904/TestableAm2904Impl.java index 2e840004..03e9d5b3 100644 --- a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2904/TestableAm2904Impl.java +++ b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2904/TestableAm2904Impl.java @@ -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 -- 2.17.1