...
|
...
|
@@ -36,14 +36,12 @@ static void
|
36
|
36
|
system_cmd(Uint8 *ram, Uint16 addr)
|
37
|
37
|
{
|
38
|
38
|
if(ram[addr] == 0x01) {
|
39
|
|
- int src, dst;
|
40
|
|
- Uint16 i, args[5]; /* length, a_page, a_addr, b_page, b_addr */
|
41
|
|
- for(i = 0; i < 5; i++)
|
42
|
|
- args[i] = PEEK16(ram + addr + 1 + i * 2);
|
43
|
|
- src = (args[1] % RAM_PAGES) * 0x10000;
|
44
|
|
- dst = (args[3] % RAM_PAGES) * 0x10000;
|
45
|
|
- for(i = 0; i < args[0]; i++)
|
46
|
|
- ram[dst + (Uint16)(args[4] + i)] = ram[src + (Uint16)(args[2] + i)];
|
|
39
|
+ Uint16 i, length = PEEK16(ram + addr + 1);
|
|
40
|
+ Uint16 a_page = PEEK16(ram + addr + 1 + 2), a_addr = PEEK16(ram + addr + 1 + 4);
|
|
41
|
+ Uint16 b_page = PEEK16(ram + addr + 1 + 6), b_addr = PEEK16(ram + addr + 1 + 8);
|
|
42
|
+ int src = (a_page % RAM_PAGES) * 0x10000, dst = (b_page % RAM_PAGES) * 0x10000;
|
|
43
|
+ for(i = 0; i < length; i++)
|
|
44
|
+ ram[dst + (Uint16)(b_addr + i)] = ram[src + (Uint16)(a_addr + i)];
|
47
|
45
|
}
|
48
|
46
|
}
|
49
|
47
|
|