Fixed some bugs preventing Am2900 from working in Eclipse
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Sun, 15 Sep 2019 13:11:15 +0000 (15:11 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Sun, 15 Sep 2019 13:11:15 +0000 (15:11 +0200)
net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstruction.java
net.mograsim.machine/src/net/mograsim/machine/mi/components/CoreMicroInstructionMemory.java
net.mograsim.plugin.core/src/net/mograsim/plugin/MachineContext.java
net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryView.java
net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionView.java
net.mograsim.plugin.core/src/net/mograsim/plugin/views/LogicUIPart.java

index 92e33eb..ec1efa0 100644 (file)
@@ -26,7 +26,7 @@ public interface MicroInstruction
                BitVector vector = BitVector.of();
                int size = getSize();
                for (int i = 0; i < size; i++)
-                       vector.concat(getParameter(i).getValue());
+                       vector = vector.concat(getParameter(i).getValue());
                return vector;
        }
 }
index a958dc2..60902af 100644 (file)
@@ -23,6 +23,7 @@ public class CoreMicroInstructionMemory extends BasicCoreComponent
                this.memory = memory;
                this.data = data;
                this.address = address;
+               address.registerObserver(this);
        }
 
        public MicroInstructionMemory getMemory()
index 8a7faa7..cc96edb 100644 (file)
@@ -25,6 +25,7 @@ public class MachineContext
                if (instance == null)
                {
                        instance = new MachineContext();
+                       // TODO don't hardcode the Am2900
                        instance.setMachine(new Am2900Machine((Am2900MachineDefinition) MachineRegistry.getinstalledMachines().get("Am2900")));
                }
                return instance;
index 1bcc3bc..0936880 100644 (file)
@@ -163,6 +163,7 @@ public class MemoryView extends ViewPart implements ContextObserver
        private void setupContextBinding()
        {
                MachineContext.getInstance().registerObserver(this);
+               setMachine(Optional.ofNullable(MachineContext.getInstance().getMachine()));
        }
 
        @Override
index 68e8329..b9627aa 100644 (file)
@@ -69,6 +69,7 @@ public class InstructionView extends ViewPart implements ContextObserver
 
                displaySettings.addObserver(() -> viewer.refresh());
                MachineContext.getInstance().registerObserver(this);
+               setMachine(Optional.ofNullable(MachineContext.getInstance().getMachine()));
        }
 
        public void highlight(int index)
@@ -125,7 +126,8 @@ public class InstructionView extends ViewPart implements ContextObserver
        private void deleteColumns()
        {
                for (TableViewerColumn col : columns)
-                       col.getColumn().dispose();
+                       if (col != null)
+                               col.getColumn().dispose();
        }
 
        private void createColumns()
@@ -147,7 +149,6 @@ public class InstructionView extends ViewPart implements ContextObserver
 
                        createEditingAndLabel(createTableViewerColumn(name, bounds), miDef, i);
                }
-
        }
 
        private void createEditingAndLabel(TableViewerColumn col, MicroInstructionDefinition miDef, int index)
index fecb922..212f777 100644 (file)
@@ -1,7 +1,5 @@
 package net.mograsim.plugin.views;
 
-import java.util.Optional;
-
 import javax.inject.Inject;
 
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
@@ -14,8 +12,7 @@ import net.haspamelodica.swt.helper.zoomablecanvas.helper.ZoomableCanvasUserInpu
 import net.mograsim.logic.model.LogicExecuter;
 import net.mograsim.logic.model.LogicUICanvas;
 import net.mograsim.machine.Machine;
-import net.mograsim.machine.MachineDefinition;
-import net.mograsim.machine.MachineRegistry;
+import net.mograsim.plugin.MachineContext;
 import net.mograsim.plugin.ThemePreferences;
 import net.mograsim.preferences.Preferences;
 
@@ -40,10 +37,7 @@ public class LogicUIPart extends ViewPart
                // set preferences
                Preferences.setPreferences(new ThemePreferences(PlatformUI.getWorkbench().getThemeManager().getCurrentTheme()));
 
-               Optional<MachineDefinition> mdo = MachineRegistry.getinstalledMachines().values().stream().findFirst();
-
-               MachineDefinition md = mdo.orElseThrow(IllegalStateException::new);
-               Machine m = md.createNew();
+               Machine m = MachineContext.getInstance().getMachine();
 
                // initialize UI
                ui = new LogicUICanvas(parent, SWT.NONE, m.getModel());