--- nono/wx/wxapp.cpp 2026/04/29 17:05:23 1.1.1.14 +++ nono/wx/wxapp.cpp 2026/04/29 17:05:35 1.1.1.17 @@ -29,10 +29,10 @@ class WXApp : public wxApp int OnRun() override; private: bool ParseMonitors(const wxString& str); - bool ParseMemdumpValue(int id, const std::string&, const std::string&); + bool ParseMemdumpValue(uint id, const std::string&, const std::string&); void ShowMonitorsName(); int SearchMonitorName(const char *name); - int FindAvailable(const std::vector& candidates, + int FindAvailable(const std::vector& candidates, const std::string& name, int basenum, int count) const; wxLocale locale; @@ -108,7 +108,7 @@ WXApp::OnRun() pHostInfo.reset(new HostInfoMonitor()); gHostInfo = pHostInfo.get(); - // 手順 4. (vm/device.h) + // 手順 6. (vm/device.h) // これ以降モニタの登録をしてはいけない。 gMonitorManager->Fix(); @@ -221,11 +221,11 @@ WXApp::ParseMonitors(const wxString& str // 書式は [.] // fmt は B/W/L と M(MMU)、I(dIsasm)、Z(XPdisasm) bool -WXApp::ParseMemdumpValue(int id, +WXApp::ParseMemdumpValue(uint id, const std::string& name, const std::string& value) { auto mon = gMonitorManager->Get(id); - auto memdump = dynamic_cast(mon.obj); + auto memdump = dynamic_cast(mon->obj); assert(memdump); errno = 0; @@ -260,15 +260,15 @@ WXApp::ParseMemdumpValue(int id, if (gMainApp.Has(VMCap::M88K)) { fmt = Memdump::M88200Page; } else { - // ロングは指定できないけど使われてないので放置 - fmt = Memdump::M68030PageShort; + // m68k はちょっと複雑すぎて放置。 + goto usage; } break; case 'I': if (gMainApp.Has(VMCap::M88K)) { fmt = Memdump::M88100Disasm; } else { - fmt = Memdump::M68030Disasm; + fmt = Memdump::M680x0Disasm; } break; case 'Z': @@ -292,17 +292,17 @@ WXApp::ParseMemdumpValue(int id, void WXApp::ShowMonitorsName() { - std::vector list; + std::vector list; // モニターは登録されていれば列挙 // (登録されているものを全部列挙ではないことに注意) - for (int id = ID_MONITOR_START; id <= ID_MONITOR_END; id++) { + for (uint id = ID_MONITOR_START; id <= ID_MONITOR_END; id++) { if (gMonitorManager->Find(id)) { list.push_back(id); } } // サブウィンドウは機種情報から判断 - for (int id = ID_SUBWIN_START; id <= ID_SUBWIN_END; id++) { + for (uint id = ID_SUBWIN_START; id <= ID_SUBWIN_END; id++) { VMCap vmcap = gMonitorManager->GetVMCap(id); if (gMainApp.Has(vmcap)) { list.push_back(id); @@ -324,10 +324,10 @@ WXApp::ShowMonitorsName() int WXApp::SearchMonitorName(const char *name) { - std::vector candidates; + std::vector candidates; std::vector cand_names; - for (int id = ID_MONITOR_START; id <= ID_SUBWIN_END; id++) { + for (uint id = ID_MONITOR_START; id <= ID_SUBWIN_END; id++) { if (id < ID_SUBWIN_START) { // モニターは登録されていなければ除外する if (gMonitorManager->Find(id) == NULL) { @@ -372,7 +372,7 @@ WXApp::SearchMonitorName(const char *nam return candidates[0]; } else { // 候補が複数あった - int id; + uint id; // "memdump" を空いてる "memdump*" に割り当てる id = FindAvailable(candidates, "memdump", @@ -408,7 +408,7 @@ WXApp::SearchMonitorName(const char *nam // start は ID_MONITOR_*0、count は MAX_*_MONITOR のほうで、 // 最初と最後の ID ではないので注意。 int -WXApp::FindAvailable(const std::vector& candidates, +WXApp::FindAvailable(const std::vector& candidates, const std::string& name, int start, int count) const { // candidates がすべてこの start..end に入っているか