|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1 |20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 |0100 @on-reset ( -> ) #f07f .System/r DEO2 #f0d6 .System/g DEO2 #f0b2 .System/b DEO2 #0020 DUP2 .Screen/x DEO2 .Screen/y DEO2 #0050 DUP2 .Screen/width DEO2 .Screen/height DEO2 ( | begin ) ;sample BRK @ ( data* -- ) [ LIT2 02 -Screen/auto ] DEO .Screen/x DEI2 ,&anchor STR2 &w ( -- ) LDAk [ LIT "$ ] EQU ?&op-over LDAk [ LIT "- ] EQU ?&op-line LDAk [ LIT "! ] EQU ?&op-rle LDAk [ LIT "? ] SUB /op-col & INC2 LDAk ?&w POP2 JMP2r &op-line ( -- ) .Screen/y DEI2k #0006 ADD2 ROT DEO2 &op-over ( -- ) [ LIT2 &anchor $2 ] .Screen/x DEO2 !& @/op-rle ( addr* -- addr* ) ( rune ) INC2 ( length ) sdec ( target ) OVR2 LDA ,&t STR #0000 &l ( -- ) [ LIT &t $1 ] /op-col INC2 GTH2k ?&l POP2 POP2 INC2 !/ @/op-col ( byte -- ) ,&t STR #0600 &l ( -- ) [ LIT &t $1 ] OVR SFT #01 AND .Screen/pixel DEO INC GTHk ?&l POP2 ( | advance ) .Screen/x DEI2k INC2 ROT DEO2 .Screen/y DEI2k #0006 SUB2 ROT DEO2 JMP2r @sdec ( str* -- str* val* ) [ LIT2r 0000 ] &w ( -- ) ( validate ) LDAk [ LIT "0 ] SUB #09 GTH ?&end ( accumulate ) [ LIT2r 000a ] MUL2r ( combine ) LDAk [ LIT "0 ] SUB [ LITr 00 ] STH ADD2r ( continue ) INC2 LDAk ?&w &end STH2r JMP2r @sample [ "???owYn||~ywo??-?IRJaVNn^NVbJRI $1 ] @sample-rle [ "||||!12w $1 ]