( 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 |0000 @buf |0100 @on-reset ( -> ) ;on-argument .Console/vector DEO2 ;dict/hello .Console/type DEI ?&has-arg BRK &has-arg ( -> ) ;dict/queue BRK @on-argument ( -> ) .Console/type DEI ?&>no-argend ;on-stdin .Console/vector DEO2 BRK &>no-argend .Console/read DEI .buf skey ?&eval BRK &eval ( -> ) ;dict/yousent LIT "" #18 DEO ;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 ( -> ) ;buf ;dict/quit scmp ?&quit ;dict/yousaid LIT "" #18 DEO ;buf LIT "" #18 DEO #0a18 DEO ;buf sclr BRK &quit ( buf* -> ) #010f DEO BRK @ ( -- ) [ LIT2 00 -Console/type ] DEI #01 GTH DUP ADD ;types ADD2 LDA2 ! ( @|stdlib ) @ ( str* -- ) !& &while ( -- ) LDAk #18 DEO INC2 & LDAk ?&while POP2 JMP2r @skey ( key buf -- proc ) OVR #20 LTH ?&eval #00 SWP sput #00 JMP2r &eval POP2 #01 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 =dict/std =dict/arg @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