diff --git a/test/test_assemble.c b/test/test_assemble.c index 837f6cf..40c8bcc 100644 --- a/test/test_assemble.c +++ b/test/test_assemble.c @@ -19,7 +19,7 @@ ATF_TC_BODY(assemble_single_buf, tc) uint8_t bsize; uint16_t caddr; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); caddr = ROM_LOAD_ADDR; @@ -54,7 +54,7 @@ ATF_TC_BODY(assemble_single, tc) bus_t b; assembler_t a; - b = bus_init(); + b = bus_init_with_default_devs(); a = assemble_init(&b, ROM_LOAD_ADDR); e = rk65c02_init(&b); diff --git a/test/test_bus.c b/test/test_bus.c index b548e95..1d76171 100644 --- a/test/test_bus.c +++ b/test/test_bus.c @@ -3,6 +3,8 @@ #include #include +#include + #include "rk65c02.h" #include "bus.h" #include "utils.h" @@ -14,7 +16,31 @@ ATF_TC_BODY(bus_init, tc) b = bus_init(); - ATF_CHECK(b.space != NULL); + ATF_CHECK(b.dm_head == NULL); + + bus_finish(&b); +} + + +ATF_TC_WITHOUT_HEAD(bus_init_default); +ATF_TC_BODY(bus_init_default, tc) +{ + bus_t b; + device_mapping_t *dm; + device_t *d, *d_ram; + + b = bus_init_with_default_devs(); + + bus_device_dump(&b); + + LL_FOREACH(b.dm_head, dm) { + d = dm->dev; + + if (dm->addr == 0) + d_ram = d; + } + + ATF_CHECK(strcmp("RAM", d_ram->name) == 0); bus_finish(&b); } @@ -25,13 +51,13 @@ ATF_TC_BODY(bus_load_file, tc) bus_t b; const char *rompath; - b = bus_init(); + b = bus_init_with_default_devs(); rompath = rom_path("test_emulation_nop.rom", tc); ATF_REQUIRE(bus_load_file(&b, 0xC000, rompath)); - ATF_CHECK(b.space[0xC000] == 0xEA); + ATF_CHECK(bus_read_1(&b, 0xC000) == 0xEA); bus_finish(&b); } @@ -43,12 +69,12 @@ ATF_TC_BODY(bus_load_buf, tc) uint8_t buf[] = { 0xEA, 0xDB }; - b = bus_init(); + b = bus_init_with_default_devs(); ATF_REQUIRE(bus_load_buf(&b, 0xC000, buf, 2)); - ATF_CHECK(b.space[0xC000] == 0xEA); - ATF_CHECK(b.space[0xC001] == 0xDB); + ATF_CHECK(bus_read_1(&b, 0xC000) == 0xEA); + ATF_CHECK(bus_read_1(&b, 0xC001) == 0xDB); bus_finish(&b); } @@ -56,6 +82,7 @@ ATF_TC_BODY(bus_load_buf, tc) ATF_TP_ADD_TCS(tp) { ATF_TP_ADD_TC(tp, bus_init); + ATF_TP_ADD_TC(tp, bus_init_default); ATF_TP_ADD_TC(tp, bus_load_file); ATF_TP_ADD_TC(tp, bus_load_buf); diff --git a/test/test_debug.c b/test/test_debug.c index a4fa570..f3231e2 100644 --- a/test/test_debug.c +++ b/test/test_debug.c @@ -20,7 +20,7 @@ ATF_TC_BODY(breakpoint, tc) bus_t b; assembler_t a; - b = bus_init(); + b = bus_init_with_default_devs(); a = assemble_init(&b, ROM_LOAD_ADDR); e = rk65c02_init(&b); @@ -54,7 +54,7 @@ ATF_TC_BODY(trace, tc) trace_t *tr; int i; - b = bus_init(); + b = bus_init_with_default_devs(); a = assemble_init(&b, ROM_LOAD_ADDR); e = rk65c02_init(&b); diff --git a/test/test_emulation.c b/test/test_emulation.c index 525d078..2e317f7 100644 --- a/test/test_emulation.c +++ b/test/test_emulation.c @@ -16,7 +16,7 @@ ATF_TC_BODY(emul_bit, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* BIT immediate */ @@ -64,7 +64,7 @@ ATF_TC_BODY(emul_cmp, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* CMP immediate */ @@ -166,7 +166,7 @@ ATF_TC_BODY(emul_cpx, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* CPX immediate */ @@ -203,7 +203,7 @@ ATF_TC_BODY(emul_cpy, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* CPY immediate */ @@ -240,7 +240,7 @@ ATF_TC_BODY(emul_dex_dey, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* DEX */ @@ -268,7 +268,7 @@ ATF_TC_BODY(emul_dec, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* DEC A */ @@ -324,7 +324,7 @@ ATF_TC_BODY(emul_inc, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* INC A */ @@ -383,7 +383,7 @@ ATF_TC_BODY(emul_inx_iny, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* INX */ @@ -413,7 +413,7 @@ ATF_TC_BODY(emul_lda, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* LDA immediate */ @@ -453,7 +453,7 @@ ATF_TC_BODY(emul_stz, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* STZ zp */ @@ -470,7 +470,7 @@ ATF_TC_BODY(emul_clv, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); e.regs.P |= P_SIGN_OVERFLOW; @@ -487,7 +487,7 @@ ATF_TC_BODY(emul_clc_sec, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* SEC */ @@ -507,7 +507,7 @@ ATF_TC_BODY(emul_cli_sei, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* CLI */ @@ -526,7 +526,7 @@ ATF_TC_BODY(emul_and, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* AND immediate */ @@ -548,7 +548,7 @@ ATF_TC_BODY(emul_nop, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); e.regs.PC = ROM_LOAD_ADDR; @@ -566,7 +566,7 @@ ATF_TC_BODY(emul_sta, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* STA zero page */ @@ -621,7 +621,7 @@ ATF_TC_BODY(emul_ora, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* ORA immediate */ e.regs.A = 0x55; @@ -688,7 +688,7 @@ ATF_TC_BODY(emul_txa_tya_tax_tay, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); e.regs.A = 0x0; @@ -718,7 +718,7 @@ ATF_TC_BODY(emul_stack, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* place 0xAA on stack */ @@ -761,7 +761,7 @@ ATF_TC_BODY(emul_php_plp, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); e.regs.SP = 0xFF; @@ -790,7 +790,7 @@ ATF_TC_BODY(emul_phx_phy_plx_ply, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* check push X to stack */ @@ -836,7 +836,7 @@ ATF_TC_BODY(emul_jmp, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* JMP absolute */ @@ -877,7 +877,7 @@ ATF_TC_BODY(emul_jsr_rts, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* JSR and RTS */ @@ -898,7 +898,7 @@ ATF_TC_BODY(emul_branch, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); /* BCC */ @@ -1013,7 +1013,7 @@ ATF_TC_BODY(emul_sign_overflow_basic, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); e.regs.PC = ROM_LOAD_ADDR; @@ -1157,7 +1157,7 @@ ATF_TC_BODY(emul_sign_overflow_thorough, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); ATF_REQUIRE(rom_start(&e, "test_emulation_sign_overflow_thorough.rom", tc)); @@ -1171,7 +1171,7 @@ ATF_TC_BODY(emul_sbc, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); ATF_REQUIRE(rom_start(&e, "test_emulation_sbc_imm.rom", tc)); @@ -1187,7 +1187,7 @@ ATF_TC_BODY(emul_adc_bcd, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); ATF_REQUIRE(rom_start(&e, "test_emulation_adc_bcd.rom", tc)); @@ -1211,7 +1211,7 @@ ATF_TC_BODY(emul_sbc_bcd, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); ATF_REQUIRE(rom_start(&e, "test_emulation_sbc_bcd.rom", tc)); @@ -1233,7 +1233,7 @@ ATF_TC_BODY(emul_adc_16bit, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); bus_write_1(&b, 0x62, 0x55); @@ -1255,7 +1255,7 @@ ATF_TC_BODY(emul_sbc_16bit, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); bus_write_1(&b, 0x62, 0xFF); @@ -1285,7 +1285,7 @@ ATF_TC_BODY(emul_rmb, tc) char instr[] = "rmb "; - b = bus_init(); + b = bus_init_with_default_devs(); a = assemble_init(&b, ROM_LOAD_ADDR); e = rk65c02_init(&b); @@ -1324,7 +1324,7 @@ ATF_TC_BODY(emul_smb, tc) char instr[] = "smb "; - b = bus_init(); + b = bus_init_with_default_devs(); a = assemble_init(&b, ROM_LOAD_ADDR); e = rk65c02_init(&b); diff --git a/test/test_interrupt.c b/test/test_interrupt.c index 404d272..5ea77e9 100644 --- a/test/test_interrupt.c +++ b/test/test_interrupt.c @@ -23,7 +23,7 @@ ATF_TC_BODY(intr_brk, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); e.regs.PC = ROM_LOAD_ADDR; @@ -74,7 +74,7 @@ ATF_TC_BODY(intr_rti, tc) uint16_t israsmpc; uint8_t bsize; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); israsmpc = ISR_ADDR; diff --git a/test/test_stepping.c b/test/test_stepping.c index 7d12c49..60ffb4c 100644 --- a/test/test_stepping.c +++ b/test/test_stepping.c @@ -12,7 +12,7 @@ ATF_TC_BODY(step1, tc) rk65c02emu_t e; bus_t b; - b = bus_init(); + b = bus_init_with_default_devs(); e = rk65c02_init(&b); e.regs.PC = ROM_LOAD_ADDR;