Browse code

(console.tal) Added input type port to example

Devine Lu Linvega authored on 17/04/2023 05:03:44
Showing 2 changed files
... ...
@@ -1,7 +1,7 @@
1
-( Console:
1
+( usage: uxncli console.rom arg1 arg2 arg3
2 2
 	Prints Hello Uxn!, and listens for incoming stdin events on enter. )
3 3
 
4
-|10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1
4
+|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1
5 5
 
6 6
 |00
7 7
 
... ...
@@ -10,38 +10,72 @@
10 10
 |0100 ( -> )
11 11
 
12 12
 	( set vector )
13
-	;on-console .Console/vector DEO2
13
+	;on-argument .Console/vector DEO2
14 14
 	( print hello )
15
-	;hello-txt print-str
15
+	;hello-txt pstr
16 16
 
17 17
 BRK
18 18
 
19
-@on-console ( -> )
19
+@on-argument ( -> )
20 20
 
21
-	.Console/read DEI .buf skey ?eval
21
+	.Console/type DEI ?&no-argend
22
+		;on-stdin .Console/vector DEO2
23
+		BRK
24
+		&no-argend
25
+	.Console/read DEI .buf skey ?&eval
22 26
 
23 27
 BRK
24 28
 
25
-@eval ( -> )
29
+&eval ( -> )
26 30
 
27
-	;buf
28
-		DUP2 ;quit-txt scmp ?quit
31
+	print-type
32
+	;yousent-txt pstr
33
+		LIT "" #18 DEO
34
+		;buf pstr
35
+		LIT "" #18 DEO #0a18 DEO
36
+		;buf sclr
37
+
38
+	.Console/type DEI #04 NEQ ?&no-close
39
+		;argend-txt pstr
40
+		;on-stdin .Console/vector DEO2
41
+		&no-close
42
+
43
+BRK
44
+
45
+@on-stdin ( -> )
46
+
47
+	.Console/read DEI .buf skey ?&eval
48
+
49
+BRK
50
+
51
+&eval ( -> )
29 52
 
30
-	;yousaid-txt print-str
53
+	print-type
54
+	;buf ;quit-txt scmp ?quit
55
+	;yousaid-txt pstr
31 56
 		LIT "" #18 DEO
32
-		DUP2 print-str 
57
+		;buf pstr
33 58
 		LIT "" #18 DEO #0a18 DEO
34
-		sclr
59
+		;buf sclr
35 60
 
36 61
 BRK
37 62
 
63
+@print-type ( -- )
64
+
65
+	[ LIT2 00 -Console/type ] DEI #01 GTH DUP ADD ;types ADD2 LDA2 
66
+
67
+!pstr
68
+
38 69
 @quit ( buf* -> )
39 70
 
40 71
 	POP2 #010f DEO
41 72
 
42 73
 BRK
43 74
 
44
-@print-str ( str* -- )
75
+(
76
+@|stdlib )
77
+
78
+@pstr ( str* -- )
45 79
 
46 80
 	&while
47 81
 		LDAk #18 DEO
... ...
@@ -55,8 +89,20 @@ JMP2r
55 89
 @scap ( str* -- end* ) LDAk ?&w JMP2r &w INC2 LDAk ?&w JMP2r
56 90
 @sput ( chr str* -- ) scap INC2k #00 ROT ROT STA STA JMP2r
57 91
 @scmp ( a* b* -- f ) STH2 &l LDAk LDAkr STHr ANDk #00 EQU ?&e NEQk ?&e POP2 INC2 INC2r !&l &e NIP2 POP2r EQU JMP2r
92
+@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
93
+
94
+(
95
+@|assets )
96
+
97
+@types
98
+	=std-txt
99
+	=arg-txt
58 100
 
59 101
 @hello-txt "Welcome 20 "to 20 "Uxn! 0a $1
60 102
 @yousaid-txt "You 20 "said: 20 $1
103
+@yousent-txt "You 20 "sent: 20 $1
104
+@std-txt "(std) $1
105
+@arg-txt "(arg) $1
61 106
 @quit-txt "quit $1
107
+@argend-txt "(argend) 0a $1
62 108
 
... ...
@@ -64,7 +64,7 @@ main(int argc, char **argv)
64 64
 	for(i = 2; i < argc; i++) {
65 65
 		char *p = argv[i];
66 66
 		while(*p) console_input(&u, *p++, CONSOLE_ARG);
67
-		console_input(&u, '\n', CONSOLE_EOA);
67
+		console_input(&u, '\n', i == argc-1 ? CONSOLE_END : CONSOLE_EOA);
68 68
 	}
69 69
 	while(!u.dev[0x0f]) {
70 70
 		int c = fgetc(stdin);