1 // license:BSD-3-Clause
2 // copyright-holders:Wilbert Pol
3 /*****************************************************************************
4  *
5  *   lr35902d.c
6  *   Portable Sharp LR35902 disassembler
7  *
8  *****************************************************************************/
9 
10 #ifndef MAME_CPU_LR35902_LR35902DASM_H
11 #define MAME_CPU_LR35902_LR35902DASM_H
12 
13 #pragma once
14 
15 class lr35902_disassembler : public util::disasm_interface
16 {
17 public:
18 	lr35902_disassembler() = default;
19 	virtual ~lr35902_disassembler() = default;
20 
21 	virtual u32 opcode_alignment() const override;
22 	virtual offs_t disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer &params) override;
23 
24 private:
25 	enum e_mnemonics
26 	{
27 		zADC,  zADD,  zAND,  zBIT,  zCALL, zCCF,  zCP,
28 		zCPL,  zDAA,  zDB,   zDEC,  zDI,   zEI,   zHLT,
29 		zIN,   zINC,  zJP,   zJR,   zLD,   zNOP,  zOR,
30 		zPOP,  zPUSH, zRES,  zRET,  zRETI, zRL,   zRLA,
31 		zRLC,  zRLCA, zRR,   zRRA,  zRRC,  zRRCA, zRST,
32 		zSBC,  zSCF,  zSET,  zSLA,  zSLL,  zSRA,  zSRL,
33 		zSTOP, zSUB,  zXOR,  zSWAP
34 	};
35 
36 	struct lr35902dasm
37 	{
38 		uint8_t   mnemonic;
39 		const char *arguments;
40 	};
41 
42 	static const char *const s_mnemonic[];
43 	static const uint32_t s_flags[];
44 	static const lr35902dasm mnemonic_cb[256];
45 	static const lr35902dasm mnemonic_main[256];
46 };
47 
48 #endif
49