diff --git a/gui/sixels/sixels.tal b/gui/sixels/sixels.tal index da42b09..cc246dc 100644 --- a/gui/sixels/sixels.tal +++ b/gui/sixels/sixels.tal @@ -2,68 +2,66 @@ |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 |a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 - -|0000 +|000 @src $40 -|0100 +|100 @on-reset ( -> ) #f0ef .System/r DEO2 #f0e6 .System/g DEO2 #f0e2 .System/b DEO2 - #0010 DUP2 .Screen/x DEO2 - .Screen/y DEO2 #00a0 .Screen/width DEO2 #00b0 .Screen/height DEO2 ( | begin ) + #0010 DUP2 .Screen/x DEO2 + .Screen/y DEO2 ;on-console .Console/vector DEO2 BRK @on-console ( -> ) - .Console/read DEI DUP #20 LTH OVR #7f GTH ORA ?{ - ;src scap STA + .Console/read DEI DUP #20 GTH ?{ + POP ;src .File/name DEO2 + #8000 .File/length DEO2 + ;img .File/read DEO2 + ;img + ;sample BRK } - POP - ( | load ) - ;src .File/name DEO2 - #8000 .File/length DEO2 - ;img/data .File/read DEO2 - ;img/data - ;sample + [ LIT &ptr -src ] INCk ,&ptr STR + STZ BRK @ ( data* -- ) [ LIT2 02 -Screen/auto ] DEO .Screen/x DEI2 ,&anchor STR2 - &w ( -- ) + &>w ( -- ) LDAk [ LIT "$ ] EQU ?&op-over LDAk [ LIT "- ] EQU ?&op-line LDAk [ LIT "! ] EQU ?&op-rle LDAk /op-col - & INC2 LDAk ?&w + & INC2 LDAk ?&>w POP2 JMP2r &op-line ( -- ) - .Screen/y DEI2k #0006 ADD2 ROT DEO2 + .Screen/y DEI2k #0006 ADD2 ROT DEO2 &op-over ( -- ) - [ LIT2 &anchor $2 ] .Screen/x DEO2 - !& + [ LIT2 &anchor $2 ] .Screen/x DEO2 + !& @/op-rle ( addr* -- addr* ) - INC2 sdec OVR2 LDA ,&t STR + INC2 sdec OVR2 LDA ,&trle STR #0000 - &l ( -- ) - [ LIT &t $1 ] /op-col - INC2 GTH2k ?&l + &>lrle ( -- ) + [ LIT &trle $1 ] /op-col + INC2 GTH2k ?&>lrle POP2 POP2 !/ @/op-col ( char -- ) [ LIT "? ] SUB ,&t STR #0600 - &l ( -- ) + &>l ( -- ) [ LIT &t $1 ] OVR SFT #01 AND .Screen/pixel DEO - INC GTHk ?&l + INC GTHk ?&>l POP2 ( | advance ) .Screen/x DEI2k INC2 ROT DEO2 @@ -75,21 +73,18 @@ @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 - -@scap ( str* -- end* ) - LDAk #00 NEQ [ JMP JMP2r ] &w INC2 LDAk ?&w - JMP2r + &>w ( -- ) + ( validate ) LDAk [ LIT "0 ] SUB #09 GTH ?{ + ( accumulate ) [ LIT2r 000a ] MUL2r + ( combine ) LDAk [ LIT "0 ] SUB [ LITr 00 ] STH + ADD2r + ( continue ) INC2 LDAk ?&>w } + STH2r JMP2r ( @|memory ) @sample [ "???owYn||~ywo??-?IRJaVNn^NVbJRI $1 ] -@img &data +@img