Exemplo n.º 1
0
        private void Init(IDebuggable debugTarget)
        {
            if (debugTarget != m_spectrum)
            {
                if (m_spectrum != null)
                {
                    m_spectrum.UpdateState -= new EventHandler(spectrum_OnUpdateState);
                    m_spectrum.Breakpoint  -= new EventHandler(spectrum_OnBreakpoint);
                }
                if (debugTarget != null)
                {
                    m_spectrum = debugTarget;
                    // ZEK +++
                    sprint_mmu = m_spectrum.Bus.FindDevice <SprinterMMU>();
                    sprint_ula = m_spectrum.Bus.FindDevice <SprinterULA>();
                    //pevo_bdi = m_spectrum.Bus.FindDevice(typeof(BDI)) as BDI;
                    // ZEK ---

                    m_dasmTool              = new DasmTool(debugTarget.ReadMemory);
                    m_timingTool            = new TimingTool(m_spectrum.CPU, debugTarget.ReadMemory);
                    m_spectrum.UpdateState += new EventHandler(spectrum_OnUpdateState);
                    m_spectrum.Breakpoint  += new EventHandler(spectrum_OnBreakpoint);
                }
            }
        }
Exemplo n.º 2
0
 public DisassemblyViewModel(IDebuggable target, ISynchronizeInvoke synchronizeInvoke)
     : base(target, synchronizeInvoke)
 {
     _dasmTool            = new DasmTool(target.ReadMemory);
     _timingTool          = new TimingTool(target.CPU, target.ReadMemory);
     CommandSetBreakpoint = new CommandDelegate(
         CommandSetBreakpoint_OnExecute,
         CommandSetBreakpoint_OnCanExecute);
 }
Exemplo n.º 3
0
        private void StepOver()
        {
            var tactLimit = _tactLimitStepOver;
            var t         = CPU.Tact;
            var dasmTool  = new DasmTool(DebugReadMemory);
            int len;
            var opCodeStr = dasmTool.GetMnemonic(CPU.regs.PC, out len);
            var nextAddr  = (ushort)((CPU.regs.PC + len) & 0xFFFF);

            var donotStepOver = opCodeStr.IndexOf("J") >= 0 ||
                                opCodeStr.IndexOf("RET") >= 0;

            if (donotStepOver)
            {
                StepInto();
            }
            else
            {
                while (true)
                {
                    if (CPU.Tact - t >= tactLimit)
                    {
                        OnUpdateState();
                        if (OnMaxTactExceed(tactLimit))
                        {
                            break;
                        }
                        else
                        {
                            t          = CPU.Tact;
                            tactLimit *= 2;
                        }
                    }

                    StepInto();
                    if (CPU.regs.PC == nextAddr)
                    {
                        break;
                    }

                    if (CheckBreakpoint())
                    {
                        OnUpdateState();
                        OnBreakpoint();
                        break;
                    }
                }
            }
        }
Exemplo n.º 4
0
 private void Init(IDebuggable debugTarget)
 {
     if (debugTarget == m_spectrum)
     {
         return;
     }
     if (m_spectrum != null)
     {
         m_spectrum.UpdateState -= spectrum_OnUpdateState;
         m_spectrum.Breakpoint  -= spectrum_OnBreakpoint;
     }
     if (debugTarget != null)
     {
         m_spectrum              = debugTarget;
         m_dasmTool              = new DasmTool(debugTarget.ReadMemory);
         m_timingTool            = new TimingTool(m_spectrum.CPU, debugTarget.ReadMemory);
         m_spectrum.UpdateState += spectrum_OnUpdateState;
         m_spectrum.Breakpoint  += spectrum_OnBreakpoint;
     }
 }