diff options
Diffstat (limited to 'design')
l---------[-rwxr-xr-x] | design/rom.s.tcl | 55 |
1 files changed, 1 insertions, 54 deletions
diff --git a/design/rom.s.tcl b/design/rom.s.tcl index 4bfc73f..ea624a7 100755..120000 --- a/design/rom.s.tcl +++ b/design/rom.s.tcl @@ -1,54 +1 @@ -#!/usr/bin/env tclsh - -source tclasm_old.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 +../tests/soc_simple_display/instructions.s.tcl
\ No newline at end of file |