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;