aboutsummaryrefslogtreecommitdiff
path: root/examples/example1b_blink_led_tclasm
diff options
context:
space:
mode:
Diffstat (limited to 'examples/example1b_blink_led_tclasm')
l---------examples/example1b_blink_led_tclasm/Makefile1
-rw-r--r--examples/example1b_blink_led_tclasm/instructions.s.tcl57
2 files changed, 58 insertions, 0 deletions
diff --git a/examples/example1b_blink_led_tclasm/Makefile b/examples/example1b_blink_led_tclasm/Makefile
new file mode 120000
index 0000000..c11f6e5
--- /dev/null
+++ b/examples/example1b_blink_led_tclasm/Makefile
@@ -0,0 +1 @@
+../example1a_blink_led_wasm/Makefile \ No newline at end of file
diff --git a/examples/example1b_blink_led_tclasm/instructions.s.tcl b/examples/example1b_blink_led_tclasm/instructions.s.tcl
new file mode 100644
index 0000000..3a69c7b
--- /dev/null
+++ b/examples/example1b_blink_led_tclasm/instructions.s.tcl
@@ -0,0 +1,57 @@
+## adapted from soc_measure_time 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 2 16-bit instructions
+set_sp h100000
+
+## load current value of timer, in a loop
+## this is address 4 we later jump to
+# this will translate to 2 16-bit instructions
+loadwzx h1C0008
+
+## loop until timer exceeds 1500
+# this will translate to 2 16-bit instructions
+const 1500
+# this will translate to 1 16-bit instruction
+lt
+# this will translate to 1 16-bit instruction
+cond_jump 4
+
+## now, light led2
+# this will translate to 1 16-bit instruction
+const 1
+# this will translate to 2 16-bit instructions
+storew h1C0006
+
+## second loop, analogous to the first one
+## this is address 22 we later jump to
+# this will translate to 2 16-bit instructions
+loadwzx h1C0008
+
+## loop until timer exceeds 3000
+# this will translate to 2 16-bit instructions
+const 3000
+# this will translate to 1 16-bit instruction
+lt
+# this will translate to 1 16-bit instruction
+cond_jump 22
+
+## now, switch led2 off
+# this will translate to 1 16-bit instruction
+const 0
+# this will translate to 2 16-bit instructions
+storew h1C0006
+
+## third loop, analogous to the first two
+## this is address 40 we later jump to
+loadwzx h1C0008
+
+## loop until timer exceeds 4500
+const 4500
+lt
+cond_jump 40
+
+## finish operation (will also put led1 on)
+halt