commit eff6246

Devine Lu Linvega  ·  2024-06-29 18:51:12 +0000 UTC
parent 20b41ab
Removing uxn core indirection in dei deo
4 files changed,  +34, -34
+4, -4
 1@@ -97,10 +97,10 @@ uxn_eval(Uxn *u, Uint16 pc)
 2 		case 0x34: /* LDA2 */ t=T2;           SET(2, 0) N = ram[t++]; T = ram[t]; break;
 3 		case 0x15: /* STA  */ t=T2;n=L;       SET(3,-3) ram[t] = n; break;
 4 		case 0x35: /* STA2 */ t=T2;n=N2;      SET(4,-4) ram[t++] = n >> 8; ram[t] = n; break;
 5-		case 0x16: /* DEI  */ t=T;            SET(1, 0) T = emu_dei(u, t); break;
 6-		case 0x36: /* DEI2 */ t=T;            SET(1, 1) N = emu_dei(u, t++); T = emu_dei(u, t); break;
 7-		case 0x17: /* DEO  */ t=T;n=N;        SET(2,-2) emu_deo(u, t, n); break;
 8-		case 0x37: /* DEO2 */ t=T;n=N;l=L;    SET(3,-3) emu_deo(u, t++, l); emu_deo(u, t, n); break;
 9+		case 0x16: /* DEI  */ t=T;            SET(1, 0) T = emu_dei(t); break;
