uxn

Varvara Ordinator, written in ANSI C(SDL2)
git clone https://git.eamoncaddigan.net/uxn.git
Log | Files | Refs | README | LICENSE

commit a9527fbd959d032f5505b049a3ea3b1adfb0b6bb
parent fbba9b304dc48b98537cac5500e2c47680613051
Author: Devine Lu Linvega <aliceffekt@gmail.com>
Date:   Sun, 16 Apr 2023 22:03:44 -0700

(console.tal) Added input type port to example

Diffstat:
Mprojects/examples/devices/console.tal | 72+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
Msrc/uxncli.c | 2+-
2 files changed, 60 insertions(+), 14 deletions(-)

diff --git a/projects/examples/devices/console.tal b/projects/examples/devices/console.tal @@ -1,7 +1,7 @@ -( Console: +( 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 $5 &write $1 &error $1 +|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 |00 @@ -10,38 +10,72 @@ |0100 ( -> ) ( set vector ) - ;on-console .Console/vector DEO2 + ;on-argument .Console/vector DEO2 ( print hello ) - ;hello-txt print-str + ;hello-txt pstr BRK -@on-console ( -> ) +@on-argument ( -> ) - .Console/read DEI .buf skey ?eval + .Console/type DEI ?&no-argend + ;on-stdin .Console/vector DEO2 + BRK + &no-argend + .Console/read DEI .buf skey ?&eval BRK -@eval ( -> ) +&eval ( -> ) - ;buf - DUP2 ;quit-txt scmp ?quit + print-type + ;yousent-txt pstr + 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 + +@on-stdin ( -> ) + + .Console/read DEI .buf skey ?&eval + +BRK + +&eval ( -> ) - ;yousaid-txt print-str + print-type + ;buf ;quit-txt scmp ?quit + ;yousaid-txt pstr LIT "" #18 DEO - DUP2 print-str + ;buf pstr LIT "" #18 DEO #0a18 DEO - sclr + ;buf sclr BRK +@print-type ( -- ) + + [ LIT2 00 -Console/type ] DEI #01 GTH DUP ADD ;types ADD2 LDA2 + +!pstr + @quit ( buf* -> ) POP2 #010f DEO BRK -@print-str ( str* -- ) +( +@|stdlib ) + +@pstr ( str* -- ) &while LDAk #18 DEO @@ -55,8 +89,20 @@ 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 + +( +@|assets ) + +@types + =std-txt + =arg-txt @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 diff --git a/src/uxncli.c b/src/uxncli.c @@ -64,7 +64,7 @@ main(int argc, char **argv) for(i = 2; i < argc; i++) { char *p = argv[i]; while(*p) console_input(&u, *p++, CONSOLE_ARG); - console_input(&u, '\n', CONSOLE_EOA); + console_input(&u, '\n', i == argc-1 ? CONSOLE_END : CONSOLE_EOA); } while(!u.dev[0x0f]) { int c = fgetc(stdin);