commit a904916

Devine Lu Linvega  ·  2024-11-26 23:57:44 +0000 UTC
parent 3307991
Fixed expansion port commands
1 files changed,  +10, -10
+10, -10
 1@@ -126,17 +126,17 @@ system_deo(Uxn *u, Uint8 port)
 2 			for(i = 0; i < length; i++)
 3 				u->ram[dst + (Uint16)(dst_addr + i)] = value;
 4 		} else if(u->ram[addr] == 0x1) {
 5-			int i, j, length = PEEK2(u->ram + addr + 1);
 6-			int a_page = PEEK2(u->ram + addr + 3), a_addr = PEEK2(u->ram + addr + 5);
 7-			int b_page = PEEK2(u->ram + addr + 7), b_addr = PEEK2(u->ram + addr + 9);
 8-			int src = a_page * 0x10000, dst = b_page * 0x10000;
 9-			for(i = src + a_addr, j = dst + b_addr; i < src + a_addr + length; i++, j++)
10-				u->ram[j] = u->ram[i];
11+			Uint16 i, length = PEEK2(u->ram + addr + 1);
12+			Uint16 a_page = PEEK2(u->ram + addr + 3), a_addr = PEEK2(u->ram + addr + 5);
13+			Uint16 b_page = PEEK2(u->ram + addr + 7), b_addr = PEEK2(u->ram + addr + 9);
14+			int src = (a_page % (RAM_PAGES + 1)) * 0x10000, dst = (b_page % (RAM_PAGES + 1)) * 0x10000;
15+			for(i = 0; i < length; i++)
16+				u->ram[dst + (Uint16)(b_addr + i)] = u->ram[src + (Uint16)(a_addr + i)];
17 		} else if(u->ram[addr] == 0x2) {
18-			int i, length = PEEK2(u->ram + addr + 1);
19-			int a_page = PEEK2(u->ram + addr + 3), a_addr = PEEK2(u->ram + addr + 5);
20-			int b_page = PEEK2(u->ram + addr + 7), b_addr = PEEK2(u->ram + addr + 9);
21-			int src = a_page * 0x10000, dst = b_page * 0x10000;
22+			Uint16 i, length = PEEK2(u->ram + addr + 1);
23+			Uint16 a_page = PEEK2(u->ram + addr + 3), a_addr = PEEK2(u->ram + addr + 5);
24+			Uint16 b_page = PEEK2(u->ram + addr + 7), b_addr = PEEK2(u->ram + addr + 9);
25+			int src = (a_page % (RAM_PAGES + 1)) * 0x10000, dst = (b_page % (RAM_PAGES + 1)) * 0x10000;
26 			for(i = length - 1; i != 0xffff; i--)
27 				u->ram[dst + (Uint16)(b_addr + i)] = u->ram[src + (Uint16)(a_addr + i)];
28 		} else