X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdis6808.cpp;h=17cd301fd51f4c45b5e0a70c069466a63a799060;hb=b4e8ef6c5282d8763d7559370c007fa4c1219a54;hp=98b1bf4bfc9199353007a277f6d3f289559faa2b;hpb=af27a070d6a36e5590c5d24ba255300825c25cf9;p=stargem2 diff --git a/src/dis6808.cpp b/src/dis6808.cpp index 98b1bf4..17cd301 100755 --- a/src/dis6808.cpp +++ b/src/dis6808.cpp @@ -103,34 +103,43 @@ int Decode6808(uint16 pc) { char outbuf[80]; - uint16 addr = pc; + uint16 addr = pc, offset; uint8 opcode = soundCPU.RdMem(addr++); // Get the opcode switch (op_mat[opcode]) // Decode the addressing mode... { case 0: // Illegal - sprintf(outbuf, "???"); + sprintf(outbuf, "??? "); break; case 1: // Zero page - sprintf(outbuf, "%s $%02X", mnemonics[opcode], soundCPU.RdMem(addr++)); + sprintf(outbuf, "%s $%02X ", mnemonics[opcode], soundCPU.RdMem(addr++)); break; case 2: // Absolute - sprintf(outbuf, "%s $%04X", mnemonics[opcode], (soundCPU.RdMem(addr++) << 8) | soundCPU.RdMem(addr++)); +// sprintf(outbuf, "%s $%04X", mnemonics[opcode], (soundCPU.RdMem(addr++) << 8) | soundCPU.RdMem(addr++)); + offset = (soundCPU.RdMem(addr + 0) << 8) | soundCPU.RdMem(addr + 1); + addr += 2; + sprintf(outbuf, "%s $%04X ", mnemonics[opcode], offset); break; case 3: // Relative - sprintf(outbuf, "%s $%04X", mnemonics[opcode], ++addr + (int16)(int8)soundCPU.RdMem(addr)); +// sprintf(outbuf, "%s $%04X", mnemonics[opcode], ++addr + (int16)(int8)soundCPU.RdMem(addr)); + offset = addr + 1 + (int16)(int8)soundCPU.RdMem(addr); + addr++; + sprintf(outbuf, "%s $%04X ", mnemonics[opcode], offset); break; case 5: // Inherent - sprintf(outbuf, "%s ", mnemonics[opcode]); + sprintf(outbuf, "%s ", mnemonics[opcode]); break; case 7: // Indexed - sprintf(outbuf, "%s $%02X,X", mnemonics[opcode], soundCPU.RdMem(addr++)); + sprintf(outbuf, "%s $%02X,X ", mnemonics[opcode], soundCPU.RdMem(addr++)); break; case 8: // Immediate - sprintf(outbuf, "%s #$%02X", mnemonics[opcode], soundCPU.RdMem(addr++)); + sprintf(outbuf, "%s #$%02X ", mnemonics[opcode], soundCPU.RdMem(addr++)); break; case 9: // Long Immediate - sprintf(outbuf, "%s #$%04X", mnemonics[opcode], (soundCPU.RdMem(addr++) << 8) | soundCPU.RdMem(addr++)); +// sprintf(outbuf, "%s #$%04X", mnemonics[opcode], (soundCPU.RdMem(addr++) << 8) | soundCPU.RdMem(addr++)); + offset = (soundCPU.RdMem(addr + 0) << 8) | soundCPU.RdMem(addr + 1); + addr += 2; + sprintf(outbuf, "%s #$%04X ", mnemonics[opcode], offset); break; }