aboutsummaryrefslogtreecommitdiff
## 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