diff options
| author | LLLL Colonq <llll@colonq> | 2026-07-10 14:48:59 -0400 |
|---|---|---|
| committer | LLLL Colonq <llll@colonq> | 2026-07-10 14:48:59 -0400 |
| commit | b6f00172b4e7045a14cebba0a7d4011528a28741 (patch) | |
| tree | 0e5d90ea1bb56085f6b773d54f2f8fdbd90538e9 /6502/test | |
| parent | 9ba3ccd51d94e2db6920351eccb9050d1a2c41e1 (diff) | |
6502: More Lua bindings
Diffstat (limited to '6502/test')
| -rw-r--r-- | 6502/test/test.fnl | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/6502/test/test.fnl b/6502/test/test.fnl index 11c4f9a..f99a0d6 100644 --- a/6502/test/test.fnl +++ b/6502/test/test.fnl @@ -6,15 +6,40 @@ (let [f (io.open path)] (f:read "*all"))) -(local emu (l6502.new)) -(print (emu:set-pc 42)) -(print (emu:set-reg l6502.reg.SP 10)) -(print (emu:set-reg l6502.reg.A 255)) -(emu:emulate) -(print (inspect (emu:summary))) +(fn must-match [fnm a e] + (if (= a e) true + (io.stderr:write (.. "\n -> in field " fnm ", expected " (tostring e) " but found " (tostring a) "\n")) + (os.exit 1))) -;; (local testcases (json.decode (slurp "testcases/6502/v1/00.json"))) -;; (each [_ test (ipairs testcases)] -;; (l6502.run test.name)) +(fn u8-flag? [v f] (not (= (band v f) 0))) -;; (print (inspect )) +(fn run-test [e tc] + (io.stderr:write (.. "running test: " tc.name "...")) + (let [i tc.initial] + (e:set-pc i.pc) + (e:set-reg l6502.reg.SP i.s) + (e:set-reg l6502.reg.A i.a) + (e:set-reg l6502.reg.X i.x) + (e:set-reg l6502.reg.Y i.y) + (e:set-reg l6502.reg.FLAGS i.p) + (each [_ [addr v] (ipairs i.ram)] + (e:write addr v))) + (e:emulate) + (let [f tc.final] + (must-match :pc (e:pc) f.pc) + (must-match :sp (e:reg l6502.reg.SP) f.s) + (must-match :a (e:reg l6502.reg.A) f.a) + (must-match :x (e:reg l6502.reg.X) f.x) + (must-match :y (e:reg l6502.reg.Y) f.y)) + (io.stderr:write " done\n") + ) + +(fn run-tests-file [e p] + (let [tcs (json.decode (slurp p))] + (each [_ tc (ipairs tcs)] + (run-test e tc)))) + +(let [e (l6502.new)] + (for [i 0x00 0xff] + (run-tests-file e (string.format "testcases/6502/v1/%02x.json" i)) + )) |
