--- nono/debugger/debugger_m680x0.cpp 2026/04/29 17:04:30 1.1.1.1 +++ nono/debugger/debugger_m680x0.cpp 2026/04/29 17:04:33 1.1.1.2 @@ -1,6 +1,7 @@ // // nono -// Copyright (C) 2020 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #include "console.h" @@ -10,6 +11,21 @@ #include "mpu.h" #include "mystring.h" +// コンストラクタ +DebuggerMD_m680x0::DebuggerMD_m680x0(Debugger *parent_, m68kcpu *cpu_) + : inherited(parent_) +{ + cpu = cpu_; + + // 奇数にしておくことで初回に必ずアドレス変換を起こさせる。 + last_lpage.addr = 0xffffffff; +} + +// デストラクタ +DebuggerMD_m680x0::~DebuggerMD_m680x0() +{ +} + // アドレス変換 uint64 DebuggerMD_m680x0::TranslateAddr(saddr_t laddr) @@ -212,6 +228,55 @@ DebuggerMD_m680x0::GetRegAddr(const char return addr; } +// レジスタ表示系コマンドのヘルプ +/*static*/ const HelpMessages +DebuggerMD_m680x0::HelpMsgRegister = { + { "r", "通常レジスタを表示" }, + { "ra", "ATC を表示" }, + { "rf", "FPU レジスタを表示" }, + { "rm", "MMU レジスタを表示" }, + { "ro", "その他のレジスタを表示" }, +}; + +const HelpMessages& +DebuggerMD_m680x0::GetRegisterHelp() const +{ + return HelpMsgRegister; +} + +// レジスタ表示系コマンド +bool +DebuggerMD_m680x0::ShowRegister(Console *cons, + const std::vector& args) +{ + // 余分な引数は無視する? + + if (args[0] == "r") { + ShowRegMain(cons); + return true; + } + if (args[0] == "ra") { + ShowRegATC(cons); + return true; + } + if (args[0] == "rf") { + ShowRegFPU(cons); + return true; + } + if (args[0] == "rm") { + ShowRegMMU(cons); + return true; + } + if (args[0] == "ro") { + ShowRegOther(cons); + return true; + } + + // 該当なし + return false; +} + + // レジスタ表示 (基本セット) void DebuggerMD_m680x0::ShowRegMain(Console *cons) @@ -455,8 +520,7 @@ CRP:00001111_22223333 TT1:00001111 MMUSR void DebuggerMD_m680x0::ShowRegATC(Console *cons) { - gMPUATC->MonitorUpdate(); - parent->ShowMonitor(gMPUATC->monitor); + parent->ShowMonitor(*gMPUATC); } // その他のレジスタを表示 @@ -493,7 +557,7 @@ DebuggerMD_m680x0::ShowRegOther(Console s.Print(29, 1, EM(isp), "ISP:%08x", cpu->reg.isp); } - parent->ShowMonitor(s); + parent->ShowTextScreen(s); } // 逆アセンブル