From 8508fd3dece7221f2aef928db49c9dd94dbc0fb8 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Sun, 16 Jul 2023 10:04:40 -0700 Subject: [PATCH] Improved console device examples --- projects/examples/devices/console.read.tal | 16 ++ projects/examples/devices/console.tal | 162 ++++++++++----------- 2 files changed, 97 insertions(+), 81 deletions(-) create mode 100644 projects/examples/devices/console.read.tal diff --git a/projects/examples/devices/console.read.tal b/projects/examples/devices/console.read.tal new file mode 100644 index 0000000..b12c852 --- /dev/null +++ b/projects/examples/devices/console.read.tal @@ -0,0 +1,16 @@ +( usage: uxncli console.read.rom ) + +|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 + +|0100 + +@on-reset ( -> ) + ;on-console .Console/vector DEO2 + ( type something in the console ) + BRK + +@on-console ( -> ) + .Console/read DEI .Console/write DEO + #0a .Console/write DEO + BRK + diff --git a/projects/examples/devices/console.tal b/projects/examples/devices/console.tal index bfb195f..352135f 100644 --- a/projects/examples/devices/console.tal +++ b/projects/examples/devices/console.tal @@ -1,113 +1,113 @@ -( usage: uxncli console.rom arg1 arg2 arg3 - Prints Hello Uxn!, and listens for incoming stdin events on enter. ) +( usage: uxncli console.rom arg1 arg2 arg3 Prints Hello Uxn!, and listens for incoming stdin events on enter. ) |10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 -|00 +|0000 @buf -|0100 ( -> ) +|0100 - ( set vector ) +@on-reset ( -> ) ;on-argument .Console/vector DEO2 - ( print hello ) - ;hello-txt pstr - ( when arguments are queued ) - .Console/type DEI #00 EQU ?&no-queue - ;queue-txt pstr - &no-queue - -BRK + ;dict/hello + .Console/type DEI ?&has-arg + BRK + &has-arg ( -> ) + ;dict/queue + BRK @on-argument ( -> ) - - .Console/type DEI ?&no-argend + .Console/type DEI ?&>no-argend ;on-stdin .Console/vector DEO2 - BRK - &no-argend + BRK &>no-argend .Console/read DEI .buf skey ?&eval - -BRK - -&eval ( -> ) - - print-type - ;yousent-txt pstr + BRK + &eval ( -> ) + + ;dict/yousent LIT "" #18 DEO - ;buf pstr - LIT "" #18 DEO #0a18 DEO - ;buf sclr - - .Console/type DEI #04 NEQ ?&no-close - ;argend-txt pstr - ;on-stdin .Console/vector DEO2 - &no-close - -BRK + ;buf + LIT "" #18 DEO + #0a18 DEO + ;buf sclr .Console/type DEI #04 NEQ ?&>no-close + ;dict/argend + ;on-stdin .Console/vector DEO2 &>no-close + BRK @on-stdin ( -> ) - .Console/read DEI .buf skey ?&eval - -BRK - -&eval ( -> ) - - print-type - ;buf ;quit-txt scmp ?&quit - ;yousaid-txt pstr + BRK + &eval ( -> ) + + ;buf ;dict/quit scmp ?&quit + ;dict/yousaid LIT "" #18 DEO - ;buf pstr - LIT "" #18 DEO #0a18 DEO - ;buf sclr + ;buf + LIT "" #18 DEO + #0a18 DEO + ;buf sclr BRK + &quit ( buf* -> ) + #010f DEO + BRK -BRK - -&quit ( buf* -> ) - - #010f DEO - -BRK - -@print-type ( -- ) - - [ LIT2 00 -Console/type ] DEI #01 GTH DUP ADD ;types ADD2 LDA2 - -!pstr +@ ( -- ) + [ LIT2 00 -Console/type ] DEI #01 GTH DUP ADD ;types ADD2 LDA2 ! ( @|stdlib ) -@pstr ( str* -- ) - - &while +@ ( str* -- ) + !& + &while ( -- ) LDAk #18 DEO - INC2 LDAk ?&while - POP2 + INC2 & LDAk ?&while + POP2 JMP2r -JMP2r +@skey ( key buf -- proc ) + OVR #20 LTH ?&eval + #00 SWP sput #00 JMP2r + &eval POP2 #01 JMP2r -@skey ( key buf -- proc ) OVR #20 LTH ?&eval #00 SWP sput #00 JMP2r &eval POP2 #01 JMP2r -@sclr ( str* -- ) LDAk ?&w POP2 JMP2r &w STH2k #00 STH2r STA INC2 LDAk ?&w POP2 JMP2r -@scap ( str* -- end* ) LDAk ?&w JMP2r &w INC2 LDAk ?&w JMP2r -@sput ( chr str* -- ) scap INC2k #00 ROT ROT STA STA JMP2r -@scmp ( a* b* -- f ) STH2 &l LDAk LDAkr STHr ANDk #00 EQU ?&e NEQk ?&e POP2 INC2 INC2r !&l &e NIP2 POP2r EQU JMP2r -@phex ( short* -- ) SWP phex/b &b ( byte -- ) DUP #04 SFT phex/c &c ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO JMP2r +@sclr ( str* -- ) + !& + &while ( -- ) + STH2k #00 STH2r STA + INC2 & LDAk ?&while + POP2 JMP2r + +@scap ( str* -- end* ) + !& + &while ( -- ) + INC2 & LDAk ?&while + JMP2r + +@sput ( chr str* -- ) + scap INC2k #00 ROT ROT STA + STA + JMP2r + +@scmp ( a* b* -- f ) + STH2 + &loop ( -- ) + LDAk LDAkr STHr ANDk #00 EQU ?&e + NEQk ?&e + POP2 INC2 INC2r !&loop + &e NIP2 POP2r EQU JMP2r ( @|assets ) @types - =std-txt - =arg-txt + =dict/std =dict/arg -@hello-txt "Welcome 20 "to 20 "Uxn! 0a $1 -@yousaid-txt "You 20 "said: 20 $1 -@yousent-txt "You 20 "sent: 20 $1 -@std-txt "(std) $1 -@arg-txt "(arg) $1 -@quit-txt "quit $1 -@argend-txt "(argend) 0a $1 -@queue-txt "(queue) 0a $1 +@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 + &queue "(queue) 0a $1