breakpoint fixes
This commit is contained in:
parent
9462e2a72b
commit
586a466178
1 changed files with 15 additions and 5 deletions
20
main.cpp
20
main.cpp
|
@ -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();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue