uxn-utils/gui/shaviankb/shaviankb.tal

91 lines
1.9 KiB
Tal

( uxnemu shaviankb.rom | listener )
|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
|0000
|0100
@on-reset ( -> )
#f0ef .System/r DEO2
#f0e6 .System/g DEO2
#f0e2 .System/b DEO2
#0100 .Screen/width DEO2
#0080 .Screen/height DEO2
<draw-keyboard>
( #010e DEO ) BRK
@<push-pos> ( -- )
[ LITr -Screen/x ] DEI2r
( ) [ LITr -Screen/y ] DEI2r ROT2r JMP2r
@<pop-pos> ( -- )
SWP2r STH2r .Screen/y DEO2
SWP2r STH2r .Screen/y DEO2
JMP2r
@<draw-keyboard> ( -- )
;shavian ;shavian #0010 ADD2 ;shavian #0020 ADD2 <draw-key3>
;shavian ;shavian #0010 ADD2 ;shavian #0020 ADD2 <draw-key3>
JMP2r
@<draw-glyph> ( addr* -- )
STH2k .Screen/addr DEO2
[ LIT2 15 -Screen/auto ] DEO
[ LIT2 05 -Screen/sprite ] DEOk
( ) STH2r .Screen/addr DEO2
( ) .Screen/x DEI2k #0007 SUB2 ROT DEO2
DEO
JMP2r
@<draw-key3> ( a* b* c* -- )
<push-pos>
<draw-button>
.Screen/x DEI2k #0004 ADD2 ROT DEO2
.Screen/y DEI2k #0004 ADD2 ROT DEO2
( | a )
<draw-glyph>
.Screen/x DEI2k #0004 SUB2 ROT DEO2
.Screen/y DEI2k #0008 ADD2 ROT DEO2
( | b )
<draw-glyph>
.Screen/x DEI2k #0004 SUB2 ROT DEO2
.Screen/y DEI2k #0008 ADD2 ROT DEO2
( | c )
<draw-glyph>
<pop-pos>
.Screen/x DEI2k #0008 ADD2 ROT DEO2
JMP2r
@<draw-button> ( -- )
.Screen/x DEI2 .Screen/y DEI2
( | draw )
[ LIT2 36 -Screen/auto ] DEO
;button-icn/top .Screen/addr DEO2
[ LIT2 01 -Screen/sprite ] DEOk DEOk
( ) ;button-icn/middle .Screen/addr DEO2
DEOk
( ) ;button-icn/middle .Screen/addr DEO2
DEOk
( ) ;button-icn/middle .Screen/addr DEO2
DEOk DEO
.Screen/y DEO2
.Screen/x DEO2
JMP2r
(
@|stdlib )
@<phex> ( short* -- )
SWP <phex>/b
&b ( -- )
DUP #04 SFT <phex>/c
&c ( -- )
#0f AND DUP #09 GTH #27 MUL ADD [ LIT "0 ] ADD #18 DEO
JMP2r
~assets.tal