diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2020-03-20 12:58:16 -0400 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2020-03-20 13:00:27 -0400 |
commit | 760356745051e574671c6254582dbcccfe14eb72 (patch) | |
tree | 1bc98560b6b3d7745289617df93c8136c4b16690 | |
parent | 1717a7c92966fa239d7a48c6c72da9d03cf7157f (diff) |
Add TMP90C051 disassembler (only accessible through unidasm for now)
-rw-r--r-- | src/devices/cpu/tlcs90/tlcs90d.cpp | 19 | ||||
-rw-r--r-- | src/devices/cpu/tlcs90/tlcs90d.h | 9 | ||||
-rw-r--r-- | src/tools/unidasm.cpp | 1 |
3 files changed, 29 insertions, 0 deletions
diff --git a/src/devices/cpu/tlcs90/tlcs90d.cpp b/src/devices/cpu/tlcs90/tlcs90d.cpp index c85fb26c861..e56bb02d59a 100644 --- a/src/devices/cpu/tlcs90/tlcs90d.cpp +++ b/src/devices/cpu/tlcs90/tlcs90d.cpp @@ -64,6 +64,25 @@ tmp90844_disassembler::tmp90844_disassembler() { } +const char *const tmp90c051_disassembler::ir_names[0x4c] = { + "P2", "P2CR", "P3", "P3CR", + "P3FR", "P4", "P5", "P45CR", "P45FR", "P6", "P6CR", "P6FR", + "TREG0", "TREG1", "TREG2", "TREG3", "T01MOD", "T23MOD", "TFFCR", "TRDC", + "TRUN", "IRF0", "IRF1", "IRF2", "INTE0", "INTE1", "INTE2", "DMAE", + "SCMOD0", "SCCR0", "SCBUF0", "BRGCR0", "SCMOD1", "SCCR1", "SCBUF1", "BRGCR1", + "REFCR", "MSAR", "MSAMR", "MACR", nullptr, "WDMOD", "WDCR", "P2FR", + "SECR", "MINR", "HOUR", "DAYR", "DATER", "MONTHR", "YEARR", "PAGER", + "RESTR", "TPHBUF", "TPHMOD", "TPHSCR", "BX", "BY", "CLLARL", "CLLARH", + "EXPA1L", "EXPA1H", "EXPA0L", "EXPA0H", nullptr, nullptr, "DMASB0", "DMADB0", + "DMAV0", "DMASB1", "DMADB1", "DMAV1", nullptr, nullptr, nullptr, nullptr +}; + +tmp90c051_disassembler::tmp90c051_disassembler() + : tlcs90_disassembler(0xffb4, ir_names) // I/O base is actually FF80H +{ + // TODO: recognize TMP90C051-original LDC instruction needed to access certain DMA registers +} + const char *tlcs90_disassembler::internal_registers_names(uint16_t x) const { if (x >= m_iobase) diff --git a/src/devices/cpu/tlcs90/tlcs90d.h b/src/devices/cpu/tlcs90/tlcs90d.h index 4034717e272..2c71cd432d2 100644 --- a/src/devices/cpu/tlcs90/tlcs90d.h +++ b/src/devices/cpu/tlcs90/tlcs90d.h @@ -83,4 +83,13 @@ private: static const char *const ir_names[]; }; +class tmp90c051_disassembler : public tlcs90_disassembler +{ +public: + tmp90c051_disassembler(); + +private: + static const char *const ir_names[]; +}; + #endif diff --git a/src/tools/unidasm.cpp b/src/tools/unidasm.cpp index fe2c65ead8b..d82d2cf5792 100644 --- a/src/tools/unidasm.cpp +++ b/src/tools/unidasm.cpp @@ -511,6 +511,7 @@ static const dasm_table_entry dasm_table[] = { "t11", le, 0, []() -> util::disasm_interface * { return new t11_disassembler; } }, { "tlcs870", le, 0, []() -> util::disasm_interface * { return new tlcs870_disassembler; } }, { "tlcs900", le, 0, []() -> util::disasm_interface * { return new tlcs900_disassembler; } }, + { "tmp90c051", le, 0, []() -> util::disasm_interface * { return new tmp90c051_disassembler; } }, { "tmp90840", le, 0, []() -> util::disasm_interface * { return new tmp90840_disassembler; } }, { "tmp90844", le, 0, []() -> util::disasm_interface * { return new tmp90844_disassembler; } }, { "tms0980", be, 0, []() -> util::disasm_interface * { return new tms0980_disassembler; } }, |