From 1733ebca0ff147b386457fd279dddd3e1d598920 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Mon, 9 Dec 2024 13:26:33 -0800 Subject: [PATCH] (console.tal) Modernized example --- 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 index 23ef375..5997039 100644 --- 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 + .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 BRK @on-argument ( -> ) - .Console/read DEI .buf skey ?{ BRK } - - ;dict/yousent - LIT "" #18 DEO - ;buf / - LIT "" #18 DEO - #0a18 DEO - ;buf sclr/ .Console/type DEI #04 NEQ ?{ - ;dict/argend - ;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 + [ 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 - - ;dict/yousaid - LIT "" #18 DEO - ;buf / - 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 + ;Dict/quit scmp ?quit + [ LIT2 -std _&ptr ] STR + BRK -@ ( -- ) - [ LIT2 00 -Console/type ] DEI #01 GTH DUP ADD ;types ADD2 - ( ) LDA2 !/ +@quit ( buf* -> ) + #800f DEO + BRK + +@ ( buf* name* -- ) + + [ LIT2 "" 18 ] DEO + / + [ LIT2 "" 18 ] DEO + [ LIT2 00 -Console/type ] DEI DUP ADD ;Types ADD2 LDA2 / + #0a18 DEO + JMP2r ( @|stdlib ) @ ( str* -- ) - &w ( -- ) - LDAk #18 DEO - INC2 & LDAk ?&w + LDAk #18 DEO + INC2 & LDAk ? POP2 JMP2r -@sclr ( str* -- ) - &w ( -- ) - STH2k #00 STH2r STA - INC2 & LDAk ?&w - 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 -@ ( short* -- ) - SWP /b - &b ( -- ) - DUP #04 SFT /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 " $1 + &arg-stdin " $1 + &arg-data " $1 + &arg-spacer " $1 + &arg-end " $1