From 416e896956d3b05793337da6609fe1544797c0a9 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Thu, 22 Feb 2024 08:52:20 +0200 Subject: Add stuff, refactor --- test/e2e/sum/sum.atk16 | 31 +++++++++++++++++++++++++++++++ test/e2e/sum/test_sum.py | 19 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 test/e2e/sum/sum.atk16 create mode 100644 test/e2e/sum/test_sum.py (limited to 'test/e2e/sum') diff --git a/test/e2e/sum/sum.atk16 b/test/e2e/sum/sum.atk16 new file mode 100644 index 0000000..8399767 --- /dev/null +++ b/test/e2e/sum/sum.atk16 @@ -0,0 +1,31 @@ +; Program: sum two values and store the result in RAM + +; ROM (and program execution) starts at offset 0x0 +@address 0x0 + jpi program + +@label ram_offset + 0x8000 ; store ram offset for later memory access + +@label program + ldi 10 RA ; RA := 10 + ldi 20 RB ; RB := 20 + alr al_plus RA RB RC ; RC := RA + RB + ldi ram_offset RD ; store address of ram_offset in RD + ldr RD RD ; dereference ram_offset address +@label debug + str RC RD ; store RC in RAM + + ; Check that 10 + 20 = 30 + ali al_plus RC 0 RA ; RA := result of sum + ldi 30 RB ; RB := 30 + alr al_minus RA RB RC ; RC := RA - RB + bri zero success ; if result is zero, jump to success + + ldi 2 RA ; RA := 2 to signal failure + hlt + + ; Else +@label success + ldi 1 RA ; RA := 1 to signal success + hlt diff --git a/test/e2e/sum/test_sum.py b/test/e2e/sum/test_sum.py new file mode 100644 index 0000000..3484af5 --- /dev/null +++ b/test/e2e/sum/test_sum.py @@ -0,0 +1,19 @@ +from atk16_asm import assemble +from atk16_emu import Machine +from test.utils import pad_bytearray + +def test_sum(): + filename = "test/e2e/sum/sum.atk16" + with open(filename, "r") as f: + source = f.read() + + obj = assemble(source, filename) + rom_image = pad_bytearray(obj) + + machine = Machine() + machine.load_rom_image(rom_image) + machine.reset() + machine.run_until_halted() + machine.print_state_summary() + + assert machine.rb.value == 30 -- cgit v1.3