( mp3.tal ) |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 |12 &read $1 |17 &type $1 |18 &write $1 |19 &error $1 |1c &addr $2 |1e &mode $1 |1f &exec $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 |100 @on-reset ( -> ) ( | theme ) #d2d2 DUP2 .System/r DEO2 DUP2 .System/g DEO2 .System/b DEO2 BRK ( | initialize buffer ) ;buffer ;buffer/pos STA2 ( | run mpg123 ) ;on-console .Console/vector DEO2 ;program .Console/addr DEO2 ( cmd addr ) #03 .Console/mode DEO ( cmd mode ) #01 .Console/exec DEO ( exec ) ;cmd1 print ;cmd2 print BRK @ ( -- ) ( here ) { ". $1 } STH2r .File/name DEO2 #2000 .File/length DEO2 ;dir .File/read DEO2 ;dir #0010 DUP2 .Screen/x DEO2 .Screen/y DEO2 ;dir JMP2r @ ( addr* -- ) [ LIT2 15 -Screen/auto ] DEO &>while ( -- ) LDAk #20 SUB #00 SWP ( addr ) DUP2 #50 SFT2 ;font/glyphs ADD2 .Screen/addr DEO2 ( move ) ;font ADD2 LDA #00 SWP .Screen/x DEI2 ADD2 ( draw ) [ LIT2 01 -Screen/sprite ] DEOk DEO .Screen/x DEO2 INC2 LDAk #0a NEQ ?&>while JMP2r @ ( text* -- ) [ LIT2 15 -Screen/auto ] DEO &>while ( -- ) LDAk #20 SUB #00 SWP ( addr ) DUP2 #50 SFT2 ;font/glyphs ADD2 .Screen/addr DEO2 ( move ) ;font ADD2 LDA #00 SWP .Screen/x DEI2 ADD2 ( draw ) [ LIT2 01 -Screen/sprite ] DEOk DEO .Screen/x DEO2 INC2 LDAk ?&>while POP2 JMP2r @printerr ( s* -> ) LDAk ?{ #0a .Console/error DEO POP2 JMP2r } LDAk .Console/error DEO INC2 !printerr @print ( s* -> ) LDAk ?{ POP2 JMP2r } LDAk .Console/write DEO INC2 !print @on-console ( -> ) .Console/type DEI #01 EQU ?{ BRK } .Console/read DEI #0a EQU ?&newline ;buffer/pos LDA2k STH2k .Console/read DEI STH2r STA INC2 SWP2 STA2 BRK &newline #00 ;buffer/pos LDA2 STA on-line ;buffer ;buffer/pos STA2 BRK @on-line ( -> ) ;buffer LDAk [ LIT "@ ] EQU ?{ POP2 JMP2r } INC2k LDA [ LIT "F ] EQU ?on-frame !printerr @on-frame ( buf* -> ) POP2 JMP2r @on-help ( buf* -> ) POP2r JMP2r @on-id3 ( buf* -> ) POP2 JMP2r @on-paused ( buf* -> ) POP2 JMP2r @on-revision ( buf* -> ) POP2 JMP2r @on-status ( buf* -> ) POP2 JMP2r @on-tag ( buf* -> ) POP2 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 @ ( str* -: ) LDAk #18 DEO INC2 & LDAk ? POP2 JMP2r ( @|assets ) @program "mpg123 20 "-R 00 @cmd1 "loadpaused 20 "always_wrong.mp3 0a 00 @cmd2 "pause 0a 00 ~src/assets.tal