diff options
author | Wojciech Kosior <kwojtus@protonmail.com> | 2020-09-02 20:30:03 +0200 |
---|---|---|
committer | Wojciech Kosior <kwojtus@protonmail.com> | 2020-09-02 20:30:03 +0200 |
commit | 538da35db55a07b362046aef9c9d8602b21dd378 (patch) | |
tree | 398a68a46761be0b62acd276234b9bd08d8c9df6 /tests/soc_simple_display/instructions.s.tcl | |
parent | 1349d6276d05ded573f4a1e52e4e2ad1ccb95abf (diff) | |
download | AGH-engineering-thesis-538da35db55a07b362046aef9c9d8602b21dd378.tar.gz AGH-engineering-thesis-538da35db55a07b362046aef9c9d8602b21dd378.zip |
add a VGA-based bench for entire sock
Diffstat (limited to 'tests/soc_simple_display/instructions.s.tcl')
-rwxr-xr-x | tests/soc_simple_display/instructions.s.tcl | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/soc_simple_display/instructions.s.tcl b/tests/soc_simple_display/instructions.s.tcl new file mode 100755 index 0000000..db142a0 --- /dev/null +++ b/tests/soc_simple_display/instructions.s.tcl @@ -0,0 +1,54 @@ +#!/usr/bin/env tclsh + +source tclasm.tcl + +## 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 + +## 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 + 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 +## 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 + +## 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 +## to memory, we'll write to h100A00 and h100A02, both being mapped as the +## 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 + +halt |