From d343db0842e06d9bf1566cdce5c9d19772ac9d9a Mon Sep 17 00:00:00 2001 From: edmccard Date: Sun, 8 Apr 2012 21:28:44 -0400 Subject: [PATCH] Add tests for new cpu --- src/Makefile | 2 +- src/cpu6502.d | 10 ++++++++++ src/d6502/cpu.d | 12 ++++++------ test/test_new_cpu.d | 39 +++++++++++++++++++++++++++++++++++++++ test/test_new_cpu.sh | 20 ++++++++++++++++++++ 5 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 test/test_new_cpu.d create mode 100755 test/test_new_cpu.sh diff --git a/src/Makefile b/src/Makefile index de06db2..48e0a18 100644 --- a/src/Makefile +++ b/src/Makefile @@ -5,7 +5,7 @@ LINK_OPTS = -L-lpthread -L-lGL -L-ldl -L-lX11 \ -L-L$(GTKD) -L-lgtkd -L-lgtkdgl \ -L-L$(DERELICT)/lib -L-lDerelictSDL -L-lDerelictUtil \ -ALL_SRC = $(shell find -name "*.d") +ALL_SRC = $(shell find -name "*.d" \! -name "cpu6502.d") ALL_OBJS = $(ALL_SRC:%.d=%.o) all: ${ALL_OBJS} diff --git a/src/cpu6502.d b/src/cpu6502.d index 752fa41..86ed9c2 100644 --- a/src/cpu6502.d +++ b/src/cpu6502.d @@ -798,3 +798,13 @@ string Hex2(int dec) return HEX_DIGITS[highNybble..highNybble+1] ~ HEX_DIGITS[lowNybble..lowNybble+1]; } + + +//alias Cpu!("6502", false, false) T1; +//alias Cpu!("6502", false, true) T2; +//alias Cpu!("6502", true, false) T3; +//alias Cpu!("6502", true, true) T4; +//alias Cpu!("65C02", false, false) T5; +//alias Cpu!("65C02", false, true) T6; +//alias Cpu!("65C02", true, false) T7; +//alias Cpu!("65C02", true, true) T8; diff --git a/src/d6502/cpu.d b/src/d6502/cpu.d index a8e6356..e226afa 100644 --- a/src/d6502/cpu.d +++ b/src/d6502/cpu.d @@ -198,22 +198,22 @@ class Cpu(bool strict, bool cumulative) : CpuBase!(strict, cumulative) final ubyte readFinal(ushort addr) { - static if (cumulative) tick(++totalCycles); + static if (cumulative) clock.tick(++totalCycles); else { - tick(); + clock.tick(); } - return memoryRead(addr); + return memory.read(addr); } final void writeFinal(ushort addr, ubyte val) { - static if (cumulative) tick(++totalCycles); + static if (cumulative) clock.tick(++totalCycles); else { - tick(); + clock.tick(); } - memoryWrite(addr, val); + memory.write(addr, val); } final ushort readWord(ushort addrLo, ushort addrHi) diff --git a/test/test_new_cpu.d b/test/test_new_cpu.d new file mode 100644 index 0000000..cebae41 --- /dev/null +++ b/test/test_new_cpu.d @@ -0,0 +1,39 @@ +version(Strict) + enum s1 = true; +else + enum s1 = false; +version(Cumulative) + enum c1 = true; +else + enum c1 = false; + +void main() +{ + import std.stdio; + import test.base, test.cpu; + + void test_func(ubyte op) + { + auto report = report_debug(); + auto report2 = report_timing_debug(); + + version(OpFunctions) writeln("(Functions)"); + version(OpDelegates) writeln("(Delegates)"); + version(OpSwitch) writeln("(Switch)"); + version(OpNestedSwitch) writeln("(NestedSwitch)"); + + alias Cpu!("6502", s1, c1) TX1; + writeln("NMOS ", s1, " ", c1, " func"); + test_one_opcode!TX1(op, report); + writeln("NMOS ", s1, " ", c1, " bus"); + test_opcode_timing!TX1(op, report2); + + alias Cpu!("65C02", s1, c1) TX2; + writeln("CMOS ", s1, " ", c1, " func"); + test_one_opcode!TX2(op, report); + writeln("CMOS ", s1, " ", c1, " bus"); + test_opcode_timing!TX2(op, report2); + } + + test_func(0x00); +} diff --git a/test/test_new_cpu.sh b/test/test_new_cpu.sh new file mode 100755 index 0000000..4f603cd --- /dev/null +++ b/test/test_new_cpu.sh @@ -0,0 +1,20 @@ +rdmd --force -version=OpDelegates -I.. -I../src test_new_cpu.d +rdmd --force -version=OpDelegates -version=Strict -I.. -I../src test_new_cpu.d +rdmd --force -version=OpDelegates -version=Cumulative -I.. -I../src test_new_cpu.d +rdmd --force -version=OpDelegates -version=Strict -version=Cumulative -I.. -I../src test_new_cpu.d + +rdmd --force -version=OpFunctions -I.. -I../src test_new_cpu.d +rdmd --force -version=OpFunctions -version=Strict -I.. -I../src test_new_cpu.d +rdmd --force -version=OpFunctions -version=Cumulative -I.. -I../src test_new_cpu.d +rdmd --force -version=OpFunctions -version=Strict -version=Cumulative -I.. -I../src test_new_cpu.d + +rdmd --force -version=OpSwitch -I.. -I../src test_new_cpu.d +rdmd --force -version=OpSwitch -version=Strict -I.. -I../src test_new_cpu.d +rdmd --force -version=OpSwitch -version=Cumulative -I.. -I../src test_new_cpu.d +rdmd --force -version=OpSwitch -version=Strict -version=Cumulative -I.. -I../src test_new_cpu.d + +rdmd --force -version=OpNestedSwitch -I.. -I../src test_new_cpu.d +rdmd --force -version=OpNestedSwitch -version=Strict -I.. -I../src test_new_cpu.d +rdmd --force -version=OpNestedSwitch -version=Cumulative -I.. -I../src test_new_cpu.d +rdmd --force -version=OpNestedSwitch -version=Strict -version=Cumulative -I.. -I../src test_new_cpu.d +