( teatimer ) |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 |80 @Controller &vector $2 &button $1 &key $1 |90 @Mouse &vector $2 &x $2 &y $1 &ylb $1 &state $1 &chord $1 &pad $4 &scrolly &scrolly-hb $1 &scrolly-lb $1 |c0 @DateTime &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 |000 @remaining-seconds $2 @height $2 |100 @on-reset ( -> ) ( | meta ) ;meta #06 DEO2 ( | theme ) #b0ff .System/r DEO2 #f0df .System/g DEO2 #c0bf .System/b DEO2 ( | vector ) ;on-frame .Screen/vector DEO2 ;on-mouse .Mouse/vector DEO2 ( | screen size ) #0148 .Screen/width DEO2 #0110 .Screen/height DEO2 BRK @on-frame-freeze ( -> ) [ LIT &lock $1 ] INCk ,&lock STR ?{ ;on-frame .Screen/vector DEO2 } BRK @on-frame ( -> ) .remaining-seconds LDZ2 ORAk ?{ POP2 BRK } [ LIT2 40 &f $1 ] INCk ,&f STR NEQ ?{ [ LIT2 00 _&f ] STR DUP2 #0001 SUB2 } POP2 BRK @on-mouse ( -> ) #4100 [ LIT2 00 -Mouse/state ] DEI NEQ #30 SFT2 ;hand-icn ADD2 .Mouse/state DEI ?{ BRK } ( | down ) .Mouse/ylb DEI #10 SUB DUP #f0 GTH ?{ #00 OVR } POP BRK @meta 00 ( name ) "Tea 20 "Timer 0a ( details ) "Null ( author ) "By 20 "Dave 20 "Van 20 "Ee 0a ( date ) "12 20 "Jan 20 "2024 $1 ( elements ) 00 ( @|core ) @ ( -- ) ;on-frame-freeze .Screen/vector DEO2 #c0 ;on-frame-freeze/lock STA JMP2r @ ( seconds* -- ) DUP2 .remaining-seconds STZ2 #0007 DIV2 .height STZ2 JMP2r @ ( distance* -- ) DUP2 .height EQU2k ?{ STZ2 #0007 MUL2 .remaining-seconds STZ2 ! } POP2 POP2 JMP2r ( @|drawing ) @ ( -- ) ( | markers ) ;tick-icn .Screen/addr DEO2 [ LIT2 f1 -Screen/auto ] DEO #0030 .Screen/x DEO2 #0010 .Screen/y DEO2 [ LIT2r 05 -Screen/sprite ] DEOkr [ LIT2 d1 -Screen/auto ] DEO #0030 .Screen/x DEO2 #0090 .Screen/y DEO2 DEOr ( | labels ) #0038 .Screen/x DEO2 #000c .Screen/y DEO2 [ LIT2 02 -Screen/auto ] DEO [ LIT2r =label-tilemap ] #1f00 &>l ( -- ) LDAkr #00 STHr INC2r ;digits ADD2 .Screen/addr DEO2 [ LIT2 05 -Screen/sprite ] DEO INC GTHk ?&>l POP2 ( | labels, cont ) #0040 .Screen/x DEO2 #000c .Screen/y DEO2 #1f00 &>ll ( -- ) LDAkr #00 STHr INC2r ;digits ADD2 .Screen/addr DEO2 [ LIT2 05 -Screen/sprite ] DEO INC GTHk ?&>ll POP2 POP2r JMP2r @ ( -- ) ;fill-icn .Screen/addr DEO2 ( | top ) #0010 .Screen/x DEO2 #0010 .Screen/y DEO2 [ LIT2 f1 -Screen/auto ] DEO [ LIT2 03 -Screen/sprite ] DEOk DEOk DEOk DEO ( | bottom ) #0010 .Screen/x DEO2 #0090 .Screen/y DEO2 [ LIT2 d1 -Screen/auto ] DEO [ LIT2 03 -Screen/sprite ] DEOk DEOk DEOk DEO ( >> ) @ ( -- ) #0010 .Screen/x DEO2 ( | all ) [ LIT2 32 -Screen/auto ] DEO ;line-icn .Screen/addr DEO2 [ LIT2r 05 -Screen/sprite ] .height LDZ2 #0010 ADD2 #0010 &>l ( -- ) DUP2 .Screen/y DEO2 DEOkr INC2 GTH2k ?&>l POP2 POP2 POP2r JMP2r @ ( color addr* -- ) [ LIT2 00 -Screen/auto ] DEO ;fill-icn .Screen/addr DEO2 #40 .Screen/addr DEO2 .Mouse/x DEI2 ,/x STR2 .Mouse/y DEI2 ,/y STR2 ( >> ) @ ( color -- ) [ LIT2 &x $2 ] .Screen/x DEO2 [ LIT2 &y $2 ] .Screen/y DEO2 .Screen/sprite DEO JMP2r ( @|stdlib ) @ ( short* -: ) SWP /b &b ( byte -: ) DUP #04 SFT /c &c ( byte -: ) #0f AND DUP #09 GTH #27 MUL ADD [ LIT "0 ] ADD #18 DEO JMP2r ( @|assets ) @hand-icn [ 4040 787c fcfc 7c38 ] &down [ 0000 787c fcfc 7c38 ] @tick-icn [ 7e00 0000 7000 0000 ] @fill-icn [ ffff ffff ffff ffff ] @line-icn [ ff00 0000 0000 0000 ] @digits ( Emmaline by damieng ) [ 0000 0000 0000 0000 3864 e2e2 e264 3800 0c3c 5c1c 1c1c 1c00 7c8e 8e1c 3870 fe00 fe8e 0c3c 8e8e 7c00 0c1c 3c5c 9cfe 1c00 3e40 7c0e 8e8e 7c00 3c62 e0ec e262 3c00 fe0e 0e1c 3870 7000 7ce2 f27c 9e8e 7c00 788c 8e6e 0e8c 7800 ] @label-tilemap [ 20 00 00 00 00 18 00 00 00 00 18 00 00 00 00 10 00 00 00 00 10 00 00 00 00 30 00 00 00 00 08 08 00 00 00 00 30 00 00 00 00 08 00 00 00 00 30 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 ]