(sixels) Improved implementation
This commit is contained in:
parent
f05d7c43c2
commit
1e91ea41eb
|
@ -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
|
||||||
|
|
|
@ -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
|
|0100
|
||||||
.Screen/x DEI2 ,&x STR2
|
|
||||||
INC2
|
@on-reset ( -> )
|
||||||
&w
|
#f07f .System/r DEO2
|
||||||
LDAk #21 LTH ?&end
|
#f0d6 .System/g DEO2
|
||||||
( line feed )
|
#f0b2 .System/b DEO2
|
||||||
LDAk LIT "- NEQ ?&no-lf
|
#0020 DUP2 .Screen/x DEO2
|
||||||
[ 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
|
|
||||||
#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
|
.Screen/y DEO2
|
||||||
INC2 !&w &end
|
;sample <draw-sixel>
|
||||||
STH2r .Screen/y DEO2
|
BRK
|
||||||
#15 .Screen/auto DEO
|
|
||||||
|
@<draw-sixel> ( data* -- )
|
||||||
|
[ LIT2 02 -Screen/auto ] DEO
|
||||||
|
.Screen/x DEI2 ,&anchor STR2
|
||||||
|
&w ( -- )
|
||||||
|
LDAk [ LIT "- ] EQU ?&line-feed
|
||||||
|
LDAk [ LIT "? ] SUB ,&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
|
||||||
|
& 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
|
|
||||||
|
|
Loading…
Reference in New Issue