From 2268d7c9f721ae2a8a5549eacda8f80de04d6fb5 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Thu, 2 Jun 2022 21:26:33 +0200 Subject: [PATCH] examine/e command --- debugger.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/debugger.cpp b/debugger.cpp index 02e71ef..9b9a1a6 100644 --- a/debugger.cpp +++ b/debugger.cpp @@ -126,6 +126,8 @@ void debugger(console *const cnsl, bus *const b, std::atomic_bool *const interru int pc = kv.find("pc") != kv.end() ? std::stoi(kv.find("pc")->second, nullptr, 8) : c->getPC(); int n = kv.find("n") != kv.end() ? std::stoi(kv.find("n") ->second, nullptr, 10) : 1; + cnsl->put_string_lf(format("Disassemble %d instructions starting at %o", n, pc)); + bool show_registers = kv.find("pc") == kv.end(); for(int i=0; iput_string_lf("parameter missing"); + else { + int addr = std::stoi(parts[2], nullptr, 8); + int val = -1; + + if (parts[1] == "B" || parts[1] == "b") + val = b->read(addr, true, false, true); + else if (parts[1] == "W" || parts[1] == "w") + val = b->read(addr, false, false, true); + else + cnsl->put_string_lf("expected b or w"); + + if (val != -1) + cnsl->put_string_lf(format("value at %06o, octal: %o, hex: %x, dec: %d\n", addr, val, val, val)); + } + } else if (cmd == "reset" || cmd == "r") { #if defined(ESP32) ESP.restart(); @@ -160,6 +180,7 @@ void debugger(console *const cnsl, bus *const b, std::atomic_bool *const interru #if !defined(ESP32) cnsl->put_string_lf("quit/q - stop emulator"); #endif + cnsl->put_string_lf("examine/e - show memory address ( )"); cnsl->put_string_lf("reset/r - reset cpu/bus/etc"); cnsl->put_string_lf("single/s - run 1 instruction (implicit 'disassemble' command)"); cnsl->put_string_lf("sbp/cbp/lbp - set/clear/list breakpoint(s)");