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