Example #1
0
        private Image GetVarImage(IWabbitcodeDebugger debugger, int address, Size size)
        {
            ImageSize = size;
            Screen    = new Bitmap(size.Width, size.Height);
            int row = 0, col = 0;

            for (int i = 0; i < size.Width / 8 * size.Height; i++)
            {
                var bytes = ReadBytes(debugger, address + i);

                for (int bit = 128; bit > 0; bit /= 2)
                {
                    SetPixel(bytes, bit, row, col);
                    col++;
                }

                if (col < size.Width)
                {
                    continue;
                }

                col = 0;
                row++;
            }

            return(Screen.ResizeImage(size.Width * 2, size.Height * 2));
        }
        protected override string GetDisplayValue(IWabbitcodeDebugger debugger, int address, int size)
        {
            string outputValue = string.Empty;

            if (size == ReadToEnd)
            {
                int  i = 0;
                char charToAdd;
                do
                {
                    charToAdd    = (char)debugger.ReadByte((ushort)(address + i));
                    outputValue += charToAdd.ToString();
                    i++;
                } while (charToAdd != '\0');
            }
            else
            {
                var bytes = debugger.ReadMemory((ushort)address, (ushort)size);
                for (int i = 0; i < size; i++)
                {
                    outputValue += (char)bytes[i];
                }
            }

            return(outputValue);
        }
Example #3
0
        private void gotoCurrentToolButton_Click(object sender, EventArgs e)
        {
            IWabbitcodeDebugger debugger = _debuggerService.CurrentDebugger;
            DocumentLocation    location = debugger.GetAddressLocation(debugger.CPU.PC);

            AbstractUiAction.RunCommand(new GotoLineAction(location));
        }
        protected override string GetDisplayValue(IWabbitcodeDebugger debugger, int address, int size)
        {
            var data       = debugger.ReadShort((ushort)address);
            var symbolList = _symbolService.SymbolTable.GetLabelsFromAddress(data);

            return(symbolList.Count == 0 ? data.ToString("X") : symbolList.First());
        }
        private void DebuggerService_OnDebuggingStarted(object sender, DebuggingEventArgs e)
        {
            _valueTypeBox.DropDownItems.Clear();
            _valueTypeBox.DropDownItems.AddRange(VariableDisplayManager.Instance.ControllerNames);

            _debugger = e.Debugger;
            _debugger.DebuggerStep           += OnDebuggerOnDebuggerStep;
            _debugger.DebuggerRunningChanged += OnDebuggerOnDebuggerRunningChanged;
        }
Example #6
0
        protected override byte[] ReadBytes(IWabbitcodeDebugger debugger, int address)
        {
            var bytes           = new byte[2];
            int grayscaleOffset = (ImageSize.Width / 8) * ImageSize.Height;

            bytes[0] = debugger.ReadByte((ushort)address);
            bytes[1] = debugger.ReadByte((ushort)(address + grayscaleOffset));
            return(bytes);
        }
        public TrackingVariableRowModel(IDebuggerService debuggerService, VariableDisplayManager variableDisplayManager)
        {
            _debuggerService        = debuggerService;
            _variableDisplayManager = variableDisplayManager;
            DisplayController       = variableDisplayManager.DefaultController;
            Debugger = _debuggerService.CurrentDebugger;

            _debuggerService.OnDebuggingStarted += DebuggerService_OnDebuggingStarted;
            _debuggerService.OnDebuggingEnded   += DebuggerService_OnDebuggingEnded;
        }
 private void DebuggerService_OnDebuggingEnded(object sender, DebuggingEventArgs e)
 {
     _debugger.DebuggerStep           -= OnDebuggerOnDebuggerStep;
     _debugger.DebuggerRunningChanged -= OnDebuggerOnDebuggerRunningChanged;
     _debugger = null;
     EnablePanel(false);
     foreach (var viewer in _fullViewers)
     {
         viewer.Close();
     }
 }
        public void EndDebugging()
        {
            if (OnDebuggingEnded != null)
            {
                OnDebuggingEnded(this, new DebuggingEventArgs(CurrentDebugger));
            }

            CurrentDebugger.EndDebug();
            CurrentDebugger.Dispose();
            CurrentDebugger = null;
        }
