#!/usr/bin/env tclsh source tclasm.tcl ## also look at stack_machine_jump test ## we're going to write numbers from 0 to 7 to addresses h400 - h41C # this will translate to 3 16-bit instructions set_sp h7FFFC ## 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 + h400 stack down const 4 mul const h400 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 8 tee stack down const 8 sub stack up ## loop if counter != 8 cond_jump 10 halt