aboutsummaryrefslogtreecommitdiff
path: root/tests/soc_simple_display/instructions.s.tcl
blob: b1e41424ae8b4ef6ccd7f97e860eb9d1550e9599 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
## 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 2 16-bit instructions
set_sp h100000

## set up the counter (1 16-bit instruction)
const 0

## this is the point we later jump to, address 6
tee
tee
## compute address:  counter * 4 + h100000
const 4
mul
swap
store+ h100000

## increase counter by 1
const 1
add
## compare value of counter to 640
tee
const 640
sub
## loop if counter != 640
cond_jump 6

## write hFFFFFFFF to address h100A00 (the point is to write a non-zero value
## there, but because we're only using aligned 4-byte writes in this test,
## 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