net.mograsim.logic.model.am2900.machine.registers.am2904,
net.mograsim.logic.model.am2900.machine.registers.am2904.msr,
net.mograsim.logic.model.am2900.machine.registers.am2904.musr,
+ net.mograsim.logic.model.am2900.machine.registers.am2910,
+ net.mograsim.logic.model.am2900.machine.registers.am2910.stack,
net.mograsim.logic.model.examples
Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.osgi,
import net.mograsim.logic.model.am2900.machine.registers.am2901.Am2901RegisterGroup;
import net.mograsim.logic.model.am2900.machine.registers.am2904.Am2904RegisterGroup;
+import net.mograsim.logic.model.am2900.machine.registers.am2910.Am2910RegisterGroup;
import net.mograsim.logic.model.model.LogicModelModifiable;
import net.mograsim.machine.ISASchema;
import net.mograsim.machine.MachineDefinition;
List<RegisterGroup> registerGroupsModifiable = new ArrayList<>();
registerGroupsModifiable.add(Am2901RegisterGroup.instance);
registerGroupsModifiable.add(Am2904RegisterGroup.instance);
- // TODO Am2910
+ registerGroupsModifiable.add(Am2910RegisterGroup.instance);
registerGroups = Collections.unmodifiableList(registerGroupsModifiable);
}
--- /dev/null
+package net.mograsim.logic.model.am2900.machine.registers.am2910;
+
+import net.mograsim.logic.model.am2900.machine.registers.am2910.stack.Am2910StackRegisterGroup;
+import net.mograsim.machine.registers.RegisterGroup;
+import net.mograsim.machine.registers.SimpleRegisterGroup;
+
+public class Am2910RegisterGroup extends SimpleRegisterGroup
+{
+ public static final Am2910RegisterGroup instance = new Am2910RegisterGroup();
+
+ private Am2910RegisterGroup()
+ {
+ super("Am2910", new RegisterGroup[] { Am2910StackRegisterGroup.instance }, muPCRegister.instance, RegCntrRegister.instance,
+ SPRegister.instance);
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.machine.registers.am2910;
+
+import net.mograsim.logic.model.am2900.machine.registers.Am2900Register;
+import net.mograsim.machine.registers.HighLevelStateBasedRegister;
+
+public class RegCntrRegister extends HighLevelStateBasedRegister implements Am2900Register
+{
+ public static final RegCntrRegister instance = new RegCntrRegister();
+
+ private RegCntrRegister()
+ {
+ super("Register / Counter", "am2910.r.q", 12);
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.machine.registers.am2910;
+
+import net.mograsim.logic.model.am2900.machine.registers.Am2900Register;
+import net.mograsim.machine.registers.HighLevelStateBasedRegister;
+
+public class SPRegister extends HighLevelStateBasedRegister implements Am2900Register
+{
+ public static final SPRegister instance = new SPRegister();
+
+ private SPRegister()
+ {
+ super("Stack pointer", "am2910.sp.q", 3);
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.machine.registers.am2910;
+
+import net.mograsim.logic.model.am2900.machine.registers.Am2900Register;
+import net.mograsim.machine.registers.HighLevelStateBasedRegister;
+
+public class muPCRegister extends HighLevelStateBasedRegister implements Am2900Register
+{
+ public static final muPCRegister instance = new muPCRegister();
+
+ private muPCRegister()
+ {
+ super("\u00b5PC", "am2910.mupc.q", 12);// 00b5 = micro symbol
+ }
+}
\ No newline at end of file
--- /dev/null
+package net.mograsim.logic.model.am2900.machine.registers.am2910.stack;
+
+import net.mograsim.machine.registers.Register;
+import net.mograsim.machine.registers.SimpleRegisterGroup;
+
+public class Am2910StackRegisterGroup extends SimpleRegisterGroup
+{
+ public static final Am2910StackRegisterGroup instance = new Am2910StackRegisterGroup();
+
+ private Am2910StackRegisterGroup()
+ {
+ super("Stack", StackCellRegister.instancesCorrectOrder.toArray(Register[]::new));
+ }
+}
\ No newline at end of file
--- /dev/null
+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