Example #10
0
 private void mainForm_OnDebuggingStarted(object sender, DebuggingEventArgs e)
 {
     _debugger = e.Debugger;
     _debugger.DebuggerStep += (o, args) =>
     {
         this.Invoke(UpdateStack);
         EnablePanel(true);
     };
     _debugger.DebuggerRunningChanged += (o, args) =>
     {
         this.Invoke(UpdateStack);
         EnablePanel(!args.Running);
     };
 }
Example #11
0
        private static string GetVarValue(IWabbitcodeDebugger debugger, int address, int size, int scale)
        {
            string outputValue = string.Empty;
            var    values      = debugger.ReadMemory((ushort)address, (ushort)(size * scale));

            for (int i = 0; i < size * scale; i += scale)
            {
                int total = 0;
                for (int j = 0; j < scale; j++)
                {
                    total += values[i + j] << (8 * j);
                }
                outputValue += Convert.ToString(total, Base).PadLeft(2 * scale, '0') + " ";
            }
            return(outputValue);
        }
Example #12
0
 private void DebuggerService_OnDebuggingStarted(object sender, DebuggingEventArgs e)
 {
     _debugger = e.Debugger;
     _debugger.DebuggerRunningChanged += (o, args) =>
     {
         EnablePanel(!args.Running);
         if (!args.Running)
         {
             UpdatePanel();
         }
     };
     _debugger.DebuggerStep += (o, args) =>
     {
         EnablePanel(true);
         UpdatePanel();
     };
 }
Example #13
0
        private void UpdateDebugHighlight()
        {
            IWabbitcodeDebugger debugger = _debuggerService.CurrentDebugger;

            if (debugger == null)
            {
                return;
            }

            DocumentLocation debugLine = debugger.GetAddressLocation(_debuggerService.CurrentDebugger.CPU.PC);

            if (debugLine == null || debugLine.FileName != FileName)
            {
                return;
            }

            editorBox.HighlightDebugLine(debugLine.LineNumber - 1);
        }
Example #14
0
        public void StartDebugging()
        {
            IProject project = _projectService.Project;

            if (project.IsInternal)
            {
                throw new DebuggingException("Debugging single files is not supported");
            }

            string outputFile = GetOutputFileDetails(project);

            try
            {
                Debug.WriteLine("Creating wabbitocde debugger");
                CurrentDebugger = new WabbitcodeDebugger(outputFile);
                CurrentDebugger.DebuggerStep           += CurrentDebugger_DebuggerStep;
                CurrentDebugger.DebuggerRunningChanged += CurrentDebugger_DebuggerRunningChanged;
            }
            catch (Exception)
            {
                throw new DebuggingException("Unable to create the debuger");
            }


            if (OnDebuggingStarted != null)
            {
                OnDebuggingStarted(this, new DebuggingEventArgs(CurrentDebugger));
            }

            try
            {
                Debug.WriteLine("Starting debug");
                CurrentDebugger.StartDebug();
            }
            catch (DebuggingException)
            {
                EndDebugging();
                throw;
            }
        }
Example #15
0
        protected override string GetDisplayValue(IWabbitcodeDebugger debugger, int address, int size)
        {
            byte readByte = debugger.ReadByte((ushort)address);

            var enumValues = new List <string>();

            foreach (var maskKey in _enum.EnumMapping)
            {
                string label;
                byte   maskedValue = (byte)(readByte & maskKey.Key);
                if (_symbolCache.TryGetValue(new ByteMaskKey(maskedValue, maskKey.Key), out label))
                {
                    enumValues.Add(label);
                }
            }

            if (enumValues.Count == 0)
            {
                throw new ArgumentException("Invalid enum type: " + readByte);
            }

            return(string.Join(" | ", enumValues));
        }
Example #16
0
 private void mainForm_OnDebuggingStarted(object sender, DebuggingEventArgs e)
 {
     _debugger = e.Debugger;
     _debugger.DebuggerStep           += OnDebuggerOnDebuggerStep;
     _debugger.DebuggerRunningChanged += OnDebuggerOnDebuggerRunningChanged;
 }
