aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/e2e/std_mem/run_memset.atk1621
-rw-r--r--test/e2e/std_mem/test_memset.py22
2 files changed, 43 insertions, 0 deletions
diff --git a/test/e2e/std_mem/run_memset.atk16 b/test/e2e/std_mem/run_memset.atk16
new file mode 100644
index 0000000..07e7666
--- /dev/null
+++ b/test/e2e/std_mem/run_memset.atk16
@@ -0,0 +1,21 @@
+@include %bootstrap
+@include %std_mem
+
+@label mem_offset
+ 0x9000
+
+@label main
+ ; set 0x9005 to value 4
+ ldi mem_offset RA
+ ldr RA RA
+ addi RA 5 RA
+ ldi 4 RB
+ str RB RA
+
+ ; set values 0x0000..0x0004 to 3
+ ldi mem_offset RA
+ ldr RA RA
+ ldi 5 RB
+ ldi 3 RC
+ calli memset
+ hlt
diff --git a/test/e2e/std_mem/test_memset.py b/test/e2e/std_mem/test_memset.py
new file mode 100644
index 0000000..0052ffe
--- /dev/null
+++ b/test/e2e/std_mem/test_memset.py
@@ -0,0 +1,22 @@
+from atk16_asm import assemble
+from atk16_emu import Machine
+from test.utils import pad_bytearray
+
+def test_memset():
+ filename = "test/e2e/std_mem/run_memset.atk16"
+ with open(filename, "r") as f:
+ source = f.read()
+
+ obj = assemble(source, filename)
+ rom_image = pad_bytearray(obj.program)
+
+ machine = Machine()
+ machine.load_rom_image(rom_image)
+ machine.reset()
+ machine.run_until_halted()
+ machine.print_state_summary()
+
+ addr = 0x9000 - 0x8000
+ expected_n = 5
+ expected_value = 3
+ assert all(map(lambda x: x == expected_value, machine.ram.memory[addr:addr+expected_n]))