Added Am2910 registers
[Mograsim.git] / plugins / net.mograsim.logic.model.am2900 / src / net / mograsim / logic / model / am2900 / machine / registers / am2910 / stack / StackCellRegister.java
diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/stack/StackCellRegister.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/stack/StackCellRegister.java
new file mode 100644 (file)
index 0000000..2ec544a
--- /dev/null
@@ -0,0 +1,36 @@
+package net.mograsim.logic.model.am2900.machine.registers.am2910.stack;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import net.mograsim.logic.model.am2900.machine.registers.Am2900Register;
+import net.mograsim.machine.registers.HighLevelStateBasedRegister;
+
+public class StackCellRegister extends HighLevelStateBasedRegister implements Am2900Register
+{
+       public static final List<StackCellRegister> instancesCorrectOrder;
+
+       static
+       {
+               List<StackCellRegister> instancesCorrectOrderModifiable = new ArrayList<>();
+               for (int i = 0; i < 5; i++)
+                       instancesCorrectOrderModifiable.add(new StackCellRegister(i));
+               instancesCorrectOrder = Collections.unmodifiableList(instancesCorrectOrderModifiable);
+       }
+
+       private StackCellRegister(int index)
+       {
+               super("cell #" + index, "am2910.stack.c" + getIndexAsBitstring(index) + ".q", 12);
+
+       }
+
+       private static String getIndexAsBitstring(int index)
+       {
+               StringBuilder sb = new StringBuilder();
+               sb.append((index & 0b100) != 0 ? '1' : '0');
+               sb.append((index & 0b010) != 0 ? '1' : '0');
+               sb.append((index & 0b001) != 0 ? '1' : '0');
+               return sb.toString();
+       }
+}
\ No newline at end of file