diff options
author | 2018-02-02 19:34:12 +0000 | |
---|---|---|
committer | 2018-02-02 14:34:12 -0500 | |
commit | 1e09ab0ceb68f4d5c0e180ad33288a48bdfef13a (patch) | |
tree | 7a33f8f6b97cc13166b4fc15c27ab67bd8c2efaf /src/tools/unidasm.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/tools/unidasm.cpp')
-rw-r--r-- | src/tools/unidasm.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/tools/unidasm.cpp b/src/tools/unidasm.cpp index 7378734b598..8d53bd9dbb3 100644 --- a/src/tools/unidasm.cpp +++ b/src/tools/unidasm.cpp @@ -75,6 +75,7 @@ #include "cpu/m6502/m65c02d.h" #include "cpu/m6502/m65ce02d.h" #include "cpu/m6502/m740d.h" +#include "cpu/m6502/xavixd.h" #include "cpu/m6800/6800dasm.h" #include "cpu/m68000/m68kdasm.h" #include "cpu/m6805/6805dasm.h" @@ -466,6 +467,7 @@ static const dasm_table_entry dasm_table[] = { "x86_16", le, 0, []() -> util::disasm_interface * { i386_unidasm.mode = 16; return new i386_disassembler(&i386_unidasm); } }, { "x86_32", le, 0, []() -> util::disasm_interface * { i386_unidasm.mode = 32; return new i386_disassembler(&i386_unidasm); } }, { "x86_64", le, 0, []() -> util::disasm_interface * { i386_unidasm.mode = 64; return new i386_disassembler(&i386_unidasm); } }, + { "xavix", le, 0, []() -> util::disasm_interface * { return new xavix_disassembler; } }, { "z180", le, 0, []() -> util::disasm_interface * { return new z180_disassembler; } }, { "z8", le, 0, []() -> util::disasm_interface * { return new z8_disassembler; } }, { "z80", le, 0, []() -> util::disasm_interface * { return new z80_disassembler; } }, |