diff --git a/core/vip.c b/core/vip.c index 0860890..74b9bb2 100644 --- a/core/vip.c +++ b/core/vip.c @@ -481,10 +481,12 @@ static void vipWriteIO( break; case 0x5F830>>1: /* CTA */ - if ((mask & 0xFF00) == 0) - sim->vip.cta.cta_r = value >> 8; - if ((mask & 0x00FF) == 0) - sim->vip.cta.cta_l = value; + if (debug) { + if ((mask & 0xFF00) == 0) + sim->vip.cta.cta_r = value >> 8; + if ((mask & 0x00FF) == 0) + sim->vip.cta.cta_l = value; + } break; case 0x5F842>>1: /* XPCTRL */ diff --git a/util/disassembler.c b/util/disassembler.c index 2f1a596..896f34c 100644 --- a/util/disassembler.c +++ b/util/disassembler.c @@ -513,6 +513,8 @@ static int dasmLine(VB *sim, uint32_t *address, uint32_t pc, line->isPC = *address == pc; for (x = 0; x < line->codeLength; x++) line->code[x] = vbRead(sim, *address + x, VB_U8); + + /* Advance to the next instruction or PC, whichever is sooner */ *address += pc != *address && pc - *address < line->codeLength ? pc - *address : line->codeLength; @@ -657,6 +659,8 @@ static VBU_DasmLine* dasmDisassemble(VB *sim, uint32_t address, size = vbuCodeSize(sim, addr); if (address - addr < size) break; + + /* Advance to the next instruction or PC, whichever is sooner */ addr += addr != pc && pc - addr < size ? pc - addr : size; }