aboutsummaryrefslogtreecommitdiffstats
path: root/resources/asm/sum.atk16
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2024-02-20 16:55:14 +0200
committerJan Tuomi <jans.tuomi@gmail.com>2024-02-20 16:56:09 +0200
commit549901c85044b6ccd912688d6be007c2fdacc6c6 (patch)
tree15d1123eedb4347472e4b47fec880e2e5b79927e /resources/asm/sum.atk16
parentabf0594c78087434bced59054896f7f411e18faf (diff)
Refactor dir structure
Diffstat (limited to 'resources/asm/sum.atk16')
-rw-r--r--resources/asm/sum.atk1632
1 files changed, 32 insertions, 0 deletions
diff --git a/resources/asm/sum.atk16 b/resources/asm/sum.atk16
new file mode 100644
index 0000000..1bc3277
--- /dev/null
+++ b/resources/asm/sum.atk16
@@ -0,0 +1,32 @@
+@use ext_std:*
+; 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
+ add 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
+ mov RC RA ; RA := result of sum
+ ldi 30 RB ; RB := 30
+ sub 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