aboutsummaryrefslogtreecommitdiff
path: root/tests/stack_machine_old_cond_jump/instructions.s.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/stack_machine_old_cond_jump/instructions.s.tcl')
-rwxr-xr-xtests/stack_machine_old_cond_jump/instructions.s.tcl45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/stack_machine_old_cond_jump/instructions.s.tcl b/tests/stack_machine_old_cond_jump/instructions.s.tcl
new file mode 100755
index 0000000..467a719
--- /dev/null
+++ b/tests/stack_machine_old_cond_jump/instructions.s.tcl
@@ -0,0 +1,45 @@
+#!/usr/bin/env tclsh
+
+source tclasm.tcl
+
+## also look at stack_machine_jump test
+
+## we're going to write numbers from 0 to 7 to addresses h400 - h41C
+
+# this will translate to 3 16-bit instructions
+set_sp h7FFFC
+
+## set up the counter
+# each of those 2 will translate to 1 16-bit instruction
+const 0
+stack down
+
+## this is the point we later jump to, address 10
+
+tee
+## compute address: counter * 4 + h400
+stack down
+const 4
+mul
+const h400
+add
+stack up
+## load computed address to im
+exchange_im
+## save value of counter at address pointed by im
+swap
+store
+swap
+## increase counter by 1
+const 1
+add
+## compare value of counter to 8
+tee
+stack down
+const 8
+sub
+stack up
+## loop if counter != 8
+cond_jump 10
+
+halt