diff options
Diffstat (limited to 'src/devices/machine/xc1700e.h')
-rw-r--r-- | src/devices/machine/xc1700e.h | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/src/devices/machine/xc1700e.h b/src/devices/machine/xc1700e.h new file mode 100644 index 00000000000..42a191c73ce --- /dev/null +++ b/src/devices/machine/xc1700e.h @@ -0,0 +1,118 @@ +// license:BSD-3-Clause +// copyright-holders:Patrick Mackinlay + +#ifndef MAME_MACHINE_XC1700E_H +#define MAME_MACHINE_XC1700E_H + +#pragma once + +class base_xc1700e_device : public device_t +{ +public: + // configuration + auto cascade_r() { return m_cascade_cb.bind(); } + + // input/output lines + void reset_w(int state); + int data_r(); + +protected: + base_xc1700e_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u32 capacity); + + // device_t overrides + virtual void device_start() override; + +private: + // device configuration + const u32 m_capacity; + required_memory_region m_region; + + devcb_read_line m_cascade_cb; + + // device state + bool m_reset; + unsigned m_address; +}; + +DECLARE_DEVICE_TYPE(XC1736E, xc1736e_device) +DECLARE_DEVICE_TYPE(XC1765E, xc1765e_device) +DECLARE_DEVICE_TYPE(XC17128E, xc17128e_device) +DECLARE_DEVICE_TYPE(XC17256E, xc17256e_device) +DECLARE_DEVICE_TYPE(XC17512L, xc17512l_device) +DECLARE_DEVICE_TYPE(XC1701, xc1701_device) +DECLARE_DEVICE_TYPE(XC1702L, xc1702l_device) +DECLARE_DEVICE_TYPE(XC1704L, xc1704l_device) + +class xc1736e_device : public base_xc1700e_device +{ +public: + xc1736e_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0) + : base_xc1700e_device(mconfig, XC1736E, tag, owner, clock, 36'288UL) + { + } +}; + +class xc1765e_device : public base_xc1700e_device +{ +public: + xc1765e_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0) + : base_xc1700e_device(mconfig, XC1765E, tag, owner, clock, 65'536UL) + { + } +}; + +class xc17128e_device : public base_xc1700e_device +{ +public: + xc17128e_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0) + : base_xc1700e_device(mconfig, XC17128E, tag, owner, clock, 131'072UL) + { + } +}; + +class xc17256e_device : public base_xc1700e_device +{ +public: + xc17256e_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0) + : base_xc1700e_device(mconfig, XC17256E, tag, owner, clock, 262'144UL) + { + } +}; + +class xc17512l_device : public base_xc1700e_device +{ +public: + xc17512l_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0) + : base_xc1700e_device(mconfig, XC17512L, tag, owner, clock, 524'288UL) + { + } +}; + +class xc1701_device : public base_xc1700e_device +{ +public: + xc1701_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0) + : base_xc1700e_device(mconfig, XC1701, tag, owner, clock, 1'048'576UL) + { + } +}; + +class xc1702l_device : public base_xc1700e_device +{ +public: + xc1702l_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0) + : base_xc1700e_device(mconfig, XC1702L, tag, owner, clock, 2'097'152UL) + { + } +}; + +class xc1704l_device : public base_xc1700e_device +{ +public: + xc1704l_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0) + : base_xc1700e_device(mconfig, XC1704L, tag, owner, clock, 4'194'304UL) + { + } +}; + +#endif // MAME_MACHINE_XC1700E_H |