--- nono/m88xx0/m88200.cpp 2026/04/29 17:04:41 1.1.1.3 +++ nono/m88xx0/m88200.cpp 2026/04/29 17:04:44 1.1.1.4 @@ -837,6 +837,7 @@ m88200::load(uint32 addr) acc_laddr = addr; acc_read = true; if (Translate() == false) { + putlog(2, "Translation BusError %c:$%08x", (acc_super ? 'S' : 'U'), acc_laddr); return (uint64)-1; } if ((acc_stat & DESC_CI)) { @@ -844,10 +845,14 @@ m88200::load(uint32 addr) MBusAcquire(); data = MBusRead(acc_paddrH + acc_paddrL, bits / 8); MBusRelease(); + if ((int64)data < 0) { + putlog(2, "MBus BusError %c:$%08x", (acc_super ? 'S' : 'U'), acc_laddr); + } return data; } else { data = CacheRead(acc_paddrH); if ((int64)data < 0) { + putlog(2, "Cache BusError %c:$%08x", (acc_super ? 'S' : 'U'), acc_laddr); return data; } @@ -1628,7 +1633,7 @@ m88200::ReadLine(m88200CacheSet& set, in // 実機の Burst Read は取扱説明書によると 320ns (8 サイクル) で完了 // するようなので、その差 4 をあらかじめ引いておく。 // 途中でバスエラーが起きたらとかそこまでは考慮しない。 - AddCycle((uint64)-4); + AddCycle(-4); // タグを更新 set.tag[line] = tagaddr; @@ -1663,7 +1668,7 @@ m88200::CopyBackLine(m88200CacheSet& set // 実機の Burst Write は取扱説明書によると 280ns (7サイクル) で完了する // ようなので、その差 1 をあらかじめて引いておく。 // 途中でバスエラーが起きたらとかそこまでは考慮しない。 - AddCycle((uint64)-1); + AddCycle(-1); addr = set.tag[line] | (set.setidx << 4); for (int i = 0; i < 4; i++) { @@ -1942,7 +1947,7 @@ m88200::CacheXmem(uint32 paddr, uint32 d // サイクルを加算する (VM から使う) void -m88200::AddCycle(uint64 cycle) +m88200::AddCycle(int32 cycle) { parent->AddCycle(cycle); }