Menu

#515 Disassemble of dd/fd+cb res/set undocummented

future
open
nobody
None
5
2026-01-25
2026-01-25
No

Hi
The disassemble of opcodes dd/fd + cb + res/set (ix+d) where the result is also stored on a register is incorrect

For example:

dd cb 40 fc

LD H,SET 7,(IX+40)

is debugged incorrectly as:

LD H,SET (IX+40)

The bit number is missing on the disassembly

You can fix it by changing file debugger/disassemble.c:

@@ -616,7 +616,7 @@ disassemble_ddfd_cb( libspectrum_word address, char offset,
} else {
source_reg( address, USE_HL, buffer2, 40 );
ix_iy_offset( buffer3, 40, use_hl, offset );
- snprintf( buffer, buflen, "LD %s,%s %s", buffer2, bit_op( b ), buffer3 );
+ snprintf( buffer, buflen, "LD %s,%s %d,%s", buffer2, bit_op( b ), bit_op_bit( b ), buffer3 );
*length = 1;
}
}

By the way I tried to submit my fuse fork with that change but I don't find the merge request submit form... I'm not used to sourceforge (used it on the past but migrated to github some years ago)

Cheers!

Discussion


Log in to post a comment.

MongoDB Logo MongoDB