diff options
Diffstat (limited to 'src/devices/machine/alpha_8921.h')
-rw-r--r-- | src/devices/machine/alpha_8921.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/devices/machine/alpha_8921.h b/src/devices/machine/alpha_8921.h new file mode 100644 index 00000000000..88ecd850eb9 --- /dev/null +++ b/src/devices/machine/alpha_8921.h @@ -0,0 +1,67 @@ +// license:BSD-3-Clause +// copyright-holders:cam900 +/*************************************************************************** + + Alpha denshi ALPHA-8921 emulation + +***************************************************************************/ + +#ifndef MAME_MACHINE_ALPHA_8921_H +#define MAME_MACHINE_ALPHA_8921_H + +#pragma once + + +// ======================> alpha_8921_device + +class alpha_8921_device : public device_t +{ +public: + // construction/destruction + alpha_8921_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + // inputs + DECLARE_WRITE_LINE_MEMBER(clk_w); + DECLARE_WRITE_LINE_MEMBER(load_w); + DECLARE_WRITE_LINE_MEMBER(even_w); + DECLARE_WRITE_LINE_MEMBER(h_w); + void c_w(u32 data); + + // outputs + u8 gad_r(); + u8 gbd_r(); + DECLARE_READ_LINE_MEMBER(dota_r); + DECLARE_READ_LINE_MEMBER(dotb_r); + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + +private: + // inputs + bool m_clk = false; // CLK pin + bool m_load = false; // LOAD pin + bool m_even = false; // EVEN pin + bool m_h = false; // H pin + u32 m_c = 0; // C data (32 bit) + + // outputs + u8 m_gad = 0; // GAD data (4 bit) + u8 m_gbd = 0; // GBD data (4 bit) + bool m_dota = false; // DOTA pin + bool m_dotb = false; // DOTB pin + + // internal status + u32 m_sr = 0; + u32 m_old_sr = ~0; + bool m_old_even = true; + bool m_old_h = true; + void update_output(); +}; + + +// device type definition +DECLARE_DEVICE_TYPE(ALPHA_8921, alpha_8921_device) + +#endif // MAME_MACHINE_ALPHA_8921_H |