1 // license:BSD-3-Clause
2 // copyright-holders:Aaron Giles
3 #ifndef MAME_MACHINE_NAMCO53_H
4 #define MAME_MACHINE_NAMCO53_H
5 
6 #pragma once
7 
8 #include "cpu/mb88xx/mb88xx.h"
9 
10 class namco_53xx_device : public device_t
11 {
12 public:
13 	namco_53xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
14 
input_callback()15 	template <unsigned N> auto input_callback() { return m_in[N].bind(); }
16 
k_port_callback()17 	auto k_port_callback() { return m_k.bind(); }
p_port_callback()18 	auto p_port_callback() { return m_p.bind(); }
19 
20 	DECLARE_WRITE_LINE_MEMBER( reset );
21 	DECLARE_WRITE_LINE_MEMBER( chip_select );
22 	uint8_t read();
23 
24 protected:
25 	// device-level overrides
26 	virtual void device_start() override;
27 	virtual const tiny_rom_entry *device_rom_region() const override;
28 	virtual void device_add_mconfig(machine_config &config) override;
29 
30 private:
31 	// internal state
32 	required_device<mb88_cpu_device> m_cpu;
33 	uint8_t        m_portO;
34 	devcb_read8    m_k;
35 	devcb_read8::array<4> m_in;
36 	devcb_write8   m_p;
37 
38 	uint8_t K_r();
39 	uint8_t R0_r();
40 	uint8_t R1_r();
41 	uint8_t R2_r();
42 	uint8_t R3_r();
43 	void O_w(uint8_t data);
44 	void P_w(uint8_t data);
45 };
46 
47 DECLARE_DEVICE_TYPE(NAMCO_53XX, namco_53xx_device)
48 
49 
50 #endif // MAME_MACHINE_NAMCO53_H
51