From c2e4b5d67c74a5aeec97d42d44f37320d0ae4e31 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 2 Apr 2020 17:59:04 +0200 Subject: [PATCH] fix M6532 access counters make stack pops result into DATA access --- src/emucore/M6502.ins | 10 +++++----- src/emucore/M6502.m4 | 10 +++++----- src/emucore/M6532.cxx | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/emucore/M6502.ins b/src/emucore/M6502.ins index f48e689eb..e04ac9cb2 100644 --- a/src/emucore/M6502.ins +++ b/src/emucore/M6502.ins @@ -3770,9 +3770,9 @@ case 0x40: } { peek(0x0100 + SP++, DISASM_NONE); - PS(peek(0x0100 + SP++, DISASM_NONE)); - PC = peek(0x0100 + SP++, DISASM_NONE); - PC |= (uInt16(peek(0x0100 + SP, DISASM_NONE)) << 8); + PS(peek(0x0100 + SP++, DISASM_DATA)); + PC = peek(0x0100 + SP++, DISASM_DATA); + PC |= (uInt16(peek(0x0100 + SP, DISASM_DATA)) << 8); } break; @@ -3784,8 +3784,8 @@ case 0x60: } { peek(0x0100 + SP++, DISASM_NONE); - PC = peek(0x0100 + SP++, DISASM_NONE); - PC |= (uInt16(peek(0x0100 + SP, DISASM_NONE)) << 8); + PC = peek(0x0100 + SP++, DISASM_DATA); + PC |= (uInt16(peek(0x0100 + SP, DISASM_DATA)) << 8); peek(PC++, DISASM_NONE); } break; diff --git a/src/emucore/M6502.m4 b/src/emucore/M6502.m4 index 0c9046018..da097512f 100644 --- a/src/emucore/M6502.m4 +++ b/src/emucore/M6502.m4 @@ -885,15 +885,15 @@ define(M6502_RRA, `{ define(M6502_RTI, `{ peek(0x0100 + SP++, DISASM_NONE); - PS(peek(0x0100 + SP++, DISASM_NONE)); - PC = peek(0x0100 + SP++, DISASM_NONE); - PC |= (uInt16(peek(0x0100 + SP, DISASM_NONE)) << 8); + PS(peek(0x0100 + SP++, DISASM_DATA)); + PC = peek(0x0100 + SP++, DISASM_DATA); + PC |= (uInt16(peek(0x0100 + SP, DISASM_DATA)) << 8); }') define(M6502_RTS, `{ peek(0x0100 + SP++, DISASM_NONE); - PC = peek(0x0100 + SP++, DISASM_NONE); - PC |= (uInt16(peek(0x0100 + SP, DISASM_NONE)) << 8); + PC = peek(0x0100 + SP++, DISASM_DATA); + PC |= (uInt16(peek(0x0100 + SP, DISASM_DATA)) << 8); peek(PC++, DISASM_NONE); }') diff --git a/src/emucore/M6532.cxx b/src/emucore/M6532.cxx index 3453596cd..f9eb8025c 100644 --- a/src/emucore/M6532.cxx +++ b/src/emucore/M6532.cxx @@ -501,15 +501,15 @@ void M6532::setAccessFlags(uInt16 address, Device::AccessFlags flags) void M6532::increaseAccessCounter(uInt16 address, bool isWrite) { if (address & IO_BIT) - myIOAccessCounter[isWrite ? 0 : IO_SIZE + (address & IO_MASK)]++; + myIOAccessCounter[(isWrite ? IO_SIZE : 0) + (address & IO_MASK)]++; else { // the first access, either by direct RAM or stack access is assumed as initialization if (myZPAccessDelay[address & RAM_MASK]) myZPAccessDelay[address & RAM_MASK]--; else if (address & STACK_BIT) - myStackAccessCounter[isWrite ? 0 : STACK_SIZE + (address & STACK_MASK)]++; + myStackAccessCounter[(isWrite ? STACK_SIZE : 0) + (address & STACK_MASK)]++; else - myRAMAccessCounter[isWrite ? 0 : RAM_SIZE + (address & RAM_MASK)]++; + myRAMAccessCounter[(isWrite ? RAM_SIZE : 0) + (address & RAM_MASK)]++; } }