summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/lr35902/lr35902d.h
blob: 55216605f140aaccef0aa98a02a566a3952a1fbf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
/*****************************************************************************
 *
 *   lr35902d.c
 *   Portable Sharp LR35902 disassembler
 *
 *****************************************************************************/

#ifndef MAME_CPU_LR35902_LR35902D_H
#define MAME_CPU_LR35902_LR35902D_H

#pragma once

class lr35902_disassembler : public util::disasm_interface
{
public:
	lr35902_disassembler() = default;
	virtual ~lr35902_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 &params) override;

private:
	enum e_mnemonics
	{
		zADC,  zADD,  zAND,  zBIT,  zCALL, zCCF,  zCP,
		zCPL,  zDAA,  zDB,   zDEC,  zDI,   zEI,   zHLT,
		zIN,   zINC,  zJP,   zJR,   zLD,   zNOP,  zOR,
		zPOP,  zPUSH, zRES,  zRET,  zRETI, zRL,   zRLA,
		zRLC,  zRLCA, zRR,   zRRA,  zRRC,  zRRCA, zRST,
		zSBC,  zSCF,  zSET,  zSLA,  zSLL,  zSRA,  zSRL,
		zSTOP, zSUB,  zXOR,  zSWAP
	};

	struct lr35902dasm
	{
		uint8_t   mnemonic;
		const char *arguments;
	};

	static const char *const s_mnemonic[];
	static const uint32_t s_flags[];
	static const lr35902dasm mnemonic_cb[256];
	static const lr35902dasm mnemonic_main[256];
};

#endif // MAME_CPU_LR35902_LR35902D_H