2017-12-02 19:27:30 +00:00
|
|
|
#include <criterion/criterion.h>
|
|
|
|
|
|
|
|
#include "mos6502.h"
|
|
|
|
#include "mos6502.enums.h"
|
2017-12-06 21:57:15 +00:00
|
|
|
#include "mos6502.tests.h"
|
2017-12-04 02:19:17 +00:00
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
TestSuite(mos6502_loadstor, .init = setup, .fini = teardown);
|
2017-12-04 02:19:17 +00:00
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, lda)
|
|
|
|
{
|
2017-12-04 02:19:17 +00:00
|
|
|
mos6502_handle_lda(cpu, 123);
|
|
|
|
cr_assert_eq(cpu->A, 123);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, ldx)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
mos6502_handle_ldx(cpu, 123);
|
|
|
|
cr_assert_eq(cpu->X, 123);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, ldy)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
mos6502_handle_ldy(cpu, 123);
|
|
|
|
cr_assert_eq(cpu->Y, 123);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, pha)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
cpu->A = 0x24;
|
|
|
|
mos6502_handle_pha(cpu, 0);
|
|
|
|
|
|
|
|
cr_assert_eq(vm_segment_get(cpu->memory, 0x0100), 0x00);
|
|
|
|
cr_assert_eq(vm_segment_get(cpu->memory, 0x0101), 0x24);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, php)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
cpu->P = 0x43;
|
|
|
|
mos6502_handle_php(cpu, 0);
|
|
|
|
|
|
|
|
cr_assert_eq(vm_segment_get(cpu->memory, 0x0100), 0x00);
|
|
|
|
cr_assert_eq(vm_segment_get(cpu->memory, 0x0101), 0x43);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, pla)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
mos6502_push_stack(cpu, 0x0033);
|
|
|
|
mos6502_handle_pla(cpu, 0);
|
|
|
|
|
|
|
|
cr_assert_eq(cpu->A, 0x33);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, plp)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
mos6502_push_stack(cpu, 0x0052);
|
|
|
|
mos6502_handle_plp(cpu, 0);
|
|
|
|
|
|
|
|
cr_assert_eq(cpu->P, 0x52);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, sta)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
cpu->A = 123;
|
|
|
|
cpu->last_addr = 555;
|
|
|
|
mos6502_handle_sta(cpu, 0);
|
|
|
|
cr_assert_eq(vm_segment_get(cpu->memory, cpu->last_addr), cpu->A);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, stx)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
cpu->X = 222;
|
|
|
|
cpu->last_addr = 444;
|
|
|
|
mos6502_handle_stx(cpu, 0);
|
|
|
|
cr_assert_eq(vm_segment_get(cpu->memory, cpu->last_addr), cpu->X);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, sty)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
cpu->Y = 111;
|
|
|
|
cpu->last_addr = 253;
|
|
|
|
mos6502_handle_sty(cpu, 0);
|
|
|
|
cr_assert_eq(vm_segment_get(cpu->memory, cpu->last_addr), cpu->Y);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, tax)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
cpu->A = 111;
|
|
|
|
cpu->X = 222;
|
|
|
|
mos6502_handle_tax(cpu, 0);
|
|
|
|
cr_assert_eq(cpu->X, 111);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, tay)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
cpu->A = 111;
|
|
|
|
cpu->Y = 115;
|
|
|
|
mos6502_handle_tay(cpu, 0);
|
|
|
|
cr_assert_eq(cpu->Y, 111);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, tsx)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
cpu->S = 111;
|
|
|
|
cpu->X = 222;
|
|
|
|
mos6502_handle_tsx(cpu, 0);
|
|
|
|
cr_assert_eq(cpu->X, 111);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, txa)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
cpu->A = 111;
|
|
|
|
cpu->X = 222;
|
|
|
|
mos6502_handle_txa(cpu, 0);
|
|
|
|
cr_assert_eq(cpu->A, 222);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, txs)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
cpu->S = 111;
|
|
|
|
cpu->X = 222;
|
|
|
|
mos6502_handle_txs(cpu, 0);
|
|
|
|
cr_assert_eq(cpu->S, 222);
|
|
|
|
}
|
|
|
|
|
2017-12-06 21:57:15 +00:00
|
|
|
Test(mos6502_loadstor, tya)
|
2017-12-04 02:19:17 +00:00
|
|
|
{
|
|
|
|
cpu->A = 111;
|
|
|
|
cpu->Y = 222;
|
|
|
|
mos6502_handle_tya(cpu, 0);
|
|
|
|
cr_assert_eq(cpu->A, 222);
|
|
|
|
}
|