From 56e9d97791bf720ccf4657bb37dc8318f98e5bde Mon Sep 17 00:00:00 2001 From: Peter Evans Date: Sat, 14 Apr 2018 18:26:43 -0500 Subject: [PATCH] Accounting for the ACC mode opcode --- tests/mos6502/bits.c | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/tests/mos6502/bits.c b/tests/mos6502/bits.c index 19b6172..816e7a1 100644 --- a/tests/mos6502/bits.c +++ b/tests/mos6502/bits.c @@ -19,6 +19,11 @@ Test(mos6502_bits, and) Test(mos6502_bits, asl) { + cpu->eff_addr = 123; + mos6502_handle_asl(cpu, 22); + cr_assert_eq(mos6502_get(cpu, 123), 44); + + mos6502_set(cpu, cpu->PC, 0x0A); mos6502_handle_asl(cpu, 5); cr_assert_eq(cpu->A, 10); @@ -27,10 +32,6 @@ Test(mos6502_bits, asl) mos6502_handle_asl(cpu, 150); cr_assert_eq(cpu->A, 44); cr_assert_eq(cpu->P & MOS_CARRY, MOS_CARRY); - - cpu->eff_addr = 123; - mos6502_handle_asl(cpu, 22); - cr_assert_eq(mos6502_get(cpu, 123), 44); } Test(mos6502_bits, bit) @@ -92,14 +93,15 @@ Test(mos6502_bits, eor) Test(mos6502_bits, lsr) { - mos6502_handle_lsr(cpu, 5); - cr_assert_eq(cpu->A, 2); - cr_assert_eq(cpu->P & MOS_CARRY, MOS_CARRY); - cpu->eff_addr = 123; mos6502_handle_lsr(cpu, 11); cr_assert_eq(mos6502_get(cpu, 123), 5); cr_assert_eq(cpu->P & MOS_CARRY, MOS_CARRY); + + mos6502_set(cpu, cpu->PC, 0x4A); + mos6502_handle_lsr(cpu, 5); + cr_assert_eq(cpu->A, 2); + cr_assert_eq(cpu->P & MOS_CARRY, MOS_CARRY); } Test(mos6502_bits, ora) @@ -115,6 +117,12 @@ Test(mos6502_bits, ora) Test(mos6502_bits, rol) { + cpu->P = 0; + cpu->eff_addr = 234; + mos6502_handle_rol(cpu, 128); + cr_assert_eq(mos6502_get(cpu, 234), 0); + + mos6502_set(cpu, cpu->PC, 0x2A); cpu->P = 0; cpu->A = 0xff; mos6502_handle_rol(cpu, cpu->A); @@ -123,15 +131,17 @@ Test(mos6502_bits, rol) mos6502_handle_rol(cpu, cpu->A); cr_assert_eq(cpu->P & MOS_CARRY, MOS_CARRY); cr_assert_eq(cpu->A, 0xfd); - - cpu->P = 0; - cpu->eff_addr = 234; - mos6502_handle_rol(cpu, 128); - cr_assert_eq(mos6502_get(cpu, 234), 0); } Test(mos6502_bits, ror) { + cpu->P = 0; + cpu->eff_addr = 123; + mos6502_handle_ror(cpu, 1); + mos6502_handle_ror(cpu, 0); + cr_assert_eq(mos6502_get(cpu, 123), 128); + + mos6502_set(cpu, cpu->PC, 0x6A); cpu->P = 0; cpu->A = 0xff; mos6502_handle_ror(cpu, cpu->A); @@ -140,12 +150,6 @@ Test(mos6502_bits, ror) mos6502_handle_ror(cpu, cpu->A); cr_assert_eq(cpu->P & MOS_CARRY, MOS_CARRY); cr_assert_eq(cpu->A, 0xbf); - - cpu->P = 0; - cpu->eff_addr = 123; - mos6502_handle_ror(cpu, 1); - mos6502_handle_ror(cpu, 0); - cr_assert_eq(mos6502_get(cpu, 123), 128); } Test(mos6502_bits, trb)