|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1 |10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 |20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 |58 @canvas-width |1f @canvas-height (to run gui: `./run_ui.sh one_line_canvas.tal`) (to run debugger: `../uxn/bin/uxnasm one_line_canvas.tal one_line_canvas.rom && ../uxn/bin/uxnemu ../beetbug.rom ./one_line_canvas.rom`) %dbug { #01 .System/debug DEO } %PX { #01 .Screen/pixel DEO } |0100 @on-reset setup-gui #58 #58 #1f draw-h-line #58 #58 #1f #02 MUL draw-h-line #1f #58 #1f draw-v-line #1f #02 #58 MUL #1f draw-v-line BRK @draw-v-line ( l x y ) SWP ( l y x ) #00 ( l y x 00 ) SWP .Screen/x DEO2 ( l y ) ( store vars ) !{ &y $1 &l $1 } ,/y STR ,/l STR &loop ( set y ) ,/y LDR DUP ( y y ) #00 SWP ( y 00 y ) .Screen/y DEO2 ( y ) ( draw pixel ) PX ( incrment y ) INC ( y+1 ) ,/y STR ( ) ( decrement l ) ,/l LDR #01 ( l 01 ) SUB ( l-1 ) ,/l STRk POP ( l ) #00 NEQ ?&loop JMP2r @draw-h-line ( l x y ) #00 ( l x y 00 ) SWP .Screen/y DEO2 ( l x ) ( store vars ) !{ &x $1 &l $1 } ,/x STR ,/l STR &loop ( set x ) ,/x LDR DUP ( x x ) #00 SWP ( x 00 x ) .Screen/x DEO2 ( x ) ( draw pixel ) PX ( incrment x ) INC ( x+1 ) ,/x STR ( ) ( decrement l ) ,/l LDR #01 ( l 01 ) SUB ( l-1 ) ,/l STRk POP ( l ) #00 NEQ ?&loop JMP2r @setup-gui ( -- ) (set screen height and width the 3x canvas size) LIT2 =canvas-width #0003 MUL2 .Screen/width DEO2 LIT2 =canvas-height #0003 MUL2 .Screen/height DEO2 (set basic color scheme) #f07f .System/r DEO2 #f0d6 .System/g DEO2 #f0b2 .System/b DEO2 JMP2r