diff options
author | 2018-02-02 19:34:12 +0000 | |
---|---|---|
committer | 2018-02-02 14:34:12 -0500 | |
commit | 1e09ab0ceb68f4d5c0e180ad33288a48bdfef13a (patch) | |
tree | 7a33f8f6b97cc13166b4fc15c27ab67bd8c2efaf /src/devices/cpu/m6502/m6502d.cpp | |
parent | f33b1e3619e4e8c9bf80ac6ad1ef4314927e3245 (diff) |
create derived 6502 type for XaviX because it has at least one custom… (#3154)
* create derived 6502 type for XaviX because it has at least one custom 4-byte opcode that doesn't fit any other type.
treating that opcode as NOP for now.
have a feeling it might be something to do with the other integrated hardware, might be 'execute co-processor code chain at this address' or something similar
It isn't a standard JSL (Jump Subroutine Long) like the SNES cpu opcode in the same place as this, it seems to point at some code-like structures tho)
could also be a secondary operation mode with different encoding like ARM's Thumb mode tho I guess.
We currently only have a single XaviX based dump (taitons1) but there are more on the way. I'm going to see if the code flow makes any sense at all with these missing, or if any of it gives a clue as to what they should actually do.
* xavix - let's call these callf and retf then
after further investigation these are some kind of extra 'long jump' subroutine / task handlers, the 0x80 also being a custom opcode was throwing me off trying to identify them before.
looks like they might have been hacking 65816 features into the regular 6502 core?
* prepare for extra address bits (nw)
* better program flow (nw)
Diffstat (limited to 'src/devices/cpu/m6502/m6502d.cpp')
-rw-r--r-- | src/devices/cpu/m6502/m6502d.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/devices/cpu/m6502/m6502d.cpp b/src/devices/cpu/m6502/m6502d.cpp index 89763113cde..7970efb524b 100644 --- a/src/devices/cpu/m6502/m6502d.cpp +++ b/src/devices/cpu/m6502/m6502d.cpp @@ -181,6 +181,11 @@ offs_t m6502_base_disassembler::disassemble(std::ostream &stream, offs_t pc, con flags |= 1; break; + case DASM_xa3: + util::stream_format(stream, " #$%02x%02x%02x", params.r8(pc+1), params.r8(pc+3), params.r8(pc+2)); + flags |= 4; + break; + default: fprintf(stderr, "Unhandled dasm mode %d\n", e.mode); abort(); |