From c5d15429374f14755cbf88b674f12b8719b21e0b Mon Sep 17 00:00:00 2001 From: Peter Evans Date: Thu, 1 Mar 2018 21:37:10 -0600 Subject: [PATCH] Show correct PC counter in scan --- src/mos6502.dis.c | 6 ++++++ src/vm_debug.c | 2 +- tests/mos6502.dis.c | 4 ++-- tests/vm_debug.c | 1 + 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/mos6502.dis.c b/src/mos6502.dis.c index 11a6e6c..fa686db 100644 --- a/src/mos6502.dis.c +++ b/src/mos6502.dis.c @@ -343,7 +343,13 @@ mos6502_dis_opcode(mos6502 *cpu, FILE *stream, int address) void mos6502_dis_scan(mos6502 *cpu, FILE *stream, int pos, int end) { + vm_16bit pc; + + pc = cpu->PC; while (pos < end) { + cpu->PC = pos; pos += mos6502_dis_opcode(cpu, stream, pos); } + + cpu->PC = pc; } diff --git a/src/vm_debug.c b/src/vm_debug.c index bbcf937..e3a0cc4 100644 --- a/src/vm_debug.c +++ b/src/vm_debug.c @@ -439,7 +439,7 @@ DEBUG_CMD(dblock) } mos6502 *cpu = (mos6502 *)vm_di_get(VM_CPU); - FILE *stream = (FILE *)vm_di_get(VM_OUTPUT); + FILE *stream = log_stream(); mos6502_dis_scan(cpu, stream, args->addr1, args->addr2); } diff --git a/tests/mos6502.dis.c b/tests/mos6502.dis.c index 84ce150..7b8b84d 100644 --- a/tests/mos6502.dis.c +++ b/tests/mos6502.dis.c @@ -231,6 +231,6 @@ Test(mos6502_dis, scan) // runtime operation) when you don't want it to, but as a standalone // disassembler, it feels less useful when PC isn't emulated. assert_buf("0000:29 38 AND #$38\n" - "0000:88 DEY \n" - "0000:6C 34 12 JMP ($1234)\n"); + "0002:88 DEY \n" + "0003:6C 34 12 JMP ($1234)\n"); } diff --git a/tests/vm_debug.c b/tests/vm_debug.c index c39602b..394fcc5 100644 --- a/tests/vm_debug.c +++ b/tests/vm_debug.c @@ -28,6 +28,7 @@ setup() } vm_di_set(VM_OUTPUT, stream); + log_open(stream); // Writing to stream will now write to buf setvbuf(stream, buf, _IOFBF, BUFSIZ);