10+		case 0x36: /* DEI2 */ t=T;            SET(1, 1) N = emu_dei(t++); T = emu_dei(t); break;
11+		case 0x17: /* DEO  */ t=T;n=N;        SET(2,-2) emu_deo(t, n); break;
12+		case 0x37: /* DEO2 */ t=T;n=N;l=L;    SET(3,-3) emu_deo(t++, l); emu_deo(t, n); break;
13 		case 0x18: /* ADD  */ t=T;n=N;        SET(2,-1) T = n + t; break;
14 		case 0x38: /* ADD2 */ t=T2;n=N2;      SET(4,-2) T2_(n + t) break;
15 		case 0x19: /* SUB  */ t=T;n=N;        SET(2,-1) T = n - t; break;
+2, -2
 1@@ -35,8 +35,8 @@ typedef struct Uxn {
 2 
 3 /* required functions */
 4 
 5-extern Uint8 emu_dei(Uxn *u, Uint8 addr);
 6-extern void emu_deo(Uxn *u, Uint8 addr, Uint8 value);
 7+extern Uint8 emu_dei(Uint8 addr);
 8+extern void emu_deo(Uint8 addr, Uint8 value);
 9 extern Uxn uxn;
10 
11 /* built-ins */
+16, -16
 1@@ -45,32 +45,32 @@ clamp(int val, int min, int max)
 2 }
 3 
 4 Uint8
 5-emu_dei(Uxn *u, Uint8 addr)
 6+emu_dei(Uint8 addr)
 7 {
 8 	switch(addr & 0xf0) {
 9-	case 0x00: return system_dei(u, addr);
10-	case 0x10: return console_dei(u, addr);
11-	case 0x20: return screen_dei(u, addr);
12-	case 0xc0: return datetime_dei(u, addr);
13+	case 0x00: return system_dei(&uxn, addr);
14+	case 0x10: return console_dei(&uxn, addr);
15+	case 0x20: return screen_dei(&uxn, addr);
16+	case 0xc0: return datetime_dei(&uxn, addr);
17 	}
18-	return u->dev[addr];
19+	return uxn.dev[addr];
20 }
21 
22 void
23-emu_deo(Uxn *u, Uint8 addr, Uint8 value)
24+emu_deo(Uint8 addr, Uint8 value)
25 {
26 	Uint8 p = addr & 0x0f, d = addr & 0xf0;
27-	u->dev[addr] = value;
28+	uxn.dev[addr] = value;
29 	switch(d) {
30 	case 0x00:
31-		system_deo(u, &u->dev[d], p);
32+		system_deo(&uxn, &uxn.dev[d], p);
33 		if(p > 0x7 && p < 0xe)
34-			screen_palette(&u->dev[0x8]);
35+			screen_palette(&uxn.dev[0x8]);
36 		break;
37-	case 0x10: console_deo(u, &u->dev[d], p); break;
38-	case 0x20: screen_deo(u->ram, &u->dev[d], p); break;
39-	case 0xa0: file_deo(0, u->ram, &u->dev[d], p); break;
40-	case 0xb0: file_deo(1, u->ram, &u->dev[d], p); break;
41+	case 0x10: console_deo(&uxn, &uxn.dev[d], p); break;
42+	case 0x20: screen_deo(uxn.ram, &uxn.dev[d], p); break;
43+	case 0xa0: file_deo(0, uxn.ram, &uxn.dev[d], p); break;
44+	case 0xb0: file_deo(1, uxn.ram, &uxn.dev[d], p); break;
45 	}
46 }
47 
48@@ -272,7 +272,7 @@ main(int argc, char **argv)
49 	int i = 1;
50 	char *rom;
51 	if(i != argc && argv[i][0] == '-' && argv[i][1] == 'v') {
52-		fprintf(stdout, "Uxn11 - Varvara Emulator, 5 Jun 2024.\n");
53+		fprintf(stdout, "Uxn11 - Varvara Emulator, 29 Jun 2024.\n");
54 		i++;
55 	}
56 	rom = i == argc ? "boot.rom" : argv[i++];
57@@ -285,7 +285,7 @@ main(int argc, char **argv)
58 		return 0;
59 	}
60 	/* Game Loop */
61-	u.dev[0x17] = argc - i;
62+	uxn.dev[0x17] = argc - i;
63 	if(uxn_eval(&uxn, PAGE_PROGRAM)) {
64 		console_listen(&uxn, i, argc, argv);
65 		emu_run(&uxn);
+12, -12
 1@@ -21,26 +21,26 @@ WITH REGARD TO THIS SOFTWARE.
 2 Uxn uxn;
 3 
 4 Uint8
 5-emu_dei(Uxn *u, Uint8 addr)
 6+emu_dei(Uint8 addr)
 7 {
 8 	switch(addr & 0xf0) {
 9-	case 0x00: return system_dei(u, addr);
10-	case 0x10: return console_dei(u, addr);
11-	case 0xc0: return datetime_dei(u, addr);
12+	case 0x00: return system_dei(&uxn, addr);
13+	case 0x10: return console_dei(&uxn, addr);
14+	case 0xc0: return datetime_dei(&uxn, addr);
15 	}
16-	return u->dev[addr];
17+	return uxn.dev[addr];
18 }
19 
20 void
21-emu_deo(Uxn *u, Uint8 addr, Uint8 value)
22+emu_deo(Uint8 addr, Uint8 value)
23 {
24 	Uint8 p = addr & 0x0f, d = addr & 0xf0;
25-	u->dev[addr] = value;
26+	uxn.dev[addr] = value;
27 	switch(d) {
28-	case 0x00: system_deo(u, &u->dev[d], p); break;
29-	case 0x10: console_deo(u, &u->dev[d], p); break;
30-	case 0xa0: file_deo(0, u->ram, &u->dev[d], p); break;
31-	case 0xb0: file_deo(1, u->ram, &u->dev[d], p); break;
32+	case 0x00: system_deo(&uxn, &uxn.dev[d], p); break;
33+	case 0x10: console_deo(&uxn, &uxn.dev[d], p); break;
34+	case 0xa0: file_deo(0, uxn.ram, &uxn.dev[d], p); break;
35+	case 0xb0: file_deo(1, uxn.ram, &uxn.dev[d], p); break;
36 	}
37 }
38 
39@@ -72,7 +72,7 @@ main(int argc, char **argv)
40 		return system_error("usage", "uxncli [-v] file.rom [args..]");
41 	/* Read flags */
42 	if(argv[i][0] == '-' && argv[i][1] == 'v')
43-		return system_version("Uxncli - Console Varvara Emulator", "18 Mar 2024");
44+		return system_version("Uxncli - Console Varvara Emulator", "29 Jun 2024");
45 	if(!system_boot(&uxn, (Uint8 *)calloc(0x10000 * RAM_PAGES, sizeof(Uint8)), argv[i++]))
46 		return system_error("Init", "Failed to initialize uxn.");
47 	/* Game Loop */