1
0
mirror of https://github.com/rkujawa/rk65c02.git synced 2024-06-28 01:29:29 +00:00

Correct indirect zero page Y behaviour.

This commit is contained in:
Radosław Kujawa 2017-01-24 16:37:10 +01:00
parent 20a39a8d6c
commit 39aaca5034

View File

@ -198,9 +198,9 @@ instruction_data_write_1(rk65c02emu_t *e, instrdef_t *id, instruction_t *i, uint
bus_write_1(e->bus, iaddr, val); bus_write_1(e->bus, iaddr, val);
case IZPY: case IZPY:
/* XXX */ /* XXX */
iaddr = bus_read_1(e->bus, i->op1 + e->regs.Y); iaddr = bus_read_1(e->bus, i->op1);
iaddr |= (bus_read_1(e->bus, i->op1 + e->regs.Y + 1) << 8); iaddr |= (bus_read_1(e->bus, i->op1 + 1) << 8);
bus_write_1(e->bus, iaddr, val); bus_write_1(e->bus, iaddr, val + e->regs.Y);
case ABSOLUTEX: case ABSOLUTEX:
bus_write_1(e->bus, (i->op1 + (i->op2 << 8)) + e->regs.X, val); bus_write_1(e->bus, (i->op1 + (i->op2 << 8)) + e->regs.X, val);
break; break;
@ -263,9 +263,9 @@ instruction_data_read_1(rk65c02emu_t *e, instrdef_t *id, instruction_t *i)
break; break;
case IZPY: case IZPY:
/* XXX: what about page wraps / roll over */ /* XXX: what about page wraps / roll over */
iaddr = bus_read_1(e->bus, i->op1 + e->regs.Y); iaddr = bus_read_1(e->bus, i->op1);
iaddr |= (bus_read_1(e->bus, i->op1 + e->regs.Y + 1) << 8); iaddr |= (bus_read_1(e->bus, i->op1 + 1) << 8);
rv = bus_read_1(e->bus, iaddr); rv = bus_read_1(e->bus, iaddr) + e->regs.Y;
break; break;
case ABSOLUTE: case ABSOLUTE:
rv = bus_read_1(e->bus, i->op1 + (i->op2 << 8)); rv = bus_read_1(e->bus, i->op1 + (i->op2 << 8));