diff --git a/tools/z88headless.cpp b/tools/z88headless.cpp index 88469f6..dd3d7e1 100644 --- a/tools/z88headless.cpp +++ b/tools/z88headless.cpp @@ -14,7 +14,7 @@ int main(int argc, char** argv) if (argc <= 1) { std::cout << "z88headless usage:" << std::endl; - std::cout << " z88headless [--steps N]" << std::endl; + std::cout << " z88headless [--steps N] [--trace]" << std::endl; return 0; } @@ -28,6 +28,7 @@ int main(int argc, char** argv) const std::string romPath = argv[1]; int steps = 10000; + bool trace = false; for (int i = 2; i < argc; ++i) { @@ -36,11 +37,19 @@ int main(int argc, char** argv) steps = std::atoi(argv[i + 1]); ++i; } + else if (std::string(argv[i]) == "--trace") + { + trace = true; + } } std::cout << "Starting headless OZ execution" << std::endl; std::cout << "ROM: " << romPath << std::endl; std::cout << "Steps: " << steps << std::endl; + if (trace) + { + std::cout << "Trace: enabled" << std::endl; + } Rom rom; @@ -68,6 +77,13 @@ int main(int argc, char** argv) { for (int i = 0; i < steps; ++i) { + if (trace) + { + std::cout << "[" << std::setfill('0') << std::setw(6) << i << "] " + << "PC: 0x" << std::hex << std::setfill('0') << std::setw(4) << cpu.pc() << std::dec + << " Opcode: 0x" << std::hex << std::setfill('0') << std::setw(2) << (int)cpu.lastOpcode() << std::dec + << std::endl; + } cpu.step(); ++executed; }