From a570afb007aedc13cc843daadb46044bc9e4a4c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw=20Kujawa?= Date: Tue, 24 Jan 2017 22:18:52 +0100 Subject: [PATCH] Add STA test cases for all addressing modes. --- test/test_emulation.c | 56 ++++++++++++++++++++++++++++++++++ test/test_emulation_sta_abs.s | 3 ++ test/test_emulation_sta_absx.s | 3 ++ test/test_emulation_sta_absy.s | 3 ++ test/test_emulation_sta_izp.s | 3 ++ test/test_emulation_sta_izpx.s | 3 ++ test/test_emulation_sta_izpy.s | 3 ++ test/test_emulation_sta_zp.s | 3 ++ test/test_emulation_sta_zpx.s | 3 ++ 9 files changed, 80 insertions(+) create mode 100644 test/test_emulation_sta_abs.s create mode 100644 test/test_emulation_sta_absx.s create mode 100644 test/test_emulation_sta_absy.s create mode 100644 test/test_emulation_sta_izp.s create mode 100644 test/test_emulation_sta_izpx.s create mode 100644 test/test_emulation_sta_izpy.s create mode 100644 test/test_emulation_sta_zp.s create mode 100644 test/test_emulation_sta_zpx.s diff --git a/test/test_emulation.c b/test/test_emulation.c index 2ffb54f..18c6f15 100644 --- a/test/test_emulation.c +++ b/test/test_emulation.c @@ -197,6 +197,61 @@ ATF_TC_BODY(emul_nop, tc) bus_finish(&b); } +ATF_TC_WITHOUT_HEAD(emul_sta); +ATF_TC_BODY(emul_sta, tc) +{ + rk65c02emu_t e; + bus_t b; + + b = bus_init(); + e = rk65c02_init(&b); + + /* STA zero page */ + e.regs.A = 0xAA; + ATF_REQUIRE(rom_start(&e, "test_emulation_sta_zp.rom")); + ATF_CHECK(bus_read_1(&b, 0x20) == 0xAA); + /* STA zero page X */ + e.regs.A = 0x55; + e.regs.X = 0x1; + ATF_REQUIRE(rom_start(&e, "test_emulation_sta_zpx.rom")); + ATF_CHECK(bus_read_1(&b, 0x20) == 0x55); + /* STA absolute */ + e.regs.A = 0xAA; + ATF_REQUIRE(rom_start(&e, "test_emulation_sta_abs.rom")); + ATF_CHECK(bus_read_1(&b, 0x2010) == 0xAA); + /* STA absolute X */ + e.regs.A = 0x55; + e.regs.X = 0x10; + ATF_REQUIRE(rom_start(&e, "test_emulation_sta_absx.rom")); + ATF_CHECK(bus_read_1(&b, 0x2010) == 0x55); + /* STA absolute Y */ + e.regs.A = 0xAA; + e.regs.X = 0; + e.regs.Y = 0x1; + ATF_REQUIRE(rom_start(&e, "test_emulation_sta_absy.rom")); + ATF_CHECK(bus_read_1(&b, 0x2010) == 0xAA); + /* STA indirect zero */ + e.regs.A = 0x55; + bus_write_1(&b, 0x25, 0x10); + bus_write_1(&b, 0x26, 0x20); + ATF_REQUIRE(rom_start(&e, "test_emulation_sta_izp.rom")); + ATF_CHECK(bus_read_1(&b, 0x2010) == 0x55); + /* STA indirect zero page X */ + e.regs.A = 0xAA; + e.regs.X = 0x4; + e.regs.Y = 0; + ATF_REQUIRE(rom_start(&e, "test_emulation_sta_izpx.rom")); + ATF_CHECK(bus_read_1(&b, 0x2010) == 0xAA); + /* STA indirect zero page Y */ + e.regs.A = 0x54; + e.regs.X = 0; + e.regs.Y = 0x1; + ATF_REQUIRE(rom_start(&e, "test_emulation_sta_izpy.rom")); + ATF_CHECK(bus_read_1(&b, 0x2010) == 0x55); + + bus_finish(&b); +} + ATF_TC_WITHOUT_HEAD(emul_ora); ATF_TC_BODY(emul_ora, tc) { @@ -379,6 +434,7 @@ ATF_TP_ADD_TCS(tp) ATF_TP_ADD_TC(tp, emul_php_plp); ATF_TP_ADD_TC(tp, emul_stack); ATF_TP_ADD_TC(tp, emul_txa_tya_tax_tay); + ATF_TP_ADD_TC(tp, emul_sta); return (atf_no_error()); } diff --git a/test/test_emulation_sta_abs.s b/test/test_emulation_sta_abs.s new file mode 100644 index 0000000..acf80be --- /dev/null +++ b/test/test_emulation_sta_abs.s @@ -0,0 +1,3 @@ +start: sta 0x2010 + stp + diff --git a/test/test_emulation_sta_absx.s b/test/test_emulation_sta_absx.s new file mode 100644 index 0000000..6559386 --- /dev/null +++ b/test/test_emulation_sta_absx.s @@ -0,0 +1,3 @@ +start: sta 0x2000,X + stp + diff --git a/test/test_emulation_sta_absy.s b/test/test_emulation_sta_absy.s new file mode 100644 index 0000000..bdfd838 --- /dev/null +++ b/test/test_emulation_sta_absy.s @@ -0,0 +1,3 @@ +start: sta 0x200F,Y + stp + diff --git a/test/test_emulation_sta_izp.s b/test/test_emulation_sta_izp.s new file mode 100644 index 0000000..fa24c85 --- /dev/null +++ b/test/test_emulation_sta_izp.s @@ -0,0 +1,3 @@ +start: sta (0x25) + stp + diff --git a/test/test_emulation_sta_izpx.s b/test/test_emulation_sta_izpx.s new file mode 100644 index 0000000..b35ba56 --- /dev/null +++ b/test/test_emulation_sta_izpx.s @@ -0,0 +1,3 @@ +start: sta (0x21,X) + stp + diff --git a/test/test_emulation_sta_izpy.s b/test/test_emulation_sta_izpy.s new file mode 100644 index 0000000..452bc60 --- /dev/null +++ b/test/test_emulation_sta_izpy.s @@ -0,0 +1,3 @@ +start: sta (0x25),Y + stp + diff --git a/test/test_emulation_sta_zp.s b/test/test_emulation_sta_zp.s new file mode 100644 index 0000000..cd3875c --- /dev/null +++ b/test/test_emulation_sta_zp.s @@ -0,0 +1,3 @@ +start: sta 0x20 + stp + diff --git a/test/test_emulation_sta_zpx.s b/test/test_emulation_sta_zpx.s new file mode 100644 index 0000000..bddf124 --- /dev/null +++ b/test/test_emulation_sta_zpx.s @@ -0,0 +1,3 @@ +start: sta 0x1F,X + stp +