Quick fix for MemoryEditor CellEditor using the wrong Font
[Mograsim.git] / plugins / net.mograsim.plugin.core / src / net / mograsim / plugin / launch / MachineDebugTarget.java
index 5a13401..ad0441b 100644 (file)
@@ -27,30 +27,40 @@ import net.mograsim.logic.model.LogicExecuter;
 import net.mograsim.machine.Machine;
 import net.mograsim.machine.MachineDefinition;
 import net.mograsim.plugin.MograsimActivator;
+import net.mograsim.plugin.launch.MachineLaunchConfigType.MachineLaunchParams;
 
 public class MachineDebugTarget extends PlatformObject implements IDebugTarget, IMemoryBlockRetrievalExtension
 {
+       private final static boolean USE_PSEUDO_THREAD = true;
+
        private final ILaunch launch;
        private final Machine machine;
        private final LogicExecuter exec;
+       private final MachineThread thread;
 
        private boolean running;
 
        private final List<Consumer<Double>> executionSpeedListeners;
 
-       public MachineDebugTarget(ILaunch launch, MachineDefinition machineDefinition)
+       private final MachineLaunchParams launchParams;
+
+       public MachineDebugTarget(ILaunch launch, MachineLaunchParams launchParams, MachineDefinition machineDefinition)
        {
                this.launch = launch;
                this.machine = machineDefinition.createNew();
                this.exec = new LogicExecuter(machine.getTimeline());
 
                this.executionSpeedListeners = new ArrayList<>();
+               this.launchParams = launchParams;
 
                exec.startLiveExecution();
                running = true;
 
                getLaunch().addDebugTarget(this);
                fireCreationEvent();
+
+               // create after creating ourself
+               this.thread = USE_PSEUDO_THREAD ? new MachineThread(this) : null;
        }
 
        public Machine getMachine()
@@ -82,6 +92,11 @@ public class MachineDebugTarget extends PlatformObject implements IDebugTarget,
                return launch;
        }
 
+       public MachineLaunchParams getLaunchParams()
+       {
+               return launchParams;
+       }
+
        public double getExecutionSpeed()
        {
                return exec.getSpeedFactor();
@@ -232,13 +247,13 @@ public class MachineDebugTarget extends PlatformObject implements IDebugTarget,
        @Override
        public boolean hasThreads() throws DebugException
        {
-               return false;
+               return USE_PSEUDO_THREAD;
        }
 
        @Override
        public IThread[] getThreads() throws DebugException
        {
-               return new IThread[0];
+               return thread == null ? new IThread[0] : new IThread[] { thread };
        }
 
        public void addExecutionSpeedListener(Consumer<Double> executionSpeedListener)