From: Daniel Kirschten Date: Mon, 7 Oct 2019 00:06:27 +0000 (+0200) Subject: Added Am2910 registers X-Git-Url: https://mograsim.net/gitweb/?p=Mograsim.git;a=commitdiff_plain;h=1b62caf522e287bf67d26d5410580245fb8feec7 Added Am2910 registers --- diff --git a/plugins/net.mograsim.logic.model.am2900/META-INF/MANIFEST.MF b/plugins/net.mograsim.logic.model.am2900/META-INF/MANIFEST.MF index bf9b692a..97d8cd03 100644 --- a/plugins/net.mograsim.logic.model.am2900/META-INF/MANIFEST.MF +++ b/plugins/net.mograsim.logic.model.am2900/META-INF/MANIFEST.MF @@ -14,6 +14,8 @@ Export-Package: net.mograsim.logic.model.am2900, 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, diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/AbstractAm2900MachineDefinition.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/AbstractAm2900MachineDefinition.java index 7ad92b4b..d9431daf 100644 --- a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/AbstractAm2900MachineDefinition.java +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/AbstractAm2900MachineDefinition.java @@ -6,6 +6,7 @@ import java.util.List; 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; @@ -30,7 +31,7 @@ public class AbstractAm2900MachineDefinition implements MachineDefinition List registerGroupsModifiable = new ArrayList<>(); registerGroupsModifiable.add(Am2901RegisterGroup.instance); registerGroupsModifiable.add(Am2904RegisterGroup.instance); - // TODO Am2910 + registerGroupsModifiable.add(Am2910RegisterGroup.instance); registerGroups = Collections.unmodifiableList(registerGroupsModifiable); } diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/Am2910RegisterGroup.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/Am2910RegisterGroup.java new file mode 100644 index 00000000..5b7a5dff --- /dev/null +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/Am2910RegisterGroup.java @@ -0,0 +1,16 @@ +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 diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/RegCntrRegister.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/RegCntrRegister.java new file mode 100644 index 00000000..ae287669 --- /dev/null +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/RegCntrRegister.java @@ -0,0 +1,14 @@ +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 diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/SPRegister.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/SPRegister.java new file mode 100644 index 00000000..48f6ce15 --- /dev/null +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/SPRegister.java @@ -0,0 +1,14 @@ +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 diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/muPCRegister.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/muPCRegister.java new file mode 100644 index 00000000..ed9d36b6 --- /dev/null +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/muPCRegister.java @@ -0,0 +1,14 @@ +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 diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/stack/Am2910StackRegisterGroup.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/stack/Am2910StackRegisterGroup.java new file mode 100644 index 00000000..e437586c --- /dev/null +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/stack/Am2910StackRegisterGroup.java @@ -0,0 +1,14 @@ +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 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 index 00000000..2ec544a3 --- /dev/null +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/registers/am2910/stack/StackCellRegister.java @@ -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 instancesCorrectOrder; + + static + { + List 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