commit 1fb9750

Devine Lu Linvega  ·  2025-01-22 00:40:36 +0000 UTC
parent 7250a2a
Fixed bug with system/length
1 files changed,  +5, -5
+5, -5
 1@@ -87,35 +87,35 @@ system_deo(Uint8 port)
 2 	switch(port) {
 3 	case 0x3: {
 4 		Uint16 addr = PEEK2(uxn.dev + 2);
 5-		Uint16 aptr = uxn.ram + addr;
 6+		Uint8 *aptr = uxn.ram + addr;
 7 		if(uxn.ram[addr] == 0x0) {
 8-			value = uxn.ram[addr + 7];
 9-			length = PEEK2(aptr + 1);
10 			unsigned int dst_page = PEEK2(aptr + 3);
11 			unsigned int dst_addr = PEEK2(aptr + 5);
12 			unsigned int dst = dst_page * 0x10000;
13+			value = uxn.ram[addr + 7];
14+			length = PEEK2(aptr + 1);
15 			if(dst_page < RAM_PAGES)
16 				for(i = 0; i < length; i++)
17 					uxn.ram[dst + (Uint16)(dst_addr + i)] = value;
18 		} else if(uxn.ram[addr] == 0x1) {
19-			length = PEEK2(aptr + 1);
20 			unsigned int src_page = PEEK2(aptr + 3);
21 			unsigned int src_addr = PEEK2(aptr + 5);
22 			unsigned int dst_page = PEEK2(aptr + 7);
23 			unsigned int dst_addr = PEEK2(aptr + 9);
24 			unsigned int src = src_page * 0x10000;
25 			unsigned int dst = dst_page * 0x10000;
26+			length = PEEK2(aptr + 1);
27 			if(src_page < RAM_PAGES && dst_page < RAM_PAGES)
28 				for(i = 0; i < length; i++)
29 					uxn.ram[dst + (Uint16)(dst_addr + i)] = uxn.ram[src + (Uint16)(src_addr + i)];
30 		} else if(uxn.ram[addr] == 0x2) {
31-			length = PEEK2(aptr + 1);
32 			unsigned int src_page = PEEK2(aptr + 3);
33 			unsigned int src_addr = PEEK2(aptr + 5);
34 			unsigned int dst_page = PEEK2(aptr + 7);
35 			unsigned int dst_addr = PEEK2(aptr + 9);
36 			unsigned int src = src_page * 0x10000;
37 			unsigned int dst = dst_page * 0x10000;
38+			length = PEEK2(aptr + 1);
39 			if(src_page < RAM_PAGES && dst_page < RAM_PAGES)
40 				for(i = length - 1; i != 0xffff; i--)
41 					uxn.ram[dst + (Uint16)(dst_addr + i)] = uxn.ram[src + (Uint16)(src_addr + i)];