Breakpoints

This commit is contained in:
2017-05-11 10:08:48 +02:00
parent 8754fd7bd6
commit e3985dc887
4 changed files with 125 additions and 53 deletions

View File

@@ -100,6 +100,15 @@ namespace PIC_Simulator
box_CodeView.SelectionBackColor = Color.SteelBlue;
}
}
void HighlightBreakpoint(int line)
{
int i1 = box_CodeView.GetFirstCharIndexFromLine(line);
int i2 = box_CodeView.GetFirstCharIndexFromLine(line) + 4;
box_CodeView.SelectionStart = i1;
box_CodeView.SelectionLength = i2 - i1;
box_CodeView.SelectionBackColor = Color.Red;
}
private void cmd_reset_Click(object sender, EventArgs e)
{
@@ -132,6 +141,8 @@ namespace PIC_Simulator
if (finished) { quartztimer.Stop(); MessageBox.Show("Finished"); return; }
if (programm.Breakpoints.Contains(programm.befehle[programm.PCCounter].labelnummer)) quartztimer.Stop();
OberflaecheAktualisieren();
}
@@ -144,6 +155,18 @@ namespace PIC_Simulator
Highlight(programm.befehle[programm.PCCounter].zeilennummer);
}
foreach (var bp in programm.Breakpoints)
{
PICBefehl b = programm.befehle.FirstOrDefault(i => i.labelnummer == bp);
if (b != null)
{
HighlightBreakpoint(b.zeilennummer);
}
}
box_CodeView.SelectionStart = 0;
box_CodeView.SelectionLength = 0;
// Memory aktualisieren
for (int y = 0; y < 16; y++)
@@ -165,6 +188,23 @@ namespace PIC_Simulator
lbStack.Items.Clear();
foreach (var u in programm.Stack) lbStack.Items.Add(u.ToString());
}
private void box_CodeView_DoubleClick(object sender, EventArgs e)
{
int line = box_CodeView.GetLineFromCharIndex(box_CodeView.SelectionStart);
PICBefehl b = programm.befehle.FirstOrDefault(i => i.zeilennummer == line);
if (b != null)
{
if (programm.Breakpoints.Contains(b.labelnummer))
programm.Breakpoints.Remove(b.labelnummer);
else
programm.Breakpoints.Add(b.labelnummer);
OberflaecheAktualisieren();
}
}
}
}