]> git.sur5r.net Git - cc65/commitdiff
Fixed the way that the disassembler looks for the end of a segment.
authorGreg King <gregdk@users.sf.net>
Tue, 31 Oct 2017 04:45:17 +0000 (00:45 -0400)
committerGreg King <gregdk@users.sf.net>
Tue, 31 Oct 2017 04:47:07 +0000 (00:47 -0400)
It checks only the bytes that actually were printed.  It won't show a bad error message when disassembling address $0000.  Fixes #506 on cc65's Github project.

src/da65/main.c

index 0b0bf19e7e4a29daed0e7671f959bd6dddc3d842..1454d01fb831bf1b3ff158bb874f072e85209f54 100644 (file)
@@ -350,6 +350,7 @@ static void OneOpcode (unsigned RemainingBytes)
 /* Disassemble one opcode */
 {
     unsigned I;
+    unsigned OldPC = PC;
 
     /* Get the opcode from the current address */
     unsigned char OPC = GetCodeByte (PC);
@@ -476,7 +477,7 @@ static void OneOpcode (unsigned RemainingBytes)
     /* Change back to the default CODE segment if
     ** a named segment stops at the current address.
     */
-    for (I = D->Size; I >= 1; --I) {
+    for (I = PC - OldPC; I > 0; --I) {
         if (IsSegmentEnd (PC - I)) {
             EndSegment ();
             break;