diff options
Diffstat (limited to 'src/devices/cpu/tx0/tx0dasm.cpp')
-rw-r--r-- | src/devices/cpu/tx0/tx0dasm.cpp | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/src/devices/cpu/tx0/tx0dasm.cpp b/src/devices/cpu/tx0/tx0dasm.cpp new file mode 100644 index 00000000000..34d49194ed3 --- /dev/null +++ b/src/devices/cpu/tx0/tx0dasm.cpp @@ -0,0 +1,133 @@ +// license:BSD-3-Clause +// copyright-holders:Raphael Nabet +#include "emu.h" +#include "tx0dasm.h" + +u32 tx0_64kw_disassembler::opcode_alignment() const +{ + return 1; +} + +offs_t tx0_64kw_disassembler::disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer ¶ms) +{ + int md; + int x; + + md = opcodes.r32(pc); + + x = md & 0177777; + switch (md >> 16) + { + case 0: + util::stream_format(stream, "sto 0%06o", x); + break; + case 1: + util::stream_format(stream, "add 0%06o", x); + break; + case 2: + util::stream_format(stream, "trn 0%06o", x); + break; + case 3: + util::stream_format(stream, "opr 0%06o", x); + break; + } + return 1; +} + +u32 tx0_8kw_disassembler::opcode_alignment() const +{ + return 1; +} + +offs_t tx0_8kw_disassembler::disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer ¶ms) +{ + int md; + int x; + + md = opcodes.r32(pc); + + x = md & 0017777; + switch (md >> 13) + { + case 0: + util::stream_format(stream, "sto 0%05o", x); + break; + case 1: + util::stream_format(stream, "stx 0%05o", x); + break; + case 2: + util::stream_format(stream, "sxa 0%05o", x); + break; + case 3: + util::stream_format(stream, "ado 0%05o", x); + break; + case 4: + util::stream_format(stream, "slr 0%05o", x); + break; + case 5: + util::stream_format(stream, "slx 0%05o", x); + break; + case 6: + util::stream_format(stream, "stz 0%05o", x); + break; + case 8: + util::stream_format(stream, "add 0%05o", x); + break; + case 9: + util::stream_format(stream, "adx 0%05o", x); + break; + case 10: + util::stream_format(stream, "ldx 0%05o", x); + break; + case 11: + util::stream_format(stream, "aux 0%05o", x); + break; + case 12: + util::stream_format(stream, "llr 0%05o", x); + break; + case 13: + util::stream_format(stream, "llx 0%05o", x); + break; + case 14: + util::stream_format(stream, "lda 0%05o", x); + break; + case 15: + util::stream_format(stream, "lax 0%05o", x); + break; + case 16: + util::stream_format(stream, "trn 0%05o", x); + break; + case 17: + util::stream_format(stream, "tze 0%05o", x); + break; + case 18: + util::stream_format(stream, "tsx 0%05o", x); + break; + case 19: + util::stream_format(stream, "tix 0%05o", x); + break; + case 20: + util::stream_format(stream, "tra 0%05o", x); + break; + case 21: + util::stream_format(stream, "trx 0%05o", x); + break; + case 22: + util::stream_format(stream, "tlv 0%05o", x); + break; + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + util::stream_format(stream, "opr 0%06o", md & 0177777); + break; + default: + util::stream_format(stream, "illegal"); + break; + } + return 1; +} |