diff --git a/gui/sixels/build.sh b/gui/sixels/build.sh new file mode 100755 index 0000000..fe30c1a --- /dev/null +++ b/gui/sixels/build.sh @@ -0,0 +1,27 @@ +#!/bin/sh -e + +ASM="uxncli $HOME/roms/drifblim.rom" +EMU="uxnemu" +LIN="uxncli $HOME/roms/uxnlin.rom" + +ID="sixels" +SRC="${ID}.tal" +DST="${ID}.rom" + +CPY="$HOME/roms" +ARG="" + +if [[ "$*" == *"--lint"* ]] +then + $LIN $SRC +fi + +$ASM $SRC $DST + +if [[ "$*" == *"--save"* ]] +then + cp $DST $CPY +fi + +$EMU $DST $ARG + diff --git a/gui/sixels/sixels.tal b/gui/sixels/sixels.tal index 7abd15c..500a7f9 100644 --- a/gui/sixels/sixels.tal +++ b/gui/sixels/sixels.tal @@ -1,29 +1,37 @@ -@draw-sixel ( str* -- str* ) +|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 - [ LITr -Screen/y ] DEI2r - .Screen/x DEI2 ,&x STR2 - INC2 - &w - LDAk #21 LTH ?&end - ( line feed ) - LDAk LIT "- NEQ ?&no-lf - [ LIT2 &x $2 ] .Screen/x DEO2 - .Screen/y DEI2k #0006 ADD2 ROT DEO2 - INC2 !&w - &no-lf - ( pixel ) - LDAk LIT "? SUB ,&t STR - is-selected ,&sel STR - .Screen/y DEI2 +|0100 + +@on-reset ( -> ) + #f07f .System/r DEO2 + #f0d6 .System/g DEO2 + #f0b2 .System/b DEO2 + #0020 DUP2 .Screen/x DEO2 + .Screen/y DEO2 + ;sample + BRK + +@ ( data* -- ) + [ LIT2 02 -Screen/auto ] DEO + .Screen/x DEI2 ,&anchor STR2 + &w ( -- ) + LDAk [ LIT "- ] EQU ?&line-feed + LDAk [ LIT "? ] SUB ,&t STR #0600 - &col - DUP #05 NEQ INC .Screen/auto DEO - [ LIT &t $1 ] OVR SFT #01 AND [ LIT &sel $1 ] ADD .Screen/pixel DEO - INC GTHk ?&col - POP2 - .Screen/y DEO2 - INC2 !&w &end - STH2r .Screen/y DEO2 - #15 .Screen/auto DEO + &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 + & INC2 LDAk ?&w + POP2 JMP2r + &line-feed ( data* -- next-data* ) + [ LIT2 &anchor $2 ] .Screen/x DEO2 + .Screen/y DEI2k #0006 ADD2 ROT DEO2 + !& + +@sample [ "???owYn||~ywo??-?IRJaVNn^NVbJRI $1 ] -JMP2r