]> Shamusworld >> Repos - stargem2/blobdiff - src/dis6808.cpp
Finalizing move to trunk...
[stargem2] / src / dis6808.cpp
index 98b1bf4bfc9199353007a277f6d3f289559faa2b..17cd301fd51f4c45b5e0a70c069466a63a799060 100755 (executable)
@@ -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;
        }