Turned auto-wrapping on for machines with long descriptions
[Mograsim.git] / plugins / net.mograsim.logic.model.am2900 / src / net / mograsim / logic / model / am2900 / machine / AbstractAm2900MachineDefinition.java
index fa40eb8..da84392 100644 (file)
@@ -1,15 +1,20 @@
 package net.mograsim.logic.model.am2900.machine;
 
+import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import net.mograsim.logic.model.am2900.machine.registers.NumberedRegister;
-import net.mograsim.logic.model.am2900.machine.registers.QRegister;
+import java.util.List;
+
+import net.mograsim.logic.model.am2900.machine.registers.InstrRegister;
+import net.mograsim.logic.model.am2900.machine.registers.PCRegister;
+import net.mograsim.logic.model.am2900.machine.registers.muInstrRegister;
+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;
-import net.mograsim.machine.Register;
+import net.mograsim.machine.registers.Register;
+import net.mograsim.machine.registers.RegisterGroup;
 
 //we can't use the Singleton pattern here because a MachineDefinition needs a public parameterless constructor
 //(used for detecting installed machines in plugin.core)
@@ -17,16 +22,24 @@ public class AbstractAm2900MachineDefinition implements MachineDefinition
 {
        public static final String SIMPLE_AM2900_MACHINE_ID = "Am2900Simple";
        public static final String STRICT_AM2900_MACHINE_ID = "Am2900Strict";
+       public static final String SIMPLE_AM2900_DESCRIPTION = "Am2900Simple\nTODO Description";
+       public static final String STRICT_AM2900_DESCRIPTION = "Am2900Strict\nTODO Description";
 
-       public static final Set<Register> allRegisters;
+       public static final List<Register> unsortedRegisters;
+       public static final List<RegisterGroup> registerGroups;
 
        static
        {
-               Set<Register> allRegistersModifiable = new HashSet<>();
-               allRegistersModifiable.add(QRegister.instance);
-               allRegistersModifiable.addAll(NumberedRegister.instancesCorrectOrder);
-               // TODO MSR, muSR, MIR, IR, PC/BZ...
-               allRegisters = Collections.unmodifiableSet(allRegistersModifiable);
+               List<Register> unsortedRegistersModifiable = new ArrayList<>();
+               unsortedRegistersModifiable.add(muInstrRegister.instance);
+               unsortedRegistersModifiable.add(InstrRegister.instance);
+               unsortedRegistersModifiable.add(PCRegister.instance);
+               unsortedRegisters = Collections.unmodifiableList(unsortedRegistersModifiable);
+               List<RegisterGroup> registerGroupsModifiable = new ArrayList<>();
+               registerGroupsModifiable.add(Am2901RegisterGroup.instance);
+               registerGroupsModifiable.add(Am2904RegisterGroup.instance);
+               registerGroupsModifiable.add(Am2910RegisterGroup.instance);
+               registerGroups = Collections.unmodifiableList(registerGroupsModifiable);
        }
 
        public final boolean strict;
@@ -42,6 +55,12 @@ public class AbstractAm2900MachineDefinition implements MachineDefinition
                return strict ? STRICT_AM2900_MACHINE_ID : SIMPLE_AM2900_MACHINE_ID;
        }
 
+       @Override
+       public String getDescription()
+       {
+               return strict ? STRICT_AM2900_DESCRIPTION : SIMPLE_AM2900_DESCRIPTION;
+       }
+
        @Override
        public Am2900Machine createNew()
        {
@@ -61,9 +80,15 @@ public class AbstractAm2900MachineDefinition implements MachineDefinition
        }
 
        @Override
-       public Set<Register> getRegisters()
+       public List<Register> getUnsortedRegisters()
+       {
+               return unsortedRegisters;
+       }
+
+       @Override
+       public List<RegisterGroup> getRegisterGroups()
        {
-               return allRegisters;
+               return registerGroups;
        }
 
        @Override