1 // license:BSD-3-Clause
2 // copyright-holders:Patrick Mackinlay
3 
4 #ifndef MAME_CPU_DSP56000_DSP56000_H
5 #define MAME_CPU_DSP56000_DSP56000_H
6 
7 #pragma once
8 
9 class dsp56000_device_base : public cpu_device
10 {
11 protected:
12 	dsp56000_device_base(machine_config const &mconfig, device_type type, char const *tag, device_t *owner, u32 clock);
13 
14 	// device_t overrides
15 	virtual void device_start() override;
16 	virtual void device_reset() override;
17 
18 	// device_execute_interface overrides
execute_clocks_to_cycles(u64 clocks)19 	virtual u64 execute_clocks_to_cycles(u64 clocks) const noexcept override { return (clocks + 2 - 1) / 2; }
execute_cycles_to_clocks(u64 cycles)20 	virtual u64 execute_cycles_to_clocks(u64 cycles) const noexcept override { return (cycles * 2); }
execute_min_cycles()21 	virtual u32 execute_min_cycles() const noexcept override { return 1; }
execute_max_cycles()22 	virtual u32 execute_max_cycles() const noexcept override { return 16; }
execute_input_lines()23 	virtual u32 execute_input_lines() const noexcept override { return 2; }
24 	virtual void execute_run() override;
25 	virtual void execute_set_input(int inputnum, int state) override;
26 
27 	// device_memory_interface overrides
28 	virtual space_config_vector memory_space_config() const override;
29 
30 	// device_disasm_interface overrides
31 	virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
32 
33 	// emulation state
34 	address_space_config m_p_config;
35 	address_space_config m_x_config;
36 	address_space_config m_y_config;
37 
38 	int m_icount;
39 
40 	// program-visible cpu state
41 	u16 m_pc;
42 };
43 
44 class dsp56000_device : public dsp56000_device_base
45 {
46 public:
47 	dsp56000_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
48 };
49 
50 class dsp56001_device : public dsp56000_device_base
51 {
52 public:
53 	dsp56001_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
54 };
55 
56 DECLARE_DEVICE_TYPE(DSP56000, dsp56000_device)
57 DECLARE_DEVICE_TYPE(DSP56001, dsp56001_device)
58 
59 #endif // MAME_CPU_DSP56000_DSP56000_H
60