diff options
Diffstat (limited to 'cpu.c')
| -rw-r--r-- | cpu.c | 7 |
1 files changed, 4 insertions, 3 deletions
| @@ -196,7 +196,7 @@ opcode_mem(enum addressing_mode mode) | |||
| 196 | val = arg + regs.y; | 196 | val = arg + regs.y; |
| 197 | break; | 197 | break; |
| 198 | case AM_IND: | 198 | case AM_IND: |
| 199 | val = peek16(arg); | 199 | val = peek(arg) | (peek(((arg + 1) & 0xFF) | (arg & 0xFF00)) << 8); |
| 200 | break; | 200 | break; |
| 201 | case AM_IND_X: | 201 | case AM_IND_X: |
| 202 | val = peek((arg + regs.x) % 256) + peek((arg + regs.x + 1) % 256) * 256; | 202 | val = peek((arg + regs.x) % 256) + peek((arg + regs.x + 1) % 256) * 256; |
| @@ -1308,9 +1308,10 @@ interpret(void) | |||
| 1308 | case 0x6c: | 1308 | case 0x6c: |
| 1309 | mode = AM_IND; | 1309 | mode = AM_IND; |
| 1310 | mem = peek16(regs.pc); | 1310 | mem = peek16(regs.pc); |
| 1311 | deref = peek(mem); | 1311 | deref = peek16(mem); |
| 1312 | arg = opcode_mem(mode); | 1312 | arg = opcode_mem(mode); |
| 1313 | jmp(deref); | 1313 | deref = arg; |
| 1314 | jmp(arg); | ||
| 1314 | cycles += 6; | 1315 | cycles += 6; |
| 1315 | printf("JMP"); | 1316 | printf("JMP"); |
| 1316 | break; | 1317 | break; |
