commit a55b07e

Devine Lu Linvega  ·  2024-02-26 00:06:14 +0000 UTC
parent b9a79ec
(uxnasm) Added support for partial label jsi
2 files changed,  +10, -8
+7, -5
 1@@ -22,21 +22,23 @@
 2 
 3 BRK
 4 
 5-( 
 6+(
 7 @| test label inheritance )
 8 
 9-@object 
10-
11-&x $1 &y $1
12+@Object &x $1 &y $1
13 
14 &get-x ( -- x )
15 	,&x LDR
16 	JMP2r
17 
18-@object/get-y ( -- y )
19+@Object/get-y ( -- y )
20 	,&y LDR
21 	JMP2r
22 
23+@Object/get-both ( -- x y )
24+	/get-x /get-y
25+	JMP2r
26+
27 ( raw lambda length )
28 _{ 01 02 03 }
29 
+3, -3
 1@@ -195,7 +195,7 @@ makereference(char *scope, char *label, char rune, Uint16 addr)
 2 	if(label[0] == '{') {
 3 		p.lambda_stack[p.lambda_ptr++] = p.lambda_count;
 4 		scpy(makelambda(p.lambda_count++), r->name, 0x40);
 5-	} else if(label[0] == '&') {
 6+	} else if(label[0] == '&' || label[0] == '/') {
 7 		if(!sublabel(subw, scope, label + 1))
 8 			return error("Invalid sublabel", label);
 9 		scpy(subw, r->name, 0x40);
10@@ -321,7 +321,7 @@ parse(char *w, FILE *f)
11 		if(!makelabel(w + 1))
12 			return error("Invalid label", w);
13 		i = 0;
14-		while(w[i + 1] != '/' && i < 0x3e && (p.scope[i] = w[i + 1])) 
15+		while(w[i + 1] != '/' && i < 0x3e && (p.scope[i] = w[i + 1]))
16 			i++;
17 		p.scope[i] = '\0';
18 		break;
19@@ -502,7 +502,7 @@ main(int argc, char *argv[])
20 	if(argc == 1)
21 		return error("usage", "uxnasm [-v] input.tal output.rom");
22 	if(argv[1][0] == '-' && argv[1][1] == 'v')
23-		return !fprintf(stdout, "Uxnasm - Uxntal Assembler, 24 Feb 2024.\n");
24+		return !fprintf(stdout, "Uxnasm - Uxntal Assembler, 25 Feb 2024.\n");
25 	if(!(src = fopen(argv[1], "r")))
26 		return !error("Invalid input", argv[1]);
27 	if(!assemble(src))