commit f4f05d0

Devine Lu Linvega  ·  2024-06-29 19:24:01 +0000 UTC
parent d49514e
Removed indirections in console
4 files changed,  +34, -34
+14, -14
 1@@ -43,11 +43,11 @@ static pid_t child_pid;
 2 struct winsize ws = {24, 80, 8, 12};
 3 
 4 static void
 5-parse_args(Uxn *u, Uint8 *d)
 6+parse_args(Uint8 *d)
 7 {
 8 	Uint8 *port_addr = d + 0x3;
 9 	int addr = PEEK2(port_addr);
10-	char *pos = (char *)&u->ram[addr];
11+	char *pos = (char *)&uxn.ram[addr];
12 	int i = 0;
13 	do {
14 		fork_args[i++] = pos;
15@@ -82,21 +82,21 @@ clean_after_child(void)
16 }
17 
18 int
19-console_input(Uxn *u, char c, int type)
20+console_input(char c, int type)
21 {
22-	Uint8 *d = &u->dev[0x10];
23+	Uint8 *d = &uxn.dev[0x10];
24 	d[0x2] = c;
25 	d[0x7] = type;
26-	return uxn_eval(u, PEEK2(d));
27+	return uxn_eval(&uxn, PEEK2(d));
28 }
29 
30 void
31-console_listen(Uxn *u, int i, int argc, char **argv)
32+console_listen(int i, int argc, char **argv)
33 {
34 	for(; i < argc; i++) {
35 		char *p = argv[i];
36-		while(*p) console_input(u, *p++, CONSOLE_ARG);
37-		console_input(u, '\n', i == argc - 1 ? CONSOLE_END : CONSOLE_EOA);
38+		while(*p) console_input(*p++, CONSOLE_ARG);
39+		console_input('\n', i == argc - 1 ? CONSOLE_END : CONSOLE_EOA);
40 	}
41 }
42 
43@@ -191,12 +191,12 @@ kill_child(Uint8 *d, int options)
44 }
45 
46 static void
47-start_fork(Uxn *u, Uint8 *d)
48+start_fork(Uint8 *d)
49 {
50 	fflush(stderr);
51 	kill_child(d, 0);
52 	child_mode = d[0x5];
53-	parse_args(u, d);
54+	parse_args(d);
55 	if(child_mode >= 0x80)
56 		start_fork_pty(d);
57 	else
58@@ -204,9 +204,9 @@ start_fork(Uxn *u, Uint8 *d)
59 }
60 
61 Uint8
62-console_dei(Uxn *u, Uint8 addr)
63+console_dei(Uint8 addr)
64 {
65-	Uint8 port = addr & 0x0f, *d = &u->dev[addr & 0xf0];
66+	Uint8 port = addr & 0x0f, *d = &uxn.dev[addr & 0xf0];
67 	switch(port) {
68 	case 0x6:
69 	case 0x7: kill_child(d, WNOHANG);
70@@ -215,11 +215,11 @@ console_dei(Uxn *u, Uint8 addr)
71 }
72 
73 void
74-console_deo(Uxn *u, Uint8 *d, Uint8 port)
75+console_deo(Uint8 *d, Uint8 port)
76 {
77 	FILE *fd = NULL;
78 	switch(port) {
79-	case 0x5: /* Console/dead */ start_fork(u, d); break;
80+	case 0x5: /* Console/dead */ start_fork(d); break;
81 	case 0x6: /* Console/exit*/ kill_child(d, 0); break;
82 	case 0x8: fd = stdout; break;
83 	case 0x9: fd = stderr; break;
+4, -4
 1@@ -14,7 +14,7 @@ WITH REGARD TO THIS SOFTWARE.
 2 #define CONSOLE_EOA 0x3
 3 #define CONSOLE_END 0x4
 4 
 5-int console_input(Uxn *u, char c, int type);
 6-void console_listen(Uxn *u, int i, int argc, char **argv);
 7-Uint8 console_dei(Uxn *u, Uint8 addr);
 8-void console_deo(Uxn *u, Uint8 *d, Uint8 port);
 9+int console_input(char c, int type);
10+void console_listen(int i, int argc, char **argv);
11+Uint8 console_dei(Uint8 addr);
12+void console_deo(Uint8 *d, Uint8 port);
+4, -4
 1@@ -49,7 +49,7 @@ emu_dei(Uint8 addr)
 2 {
 3 	switch(addr & 0xf0) {
 4 	case 0x00: return system_dei(addr);
 5-	case 0x10: return console_dei(&uxn, addr);
 6+	case 0x10: return console_dei(addr);
 7 	case 0x20: return screen_dei(addr);
 8 	case 0xc0: return datetime_dei(addr);
 9 	}
10@@ -67,7 +67,7 @@ emu_deo(Uint8 addr, Uint8 value)
11 		if(p > 0x7 && p < 0xe)
12 			screen_palette(&uxn.dev[0x8]);
13 		break;
14-	case 0x10: console_deo(&uxn, &uxn.dev[d], p); break;
15+	case 0x10: console_deo(&uxn.dev[d], p); break;
16 	case 0x20: screen_deo(&uxn.dev[d], p); break;
17 	case 0xa0: file_deo(0, uxn.ram, &uxn.dev[d], p); break;
18 	case 0xb0: file_deo(1, uxn.ram, &uxn.dev[d], p); break;
19@@ -260,7 +260,7 @@ emu_run(void)
20 			n = read(fds[2].fd, coninp, CONINBUFSIZE - 1);
21 			coninp[n] = 0;
22 			for(i = 0; i < n; i++)
23-				console_input(&uxn, coninp[i], CONSOLE_STD);
24+				console_input(coninp[i], CONSOLE_STD);
25 		}
26 	}
27 	return 1;
28@@ -287,7 +287,7 @@ main(int argc, char **argv)
29 	/* Game Loop */
30 	uxn.dev[0x17] = argc - i;
31 	if(uxn_eval(&uxn, PAGE_PROGRAM)) {
32-		console_listen(&uxn, i, argc, argv);
33+		console_listen(i, argc, argv);
34 		emu_run();
35 	}
36 	return emu_end();
+12, -12
 1@@ -25,7 +25,7 @@ emu_dei(Uint8 addr)
 2 {
 3 	switch(addr & 0xf0) {
 4 	case 0x00: return system_dei(addr);
 5-	case 0x10: return console_dei(&uxn, addr);
 6+	case 0x10: return console_dei(addr);
 7 	case 0xc0: return datetime_dei(addr);
 8 	}
 9 	return uxn.dev[addr];
10@@ -38,30 +38,30 @@ emu_deo(Uint8 addr, Uint8 value)
11 	uxn.dev[addr] = value;
12 	switch(d) {
13 	case 0x00: system_deo(&uxn.dev[d], p); break;
14-	case 0x10: console_deo(&uxn, &uxn.dev[d], p); break;
15+	case 0x10: console_deo(&uxn.dev[d], p); break;
16 	case 0xa0: file_deo(0, uxn.ram, &uxn.dev[d], p); break;
17 	case 0xb0: file_deo(1, uxn.ram, &uxn.dev[d], p); break;
18 	}
19 }
20 
21 static void
22-emu_run(Uxn *u)
23+emu_run(void)
24 {
25-	while(!u->dev[0x0f]) {
26+	while(!uxn.dev[0x0f]) {
27 		int c = fgetc(stdin);
28 		if(c == EOF) {
29-			console_input(u, 0x00, CONSOLE_END);
30+			console_input(0x00, CONSOLE_END);
31 			break;
32 		}
33-		console_input(u, (Uint8)c, CONSOLE_STD);
34+		console_input((Uint8)c, CONSOLE_STD);
35 	}
36 }
37 
38 static int
39-emu_end(Uxn *u)
40+emu_end(void)
41 {
42-	free(u->ram);
43-	return u->dev[0x0f] & 0x7f;
44+	free(uxn.ram);
45+	return uxn.dev[0x0f] & 0x7f;
46 }
47 
48 int
49@@ -78,8 +78,8 @@ main(int argc, char **argv)
50 	/* Game Loop */
51 	uxn.dev[0x17] = argc - i;
52 	if(uxn_eval(&uxn, PAGE_PROGRAM) && PEEK2(uxn.dev + 0x10)) {
53-		console_listen(&uxn, i, argc, argv);
54-		emu_run(&uxn);
55+		console_listen(i, argc, argv);
56+		emu_run();
57 	}
58-	return emu_end(&uxn);
59+	return emu_end();
60 }