breakpoint fixes

This commit is contained in:
folkert van heusden 2022-04-12 10:48:24 +02:00
parent 9462e2a72b
commit 586a466178

View file

@ -340,14 +340,17 @@ int main(int argc, char *argv[])
auto parts = split(cmd, " "); auto parts = split(cmd, " ");
auto kv = split(parts, "="); auto kv = split(parts, "=");
if (parts.empty())
continue;
if (cmd == "go") if (cmd == "go")
single_step = false; single_step = false;
else if (cmd == "single" || cmd == "s") else if (cmd == "single" || cmd == "s")
single_step = true; single_step = true;
else if ((cmd == "sbp" || cmd == "cbp") && parts.size() == 2){ else if ((parts[0] == "sbp" || parts[0] == "cbp") && parts.size() == 2){
uint16_t pc = std::stoi(parts.at(1).c_str()); uint16_t pc = std::stoi(parts[1].c_str(), nullptr, 8);
if (cmd == "sbp") { if (parts[0] == "sbp") {
c->set_breakpoint(pc); c->set_breakpoint(pc);
cnsl->put_string_lf(format("Set breakpoint at %06o", pc)); cnsl->put_string_lf(format("Set breakpoint at %06o", pc));
@ -365,8 +368,13 @@ int main(int argc, char *argv[])
cnsl->put_string_lf("Breakpoints:"); cnsl->put_string_lf("Breakpoints:");
for(auto pc : bps) for(auto pc : bps) {
cnsl->put_string_lf(format(" %06o", pc)); cnsl->put_string_lf(format(" %06o", pc));
pc += disassemble(c, cnsl, pc, true);
}
continue;
} }
else if (parts[0] == "disassemble" || parts[0] == "d") { else if (parts[0] == "disassemble" || parts[0] == "d") {
int pc = kv.find("pc") != kv.end() ? std::stoi(kv.find("pc")->second, nullptr, 8) : c->getPC(); int pc = kv.find("pc") != kv.end() ? std::stoi(kv.find("pc")->second, nullptr, 8) : c->getPC();
@ -407,8 +415,10 @@ int main(int argc, char *argv[])
if (tracing || single_step) if (tracing || single_step)
disassemble(c, single_step ? cnsl : nullptr, c->getPC(), false); disassemble(c, single_step ? cnsl : nullptr, c->getPC(), false);
if (c->check_breakpoint() && !single_step) if (c->check_breakpoint() && !single_step) {
cnsl->put_string_lf("Breakpoint");
break; break;
}
c->step(); c->step();