continue;
if (m->bus_error) {
+ if (((m->bus_error & 1) && (rwi & 1)) || ((m->bus_error & 2) && (rwi & 2))) {
#if BUS_ERROR_EMULATION
- cpu_bus_error = 1;
+ cpu_bus_error = 1;
#else
- exception2(addr, (rwi & 2) == 0, size, ((rwi & 4) ? 2 : 1) | (regs.s ? 4 : 0));
+ exception2(addr, (rwi & 2) == 0, size, ((rwi & 4) ? 2 : 1) | (regs.s ? 4 : 0));
#endif
+ }
continue;
}
buf = buf_out(buf, &bufsize, _T(" L"));
if (mwn->nobreak)
buf = buf_out(buf, &bufsize, _T(" N"));
- if (mwn->bus_error)
+ if (mwn->bus_error == 3)
buf = buf_out(buf, &bufsize, _T(" BER"));
+ if (mwn->bus_error == 1)
+ buf = buf_out(buf, &bufsize, _T(" BERR"));
+ if (mwn->bus_error == 2)
+ buf = buf_out(buf, &bufsize, _T(" BERW"));
for (int j = 0; memwatch_access_masks[j].mask; j++) {
uae_u32 mask = memwatch_access_masks[j].mask;
if ((mwn->access_mask & mask) == mask && (usedmask & mask) == 0) {
if (nc == 'R')
mwn->rwi |= 1;
if (nc == 'B') {
- mwn->bus_error = true;
+ mwn->bus_error = 3;
+ if (ncc == 'R') {
+ mwn->bus_error = 1;
+ next_char(c);
+ }
+ if (ncc == 'W') {
+ mwn->bus_error = 2;
+ next_char(c);
+ }
if (!mwn->rwi)
mwn->rwi = 7;
}