diff options
Diffstat (limited to 'src/devices/cpu/amis2000/amis2000.h')
-rw-r--r-- | src/devices/cpu/amis2000/amis2000.h | 50 |
1 files changed, 15 insertions, 35 deletions
diff --git a/src/devices/cpu/amis2000/amis2000.h b/src/devices/cpu/amis2000/amis2000.h index 2e15b6572ff..2739461b44b 100644 --- a/src/devices/cpu/amis2000/amis2000.h +++ b/src/devices/cpu/amis2000/amis2000.h @@ -11,45 +11,25 @@ #pragma once +class amis2000_base_device : public cpu_device +{ +public: + // generic input pins (4 bits each) + auto read_k() { return m_read_k.bind(); } + auto read_i() { return m_read_i.bind(); } -// generic input pins (4 bits each) -#define MCFG_AMI_S2000_READ_K_CB(_devcb) \ - downcast<amis2000_base_device &>(*device).set_read_k_callback(DEVCB_##_devcb); - -#define MCFG_AMI_S2000_READ_I_CB(_devcb) \ - downcast<amis2000_base_device &>(*device).set_read_i_callback(DEVCB_##_devcb); - -// 8-bit external databus coupled as input/output pins -#define MCFG_AMI_S2000_READ_D_CB(_devcb) \ - downcast<amis2000_base_device &>(*device).set_read_d_callback(DEVCB_##_devcb); - -#define MCFG_AMI_S2000_WRITE_D_CB(_devcb) \ - downcast<amis2000_base_device &>(*device).set_write_d_callback(DEVCB_##_devcb); - -// 13-bit external address bus coupled as output pins -#define MCFG_AMI_S2000_WRITE_A_CB(_devcb) \ - downcast<amis2000_base_device &>(*device).set_write_a_callback(DEVCB_##_devcb); - -// F_out pin (only for S2152) -#define MCFG_AMI_S2152_FOUT_CB(_devcb) \ - downcast<amis2000_base_device &>(*device).set_write_f_callback(DEVCB_##_devcb); + // 8-bit external databus coupled as input/output pins + auto read_d() { return m_read_d.bind(); } + auto write_d() { return m_write_d.bind(); } -// S2000 has a hardcoded 7seg table, that (unlike S2200) is officially -// uncustomizable, but wildfire proves to be an exception to that rule. -#define MCFG_AMI_S2000_7SEG_DECODER(_ptr) \ - downcast<amis2000_base_device &>(*device).set_7seg_table(_ptr); + // 13-bit external address bus coupled as output pins + auto write_a() { return m_write_a.bind(); } + // F_out pin (only for S2152) + auto write_f() { return m_write_f.bind(); } -class amis2000_base_device : public cpu_device -{ -public: - // configuration helpers - template <class Object> devcb_base &set_read_k_callback(Object &&cb) { return m_read_k.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_read_i_callback(Object &&cb) { return m_read_i.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_read_d_callback(Object &&cb) { return m_read_d.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_write_d_callback(Object &&cb) { return m_write_d.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_write_a_callback(Object &&cb) { return m_write_a.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_write_f_callback(Object &&cb) { return m_write_f.set_callback(std::forward<Object>(cb)); } + // S2000 has a hardcoded 7seg table, that (unlike S2200) is officially + // uncustomizable, but wildfire proves to be an exception to that rule. void set_7seg_table(const u8 *ptr) { m_7seg_table = ptr; } void data_64x4(address_map &map); |