summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--hw/lsi53c895a.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/hw/lsi53c895a.c b/hw/lsi53c895a.c
index aa6c600ed6..87487668d1 100644
--- a/hw/lsi53c895a.c
+++ b/hw/lsi53c895a.c
@@ -867,6 +867,12 @@ static void lsi_execute_script(LSIState *s)
 again:
     insn_processed++;
     insn = read_dword(s, s->dsp);
+    if (!insn) {
+        /* If we receive an empty opcode increment the DSP by 4 bytes
+           instead of 8 and execute the next opcode at that location */
+        s->dsp += 4;
+        goto again;
+    }
     addr = read_dword(s, s->dsp + 4);
     addr_high = 0;
     DPRINTF("SCRIPTS dsp=%08x opcode %08x arg %08x\n", s->dsp, insn, addr);