aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rwxr-xr-xtests/soc_simple_display/instructions.s.tcl33
1 files changed, 11 insertions, 22 deletions
diff --git a/tests/soc_simple_display/instructions.s.tcl b/tests/soc_simple_display/instructions.s.tcl
index 4bfc73f..616c1bc 100755
--- a/tests/soc_simple_display/instructions.s.tcl
+++ b/tests/soc_simple_display/instructions.s.tcl
@@ -1,47 +1,36 @@
#!/usr/bin/env tclsh
-source tclasm_old.tcl
+source tclasm.tcl
-## also look at stack_machine_cond_jump test
+## also look at stack_machine_cond_jump test
## we're going to write numbers from 0 to 639 at addresses h100000 to h1009FC
## and then write non-zero value at h100A00
-# this will translate to 3 16-bit instructions
-set_sp h0FFFFC
+# this will translate to 2 16-bit instructions
+set_sp h100000
-## set up the counter
-# each of those 2 will translate to 1 16-bit instruction
+## set up the counter (1 16-bit instruction)
const 0
-stack down
-
-## this is the point we later jump to, address 10
+## this is the point we later jump to, address 6
+tee
tee
## compute address: counter * 4 + h100000
-stack down
const 4
mul
-const h100000
-add
-stack up
-## load computed address to im
-exchange_im
-## save value of counter at address pointed by im
-swap
-store
swap
+store+ h100000
+
## increase counter by 1
const 1
add
## compare value of counter to 640
tee
-stack down
const 640
sub
-stack up
## loop if counter != 640
-cond_jump 10
+cond_jump 6
## write hFFFFFFFF to address h100A00 (the point is to write a non-zero value
## there, but because our stack machine only knows how to write 32-bit values
@@ -49,6 +38,6 @@ cond_jump 10
## VGA power-on register - what matters is the later write, so at least one of
## higher 16 bits of written value has to be non-zero)
const -1
-store@ h100A00
+store h100A00
halt