--- nono/vm/cmmu.cpp 2026/04/29 17:04:50 1.1.1.2 +++ nono/vm/cmmu.cpp 2026/04/29 17:05:14 1.1.1.5 @@ -4,28 +4,29 @@ // Licensed under nono-license.txt // +// // M88200 CMMU の I/O デバイス部分 - -#include "cmmu.h" -#include "mpu88xx0.h" +// // CMMU が確定しない場合はこのデバイスのログを使う。 // CMMU が確定したらそっちのデバイスログから出力する。 -std::unique_ptr gCMMU; +#include "cmmu.h" +#include "mpu88xx0.h" + +// グローバル参照用 +CMMUDevice *gCMMU; // コンストラクタ CMMUDevice::CMMUDevice() + : inherited("CMMUIOSpace") { - // m88200 側の logname が "cmmu7" とかなので、こっちを "cmmu" で - // 受け付けてしまうのは紛らわしそうなので。 - logname = "cmmudev"; - devname = "CMMU"; } // デストラクタ CMMUDevice::~CMMUDevice() { + gCMMU = NULL; } bool @@ -63,7 +64,7 @@ CMMUDevice::Read32(uint32 addr) m88200 *cmmu = GetCMMU(id); if (cmmu == NULL) { - putlog(3, "未搭載 CMMU[%d] 読み込み $%08x", id, addr); + putlog(3, "Read not-equipped CMMU[%d] $%08x", id, addr); return 0xffffffff; } @@ -131,7 +132,7 @@ CMMUDevice::Read32(uint32 addr) default: break; } - putlog(0, "未実装読み込み $%08x", addr); + putlog(0, "Read $%08x (NOT IMPLEMENTED)", addr); return 0xffffffff; } @@ -142,7 +143,7 @@ CMMUDevice::Write32(uint32 addr, uint32 m88200 *cmmu = GetCMMU(id); if (cmmu == NULL) { - putlog(3, "未搭載 CMMU[%d] 書き込み $%08x <- $%08x", id, addr, data); + putlog(3, "Write not-equipped CMMU[%d] $%08x <- $%08x", id, addr, data); return 0; } @@ -153,11 +154,10 @@ CMMUDevice::Write32(uint32 addr, uint32 { uint32 newid = data >> 24; if (id != newid) { - cmmu->putlogf(1, lstr("ID 更新 $%02x", newid)); + cmmu->putlogf(1, lstr("IDR <- $%08x (set ID $%02x)", data, newid)); cmmu->SetID(newid); } else { - cmmu->putlogf(2, lstr("IDR 書き込み(ID変更なし) <- $%08x", - data)); + cmmu->putlogf(2, lstr("IDR <- $%08x", data)); } return 0; } @@ -199,7 +199,7 @@ CMMUDevice::Write32(uint32 addr, uint32 case BWP0 ... BWP7: n = (offset - BWP0) / 4; assert(n < 8); - cmmu->SetBATC(n, data); + cmmu->SetBWP(n, data); return 0; case CDP0 ... CDP3: @@ -213,8 +213,8 @@ CMMUDevice::Write32(uint32 addr, uint32 default: break; } - putlog(0, "未実装書き込み $%08x <- $%08x", addr, data); - PANIC(" "); + putlog(0, "Write $%08x <- $%08x (NOT IMPLEMENTED)", addr, data); + VMPANIC("not impl"); return 0; }