--- nono/vm/cmmu.cpp 2026/04/29 17:04:55 1.1.1.3 +++ nono/vm/cmmu.cpp 2026/04/29 17:05:14 1.1.1.5 @@ -4,15 +4,18 @@ // 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() @@ -23,6 +26,7 @@ CMMUDevice::CMMUDevice() // デストラクタ CMMUDevice::~CMMUDevice() { + gCMMU = NULL; } bool @@ -60,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; } @@ -128,7 +132,7 @@ CMMUDevice::Read32(uint32 addr) default: break; } - putlog(0, "未実装読み込み $%08x", addr); + putlog(0, "Read $%08x (NOT IMPLEMENTED)", addr); return 0xffffffff; } @@ -139,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; } @@ -150,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; } @@ -196,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: @@ -210,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; }