mirror of
https://github.com/pevans/erc-c.git
synced 2025-02-17 07:32:05 +00:00
inc and dec should work with a zero-address
Just checking if (cpu->eff_addr) is not sufficient. We need to check the address mode; only increment or decrement the A register if the mode is literally ACC.
This commit is contained in:
parent
8a285aace8
commit
3439ec51a8
@ -140,7 +140,10 @@ DEFINE_INST(cpy)
|
|||||||
*/
|
*/
|
||||||
DEFINE_INST(dec)
|
DEFINE_INST(dec)
|
||||||
{
|
{
|
||||||
if (cpu->eff_addr) {
|
bool opcode = mos6502_get(cpu, cpu->PC);
|
||||||
|
bool is_acc = mos6502_addr_mode(opcode) == ACC;
|
||||||
|
|
||||||
|
if (!is_acc) {
|
||||||
MOS_CHECK_NZ(oper - 1);
|
MOS_CHECK_NZ(oper - 1);
|
||||||
mos6502_set(cpu, cpu->eff_addr, oper - 1);
|
mos6502_set(cpu, cpu->eff_addr, oper - 1);
|
||||||
return;
|
return;
|
||||||
@ -175,7 +178,10 @@ DEFINE_INST(dey)
|
|||||||
*/
|
*/
|
||||||
DEFINE_INST(inc)
|
DEFINE_INST(inc)
|
||||||
{
|
{
|
||||||
if (cpu->eff_addr) {
|
bool opcode = mos6502_get(cpu, cpu->PC);
|
||||||
|
bool is_acc = mos6502_addr_mode(opcode) == ACC;
|
||||||
|
|
||||||
|
if (!is_acc) {
|
||||||
MOS_CHECK_NZ(oper + 1);
|
MOS_CHECK_NZ(oper + 1);
|
||||||
mos6502_set(cpu, cpu->eff_addr, oper + 1);
|
mos6502_set(cpu, cpu->eff_addr, oper + 1);
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user