mirror of
https://github.com/AppleWin/AppleWin.git
synced 2025-04-12 12:37:08 +00:00
Fix for regs.pc++ - move this outside of CPP macros
This commit is contained in:
parent
d6b0fd01a5
commit
f8e111fe51
@ -774,7 +774,11 @@ void CpuReset()
|
||||
regs.ps |= AF_INTERRUPT;
|
||||
if (GetMainCpu() == CPU_65C02) // GH#1099
|
||||
regs.ps &= ~AF_DECIMAL;
|
||||
regs.pc = *(WORD*)(mem + 0xFFFC);
|
||||
|
||||
const uint16_t resetVector = 0xFFFC;
|
||||
_ASSERT(memshadow[resetVector >> 8] != NULL);
|
||||
regs.pc = *(uint16_t*)(memshadow[resetVector >> 8] + (resetVector & 0xff));
|
||||
|
||||
regs.sp = 0x0100 | ((regs.sp - 3) & 0xFF);
|
||||
|
||||
regs.bJammed = 0;
|
||||
@ -787,7 +791,7 @@ void CpuReset()
|
||||
|
||||
//===========================================================================
|
||||
|
||||
void CpuSetupBenchmark ()
|
||||
void CpuSetupBenchmark()
|
||||
{
|
||||
regs.a = 0;
|
||||
regs.x = 0;
|
||||
|
@ -239,7 +239,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
else \
|
||||
addr = *(LPWORD)(mem+base);
|
||||
#define _INDX_ALT \
|
||||
base = (READ_BYTE_ALT(regs.pc++)+regs.x) & 0xFF; \
|
||||
base = (READ_BYTE_ALT(regs.pc)+regs.x) & 0xFF; regs.pc++; \
|
||||
if (base == 0xFF) \
|
||||
addr = READ_BYTE_ALT(0xFF) | (READ_BYTE_ALT(0x00)<<8); \
|
||||
else \
|
||||
@ -253,11 +253,12 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
regs.pc++; \
|
||||
addr = base+(WORD)regs.y;
|
||||
#define _INDY_CONST_ALT \
|
||||
base = READ_BYTE_ALT(regs.pc++); \
|
||||
base = READ_BYTE_ALT(regs.pc); \
|
||||
if (base == 0xFF) \
|
||||
base = READ_BYTE_ALT(0xFF) | (READ_BYTE_ALT(0x00)<<8); \
|
||||
else \
|
||||
base = READ_WORD_ALT(base); \
|
||||
regs.pc++; \
|
||||
addr = base+(WORD)regs.y;
|
||||
|
||||
// Optimised for page-cross
|
||||
@ -270,14 +271,14 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
else \
|
||||
addr = *(LPWORD)(mem+base);
|
||||
#define _IZPG_ALT \
|
||||
base = READ_BYTE_ALT(regs.pc++); \
|
||||
base = READ_BYTE_ALT(regs.pc); regs.pc++; \
|
||||
if (base == 0xFF) \
|
||||
addr = READ_BYTE_ALT(0xFF) | (READ_BYTE_ALT(0x00)<<8); \
|
||||
else \
|
||||
addr = READ_WORD_ALT(base);
|
||||
|
||||
#define _REL addr = (signed char)*(mem+regs.pc++);
|
||||
#define _REL_ALT addr = (signed char)READ_BYTE_ALT(regs.pc++);
|
||||
#define _REL_ALT addr = (signed char)READ_BYTE_ALT(regs.pc); regs.pc++;
|
||||
|
||||
// TODO Optimization Note:
|
||||
// . Opcodes that generate zero-page addresses can't be accessing $C000..$CFFF
|
||||
@ -286,9 +287,9 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#define _ZPGX addr = ((*(mem+regs.pc++))+regs.x) & 0xFF;
|
||||
#define _ZPGY addr = ((*(mem+regs.pc++))+regs.y) & 0xFF;
|
||||
|
||||
#define _ZPG_ALT addr = READ_BYTE_ALT(regs.pc++);
|
||||
#define _ZPGX_ALT addr = (READ_BYTE_ALT(regs.pc++) + regs.x) & 0xFF;
|
||||
#define _ZPGY_ALT addr = (READ_BYTE_ALT(regs.pc++) + regs.y) & 0xFF;
|
||||
#define _ZPG_ALT addr = READ_BYTE_ALT(regs.pc); regs.pc++;
|
||||
#define _ZPGX_ALT addr = (READ_BYTE_ALT(regs.pc) + regs.x) & 0xFF; regs.pc++;
|
||||
#define _ZPGY_ALT addr = (READ_BYTE_ALT(regs.pc) + regs.y) & 0xFF; regs.pc++;
|
||||
|
||||
// Tidy 3 char opcodes & addressing modes to keep the opcode table visually aligned, clean, and readable.
|
||||
#undef asl
|
||||
|
@ -1304,7 +1304,6 @@ static void UpdatePaging(BOOL initialize)
|
||||
}
|
||||
|
||||
const bool alt = IsAppleIIe(GetApple2Type()) && (GetCardMgr().QueryAux() == CT_Empty || GetCardMgr().QueryAux() == CT_80Col);
|
||||
if (!alt)
|
||||
{
|
||||
// MOVE MEMORY BACK AND FORTH AS NECESSARY BETWEEN THE SHADOW AREAS AND
|
||||
// THE MAIN RAM IMAGE TO KEEP BOTH SETS OF MEMORY CONSISTENT WITH THE NEW
|
||||
@ -1325,7 +1324,8 @@ static void UpdatePaging(BOOL initialize)
|
||||
((*(memdirty + loop) & 1) || (loop <= 1)))
|
||||
{
|
||||
*(memdirty + loop) &= ~1;
|
||||
memcpy(oldshadow[loop], mem + (loop << 8), 256);
|
||||
if (!alt) // DEBUG: move this "if" here (from above) so that this "for-loop" is run, and mem gets updated and the debugger (sort of) works!
|
||||
memcpy(oldshadow[loop], mem + (loop << 8), 256);
|
||||
}
|
||||
|
||||
memcpy(mem + (loop << 8), memshadow[loop], 256);
|
||||
|
Loading…
x
Reference in New Issue
Block a user