commit d49514e

Devine Lu Linvega  ·  2024-06-29 19:16:15 +0000 UTC
parent f785d15
Removed indirection in system_deo
4 files changed,  +22, -24
+19, -21
 1@@ -101,43 +101,41 @@ system_dei(Uint8 addr)
 2 }
 3 
 4 void
 5-system_deo(Uxn *u, Uint8 *d, Uint8 port)
 6+system_deo(Uint8 *d, Uint8 port)
 7 {
 8-	Uint8 *ram;
 9 	Uint16 addr;
10 	switch(port) {
11 	case 0x3:
12-		ram = u->ram;
13 		addr = PEEK2(d + 2);
14-		if(ram[addr] == 0x0) {
15-			Uint8 value = ram[addr + 7];
16-			Uint16 i, length = PEEK2(ram + addr + 1);
17-			Uint16 dst_page = PEEK2(ram + addr + 3), dst_addr = PEEK2(ram + addr + 5);
18+		if(uxn.ram[addr] == 0x0) {
19+			Uint8 value = uxn.ram[addr + 7];
20+			Uint16 i, length = PEEK2(uxn.ram + addr + 1);
21+			Uint16 dst_page = PEEK2(uxn.ram + addr + 3), dst_addr = PEEK2(uxn.ram + addr + 5);
22 			int dst = (dst_page % RAM_PAGES) * 0x10000;
23 			for(i = 0; i < length; i++)
24-				ram[dst + (Uint16)(dst_addr + i)] = value;
25-		} else if(ram[addr] == 0x1) {
26-			Uint16 i, length = PEEK2(ram + addr + 1);
27-			Uint16 a_page = PEEK2(ram + addr + 3), a_addr = PEEK2(ram + addr + 5);
28-			Uint16 b_page = PEEK2(ram + addr + 7), b_addr = PEEK2(ram + addr + 9);
29+				uxn.ram[dst + (Uint16)(dst_addr + i)] = value;
30+		} else if(uxn.ram[addr] == 0x1) {
31+			Uint16 i, length = PEEK2(uxn.ram + addr + 1);
32+			Uint16 a_page = PEEK2(uxn.ram + addr + 3), a_addr = PEEK2(uxn.ram + addr + 5);
33+			Uint16 b_page = PEEK2(uxn.ram + addr + 7), b_addr = PEEK2(uxn.ram + addr + 9);
34 			int src = (a_page % RAM_PAGES) * 0x10000, dst = (b_page % RAM_PAGES) * 0x10000;
35 			for(i = 0; i < length; i++)
36-				ram[dst + (Uint16)(b_addr + i)] = ram[src + (Uint16)(a_addr + i)];
37-		} else if(ram[addr] == 0x2) {
38-			Uint16 i, length = PEEK2(ram + addr + 1);
39-			Uint16 a_page = PEEK2(ram + addr + 3), a_addr = PEEK2(ram + addr + 5);
40-			Uint16 b_page = PEEK2(ram + addr + 7), b_addr = PEEK2(ram + addr + 9);
41+				uxn.ram[dst + (Uint16)(b_addr + i)] = uxn.ram[src + (Uint16)(a_addr + i)];
42+		} else if(uxn.ram[addr] == 0x2) {
43+			Uint16 i, length = PEEK2(uxn.ram + addr + 1);
44+			Uint16 a_page = PEEK2(uxn.ram + addr + 3), a_addr = PEEK2(uxn.ram + addr + 5);
45+			Uint16 b_page = PEEK2(uxn.ram + addr + 7), b_addr = PEEK2(uxn.ram + addr + 9);
46 			int src = (a_page % RAM_PAGES) * 0x10000, dst = (b_page % RAM_PAGES) * 0x10000;
47 			for(i = length - 1; i != 0xffff; i--)
48-				ram[dst + (Uint16)(b_addr + i)] = ram[src + (Uint16)(a_addr + i)];
49+				uxn.ram[dst + (Uint16)(b_addr + i)] = uxn.ram[src + (Uint16)(a_addr + i)];
50 		} else
51-			fprintf(stderr, "Unknown Expansion Command 0x%02x\n", ram[addr]);
52+			fprintf(stderr, "Unknown Expansion Command 0x%02x\n", uxn.ram[addr]);
53 		break;
54 	case 0x4:
55-		u->wst.ptr = d[4];
56+		uxn.wst.ptr = d[4];
57 		break;
58 	case 0x5:
59-		u->rst.ptr = d[5];
60+		uxn.rst.ptr = d[5];
61 		break;
62 	case 0xe:
63 		system_inspect();
+1, -1
1@@ -18,6 +18,6 @@ int system_error(char *msg, const char *err);
2 int system_boot(Uint8 *ram, char *rom);
3 
4 Uint8 system_dei(Uint8 addr);
5-void system_deo(Uxn *u, Uint8 *d, Uint8 port);
6+void system_deo(Uint8 *d, Uint8 port);
7 
8 extern char *boot_rom;
+1, -1
1@@ -63,7 +63,7 @@ emu_deo(Uint8 addr, Uint8 value)
2 	uxn.dev[addr] = value;
3 	switch(d) {
4 	case 0x00:
5-		system_deo(&uxn, &uxn.dev[d], p);
6+		system_deo(&uxn.dev[d], p);
7 		if(p > 0x7 && p < 0xe)
8 			screen_palette(&uxn.dev[0x8]);
9 		break;
+1, -1
1@@ -37,7 +37,7 @@ emu_deo(Uint8 addr, Uint8 value)
2 	Uint8 p = addr & 0x0f, d = addr & 0xf0;
3 	uxn.dev[addr] = value;
4 	switch(d) {
5-	case 0x00: system_deo(&uxn, &uxn.dev[d], p); break;
6+	case 0x00: system_deo(&uxn.dev[d], p); break;
7 	case 0x10: console_deo(&uxn, &uxn.dev[d], p); break;
8 	case 0xa0: file_deo(0, uxn.ram, &uxn.dev[d], p); break;
9 	case 0xb0: file_deo(1, uxn.ram, &uxn.dev[d], p); break;