diff options
Diffstat (limited to 'src/devices/cpu/hcd62121/hcd62121d.h')
-rw-r--r-- | src/devices/cpu/hcd62121/hcd62121d.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/devices/cpu/hcd62121/hcd62121d.h b/src/devices/cpu/hcd62121/hcd62121d.h new file mode 100644 index 00000000000..c03d10dd410 --- /dev/null +++ b/src/devices/cpu/hcd62121/hcd62121d.h @@ -0,0 +1,62 @@ +// license:BSD-3-Clause +// copyright-holders:Wilbert Pol + +#ifndef MAME_CPU_HCD62121_HCD62121D_H +#define MAME_CPU_HCD62121_HCD62121D_H + +#pragma once + +class hcd62121_disassembler : public util::disasm_interface +{ +public: + hcd62121_disassembler() = default; + virtual ~hcd62121_disassembler() = default; + + virtual u32 opcode_alignment() const override; + virtual offs_t disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer ¶ms) override; + +private: + struct dasm + { + const char *str; + u8 arg1; + u8 arg2; + }; + + enum + { + ARG_NONE=0, /* no argument or unknown */ + ARG_REG, /* register */ + ARG_REGREG, /* register1, register2, or register2, register1 or register1, imm byte */ + ARG_IRG, /* register indirect */ + ARG_IRGREG, /* 2 register indirect */ + ARG_A16, /* 16bit address */ + ARG_A24, /* seg:address */ + ARG_F, /* flag register */ + ARG_CS, /* cs register */ + ARG_DS, /* ds register */ + ARG_SS, /* ss register */ + ARG_PC, /* program counter */ + ARG_SP, /* stack pointer */ + ARG_I8, /* immediate 8 bit value */ + ARG_I16, /* immediate 16 bit value */ + ARG_I64, /* immediate 64 bit value */ + ARG_I80, /* immediate 80 bit value */ + ARG_ILR, /* indirect last address register access */ + ARG_LAR, /* last address register */ + ARG_DSZ, /* dsize register? */ + ARG_OPT, /* OPTx (output) pins */ + ARG_PORT, /* PORTx (output) pins */ + ARG_TIM, /* timing related register? */ + ARG_KLO, /* KO1 - KO8 output lines */ + ARG_KHI, /* KO9 - KO14(?) output lines */ + ARG_KI, /* K input lines */ + ARG_S1, /* shift by 1 */ + ARG_S4, /* shift by 4 */ + ARG_S8, /* shift by 8 */ + }; + + static const dasm ops[256]; +}; + +#endif |