commit 1733ebca0ff147b386457fd279dddd3e1d598920 parent dbb111376d38ba9848157615abaee9f33cf7200e Author: Devine Lu Linvega <aliceffekt@gmail.com> Date: Mon, 9 Dec 2024 13:26:33 -0800 (console.tal) Modernized example Diffstat:
M | projects/examples/devices/console.tal | | | 124 | +++++++++++++++++++++++++++++++++---------------------------------------------- |
1 file changed, 52 insertions(+), 72 deletions(-)
diff --git a/projects/examples/devices/console.tal b/projects/examples/devices/console.tal @@ -1,108 +1,88 @@ -( usage: uxncli console.rom arg1 arg2 arg3 Prints Hello Uxn!, and listens for incoming stdin events on enter. ) +( usage: uxncli console.rom foo "bar baz" +| Prints Welcome to Uxn!, and listens for incoming stdin events on enter. ) |10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 -|0000 +|000 - @buf + @arg $40 + @std $40 -|0100 +|100 @on-reset ( -> ) + ;Dict/hello <print-str> + .Console/type DEI ?{ + ( | no arguments ) + ;on-stdin .Console/vector DEO2 + BRK } ;on-argument .Console/vector DEO2 - .Console/type DEI ?{ ;on-stdin .Console/vector DEO2 } - ;dict/hello <print-str> BRK @on-argument ( -> ) - .Console/read DEI .buf skey ?{ BRK } - <print-type> - ;dict/yousent <print-str> - LIT "" #18 DEO - ;buf <print-str>/ - LIT "" #18 DEO - #0a18 DEO - ;buf sclr/ .Console/type DEI #04 NEQ ?{ - ;dict/argend <print-str> - ;on-stdin .Console/vector DEO2 } + [ LIT2 02 -Console/type ] DEI NEQ ?{ + .Console/read DEI [ LIT2 00 &ptr -arg ] INCk ,&ptr STR + STZ2 + BRK } + ;arg ;Dict/yousent <print-result> + [ LIT2 04 -Console/type ] DEI NEQ ?{ ;on-stdin .Console/vector DEO2 } + [ LIT2 -arg _&ptr ] STR BRK @on-stdin ( -> ) - .Console/read DEI .buf skey ?{ BRK } - ;buf ;dict/quit scmp ?&quit - <print-type> - ;dict/yousaid <print-str> - LIT "" #18 DEO - ;buf <print-str>/ - LIT "" #18 DEO - #0a18 DEO - ;buf sclr/ BRK - &quit ( buf* -> ) - #800f DEO - BRK + [ LIT2 0a -Console/read ] DEI EQU ?{ + .Console/read DEI [ LIT2 00 &ptr -std ] INCk ,&ptr STR + STZ2 + BRK } + ;std DUP2 ;Dict/yousaid <print-result> + ;Dict/quit scmp ?quit + [ LIT2 -std _&ptr ] STR + BRK + +@quit ( buf* -> ) + #800f DEO + BRK -@<print-type> ( -- ) - [ LIT2 00 -Console/type ] DEI #01 GTH DUP ADD ;types ADD2 - ( ) LDA2 !<print-str>/ +@<print-result> ( buf* name* -- ) + <print-str> + [ LIT2 "" 18 ] DEO + <print-str>/ + [ LIT2 "" 18 ] DEO + [ LIT2 00 -Console/type ] DEI DUP ADD ;Types ADD2 LDA2 <print-str>/ + #0a18 DEO + JMP2r ( @|stdlib ) @<print-str> ( str* -- ) - &w ( -- ) - LDAk #18 DEO - INC2 & LDAk ?&w - POP2 JMP2r - -@sclr ( str* -- ) - &w ( -- ) - STH2k #00 STH2r STA - INC2 & LDAk ?&w + LDAk #18 DEO + INC2 & LDAk ?<print-str> POP2 JMP2r -@skey ( key buf -- proc ) - OVR #20 LTH ?{ - #00 SWP sput #00 JMP2r } - POP2 #01 JMP2r - -@scap ( str* -- end* ) - &w ( -- ) - INC2 & LDAk ?&w - JMP2r - -@sput ( chr str* -- ) - scap/ STA - JMP2r - @scmp ( a* b* -- f ) STH2 &l ( a* b* -- f ) - LDAk LDAkr STHr NEQk ?&d - DUP EOR EQUk ?&d - POP2 INC2 INC2r !&l - &d ( a* c1 c2 b* -- f ) - NIP2 POP2r EQU JMP2r + LDAk LDAkr STHr NEQk ?&d + DUP EOR EQUk ?&d + POP2 INC2 INC2r !&l -@<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 + &d ( a* c1 c2 b* -- f ) + NIP2 POP2r EQU JMP2r ( @|assets ) -@types - =dict/std =dict/arg +@Types =Dict/arg-none =Dict/arg-stdin =Dict/arg-data =Dict/arg-spacer =Dict/arg-end -@dict ( ) +@Dict &hello "Welcome 20 "to 20 "Uxn! 0a $1 &yousaid "You 20 "said: 20 $1 &yousent "You 20 "sent: 20 $1 - &std "(std) $1 - &arg "(arg) $1 &quit "quit $1 - &argend "(argend) 0a $1 + &arg-none "<none> $1 + &arg-stdin "<stdin> $1 + &arg-data "<data> $1 + &arg-spacer "<spacer> $1 + &arg-end "<end> $1