Example #17
0
 private void mainForm_OnDebuggingEnded(object sender, DebuggingEventArgs e)
 {
     _debugger.DebuggerRunningChanged -= OnDebuggerOnDebuggerRunningChanged;
     _debugger.DebuggerStep           -= OnDebuggerOnDebuggerStep;
     _debugger = null;
 }
Example #18
0
 private void mainForm_OnDebuggingEnded(object sender, DebuggingEventArgs e)
 {
     _debugger = null;
 }
Example #19
0
 protected abstract byte[] ReadBytes(IWabbitcodeDebugger debugger, int address);
Example #20
0
 protected override string GetDisplayValue(IWabbitcodeDebugger debugger, int address, int size)
 {
     return(GetVarValue(debugger, address, size, Size));
 }
 private void DebuggerService_OnDebuggingStarted(object sender, DebuggingEventArgs e)
 {
     Debugger = e.Debugger;
 }
        private int EvaluateElement(string element)
        {
            if (!Settings.Default.CaseSensitive)
            {
                element = element.ToUpper();
            }

            int value;

            if (int.TryParse(element, out value))
            {
                return(value);
            }

            var label = _symbolService.SymbolTable.GetAddressFromLabel(element);

            if (label != null)
            {
                return(label.Value);
            }

            IWabbitcodeDebugger debugger = _debuggerService.CurrentDebugger;

            if (debugger == null)
            {
                return(0);
            }

            switch (element)
            {
            case "$A":
                return(debugger.CPU.A);

            case "$F":
                return(debugger.CPU.F);

            case "$B":
                return(debugger.CPU.B);

            case "$C":
                return(debugger.CPU.C);

            case "$D":
                return(debugger.CPU.D);

            case "$E":
                return(debugger.CPU.E);

            case "$H":
                return(debugger.CPU.H);

            case "$L":
                return(debugger.CPU.L);

            case "$IXH":
                return(debugger.CPU.IXH);

            case "$IXL":
                return(debugger.CPU.IXL);

            case "$IYH":
                return(debugger.CPU.IYH);

            case "$IYL":
                return(debugger.CPU.IYL);

            case "$AF":
                return(debugger.CPU.AF);

            case "$BC":
                return(debugger.CPU.BC);

            case "$DE":
                return(debugger.CPU.DE);

            case "$HL":
                return(debugger.CPU.HL);

            case "$IX":
                return(debugger.CPU.IX);

            case "$IY":
                return(debugger.CPU.IY);

            case "$PC":
                return(debugger.CPU.PC);

            case "$SP":
                return(debugger.CPU.SP);

            default:
                if (element.StartsWith("$") || element.EndsWith("h"))
                {
                    element = element.Replace('$', ' ').Replace('h', ' ').Trim();
                    if (!int.TryParse(element, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out value))
                    {
                        break;
                    }
                    return(value);
                }
                break;
            }
            throw new FormatException(string.Format("Can't recognize symbol {0}", element));
        }
Example #23
0
 protected override byte[] ReadBytes(IWabbitcodeDebugger debugger, int address)
 {
     return(new[] { debugger.ReadByte((ushort)address) });
 }
Example #24
0
 public string GetDisplayValue(IWabbitcodeDebugger debugger, string address, string size)
 {
     return(string.Empty);
 }
Example #25
0
 public object GetActualValue(IWabbitcodeDebugger debugger, string address, string size)
 {
     return(null);
 }
Example #26
0
 protected override string GetDisplayValue(IWabbitcodeDebugger debugger, int address, Size size)
 {
     return("Double click for image");
 }
 protected override object GetActualValue(IWabbitcodeDebugger debugger, int address, int size)
 {
     return(GetDisplayValue(debugger, address, size));
 }
Example #28
0
 protected override object GetActualValue(IWabbitcodeDebugger debugger, int address, Size size)
 {
     return(GetVarImage(debugger, address, size));
 }
 private void DebuggerService_OnDebuggingEnded(object sender, DebuggingEventArgs e)
 {
     Debugger = null;
 }
Example #30
0
 public object GetActualValue(IWabbitcodeDebugger debugger, string address, string size)
 {
     return(GetActualValue(debugger, ParseAddress(address), ParseValidSize(size)));
 }