diff options
author | 2018-03-03 18:18:08 +0100 | |
---|---|---|
committer | 2018-03-04 04:18:08 +1100 | |
commit | 3b923d59ccb8d2d8e386392518450006f8e644fe (patch) | |
tree | 73c48568e76d69edbde9f96a3f57d173dd05a747 /src/devices/cpu | |
parent | 25472091b626bd01ef47f11389a4b2ebe0fc0008 (diff) |
destaticify initializations (nw) (#3289)
* destaticify initializations (nw)
* fix this->set_screen (nw)
Diffstat (limited to 'src/devices/cpu')
106 files changed, 3006 insertions, 3104 deletions
diff --git a/src/devices/cpu/adsp2100/adsp2100.h b/src/devices/cpu/adsp2100/adsp2100.h index 4b2cbcd98a8..9a7d8561621 100644 --- a/src/devices/cpu/adsp2100/adsp2100.h +++ b/src/devices/cpu/adsp2100/adsp2100.h @@ -181,16 +181,16 @@ enum //************************************************************************** #define MCFG_ADSP21XX_SPORT_RX_CB(_devcb) \ - devcb = &adsp21xx_device::set_sport_rx_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adsp21xx_device &>(*device).set_sport_rx_callback(DEVCB_##_devcb); #define MCFG_ADSP21XX_SPORT_TX_CB(_devcb) \ - devcb = &adsp21xx_device::set_sport_tx_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adsp21xx_device &>(*device).set_sport_tx_callback(DEVCB_##_devcb); #define MCFG_ADSP21XX_TIMER_FIRED_CB(_devcb) \ - devcb = &adsp21xx_device::set_timer_fired_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adsp21xx_device &>(*device).set_timer_fired_callback(DEVCB_##_devcb); #define MCFG_ADSP21XX_DMOVLAY_CB(_devcb) \ - devcb = &adsp21xx_device::set_dmovlay_callback(*device, DEVCB_##_devcb); + devcb = &downcast<adsp21xx_device &>(*device).set_dmovlay_callback(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -204,10 +204,10 @@ public: virtual ~adsp21xx_device(); // inline configuration helpers - template <class Object> static devcb_base &set_sport_rx_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_sport_rx_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sport_tx_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_sport_tx_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_timer_fired_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_timer_fired_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dmovlay_callback(device_t &device, Object &&cb) { return downcast<adsp21xx_device &>(device).m_dmovlay_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sport_rx_callback(Object &&cb) { return m_sport_rx_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sport_tx_callback(Object &&cb) { return m_sport_tx_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_timer_fired_callback(Object &&cb) { return m_timer_fired_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dmovlay_callback(Object &&cb) { return m_dmovlay_cb.set_callback(std::forward<Object>(cb)); } // public interfaces void load_boot_data(uint8_t *srcdata, uint32_t *dstdata); diff --git a/src/devices/cpu/amis2000/amis2000.h b/src/devices/cpu/amis2000/amis2000.h index 3dfa68262ba..b592bdd9466 100644 --- a/src/devices/cpu/amis2000/amis2000.h +++ b/src/devices/cpu/amis2000/amis2000.h @@ -14,43 +14,43 @@ // generic input pins (4 bits each) #define MCFG_AMI_S2000_READ_K_CB(_devcb) \ - devcb = &amis2000_base_device::set_read_k_callback(*device, DEVCB_##_devcb); + devcb = &downcast<amis2000_base_device &>(*device).set_read_k_callback(DEVCB_##_devcb); #define MCFG_AMI_S2000_READ_I_CB(_devcb) \ - devcb = &amis2000_base_device::set_read_i_callback(*device, DEVCB_##_devcb); + 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) \ - devcb = &amis2000_base_device::set_read_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<amis2000_base_device &>(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_AMI_S2000_WRITE_D_CB(_devcb) \ - devcb = &amis2000_base_device::set_write_d_callback(*device, DEVCB_##_devcb); + 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) \ - devcb = &amis2000_base_device::set_write_a_callback(*device, DEVCB_##_devcb); + 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) \ - devcb = &amis2000_base_device::set_write_f_callback(*device, DEVCB_##_devcb); + devcb = &downcast<amis2000_base_device &>(*device).set_write_f_callback(DEVCB_##_devcb); // 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) \ - amis2000_base_device::set_7seg_table(*device, _ptr); + downcast<amis2000_base_device &>(*device).set_7seg_table(_ptr); class amis2000_base_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_i_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_read_i.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_a_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_write_a.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_f_callback(device_t &device, Object &&cb) { return downcast<amis2000_base_device &>(device).m_write_f.set_callback(std::forward<Object>(cb)); } - static void set_7seg_table(device_t &device, const u8 *ptr) { downcast<amis2000_base_device &>(device).m_7seg_table = ptr; } + // 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)); } + void set_7seg_table(const u8 *ptr) { m_7seg_table = ptr; } void data_64x4(address_map &map); void data_80x4(address_map &map); diff --git a/src/devices/cpu/apexc/apexc.h b/src/devices/cpu/apexc/apexc.h index 46b45e7bc2c..daa42e8ddd8 100644 --- a/src/devices/cpu/apexc/apexc.h +++ b/src/devices/cpu/apexc/apexc.h @@ -7,10 +7,10 @@ #pragma once #define MCFG_APEXC_TAPE_READ_CB(_devcb) \ - devcb = &apexc_cpu_device::set_tape_read_cb(*device, DEVCB_##_devcb); + devcb = &downcast<apexc_cpu_device &>(*device).set_tape_read_cb(DEVCB_##_devcb); #define MCFG_APEXC_TAPE_PUNCH_CB(_devcb) \ - devcb = &apexc_cpu_device::set_tape_punch_cb(*device, DEVCB_##_devcb); + devcb = &downcast<apexc_cpu_device &>(*device).set_tape_punch_cb(DEVCB_##_devcb); enum { @@ -28,17 +28,9 @@ public: // construction/destruction apexc_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration - template<class Object> - static devcb_base &set_tape_read_cb(device_t &device, Object &&object) - { - return downcast<apexc_cpu_device &>(device).m_tape_read_cb.set_callback(std::forward<Object>(object)); - } - template<class Object> - static devcb_base &set_tape_punch_cb(device_t &device, Object &&object) - { - return downcast<apexc_cpu_device &>(device).m_tape_punch_cb.set_callback(std::forward<Object>(object)); - } + // configuration + template<class Object> devcb_base &set_tape_read_cb(Object &&object) { return m_tape_read_cb.set_callback(std::forward<Object>(object)); } + template<class Object> devcb_base &set_tape_punch_cb(Object &&object) { return m_tape_punch_cb.set_callback(std::forward<Object>(object)); } protected: // device-level overrides diff --git a/src/devices/cpu/arm/arm.h b/src/devices/cpu/arm/arm.h index 3cfb1386fa9..e1795f0594d 100644 --- a/src/devices/cpu/arm/arm.h +++ b/src/devices/cpu/arm/arm.h @@ -17,7 +17,7 @@ ***************************************************************************************************/ #define MCFG_ARM_COPRO(_type) \ - arm_cpu_device::set_copro_type(*device, arm_cpu_device::copro_type::_type); + downcast<arm_cpu_device &>(*device).set_copro_type(arm_cpu_device::copro_type::_type); class arm_cpu_device : public cpu_device @@ -32,7 +32,7 @@ public: // construction/destruction arm_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_copro_type(device_t &device, copro_type type) { downcast<arm_cpu_device &>(device).m_copro_type = type; } + void set_copro_type(copro_type type) { m_copro_type = type; } protected: enum diff --git a/src/devices/cpu/arm7/arm7.h b/src/devices/cpu/arm7/arm7.h index a1b4dc04a25..def6bed007b 100644 --- a/src/devices/cpu/arm7/arm7.h +++ b/src/devices/cpu/arm7/arm7.h @@ -34,7 +34,7 @@ #define ARM7_MAX_HOTSPOTS 16 #define MCFG_ARM_HIGH_VECTORS() \ - arm7_cpu_device::set_high_vectors(*device); + downcast<arm7_cpu_device &>(*device).set_high_vectors(); /*************************************************************************** @@ -57,11 +57,7 @@ public: // construction/destruction arm7_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_high_vectors(device_t &device) - { - arm7_cpu_device &dev = downcast<arm7_cpu_device &>(device); - dev.m_vectorbase = 0xffff0000; - } + void set_high_vectors() { m_vectorbase = 0xffff0000; } protected: enum diff --git a/src/devices/cpu/arm7/lpc210x.h b/src/devices/cpu/arm7/lpc210x.h index fa5a20999d0..afcc4a57795 100644 --- a/src/devices/cpu/arm7/lpc210x.h +++ b/src/devices/cpu/arm7/lpc210x.h @@ -23,9 +23,6 @@ class lpc210x_device : public arm7_cpu_device public: lpc210x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t); - // static configuration helpers - - DECLARE_READ32_MEMBER(arm_E01FC088_r); DECLARE_READ32_MEMBER(flash_r); DECLARE_WRITE32_MEMBER(flash_w); diff --git a/src/devices/cpu/avr8/avr8.h b/src/devices/cpu/avr8/avr8.h index 344c9ca317b..b898f4efc34 100644 --- a/src/devices/cpu/avr8/avr8.h +++ b/src/devices/cpu/avr8/avr8.h @@ -64,7 +64,7 @@ //************************************************************************** #define MCFG_CPU_AVR8_EEPROM(_tag) \ - avr8_device::set_eeprom_tag(*device, "^" _tag); + downcast<avr8_device &>(*device).set_eeprom_tag("^" _tag); //************************************************************************** @@ -80,7 +80,7 @@ class avr8_device : public cpu_device { public: // inline configuration helpers - static void set_eeprom_tag(device_t &device, const char *tag) { downcast<avr8_device &>(device).m_eeprom.set_tag(tag); } + void set_eeprom_tag(const char *tag) { m_eeprom.set_tag(tag); } // fuse configs void set_low_fuses(uint8_t byte); diff --git a/src/devices/cpu/ccpu/ccpu.h b/src/devices/cpu/ccpu/ccpu.h index 4cad4d66965..6510250e233 100644 --- a/src/devices/cpu/ccpu/ccpu.h +++ b/src/devices/cpu/ccpu/ccpu.h @@ -23,10 +23,10 @@ #define MCFG_CCPU_EXTERNAL_FUNC(_devcb) \ - ccpu_cpu_device::set_external_func(*device, DEVCB_##_devcb); + downcast<ccpu_cpu_device &>(*device).set_external_func(DEVCB_##_devcb); #define MCFG_CCPU_VECTOR_FUNC(d) \ - ccpu_cpu_device::set_vector_func(*device, d); + downcast<ccpu_cpu_device &>(*device).set_vector_func(d); class ccpu_cpu_device : public cpu_device @@ -53,9 +53,9 @@ public: // construction/destruction ccpu_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_external_func(device_t &device, Object &&cb) { return downcast<ccpu_cpu_device &>(device).m_external_input.set_callback(std::forward<Object>(cb)); } - static void set_vector_func(device_t &device, vector_delegate callback) { downcast<ccpu_cpu_device &>(device).m_vector_callback = callback; } + // configuration helpers + template <class Object> devcb_base &set_external_func(Object &&cb) { return m_external_input.set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_vector_func(Object &&cb) { m_vector_callback = std::forward<Object>(cb); } DECLARE_READ8_MEMBER( read_jmi ); void wdt_timer_trigger(); diff --git a/src/devices/cpu/cop400/cop400.h b/src/devices/cpu/cop400/cop400.h index 3630c2c41b7..643f6129fe1 100644 --- a/src/devices/cpu/cop400/cop400.h +++ b/src/devices/cpu/cop400/cop400.h @@ -17,40 +17,40 @@ // L pins: 8-bit bi-directional #define MCFG_COP400_READ_L_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_l_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_l_callback(DEVCB_##_devcb); #define MCFG_COP400_WRITE_L_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_l_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_l_callback(DEVCB_##_devcb); // output state when pins are in tri-state, default 0 #define MCFG_COP400_READ_L_TRISTATE_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_l_tristate_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_l_tristate_callback(DEVCB_##_devcb); // G pins: 4-bit bi-directional #define MCFG_COP400_READ_G_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_g_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_g_callback(DEVCB_##_devcb); #define MCFG_COP400_WRITE_G_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_g_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_g_callback(DEVCB_##_devcb); // D outputs: 4-bit general purpose output #define MCFG_COP400_WRITE_D_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb); // IN inputs: 4-bit general purpose input #define MCFG_COP400_READ_IN_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_in_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_in_callback(DEVCB_##_devcb); // SI/SO lines: serial in/out or counter/gen.purpose #define MCFG_COP400_READ_SI_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_si_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_si_callback(DEVCB_##_devcb); #define MCFG_COP400_WRITE_SO_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_so_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_so_callback(DEVCB_##_devcb); // SK output line: logic-controlled clock or gen.purpose #define MCFG_COP400_WRITE_SK_CB(_devcb) \ - devcb = &cop400_cpu_device::set_write_sk_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_write_sk_callback(DEVCB_##_devcb); // CKI/CKO lines: only CKO input here #define MCFG_COP400_READ_CKO_CB(_devcb) \ - devcb = &cop400_cpu_device::set_read_cko_callback(*device, DEVCB_##_devcb); + devcb = &downcast<cop400_cpu_device &>(*device).set_read_cko_callback(DEVCB_##_devcb); /*************************************************************************** @@ -112,9 +112,9 @@ enum cop400_cko_bond { #define MCFG_COP400_CONFIG(_cki, _cko, _microbus) \ - cop400_cpu_device::set_cki(*device, _cki); \ - cop400_cpu_device::set_cko(*device, _cko); \ - cop400_cpu_device::set_microbus(*device, _microbus); + downcast<cop400_cpu_device &>(*device).set_cki(_cki); \ + downcast<cop400_cpu_device &>(*device).set_cko(_cko); \ + downcast<cop400_cpu_device &>(*device).set_microbus(_microbus); class cop400_cpu_device : public cpu_device @@ -122,22 +122,22 @@ class cop400_cpu_device : public cpu_device public: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - // static configuration helpers - template<class _Object> static devcb_base &set_read_l_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_l.set_callback(object); } - template<class _Object> static devcb_base &set_read_l_tristate_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_l_tristate.set_callback(object); } - template<class _Object> static devcb_base &set_write_l_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_l.set_callback(object); } - template<class _Object> static devcb_base &set_read_g_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_g.set_callback(object); } - template<class _Object> static devcb_base &set_write_g_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_g.set_callback(object); } - template<class _Object> static devcb_base &set_write_d_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_d.set_callback(object); } - template<class _Object> static devcb_base &set_read_in_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_in.set_callback(object); } - template<class _Object> static devcb_base &set_read_si_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_si.set_callback(object); } - template<class _Object> static devcb_base &set_write_so_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_so.set_callback(object); } - template<class _Object> static devcb_base &set_write_sk_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_write_sk.set_callback(object); } - template<class _Object> static devcb_base &set_read_cko_callback(device_t &device, _Object object) { return downcast<cop400_cpu_device &>(device).m_read_cko.set_callback(object); } - - static void set_cki(device_t &device, cop400_cki_bond cki) { downcast<cop400_cpu_device &>(device).m_cki = cki; } - static void set_cko(device_t &device, cop400_cko_bond cko) { downcast<cop400_cpu_device &>(device).m_cko = cko; } - static void set_microbus(device_t &device, bool has_microbus) { downcast<cop400_cpu_device &>(device).m_has_microbus = has_microbus; } + // configuration helpers + template<class Object> devcb_base &set_read_l_callback(Object &&cb) { return m_read_l.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_read_l_tristate_callback(Object &&cb) { return m_read_l_tristate.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_write_l_callback(Object &&cb) { return m_write_l.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_read_g_callback(Object &&cb) { return m_read_g.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_write_g_callback(Object &&cb) { return m_write_g.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_read_in_callback(Object &&cb) { return m_read_in.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_read_si_callback(Object &&cb) { return m_read_si.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_write_so_callback(Object &&cb) { return m_write_so.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_write_sk_callback(Object &&cb) { return m_write_sk.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_read_cko_callback(Object &&cb) { return m_read_cko.set_callback(std::forward<Object>(cb)); } + + void set_cki(cop400_cki_bond cki) { m_cki = cki; } + void set_cko(cop400_cko_bond cko) { m_cko = cko; } + void set_microbus(bool has_microbus) { m_has_microbus = has_microbus; } DECLARE_READ8_MEMBER( microbus_rd ); DECLARE_WRITE8_MEMBER( microbus_wr ); diff --git a/src/devices/cpu/cosmac/cosmac.h b/src/devices/cpu/cosmac/cosmac.h index 515dde74d45..161b3ea7d5c 100644 --- a/src/devices/cpu/cosmac/cosmac.h +++ b/src/devices/cpu/cosmac/cosmac.h @@ -88,34 +88,34 @@ //************************************************************************** #define MCFG_COSMAC_WAIT_CALLBACK(_read) \ - devcb = &cosmac_device::set_wait_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cosmac_device &>(*device).set_wait_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_CLEAR_CALLBACK(_read) \ - devcb = &cosmac_device::set_clear_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cosmac_device &>(*device).set_clear_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_EF1_CALLBACK(_read) \ - devcb = &cosmac_device::set_ef1_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cosmac_device &>(*device).set_ef1_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_EF2_CALLBACK(_read) \ - devcb = &cosmac_device::set_ef2_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cosmac_device &>(*device).set_ef2_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_EF3_CALLBACK(_read) \ - devcb = &cosmac_device::set_ef3_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cosmac_device &>(*device).set_ef3_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_EF4_CALLBACK(_read) \ - devcb = &cosmac_device::set_ef4_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cosmac_device &>(*device).set_ef4_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_Q_CALLBACK(_write) \ - devcb = &cosmac_device::set_q_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cosmac_device &>(*device).set_q_wr_callback(DEVCB_##_write); #define MCFG_COSMAC_DMAR_CALLBACK(_read) \ - devcb = &cosmac_device::set_dma_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<cosmac_device &>(*device).set_dma_rd_callback(DEVCB_##_read); #define MCFG_COSMAC_DMAW_CALLBACK(_write) \ - devcb = &cosmac_device::set_dma_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cosmac_device &>(*device).set_dma_wr_callback(DEVCB_##_write); #define MCFG_COSMAC_SC_CALLBACK(_write) \ - devcb = &cosmac_device::set_sc_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<cosmac_device &>(*device).set_sc_wr_callback(DEVCB_##_write); @@ -193,16 +193,16 @@ public: }; - template <class Object> static devcb_base &set_wait_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_wait.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_clear_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_clear.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ef1_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ef2_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ef3_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ef4_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_ef4.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_q_wr_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_write_q.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_rd_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_read_dma.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dma_wr_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_write_dma.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sc_wr_callback(device_t &device, Object &&cb) { return downcast<cosmac_device &>(device).m_write_sc.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_wait_rd_callback(Object &&cb) { return m_read_wait.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_clear_rd_callback(Object &&cb) { return m_read_clear.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ef1_rd_callback(Object &&cb) { return m_read_ef1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ef2_rd_callback(Object &&cb) { return m_read_ef2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ef3_rd_callback(Object &&cb) { return m_read_ef3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ef4_rd_callback(Object &&cb) { return m_read_ef4.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_q_wr_callback(Object &&cb) { return m_write_q.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_rd_callback(Object &&cb) { return m_read_dma.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_wr_callback(Object &&cb) { return m_write_dma.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sc_wr_callback(Object &&cb) { return m_write_sc.set_callback(std::forward<Object>(cb)); } // public interfaces offs_t get_memory_address(); diff --git a/src/devices/cpu/cubeqcpu/cubeqcpu.h b/src/devices/cpu/cubeqcpu/cubeqcpu.h index 46b3235c6be..90f5b5250c0 100644 --- a/src/devices/cpu/cubeqcpu/cubeqcpu.h +++ b/src/devices/cpu/cubeqcpu/cubeqcpu.h @@ -18,16 +18,16 @@ #define MCFG_CQUESTSND_CONFIG(_dac_w, _sound_tag) \ - cquestsnd_cpu_device::set_dac_w(*device, DEVCB_##_dac_w); \ - cquestsnd_cpu_device::set_sound_region(*device, _sound_tag); + downcast<cquestsnd_cpu_device &>(*device).set_dac_w(DEVCB_##_dac_w); \ + downcast<cquestsnd_cpu_device &>(*device).set_sound_region(_sound_tag); #define MCFG_CQUESTROT_CONFIG(_linedata_w) \ - cquestrot_cpu_device::set_linedata_w(*device, DEVCB_##_linedata_w ); + downcast<cquestrot_cpu_device &>(*device).set_linedata_w(DEVCB_##_linedata_w ); #define MCFG_CQUESTLIN_CONFIG(_linedata_r) \ - cquestlin_cpu_device::set_linedata_r(*device, DEVCB_##_linedata_r ); + downcast<cquestlin_cpu_device &>(*device).set_linedata_r(DEVCB_##_linedata_r ); /*************************************************************************** @@ -40,9 +40,9 @@ public: // construction/destruction cquestsnd_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_dac_w(device_t &device, Object &&cb) { return downcast<cquestsnd_cpu_device &>(device).m_dac_w.set_callback(std::forward<Object>(cb)); } - static void set_sound_region(device_t &device, const char *tag) { downcast<cquestsnd_cpu_device &>(device).m_sound_region_tag = tag; } + // configuration helpers + template <class Object> devcb_base &set_dac_w(Object &&cb) { return m_dac_w.set_callback(std::forward<Object>(cb)); } + void set_sound_region(const char *tag) { m_sound_region_tag = tag; } DECLARE_WRITE16_MEMBER(sndram_w); DECLARE_READ16_MEMBER(sndram_r); @@ -131,8 +131,8 @@ public: // construction/destruction cquestrot_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_linedata_w(device_t &device, Object &&cb) { return downcast<cquestrot_cpu_device &>(device).m_linedata_w.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_linedata_w(Object &&cb) { return m_linedata_w.set_callback(std::forward<Object>(cb)); } DECLARE_READ16_MEMBER(linedata_r); DECLARE_WRITE16_MEMBER(rotram_w); @@ -243,8 +243,8 @@ public: // construction/destruction cquestlin_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_linedata_r(device_t &device, Object &&cb) { return downcast<cquestlin_cpu_device &>(device).m_linedata_r.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_linedata_r(Object &&cb) { return m_linedata_r.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE16_MEMBER( linedata_w ); void cubeqcpu_swap_line_banks(); diff --git a/src/devices/cpu/dsp32/dsp32.h b/src/devices/cpu/dsp32/dsp32.h index 8f8ad369736..1a091fb1c95 100644 --- a/src/devices/cpu/dsp32/dsp32.h +++ b/src/devices/cpu/dsp32/dsp32.h @@ -31,7 +31,7 @@ const int DSP32_OUTPUT_PDF = 0x02; //************************************************************************** #define MCFG_DSP32C_OUTPUT_CALLBACK(_write) \ - devcb = &dsp32c_device::set_output_pins_callback(*device, DEVCB_##_write); + devcb = &downcast<dsp32c_device &>(*device).set_output_pins_callback(DEVCB_##_write); // ======================> dsp32c_device @@ -41,7 +41,7 @@ public: // construction/destruction dsp32c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_output_pins_callback(device_t &device, Object &&cb) { return downcast<dsp32c_device &>(device).m_output_pins_changed.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_output_pins_callback(Object &&cb) { return m_output_pins_changed.set_callback(std::forward<Object>(cb)); } // public interfaces diff --git a/src/devices/cpu/e0c6200/e0c6s46.h b/src/devices/cpu/e0c6200/e0c6s46.h index d6e35ab2fbf..7e9c4d0f91b 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.h +++ b/src/devices/cpu/e0c6200/e0c6s46.h @@ -16,7 +16,7 @@ // 5 4-bit R output ports #define MCFG_E0C6S46_WRITE_R_CB(R, _devcb) \ - devcb = &e0c6s46_device::set_write_r##R##_callback(*device, DEVCB_##_devcb); + devcb = &downcast<e0c6s46_device &>(*device).set_write_r##R##_callback(DEVCB_##_devcb); enum { @@ -29,9 +29,9 @@ enum // 4 4-bit P I/O ports #define MCFG_E0C6S46_READ_P_CB(R, _devcb) \ - devcb = &hmcs40_cpu_device::set_read_r##P##_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hmcs40_cpu_device &>(*device).set_read_r##P##_callback(DEVCB_##_devcb); #define MCFG_E0C6S46_WRITE_P_CB(R, _devcb) \ - devcb = &e0c6s46_device::set_write_r##P##_callback(*device, DEVCB_##_devcb); + devcb = &downcast<e0c6s46_device &>(*device).set_write_r##P##_callback(DEVCB_##_devcb); enum { @@ -57,7 +57,7 @@ enum // lcd driver #define MCFG_E0C6S46_PIXEL_UPDATE_CB(_class, _method) \ - e0c6s46_device::static_set_pixel_update_cb(*device, e0c6s46_device::pixel_update_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<e0c6s46_device &>(*device).set_pixel_update_cb(e0c6s46_device::pixel_update_delegate(&_class::_method, #_class "::" #_method, this)); #define E0C6S46_PIXEL_UPDATE(name) void name(bitmap_ind16 &bitmap, const rectangle &cliprect, int contrast, int seg, int com, int state) @@ -69,23 +69,23 @@ public: e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration helpers - template <class Object> static devcb_base &set_write_r0_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r1_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r2_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r3_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r4_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_r4.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_read_p0_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_p1_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_p2_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_p3_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_read_p3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_p0_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_p1_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_p2_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_p3_callback(device_t &device, Object &&cb) { return downcast<e0c6s46_device &>(device).m_write_p3.set_callback(std::forward<Object>(cb)); } - - static void static_set_pixel_update_cb(device_t &device, pixel_update_delegate &&cb) { downcast<e0c6s46_device &>(device).m_pixel_update_cb = std::move(cb); } + // configuration helpers + template <class Object> devcb_base &set_write_r0_callback(Object &&cb) { return m_write_r0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r1_callback(Object &&cb) { return m_write_r1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r2_callback(Object &&cb) { return m_write_r2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r3_callback(Object &&cb) { return m_write_r3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r4_callback(Object &&cb) { return m_write_r4.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_read_p0_callback(Object &&cb) { return m_read_p0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_p1_callback(Object &&cb) { return m_read_p1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_p2_callback(Object &&cb) { return m_read_p2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_p3_callback(Object &&cb) { return m_read_p3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_p0_callback(Object &&cb) { return m_write_p0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_p1_callback(Object &&cb) { return m_write_p1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_p2_callback(Object &&cb) { return m_write_p2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_p3_callback(Object &&cb) { return m_write_p3.set_callback(std::forward<Object>(cb)); } + + template <typename Object> void set_pixel_update_cb(Object &&cb) { m_pixel_update_cb = std::forward<Object>(cb); } DECLARE_READ8_MEMBER(io_r); DECLARE_WRITE8_MEMBER(io_w); diff --git a/src/devices/cpu/esrip/esrip.h b/src/devices/cpu/esrip/esrip.h index 13320e82a12..d913861cb01 100644 --- a/src/devices/cpu/esrip/esrip.h +++ b/src/devices/cpu/esrip/esrip.h @@ -20,19 +20,19 @@ #define ESRIP_DRAW(name) int name(int l, int r, int fig, int attr, int addr, int col, int x_scale, int bank) #define MCFG_ESRIP_FDT_R_CALLBACK(_read) \ - devcb = &esrip_device::static_set_fdt_r_callback(*device, DEVCB_##_read); + devcb = &downcast<esrip_device &>(*device).set_fdt_r_callback(DEVCB_##_read); #define MCFG_ESRIP_FDT_W_CALLBACK(_write) \ - devcb = &esrip_device::static_set_fdt_w_callback(*device, DEVCB_##_write); + devcb = &downcast<esrip_device &>(*device).set_fdt_w_callback(DEVCB_##_write); #define MCFG_ESRIP_STATUS_IN_CALLBACK(_read) \ - devcb = &esrip_device::static_set_status_in_callback(*device, DEVCB_##_read); + devcb = &downcast<esrip_device &>(*device).set_status_in_callback(DEVCB_##_read); #define MCFG_ESRIP_DRAW_CALLBACK_OWNER(_class, _method) \ - esrip_device::static_set_draw_callback(*device, esrip_device::draw_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<esrip_device &>(*device).set_draw_callback(esrip_device::draw_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_ESRIP_LBRM_PROM(_tag) \ - esrip_device::static_lbrm_prom(*device, _tag); + downcast<esrip_device &>(*device).lbrm_prom(_tag); //************************************************************************** @@ -54,11 +54,11 @@ public: esrip_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers - template <class Object> static devcb_base &static_set_fdt_r_callback(device_t &device, Object &&cb) { return downcast<esrip_device &>(device).m_fdt_r.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_fdt_w_callback(device_t &device, Object &&cb) { return downcast<esrip_device &>(device).m_fdt_w.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_status_in_callback(device_t &device, Object &&cb) { return downcast<esrip_device &>(device).m_status_in.set_callback(std::forward<Object>(cb)); } - static void static_set_draw_callback(device_t &device, draw_delegate func) { downcast<esrip_device &>(device).m_draw = func; } - static void static_lbrm_prom(device_t &device, const char *name) { downcast<esrip_device &>(device).m_lbrm_prom = name; } + template <class Object> devcb_base &set_fdt_r_callback(Object &&cb) { return m_fdt_r.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_fdt_w_callback(Object &&cb) { return m_fdt_w.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_status_in_callback(Object &&cb) { return m_status_in.set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_draw_callback(Object &&cb) { m_draw = std::forward<Object>(cb); } + void lbrm_prom(const char *name) { m_lbrm_prom = name; } // public interfaces uint8_t get_rip_status(); diff --git a/src/devices/cpu/h8/h83002.h b/src/devices/cpu/h8/h83002.h index 613611c92ba..457e604aa21 100644 --- a/src/devices/cpu/h8/h83002.h +++ b/src/devices/cpu/h8/h83002.h @@ -26,16 +26,16 @@ #include "h8_watchdog.h" #define MCFG_H83002_TEND0_CALLBACK(_devcb) \ - devcb = &h83002_device::set_tend0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<h83002_device &>(*device).set_tend0_callback(DEVCB_##_devcb); #define MCFG_H83002_TEND1_CALLBACK(_devcb) \ - devcb = &h83002_device::set_tend1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<h83002_device &>(*device).set_tend1_callback(DEVCB_##_devcb); class h83002_device : public h8h_device { public: h83002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template<class _Object> static devcb_base &set_tend0_callback(device_t &device, _Object object) { return downcast<h83002_device&>(device).tend0_cb.set_callback(object); } - template<class _Object> static devcb_base &set_tend1_callback(device_t &device, _Object object) { return downcast<h83002_device&>(device).tend1_cb.set_callback(object); } + template<class Object> devcb_base &set_tend0_callback(Object &&cb) { return tend0_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_tend1_callback(Object &&cb) { return tend1_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(syscr_r); DECLARE_WRITE8_MEMBER(syscr_w); diff --git a/src/devices/cpu/h8/h8_sci.h b/src/devices/cpu/h8/h8_sci.h index ea13f1f65a2..3c2db4147df 100644 --- a/src/devices/cpu/h8/h8_sci.h +++ b/src/devices/cpu/h8/h8_sci.h @@ -25,10 +25,10 @@ downcast<h8_sci_device *>(device)->set_external_clock_period(_period); #define MCFG_H8_SCI_TX_CALLBACK(_devcb) \ - devcb = &h8_sci_device::set_tx_cb(*device, DEVCB_##_devcb); + devcb = &downcast<h8_sci_device &>(*device).set_tx_cb(DEVCB_##_devcb); #define MCFG_H8_SCI_CLK_CALLBACK(_devcb) \ - devcb = &h8_sci_device::set_clk_cb(*device, DEVCB_##_devcb); + devcb = &downcast<h8_sci_device &>(*device).set_clk_cb(DEVCB_##_devcb); class h8_sci_device : public device_t { public: @@ -54,8 +54,8 @@ public: DECLARE_WRITE_LINE_MEMBER(rx_w); DECLARE_WRITE_LINE_MEMBER(clk_w); - template <class Object> static devcb_base &set_tx_cb(device_t &device, Object &&cb) { return downcast<h8_sci_device &>(device).tx_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_clk_cb(device_t &device, Object &&cb) { return downcast<h8_sci_device &>(device).clk_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tx_cb(Object &&cb) { return tx_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_clk_cb(Object &&cb) { return clk_cb.set_callback(std::forward<Object>(cb)); } uint64_t internal_update(uint64_t current_time); diff --git a/src/devices/cpu/hcd62121/hcd62121.h b/src/devices/cpu/hcd62121/hcd62121.h index 1b7fb74feba..def79f44681 100644 --- a/src/devices/cpu/hcd62121/hcd62121.h +++ b/src/devices/cpu/hcd62121/hcd62121.h @@ -6,12 +6,12 @@ #pragma once -#define MCFG_HCD62121_KOL_CB(_devcb) devcb = &hcd62121_cpu_device::set_kol_callback(*device, DEVCB_##_devcb); -#define MCFG_HCD62121_KOH_CB(_devcb) devcb = &hcd62121_cpu_device::set_koh_callback(*device, DEVCB_##_devcb); -#define MCFG_HCD62121_PORT_CB(_devcb) devcb = &hcd62121_cpu_device::set_port_callback(*device, DEVCB_##_devcb); -#define MCFG_HCD62121_OPT_CB(_devcb) devcb = &hcd62121_cpu_device::set_opt_callback(*device, DEVCB_##_devcb); -#define MCFG_HCD62121_KI_CB(_devcb) devcb = &hcd62121_cpu_device::set_ki_callback(*device, DEVCB_##_devcb); -#define MCFG_HCD62121_IN0_CB(_devcb) devcb = &hcd62121_cpu_device::set_in0_callback(*device, DEVCB_##_devcb); +#define MCFG_HCD62121_KOL_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_kol_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_KOH_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_koh_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_PORT_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_port_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_OPT_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_opt_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_KI_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_ki_callback(DEVCB_##_devcb); +#define MCFG_HCD62121_IN0_CB(_devcb) devcb = &downcast<hcd62121_cpu_device &>(*device).set_in0_callback(DEVCB_##_devcb); class hcd62121_cpu_device : public cpu_device @@ -20,12 +20,12 @@ public: // construction/destruction hcd62121_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_kol_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_kol_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_koh_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_koh_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_port_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_opt_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_opt_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ki_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_ki_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in0_callback(device_t &device, Object &&cb) { return downcast<hcd62121_cpu_device &>(device).m_in0_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_kol_callback(Object &&cb) { return m_kol_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_koh_callback(Object &&cb) { return m_koh_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port_callback(Object &&cb) { return m_port_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_opt_callback(Object &&cb) { return m_opt_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ki_callback(Object &&cb) { return m_ki_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in0_callback(Object &&cb) { return m_in0_cb.set_callback(std::forward<Object>(cb)); } protected: enum diff --git a/src/devices/cpu/hd61700/hd61700.h b/src/devices/cpu/hd61700/hd61700.h index 12da10dece3..971de2fb179 100644 --- a/src/devices/cpu/hd61700/hd61700.h +++ b/src/devices/cpu/hd61700/hd61700.h @@ -16,25 +16,25 @@ //************************************************************************** #define MCFG_HD61700_LCD_CTRL_CB(_devcb) \ - devcb = &hd61700_cpu_device::set_lcd_ctrl_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd61700_cpu_device &>(*device).set_lcd_ctrl_callback(DEVCB_##_devcb); #define MCFG_HD61700_LCD_WRITE_CB(_devcb) \ - devcb = &hd61700_cpu_device::set_lcd_write_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd61700_cpu_device &>(*device).set_lcd_write_callback(DEVCB_##_devcb); #define MCFG_HD61700_LCD_READ_CB(_devcb) \ - devcb = &hd61700_cpu_device::set_lcd_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd61700_cpu_device &>(*device).set_lcd_read_callback(DEVCB_##_devcb); #define MCFG_HD61700_KB_WRITE_CB(_devcb) \ - devcb = &hd61700_cpu_device::set_kb_write_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd61700_cpu_device &>(*device).set_kb_write_callback(DEVCB_##_devcb); #define MCFG_HD61700_KB_READ_CB(_devcb) \ - devcb = &hd61700_cpu_device::set_kb_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd61700_cpu_device &>(*device).set_kb_read_callback(DEVCB_##_devcb); #define MCFG_HD61700_PORT_WRITE_CB(_devcb) \ - devcb = &hd61700_cpu_device::set_port_write_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd61700_cpu_device &>(*device).set_port_write_callback(DEVCB_##_devcb); #define MCFG_HD61700_PORT_READ_CB(_devcb) \ - devcb = &hd61700_cpu_device::set_port_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hd61700_cpu_device &>(*device).set_port_read_callback(DEVCB_##_devcb); //************************************************************************** @@ -61,13 +61,13 @@ public: // construction/destruction hd61700_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - template<class _Object> static devcb_base &set_lcd_ctrl_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_lcd_ctrl_cb.set_callback(object); } - template<class _Object> static devcb_base &set_lcd_write_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_lcd_write_cb.set_callback(object); } - template<class _Object> static devcb_base &set_lcd_read_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_lcd_read_cb.set_callback(object); } - template<class _Object> static devcb_base &set_kb_write_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_kb_write_cb.set_callback(object); } - template<class _Object> static devcb_base &set_kb_read_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_kb_read_cb.set_callback(object); } - template<class _Object> static devcb_base &set_port_write_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_port_write_cb.set_callback(object); } - template<class _Object> static devcb_base &set_port_read_callback(device_t &device, _Object object) { return downcast<hd61700_cpu_device &>(device).m_port_read_cb.set_callback(object); } + template<class Object> devcb_base &set_lcd_ctrl_callback(Object &&cb) { return m_lcd_ctrl_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_lcd_write_callback(Object &&cb) { return m_lcd_write_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_lcd_read_callback(Object &&cb) { return m_lcd_read_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_kb_write_callback(Object &&cb) { return m_kb_write_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_kb_read_callback(Object &&cb) { return m_kb_read_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_port_write_callback(Object &&cb) { return m_port_write_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_port_read_callback(Object &&cb) { return m_port_read_cb.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/cpu/hmcs40/hmcs40.h b/src/devices/cpu/hmcs40/hmcs40.h index c91b2a99102..4ea6b8f5eeb 100644 --- a/src/devices/cpu/hmcs40/hmcs40.h +++ b/src/devices/cpu/hmcs40/hmcs40.h @@ -16,15 +16,15 @@ // max 8 4-bit R ports #define MCFG_HMCS40_READ_R_CB(R, _devcb) \ - devcb = &hmcs40_cpu_device::set_read_r##R##_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hmcs40_cpu_device &>(*device).set_read_r##R##_callback(DEVCB_##_devcb); #define MCFG_HMCS40_WRITE_R_CB(R, _devcb) \ - devcb = &hmcs40_cpu_device::set_write_r##R##_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hmcs40_cpu_device &>(*device).set_write_r##R##_callback(DEVCB_##_devcb); // 16-bit discrete #define MCFG_HMCS40_READ_D_CB(_devcb) \ - devcb = &hmcs40_cpu_device::set_read_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hmcs40_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_HMCS40_WRITE_D_CB(_devcb) \ - devcb = &hmcs40_cpu_device::set_write_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<hmcs40_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb); enum { @@ -105,27 +105,27 @@ public: PORT_R7X }; - // static configuration helpers - template <class Object> static devcb_base &set_read_r0_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r1_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r2_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r3_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r4_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r4.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r5_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r5.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r6_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r6.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r7_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_r7.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_write_r0_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r1_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r2_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r3_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r4_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r4.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r5_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r5.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r6_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r6.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r7_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_r7.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<hmcs40_cpu_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_read_r0_callback(Object &&cb) { return m_read_r0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r1_callback(Object &&cb) { return m_read_r1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r2_callback(Object &&cb) { return m_read_r2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r3_callback(Object &&cb) { return m_read_r3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r4_callback(Object &&cb) { return m_read_r4.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r5_callback(Object &&cb) { return m_read_r5.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r6_callback(Object &&cb) { return m_read_r6.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r7_callback(Object &&cb) { return m_read_r7.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_write_r0_callback(Object &&cb) { return m_write_r0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r1_callback(Object &&cb) { return m_write_r1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r2_callback(Object &&cb) { return m_write_r2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r3_callback(Object &&cb) { return m_write_r3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r4_callback(Object &&cb) { return m_write_r4.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r5_callback(Object &&cb) { return m_write_r5.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r6_callback(Object &&cb) { return m_write_r6.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r7_callback(Object &&cb) { return m_write_r7.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)); } protected: enum diff --git a/src/devices/cpu/hphybrid/hphybrid.h b/src/devices/cpu/hphybrid/hphybrid.h index bd362d710ee..63360d0bfdd 100644 --- a/src/devices/cpu/hphybrid/hphybrid.h +++ b/src/devices/cpu/hphybrid/hphybrid.h @@ -41,11 +41,11 @@ // Set boot mode of 5061-3001: either normal (false) or as in HP9845 system (true) #define MCFG_HPHYBRID_SET_9845_BOOT(_mode) \ - hp_5061_3001_cpu_device::set_boot_mode_static(*device, _mode); + downcast<hp_5061_3001_cpu_device &>(*device).set_boot_mode(_mode); // PA changed callback #define MCFG_HPHYBRID_PA_CHANGED(_devcb) \ - devcb = &hp_hybrid_cpu_device::set_pa_changed_func(*device , DEVCB_##_devcb); + devcb = &downcast<hp_hybrid_cpu_device &>(*device).set_pa_changed_func(DEVCB_##_devcb); class hp_hybrid_cpu_device : public cpu_device { @@ -57,7 +57,7 @@ public: uint8_t pa_r() const; - template <class Object> static devcb_base &set_pa_changed_func(device_t &device, Object &&cb) { return downcast<hp_hybrid_cpu_device &>(device).m_pa_changed_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pa_changed_func(Object &&cb) { return m_pa_changed_func.set_callback(std::forward<Object>(cb)); } protected: hp_hybrid_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t addrwidth); @@ -161,7 +161,7 @@ class hp_5061_3001_cpu_device : public hp_hybrid_cpu_device public: hp_5061_3001_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_boot_mode_static(device_t &device, bool mode) { downcast<hp_5061_3001_cpu_device &>(device).m_boot_mode = mode; } + void set_boot_mode(bool mode) { m_boot_mode = mode; } protected: virtual void device_start() override; diff --git a/src/devices/cpu/i386/i386.h b/src/devices/cpu/i386/i386.h index 5c56d292280..b0f0ba0fa5b 100644 --- a/src/devices/cpu/i386/i386.h +++ b/src/devices/cpu/i386/i386.h @@ -26,10 +26,10 @@ #define MCFG_I386_SMIACT(_devcb) \ - devcb = &i386_device::set_smiact(*device, DEVCB_##_devcb); + devcb = &downcast<i386_device &>(*device).set_smiact(DEVCB_##_devcb); #define MCFG_I486_FERR_HANDLER(_devcb) \ - devcb = &i386_device::set_ferr(*device, DEVCB_##_devcb); + devcb = &downcast<i386_device &>(*device).set_ferr(DEVCB_##_devcb); #define X86_NUM_CPUS 4 @@ -39,9 +39,9 @@ public: // construction/destruction i386_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_smiact(device_t &device, Object &&cb) { return downcast<i386_device &>(device).m_smiact.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ferr(device_t &device, Object &&cb) { return downcast<i386_device &>(device).m_ferr_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_smiact(Object &&cb) { return m_smiact.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ferr(Object &&cb) { return m_ferr_handler.set_callback(std::forward<Object>(cb)); } uint64_t debug_segbase(symbol_table &table, int params, const uint64_t *param); uint64_t debug_seglimit(symbol_table &table, int params, const uint64_t *param); diff --git a/src/devices/cpu/i8085/i8085.h b/src/devices/cpu/i8085/i8085.h index b4ab5901c1f..2da4c89acd1 100644 --- a/src/devices/cpu/i8085/i8085.h +++ b/src/devices/cpu/i8085/i8085.h @@ -18,25 +18,25 @@ // STATUS changed callback #define MCFG_I8085A_STATUS(_devcb) \ - devcb = &i8085a_cpu_device::set_out_status_func(*device, DEVCB_##_devcb); + devcb = &downcast<i8085a_cpu_device &>(*device).set_out_status_func(DEVCB_##_devcb); // INTE changed callback #define MCFG_I8085A_INTE(_devcb) \ - devcb = &i8085a_cpu_device::set_out_inte_func(*device, DEVCB_##_devcb); + devcb = &downcast<i8085a_cpu_device &>(*device).set_out_inte_func(DEVCB_##_devcb); // SID changed callback (8085A only) #define MCFG_I8085A_SID(_devcb) \ - devcb = &i8085a_cpu_device::set_in_sid_func(*device, DEVCB_##_devcb); + devcb = &downcast<i8085a_cpu_device &>(*device).set_in_sid_func(DEVCB_##_devcb); // SOD changed callback (8085A only) #define MCFG_I8085A_SOD(_devcb) \ - devcb = &i8085a_cpu_device::set_out_sod_func(*device, DEVCB_##_devcb); + devcb = &downcast<i8085a_cpu_device &>(*device).set_out_sod_func(DEVCB_##_devcb); // CLK rate callback (8085A only) #define MCFG_I8085A_CLK_OUT_DEVICE(_tag) \ - i8085a_cpu_device::static_set_clk_out(*device, clock_update_delegate(FUNC(device_t::set_unscaled_clock), _tag, (device_t *)nullptr)); + downcast<i8085a_cpu_device &>(*device).set_clk_out(clock_update_delegate(FUNC(device_t::set_unscaled_clock), _tag, (device_t *)nullptr)); #define MCFG_I8085A_CLK_OUT_CUSTOM(_class, _func) \ - i8085a_cpu_device::static_set_clk_out(*device, clock_update_delegate(&_class::_func, #_class "::" _func, owner)); + downcast<i8085a_cpu_device &>(*device).set_clk_out(clock_update_delegate(&_class::_func, #_class "::" _func, owner)); class i8085a_cpu_device : public cpu_device @@ -65,12 +65,12 @@ public: // construction/destruction i8085a_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration helpers - template <class Object> static devcb_base &set_out_status_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_out_status_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_inte_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_out_inte_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_sid_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_in_sid_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_sod_func(device_t &device, Object &&cb) { return downcast<i8085a_cpu_device &>(device).m_out_sod_func.set_callback(std::forward<Object>(cb)); } - static void static_set_clk_out(device_t &device, clock_update_delegate &&clk_out) { downcast<i8085a_cpu_device &>(device).m_clk_out_func = std::move(clk_out); } + // configuration helpers + template <class Object> devcb_base &set_out_status_func(Object &&cb) { return m_out_status_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_inte_func(Object &&cb) { return m_out_inte_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_sid_func(Object &&cb) { return m_in_sid_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_sod_func(Object &&cb) { return m_out_sod_func.set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_clk_out(Object &&cb) { m_clk_out_func = std::forward<Object>(cb); } protected: i8085a_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int cputype); diff --git a/src/devices/cpu/i8089/i8089.h b/src/devices/cpu/i8089/i8089.h index 1659afd54d9..df72f847b85 100644 --- a/src/devices/cpu/i8089/i8089.h +++ b/src/devices/cpu/i8089/i8089.h @@ -23,7 +23,7 @@ //************************************************************************** #define MCFG_I8089_DATA_WIDTH(_data_width) \ - i8089_device::set_data_width(*device, _data_width); + downcast<i8089_device &>(*device).set_data_width(_data_width); #define MCFG_I8089_SINTR1(_sintr1) \ devcb = &downcast<i8089_device *>(device)->set_sintr1_callback(DEVCB_##_sintr1); @@ -53,8 +53,8 @@ public: template <class Object> devcb_base &set_sintr1_callback(Object &&sintr1) { return m_write_sintr1.set_callback(std::forward<Object>(sintr1)); } template <class Object> devcb_base &set_sintr2_callback(Object &&sintr2) { return m_write_sintr2.set_callback(std::forward<Object>(sintr2)); } - // static configuration helpers - static void set_data_width(device_t &device, uint8_t data_width) { downcast<i8089_device &>(device).m_data_width = data_width; } + // configuration helpers + void set_data_width(uint8_t data_width) { m_data_width = data_width; } // input lines DECLARE_WRITE_LINE_MEMBER( ca_w ); diff --git a/src/devices/cpu/i86/i186.cpp b/src/devices/cpu/i86/i186.cpp index 6bb679a3300..558a36cb912 100644 --- a/src/devices/cpu/i86/i186.cpp +++ b/src/devices/cpu/i86/i186.cpp @@ -126,7 +126,7 @@ i80188_cpu_device::i80188_cpu_device(const machine_config &mconfig, const char * { memcpy(m_timing, m_i80186_timing, sizeof(m_i80186_timing)); m_fetch_xor = 0; - static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this)); + set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this)); } i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) @@ -134,7 +134,7 @@ i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, const char * { memcpy(m_timing, m_i80186_timing, sizeof(m_i80186_timing)); m_fetch_xor = BYTE_XOR_LE(0); - static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this)); + set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this)); } i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_bus_size) diff --git a/src/devices/cpu/i86/i186.h b/src/devices/cpu/i86/i186.h index ec7acac9bea..7ebb6e1bc4b 100644 --- a/src/devices/cpu/i86/i186.h +++ b/src/devices/cpu/i86/i186.h @@ -16,10 +16,10 @@ public: // construction/destruction i80186_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &static_set_read_slave_ack_callback(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_read_slave_ack_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_chip_select_callback(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_out_chip_select_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_tmrout0_handler(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_out_tmrout0_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_tmrout1_handler(device_t &device, Object &&cb) { return downcast<i80186_cpu_device &>(device).m_out_tmrout1_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_slave_ack_callback(Object &&cb) { return m_read_slave_ack_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_chip_select_callback(Object &&cb) { return m_out_chip_select_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tmrout0_handler(Object &&cb) { return m_out_tmrout0_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_tmrout1_handler(Object &&cb) { return m_out_tmrout1_func.set_callback(std::forward<Object>(cb)); } IRQ_CALLBACK_MEMBER(int_callback); DECLARE_WRITE_LINE_MEMBER(drq0_w) { if(state) drq_callback(0); m_dma[0].drq_state = state; } @@ -153,15 +153,15 @@ public: }; #define MCFG_80186_IRQ_SLAVE_ACK(_devcb) \ - devcb = &i80186_cpu_device::static_set_read_slave_ack_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i80186_cpu_device &>(*device).set_read_slave_ack_callback(DEVCB_##_devcb); #define MCFG_80186_CHIP_SELECT_CB(_devcb) \ - devcb = &i80186_cpu_device::static_set_chip_select_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i80186_cpu_device &>(*device).set_chip_select_callback(DEVCB_##_devcb); #define MCFG_80186_TMROUT0_HANDLER(_devcb) \ - devcb = &i80186_cpu_device::static_set_tmrout0_handler(*device, DEVCB_##_devcb); + devcb = &downcast<i80186_cpu_device &>(*device).set_tmrout0_handler(DEVCB_##_devcb); #define MCFG_80186_TMROUT1_HANDLER(_devcb) \ - devcb = &i80186_cpu_device::static_set_tmrout1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<i80186_cpu_device &>(*device).set_tmrout1_handler(DEVCB_##_devcb); #endif // MAME_CPU_I86_I186_H diff --git a/src/devices/cpu/i86/i286.h b/src/devices/cpu/i86/i286.h index 8136b0128ce..dbf5e245673 100644 --- a/src/devices/cpu/i86/i286.h +++ b/src/devices/cpu/i86/i286.h @@ -72,8 +72,8 @@ public: virtual space_config_vector memory_space_config() const override; typedef delegate<uint32_t (bool)> a20_cb; - static void static_set_a20_callback(device_t &device, a20_cb object) { downcast<i80286_cpu_device &>(device).m_a20_callback = object; } - template <class Object> static devcb_base &static_set_shutdown_callback(device_t &device, Object &&cb) { return downcast<i80286_cpu_device &>(device).m_out_shutdown_func.set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_a20_callback(Object &&cb) { m_a20_callback = std::forward<Object>(cb); } + template <class Object> devcb_base &set_shutdown_callback(Object &&cb) { return m_out_shutdown_func.set_callback(std::forward<Object>(cb)); } protected: virtual void execute_run() override; @@ -162,9 +162,9 @@ private: }; #define MCFG_80286_A20(_class, _a20_cb) \ - i80286_cpu_device::static_set_a20_callback(*device, i80286_cpu_device::a20_cb(&_class::_a20_cb, this)); + downcast<i80286_cpu_device &>(*device).set_a20_callback(i80286_cpu_device::a20_cb(&_class::_a20_cb, this)); #define MCFG_80286_SHUTDOWN(_devcb) \ - devcb = &i80286_cpu_device::static_set_shutdown_callback(*device, DEVCB_##_devcb); + devcb = &downcast<i80286_cpu_device &>(*device).set_shutdown_callback(DEVCB_##_devcb); #endif // MAME_CPU_I86_I286_H diff --git a/src/devices/cpu/i86/i86.h b/src/devices/cpu/i86/i86.h index d0bfd9b8782..3376a37f3b8 100644 --- a/src/devices/cpu/i86/i86.h +++ b/src/devices/cpu/i86/i86.h @@ -17,10 +17,10 @@ DECLARE_DEVICE_TYPE(I8088, i8088_cpu_device) #define MCFG_I8086_LOCK_HANDLER(_write) \ - devcb = &i8086_common_cpu_device::set_lock_handler(*device, DEVCB_##_write); + devcb = &downcast<i8086_common_cpu_device &>(*device).set_lock_handler(DEVCB_##_write); #define MCFG_I8086_IF_HANDLER(_write) \ - devcb = &i8086_cpu_device::set_if_handler(*device, DEVCB_##_write); + devcb = &downcast<i8086_cpu_device &>(*device).set_if_handler(DEVCB_##_write); #define MCFG_I8086_STACK_MAP(map) \ MCFG_DEVICE_ADDRESS_MAP(i8086_cpu_device::AS_STACK, map) @@ -32,10 +32,10 @@ DECLARE_DEVICE_TYPE(I8088, i8088_cpu_device) MCFG_DEVICE_ADDRESS_MAP(i8086_cpu_device::AS_EXTRA, map) #define MCFG_I8086_ESC_OPCODE_HANDLER(_write) \ - devcb = &i8086_cpu_device::set_esc_opcode_handler(*device, DEVCB_##_write); + devcb = &downcast<i8086_cpu_device &>(*device).set_esc_opcode_handler(DEVCB_##_write); #define MCFG_I8086_ESC_DATA_HANDLER(_write) \ - devcb = &i8086_cpu_device::set_esc_data_handler(*device, DEVCB_##_write); + devcb = &downcast<i8086_cpu_device &>(*device).set_esc_data_handler(DEVCB_##_write); enum { @@ -49,8 +49,7 @@ enum class i8086_common_cpu_device : public cpu_device, public i386_disassembler::config { public: - template <class Object> static devcb_base &set_lock_handler(device_t &device, Object &&cb) - { return downcast<i8086_common_cpu_device &>(device).m_lock_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_lock_handler(Object &&cb) { return m_lock_handler.set_callback(std::forward<Object>(cb)); } protected: enum @@ -367,14 +366,9 @@ public: // device_memory_interface overrides virtual space_config_vector memory_space_config() const override; - template <class Object> static devcb_base &set_if_handler(device_t &device, Object &&cb) - { return downcast<i8086_cpu_device &>(device).m_out_if_func.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_esc_opcode_handler(device_t &device, Object &&cb) - { return downcast<i8086_cpu_device &>(device).m_esc_opcode_handler.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_esc_data_handler(device_t &device, Object &&cb) - { return downcast<i8086_cpu_device &>(device).m_esc_data_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_if_handler(Object &&cb) { return m_out_if_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_esc_opcode_handler(Object &&cb) { return m_esc_opcode_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_esc_data_handler(Object &&cb) { return m_esc_data_handler.set_callback(std::forward<Object>(cb)); } protected: i8086_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_bus_size); diff --git a/src/devices/cpu/jaguar/jaguar.h b/src/devices/cpu/jaguar/jaguar.h index ac7f406621d..cb88c8a5d41 100644 --- a/src/devices/cpu/jaguar/jaguar.h +++ b/src/devices/cpu/jaguar/jaguar.h @@ -65,7 +65,7 @@ enum ***************************************************************************/ #define MCFG_JAGUAR_IRQ_HANDLER(_devcb) \ - devcb = &jaguar_cpu_device::set_int_func(*device, DEVCB_##_devcb); + devcb = &downcast<jaguar_cpu_device &>(*device).set_int_func(DEVCB_##_devcb); /*************************************************************************** @@ -95,8 +95,8 @@ public: // construction/destruction ~jaguar_cpu_device(); - // static configuration helpers - template <class Object> static devcb_base &set_int_func(device_t &device, Object &&cb) { return downcast<jaguar_cpu_device &>(device).m_cpu_interrupt.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_int_func(Object &&cb) { return m_cpu_interrupt.set_callback(std::forward<Object>(cb)); } virtual DECLARE_WRITE32_MEMBER(ctrl_w) = 0; virtual DECLARE_READ32_MEMBER(ctrl_r) = 0; diff --git a/src/devices/cpu/lc8670/lc8670.h b/src/devices/cpu/lc8670/lc8670.h index 3286c3b1504..3944c864a4a 100644 --- a/src/devices/cpu/lc8670/lc8670.h +++ b/src/devices/cpu/lc8670/lc8670.h @@ -45,14 +45,14 @@ enum //************************************************************************** #define MCFG_LC8670_SET_CLOCK_SOURCES(_sub_clock, _rc_clock, _cf_clock) \ - lc8670_cpu_device::static_set_cpu_clock(*device, lc8670_cpu_device::clock_source::SUB, _sub_clock); \ - lc8670_cpu_device::static_set_cpu_clock(*device, lc8670_cpu_device::clock_source::RC, _rc_clock); \ - lc8670_cpu_device::static_set_cpu_clock(*device, lc8670_cpu_device::clock_source::CF, _cf_clock); + downcast<lc8670_cpu_device &>(*device).set_cpu_clock(lc8670_cpu_device::clock_source::SUB, _sub_clock); \ + downcast<lc8670_cpu_device &>(*device).set_cpu_clock(lc8670_cpu_device::clock_source::RC, _rc_clock); \ + downcast<lc8670_cpu_device &>(*device).set_cpu_clock(lc8670_cpu_device::clock_source::CF, _cf_clock); #define MCFG_LC8670_BANKSWITCH_CB(_devcb) \ - devcb = &lc8670_cpu_device::static_set_bankswitch_cb(*device, DEVCB_##_devcb); + devcb = &downcast<lc8670_cpu_device &>(*device).set_bankswitch_cb(DEVCB_##_devcb); #define MCFG_LC8670_LCD_UPDATE_CB(_cb) \ - lc8670_cpu_device::static_set_lcd_update_cb(*device, _cb); + downcast<lc8670_cpu_device &>(*device).set_lcd_update_cb(_cb); // ======================> lc8670_cpu_device @@ -83,11 +83,11 @@ public: DECLARE_READ8_MEMBER(xram_r); DECLARE_WRITE8_MEMBER(xram_w); - // static configuration helpers - static void static_set_cpu_clock(device_t &device, clock_source source, uint32_t clock) { downcast<lc8670_cpu_device &>(device).m_clocks[unsigned(source)] = clock; } - static void static_set_cpu_clock(device_t &device, clock_source source, const XTAL &clock) { static_set_cpu_clock(device, source, clock.value()); } - static void static_set_lcd_update_cb(device_t &device, lcd_update cb) { downcast<lc8670_cpu_device &>(device).m_lcd_update_func = cb; } - template <class Object> static devcb_base & static_set_bankswitch_cb(device_t &device, Object &&cb) { return downcast<lc8670_cpu_device &>(device).m_bankswitch_func.set_callback(std::forward<Object>(cb)); } + // configuration helpers + void set_cpu_clock(clock_source source, uint32_t clock) { m_clocks[unsigned(source)] = clock; } + void set_cpu_clock(clock_source source, const XTAL &clock) { set_cpu_clock(source, clock.value()); } + template <typename Object> void set_lcd_update_cb(Object &&cb) { m_lcd_update_func = std::forward<Object>(cb); } + template <class Object> devcb_base &set_bankswitch_cb(Object &&cb) { return m_bankswitch_func.set_callback(std::forward<Object>(cb)); } void lc8670_internal_map(address_map &map); protected: diff --git a/src/devices/cpu/lh5801/lh5801.h b/src/devices/cpu/lh5801/lh5801.h index 2981bda7d0f..679e2e90fa4 100644 --- a/src/devices/cpu/lh5801/lh5801.h +++ b/src/devices/cpu/lh5801/lh5801.h @@ -61,7 +61,7 @@ enum #define MCFG_LH5801_IN(_devcb) \ - devcb = &lh5801_cpu_device::set_in_func(*device, DEVCB_##_devcb); + devcb = &downcast<lh5801_cpu_device &>(*device).set_in_func(DEVCB_##_devcb); class lh5801_cpu_device : public cpu_device @@ -70,8 +70,8 @@ public: // construction/destruction lh5801_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_in_func(device_t &device, Object &&cb) { return downcast<lh5801_cpu_device &>(device).m_in_func.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_in_func(Object &&cb) { return m_in_func.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/cpu/lr35902/lr35902.h b/src/devices/cpu/lr35902/lr35902.h index 0d33bbbe548..d3743209e76 100644 --- a/src/devices/cpu/lr35902/lr35902.h +++ b/src/devices/cpu/lr35902/lr35902.h @@ -7,19 +7,19 @@ #define MCFG_LR35902_TIMER_CB(_devcb) \ - devcb = &lr35902_cpu_device::set_timer_cb(*device, DEVCB_##_devcb); + devcb = &downcast<lr35902_cpu_device &>(*device).set_timer_cb(DEVCB_##_devcb); // The first release of this CPU has a bug where the programcounter // is not incremented properly after an interrupt after the halt opcode. // This was fixed in a newer revision. #define MCFG_LR35902_HALT_BUG \ - lr35902_cpu_device::set_halt_bug(*device); + downcast<lr35902_cpu_device &>(*device).set_halt_bug(true); // The GameBoy has a bug where OAM data gets corrupted if you inc/dec // a 16-bit register in the $fe** region. // note: oldval is in hiword, newval is in loword #define MCFG_LR35902_INCDEC16_CB(_devcb) \ - devcb = &lr35902_cpu_device::set_incdec16_cb(*device, DEVCB_##_devcb); + devcb = &downcast<lr35902_cpu_device &>(*device).set_incdec16_cb(DEVCB_##_devcb); enum @@ -39,10 +39,10 @@ public: // construction/destruction lr35902_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - // static configuration helpers - template<class _Object> static devcb_base &set_timer_cb(device_t &device, _Object object) { return downcast<lr35902_cpu_device &>(device).m_timer_func.set_callback(object); } - template<class _Object> static devcb_base &set_incdec16_cb(device_t &device, _Object object) { return downcast<lr35902_cpu_device &>(device).m_incdec16_func.set_callback(object); } - static void set_halt_bug(device_t &device) { downcast<lr35902_cpu_device &>(device).m_has_halt_bug = true; } + // configuration helpers + template<class Object> devcb_base &set_timer_cb(Object &&cb) { return m_timer_func.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_incdec16_cb(Object &&cb) { return m_incdec16_func.set_callback(std::forward<Object>(cb)); } + void set_halt_bug(bool has_halt_bug) { m_has_halt_bug = has_halt_bug; } uint8_t get_speed(); void set_speed(uint8_t speed_request); diff --git a/src/devices/cpu/m6502/m5074x.h b/src/devices/cpu/m6502/m5074x.h index c9f7ddb4ba6..2782d09f2d7 100644 --- a/src/devices/cpu/m6502/m5074x.h +++ b/src/devices/cpu/m6502/m5074x.h @@ -20,28 +20,28 @@ //************************************************************************** #define MCFG_M5074X_PORT0_READ_CALLBACK(_read) \ - devcb = &m5074x_device::set_p0_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<m5074x_device &>(*device).set_p0_rd_callback(DEVCB_##_read); #define MCFG_M5074X_PORT1_READ_CALLBACK(_read) \ - devcb = &m5074x_device::set_p1_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<m5074x_device &>(*device).set_p1_rd_callback(DEVCB_##_read); #define MCFG_M5074X_PORT2_READ_CALLBACK(_read) \ - devcb = &m5074x_device::set_p2_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<m5074x_device &>(*device).set_p2_rd_callback(DEVCB_##_read); #define MCFG_M5074X_PORT3_READ_CALLBACK(_read) \ - devcb = &m5074x_device::set_p3_rd_callback(*device, DEVCB_##_read); + devcb = &downcast<m5074x_device &>(*device).set_p3_rd_callback(DEVCB_##_read); #define MCFG_M5074X_PORT0_WRITE_CALLBACK(_write) \ - devcb = &m5074x_device::set_p0_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<m5074x_device &>(*device).set_p0_wr_callback(DEVCB_##_write); #define MCFG_M5074X_PORT1_WRITE_CALLBACK(_write) \ - devcb = &m5074x_device::set_p1_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<m5074x_device &>(*device).set_p1_wr_callback(DEVCB_##_write); #define MCFG_M5074X_PORT2_WRITE_CALLBACK(_write) \ - devcb = &m5074x_device::set_p2_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<m5074x_device &>(*device).set_p2_wr_callback(DEVCB_##_write); #define MCFG_M5074X_PORT3_WRITE_CALLBACK(_write) \ - devcb = &m5074x_device::set_p3_wr_callback(*device, DEVCB_##_write); + devcb = &downcast<m5074x_device &>(*device).set_p3_wr_callback(DEVCB_##_write); //************************************************************************** // TYPE DEFINITIONS @@ -73,14 +73,14 @@ class m5074x_device : public m740_device public: const address_space_config m_program_config; - template<class _Object> static devcb_base &set_p0_rd_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).read_p0.set_callback(object); } - template<class _Object> static devcb_base &set_p1_rd_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).read_p1.set_callback(object); } - template<class _Object> static devcb_base &set_p2_rd_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).read_p2.set_callback(object); } - template<class _Object> static devcb_base &set_p3_rd_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).read_p3.set_callback(object); } - template<class _Object> static devcb_base &set_p0_wr_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).write_p0.set_callback(object); } - template<class _Object> static devcb_base &set_p1_wr_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).write_p1.set_callback(object); } - template<class _Object> static devcb_base &set_p2_wr_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).write_p2.set_callback(object); } - template<class _Object> static devcb_base &set_p3_wr_callback(device_t &device, _Object object) { return downcast<m5074x_device &>(device).write_p3.set_callback(object); } + template<class Object> devcb_base &set_p0_rd_callback(Object &&cb) { return read_p0.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_p1_rd_callback(Object &&cb) { return read_p1.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_p2_rd_callback(Object &&cb) { return read_p2.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_p3_rd_callback(Object &&cb) { return read_p3.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_p0_wr_callback(Object &&cb) { return write_p0.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_p1_wr_callback(Object &&cb) { return write_p1.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_p2_wr_callback(Object &&cb) { return write_p2.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_p3_wr_callback(Object &&cb) { return write_p3.set_callback(std::forward<Object>(cb)); } devcb_read8 read_p0, read_p1, read_p2, read_p3; devcb_write8 write_p0, write_p1, write_p2, write_p3; diff --git a/src/devices/cpu/m6502/m6502.h b/src/devices/cpu/m6502/m6502.h index ab44415ca5a..18c0bdb5c3b 100644 --- a/src/devices/cpu/m6502/m6502.h +++ b/src/devices/cpu/m6502/m6502.h @@ -15,7 +15,7 @@ downcast<m6502_device *>(device)->disable_direct(); #define MCFG_M6502_SYNC_CALLBACK(_cb) \ - devcb = &m6502_device::set_sync_callback(*device, DEVCB_##_cb); + devcb = &downcast<m6502_device &>(*device).set_sync_callback(DEVCB_##_cb); class m6502_device : public cpu_device { public: @@ -31,7 +31,7 @@ public: bool get_sync() const { return sync; } void disable_direct() { direct_disabled = true; } - template<class _Object> static devcb_base &set_sync_callback(device_t &device, _Object object) { return downcast<m6502_device &>(device).sync_w.set_callback(object); } + template<class Object> devcb_base &set_sync_callback(Object &&cb) { return sync_w.set_callback(std::forward<Object>(cb)); } devcb_write_line sync_w; diff --git a/src/devices/cpu/m6502/xavix.h b/src/devices/cpu/m6502/xavix.h index e58a355b35d..67014209aa0 100644 --- a/src/devices/cpu/m6502/xavix.h +++ b/src/devices/cpu/m6502/xavix.h @@ -13,7 +13,7 @@ #include "m6502.h" #define MCFG_XAVIX_VECTOR_CALLBACK(_class, _method) \ - xavix_device::set_vector_callback(*device, xavix_device::xavix_interrupt_vector_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<xavix_device &>(*device).set_vector_callback(xavix_device::xavix_interrupt_vector_delegate(&_class::_method, #_class "::" #_method, this)); class xavix_device : public m6502_device { public: @@ -33,7 +33,7 @@ public: typedef device_delegate<uint8_t (int which, int half)> xavix_interrupt_vector_delegate; - static void set_vector_callback(device_t &device, xavix_interrupt_vector_delegate &&cb) { downcast<xavix_device &>(device).m_vector_callback = std::move(cb); } + template <typename Object> void set_vector_callback(Object &&cb) { m_vector_callback = std::forward<Object>(cb); } #undef O diff --git a/src/devices/cpu/m6800/m6801.h b/src/devices/cpu/m6800/m6801.h index 08a75439827..154c6220ce1 100644 --- a/src/devices/cpu/m6800/m6801.h +++ b/src/devices/cpu/m6800/m6801.h @@ -52,9 +52,9 @@ enum #define MCFG_M6801_SC2(_devcb) \ - devcb = &m6801_cpu_device::set_out_sc2_func(*device, DEVCB_##_devcb); + devcb = &downcast<m6801_cpu_device &>(*device).set_out_sc2_func(DEVCB_##_devcb); #define MCFG_M6801_SER_TX(_devcb) \ - devcb = &m6801_cpu_device::set_out_sertx_func(*device, DEVCB_##_devcb); + devcb = &downcast<m6801_cpu_device &>(*device).set_out_sertx_func(DEVCB_##_devcb); class m6801_cpu_device : public m6800_cpu_device @@ -62,9 +62,9 @@ class m6801_cpu_device : public m6800_cpu_device public: m6801_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template<class _Object> static devcb_base &set_out_sc2_func(device_t &device, _Object object) { return downcast<m6801_cpu_device &>(device).m_out_sc2_func.set_callback(object); } - template<class _Object> static devcb_base &set_out_sertx_func(device_t &device, _Object object) { return downcast<m6801_cpu_device &>(device).m_out_sertx_func.set_callback(object); } + // configuration helpers + template<class Object> devcb_base &set_out_sc2_func(Object &&cb) { return m_out_sc2_func.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_sertx_func(Object &&cb) { return m_out_sertx_func.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( m6801_io_r ); DECLARE_WRITE8_MEMBER( m6801_io_w ); diff --git a/src/devices/cpu/m6805/m68705.h b/src/devices/cpu/m6805/m68705.h index a93b32902df..888dfdc23d1 100644 --- a/src/devices/cpu/m6805/m68705.h +++ b/src/devices/cpu/m6805/m68705.h @@ -25,35 +25,33 @@ DECLARE_DEVICE_TYPE(M68705U3, m68705u3_device) // ======================> m68705_device #define MCFG_M68705_PORTA_R_CB(obj) \ - devcb = &m68705_device::set_port_cb_r<0>(*device, DEVCB_##obj); + devcb = &downcast<m68705_device &>(*device).set_port_cb_r<0>(DEVCB_##obj); #define MCFG_M68705_PORTB_R_CB(obj) \ - devcb = &m68705_device::set_port_cb_r<1>(*device, DEVCB_##obj); + devcb = &downcast<m68705_device &>(*device).set_port_cb_r<1>(DEVCB_##obj); #define MCFG_M68705_PORTC_R_CB(obj) \ - devcb = &m68705_device::set_port_cb_r<2>(*device, DEVCB_##obj); + devcb = &downcast<m68705_device &>(*device).set_port_cb_r<2>(DEVCB_##obj); #define MCFG_M68705_PORTD_R_CB(obj) \ - devcb = &m68705_device::set_port_cb_r<3>(*device, DEVCB_##obj); + devcb = &downcast<m68705_device &>(*device).set_port_cb_r<3>(DEVCB_##obj); #define MCFG_M68705_PORTA_W_CB(obj) \ - devcb = &m68705_device::set_port_cb_w<0>(*device, DEVCB_##obj); + devcb = &downcast<m68705_device &>(*device).set_port_cb_w<0>(DEVCB_##obj); #define MCFG_M68705_PORTB_W_CB(obj) \ - devcb = &m68705_device::set_port_cb_w<1>(*device, DEVCB_##obj); + devcb = &downcast<m68705_device &>(*device).set_port_cb_w<1>(DEVCB_##obj); #define MCFG_M68705_PORTC_W_CB(obj) \ - devcb = &m68705_device::set_port_cb_w<2>(*device, DEVCB_##obj); + devcb = &downcast<m68705_device &>(*device).set_port_cb_w<2>(DEVCB_##obj); class m68705_device : public m6805_base_device, public device_nvram_interface { public: - // static configuration helpers - template<std::size_t N, typename Object> static devcb_base &set_port_cb_r(device_t &device, Object &&obj) - { return downcast<m68705_device &>(device).m_port_cb_r[N].set_callback(std::forward<Object>(obj)); } - template<std::size_t N, typename Object> static devcb_base &set_port_cb_w(device_t &device, Object &&obj) - { return downcast<m68705_device &>(device).m_port_cb_w[N].set_callback(std::forward<Object>(obj)); } + // configuration helpers + template<std::size_t N, typename Object> devcb_base &set_port_cb_r(Object &&obj) { return m_port_cb_r[N].set_callback(std::forward<Object>(obj)); } + template<std::size_t N, typename Object> devcb_base &set_port_cb_w(Object &&obj) { return m_port_cb_w[N].set_callback(std::forward<Object>(obj)); } protected: // state index constants diff --git a/src/devices/cpu/m6805/m68hc05.h b/src/devices/cpu/m6805/m68hc05.h index 772df2a4689..4190ad9a91c 100644 --- a/src/devices/cpu/m6805/m68hc05.h +++ b/src/devices/cpu/m6805/m68hc05.h @@ -26,43 +26,40 @@ DECLARE_DEVICE_TYPE(M68HC705C8A, m68hc705c8a_device) // ======================> m68hc05_device #define MCFG_M68HC05_PORTA_R_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_r<0>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<0>(DEVCB_##obj); #define MCFG_M68HC05_PORTB_R_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_r<1>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<1>(DEVCB_##obj); #define MCFG_M68HC05_PORTC_R_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_r<2>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<2>(DEVCB_##obj); #define MCFG_M68HC05_PORTD_R_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_r<3>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_r<3>(DEVCB_##obj); #define MCFG_M68HC05_PORTA_W_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_w<0>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<0>(DEVCB_##obj); #define MCFG_M68HC05_PORTB_W_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_w<1>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<1>(DEVCB_##obj); #define MCFG_M68HC05_PORTC_W_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_w<2>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<2>(DEVCB_##obj); #define MCFG_M68HC05_PORTD_W_CB(obj) \ - devcb = &m68hc05_device::set_port_cb_w<3>(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_port_cb_w<3>(DEVCB_##obj); #define MCFG_M68HC05_TCMP_CB(obj) \ - devcb = &m68hc05_device::set_tcmp_cb(*device, DEVCB_##obj); + devcb = &downcast<m68hc05_device &>(*device).set_tcmp_cb(DEVCB_##obj); class m68hc05_device : public m6805_base_device { public: - // static configuration helpers - template<std::size_t N, typename Object> static devcb_base &set_port_cb_r(device_t &device, Object &&obj) - { return downcast<m68hc05_device &>(device).m_port_cb_r[N].set_callback(std::forward<Object>(obj)); } - template<std::size_t N, typename Object> static devcb_base &set_port_cb_w(device_t &device, Object &&obj) - { return downcast<m68hc05_device &>(device).m_port_cb_w[N].set_callback(std::forward<Object>(obj)); } - template<typename Object> static devcb_base &set_tcmp_cb(device_t &device, Object &&obj) - { return downcast<m68hc05_device &>(device).m_tcmp_cb.set_callback(std::forward<Object>(obj)); } + // configuration helpers + template<std::size_t N, typename Object> devcb_base &set_port_cb_r(Object &&obj) { return m_port_cb_r[N].set_callback(std::forward<Object>(obj)); } + template<std::size_t N, typename Object> devcb_base &set_port_cb_w(Object &&obj) { return m_port_cb_w[N].set_callback(std::forward<Object>(obj)); } + template<typename Object> devcb_base &set_tcmp_cb(Object &&obj) { return m_tcmp_cb.set_callback(std::forward<Object>(obj)); } protected: // state index constants diff --git a/src/devices/cpu/m6809/konami.h b/src/devices/cpu/m6809/konami.h index 216b007302a..e53c86e4fb2 100644 --- a/src/devices/cpu/m6809/konami.h +++ b/src/devices/cpu/m6809/konami.h @@ -21,7 +21,7 @@ //************************************************************************** #define MCFG_KONAMICPU_LINE_CB(_devcb) \ - devcb = &konami_cpu_device::set_line_callback(*device, DEVCB_##_devcb); + devcb = &downcast<konami_cpu_device &>(*device).set_line_callback(DEVCB_##_devcb); // device type definition @@ -36,7 +36,7 @@ public: konami_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration - template<class _Object> static devcb_base &set_line_callback(device_t &device, _Object object) { return downcast<konami_cpu_device &>(device).m_set_lines.set_callback(object); } + template<class Object> devcb_base &set_line_callback(Object &&cb) { return m_set_lines.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/cpu/m6809/m6809.h b/src/devices/cpu/m6809/m6809.h index 675ec9e2317..bffa63f8a7c 100644 --- a/src/devices/cpu/m6809/m6809.h +++ b/src/devices/cpu/m6809/m6809.h @@ -306,7 +306,7 @@ public: // MC6809E has LIC line to indicate opcode/data fetch #define MCFG_MC6809E_LIC_CB(_devcb) \ - devcb = &mc6809e_device::set_lic_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mc6809e_device &>(*device).set_lic_cb(DEVCB_##_devcb); class mc6809e_device : public m6809_base_device @@ -315,8 +315,8 @@ public: // construction/destruction mc6809e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template<class _Object> static devcb_base &set_lic_cb(device_t &device, _Object object) { return downcast<mc6809e_device &>(device).m_lic_func.set_callback(object); } + // configuration helpers + template<class Object> devcb_base &set_lic_cb(Object &&cb) { return m_lic_func.set_callback(std::forward<Object>(cb)); } }; // ======================> m6809_device (LEGACY) diff --git a/src/devices/cpu/mb86233/mb86233.h b/src/devices/cpu/mb86233/mb86233.h index 49ba58d7ea8..70e3a66dfd5 100644 --- a/src/devices/cpu/mb86233/mb86233.h +++ b/src/devices/cpu/mb86233/mb86233.h @@ -7,13 +7,13 @@ #define MCFG_MB86233_FIFO_READ_CB(_devcb) \ - devcb = &mb86233_cpu_device::set_fifo_read_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mb86233_cpu_device &>(*device).set_fifo_read_cb(DEVCB_##_devcb); #define MCFG_MB86233_FIFO_READ_OK_CB(_devcb) \ - devcb = &mb86233_cpu_device::set_fifo_read_ok_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mb86233_cpu_device &>(*device).set_fifo_read_ok_cb(DEVCB_##_devcb); #define MCFG_MB86233_FIFO_WRITE_CB(_devcb) \ - devcb = &mb86233_cpu_device::set_fifo_write_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mb86233_cpu_device &>(*device).set_fifo_write_cb(DEVCB_##_devcb); #define MCFG_MB86233_TABLE_REGION(_region) \ - mb86233_cpu_device::set_tablergn(*device, _region); + downcast<mb86233_cpu_device &>(*device).set_tablergn(_region); class mb86233_cpu_device : public cpu_device @@ -22,11 +22,11 @@ public: // construction/destruction mb86233_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_fifo_read_cb(device_t &device, Object &&cb) { return downcast<mb86233_cpu_device &>(device).m_fifo_read_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_fifo_read_ok_cb(device_t &device, Object &&cb) { return downcast<mb86233_cpu_device &>(device).m_fifo_read_ok_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_fifo_write_cb(device_t &device, Object &&cb) { return downcast<mb86233_cpu_device &>(device).m_fifo_write_cb.set_callback(std::forward<Object>(cb)); } - static void set_tablergn(device_t &device, const char *tablergn) { downcast<mb86233_cpu_device &>(device).m_tablergn = tablergn; } + // configuration helpers + template <class Object> devcb_base &set_fifo_read_cb(Object &&cb) { return m_fifo_read_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_fifo_read_ok_cb(Object &&cb) { return m_fifo_read_ok_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_fifo_write_cb(Object &&cb) { return m_fifo_write_cb.set_callback(std::forward<Object>(cb)); } + void set_tablergn(const char *tablergn) { m_tablergn = tablergn; } protected: // register enumeration diff --git a/src/devices/cpu/mb88xx/mb88xx.h b/src/devices/cpu/mb88xx/mb88xx.h index e9e7c5567eb..b5dd5fe79fc 100644 --- a/src/devices/cpu/mb88xx/mb88xx.h +++ b/src/devices/cpu/mb88xx/mb88xx.h @@ -54,51 +54,51 @@ // K (K3-K0): input-only port #define MCFG_MB88XX_READ_K_CB(_devcb) \ - devcb = &mb88_cpu_device::set_read_k_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_read_k_callback(DEVCB_##_devcb); // O (O7-O4 = OH, O3-O0 = OL): output through PLA #define MCFG_MB88XX_WRITE_O_CB(_devcb) \ - devcb = &mb88_cpu_device::set_write_o_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_write_o_callback(DEVCB_##_devcb); // P (P3-P0): output-only port #define MCFG_MB88XX_WRITE_P_CB(_devcb) \ - devcb = &mb88_cpu_device::set_write_p_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_write_p_callback(DEVCB_##_devcb); // R0 (R3-R0): input/output port #define MCFG_MB88XX_READ_R0_CB(_devcb) \ - devcb = &mb88_cpu_device::set_read_r_callback(*device, 0, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(0, DEVCB_##_devcb); #define MCFG_MB88XX_WRITE_R0_CB(_devcb) \ - devcb = &mb88_cpu_device::set_write_r_callback(*device, 0, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(0, DEVCB_##_devcb); // R1 (R7-R4): input/output port #define MCFG_MB88XX_READ_R1_CB(_devcb) \ - devcb = &mb88_cpu_device::set_read_r_callback(*device, 1, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(1, DEVCB_##_devcb); #define MCFG_MB88XX_WRITE_R1_CB(_devcb) \ - devcb = &mb88_cpu_device::set_write_r_callback(*device, 1, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(1, DEVCB_##_devcb); // R2 (R11-R8): input/output port #define MCFG_MB88XX_READ_R2_CB(_devcb) \ - devcb = &mb88_cpu_device::set_read_r_callback(*device, 2, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(2, DEVCB_##_devcb); #define MCFG_MB88XX_WRITE_R2_CB(_devcb) \ - devcb = &mb88_cpu_device::set_write_r_callback(*device, 2, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(2, DEVCB_##_devcb); // R3 (R15-R12): input/output port #define MCFG_MB88XX_READ_R3_CB(_devcb) \ - devcb = &mb88_cpu_device::set_read_r_callback(*device, 3, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_read_r_callback(3, DEVCB_##_devcb); #define MCFG_MB88XX_WRITE_R3_CB(_devcb) \ - devcb = &mb88_cpu_device::set_write_r_callback(*device, 3, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_write_r_callback(3, DEVCB_##_devcb); // SI: serial input #define MCFG_MB88XX_READ_SI_CB(_devcb) \ - devcb = &mb88_cpu_device::set_read_si_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_read_si_callback(DEVCB_##_devcb); // SO: serial output #define MCFG_MB88XX_WRITE_SO_CB(_devcb) \ - devcb = &mb88_cpu_device::set_write_so_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mb88_cpu_device &>(*device).set_write_so_callback(DEVCB_##_devcb); // Configure 32 byte PLA; if nullptr (default) assume direct output #define MCFG_MB88XX_OUTPUT_PLA(_pla) \ - mb88_cpu_device::set_pla(*device, _pla); + downcast<mb88_cpu_device &>(*device).set_pla(_pla); /*************************************************************************** REGISTER ENUMERATION @@ -125,15 +125,15 @@ enum class mb88_cpu_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_o_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_write_o.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_p_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_write_p.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_r_callback(device_t &device, int n, Object &&cb) { assert(n >= 0 && n < 4); return downcast<mb88_cpu_device &>(device).m_read_r[n].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r_callback(device_t &device, int n, Object &&cb) { assert(n >= 0 && n < 4); return downcast<mb88_cpu_device &>(device).m_write_r[n].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_si_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_read_si.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_so_callback(device_t &device, Object &&cb) { return downcast<mb88_cpu_device &>(device).m_write_so.set_callback(std::forward<Object>(cb)); } - static void set_pla(device_t &device, uint8_t *pla) { downcast<mb88_cpu_device &>(device).m_PLA = pla; } + // 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_write_o_callback(Object &&cb) { return m_write_o.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_p_callback(Object &&cb) { return m_write_p.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_r_callback(int n, Object &&cb) { assert(n >= 0 && n < 4); return m_read_r[n].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r_callback(int n, Object &&cb) { assert(n >= 0 && n < 4); return m_write_r[n].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_si_callback(Object &&cb) { return m_read_si.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_so_callback(Object &&cb) { return m_write_so.set_callback(std::forward<Object>(cb)); } + void set_pla(uint8_t *pla) { m_PLA = pla; } DECLARE_WRITE_LINE_MEMBER( clock_w ); diff --git a/src/devices/cpu/mc68hc11/mc68hc11.h b/src/devices/cpu/mc68hc11/mc68hc11.h index 35b0cb98170..e22c7f53197 100644 --- a/src/devices/cpu/mc68hc11/mc68hc11.h +++ b/src/devices/cpu/mc68hc11/mc68hc11.h @@ -33,9 +33,9 @@ DECLARE_DEVICE_TYPE(MC68HC11, mc68hc11_cpu_device) #define MCFG_MC68HC11_CONFIG(_has_extended_io, _internal_ram_size, _init_value) \ - mc68hc11_cpu_device::set_has_extended_io(*device, _has_extended_io); \ - mc68hc11_cpu_device::set_internal_ram_size(*device, _internal_ram_size); \ - mc68hc11_cpu_device::set_init_value(*device, _init_value); + downcast<mc68hc11_cpu_device &>(*device).set_has_extended_io(_has_extended_io); \ + downcast<mc68hc11_cpu_device &>(*device).set_internal_ram_size(_internal_ram_size); \ + downcast<mc68hc11_cpu_device &>(*device).set_init_value(_init_value); class mc68hc11_cpu_device : public cpu_device @@ -45,10 +45,10 @@ public: mc68hc11_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // I/O enable flag - static void set_has_extended_io(device_t &device, int has_extended_io) { downcast<mc68hc11_cpu_device &>(device).m_has_extended_io = has_extended_io; } - static void set_internal_ram_size(device_t &device, int internal_ram_size) { downcast<mc68hc11_cpu_device &>(device).m_internal_ram_size = internal_ram_size; } + void set_has_extended_io(int has_extended_io) { m_has_extended_io = has_extended_io; } + void set_internal_ram_size(int internal_ram_size) { m_internal_ram_size = internal_ram_size; } // default value for INIT register - static void set_init_value(device_t &device, int init_value) { downcast<mc68hc11_cpu_device &>(device).m_init_value = init_value; } + void set_init_value(int init_value) { m_init_value = init_value; } protected: // device-level overrides diff --git a/src/devices/cpu/mcs40/mcs40.h b/src/devices/cpu/mcs40/mcs40.h index 3a7605fc366..177425fff0f 100644 --- a/src/devices/cpu/mcs40/mcs40.h +++ b/src/devices/cpu/mcs40/mcs40.h @@ -48,31 +48,31 @@ enum MCFG_DEVICE_ADDRESS_MAP(i4004_cpu_device::AS_PROGRAM_MEMORY, map) #define MCFG_I4004_BUS_CYCLE_CB(obj) \ - i4004_cpu_device::set_bus_cycle_cb(*device, (MCS40CB_##obj)); + downcast<i4004_cpu_device &>(*device).set_bus_cycle_cb((MCS40CB_##obj)); #define MCFG_I4004_SYNC_CB(obj) \ - devcb = &i4004_cpu_device::set_sync_cb(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_sync_cb(DEVCB_##obj); #define MCFG_I4004_CM_ROM_CB(obj) \ - devcb = &i4004_cpu_device::set_cm_rom_cb(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_cm_rom_cb(DEVCB_##obj); #define MCFG_I4004_CM_RAM0_CB(obj) \ - devcb = &i4004_cpu_device::set_cm_ram_cb<0>(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<0>(DEVCB_##obj); #define MCFG_I4004_CM_RAM1_CB(obj) \ - devcb = &i4004_cpu_device::set_cm_ram_cb<1>(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<1>(DEVCB_##obj); #define MCFG_I4004_CM_RAM2_CB(obj) \ - devcb = &i4004_cpu_device::set_cm_ram_cb<2>(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<2>(DEVCB_##obj); #define MCFG_I4004_CM_RAM3_CB(obj) \ - devcb = &i4004_cpu_device::set_cm_ram_cb<3>(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_cm_ram_cb<3>(DEVCB_##obj); #define MCFG_I4004_4289_PM_CB(obj) \ - devcb = &i4004_cpu_device::set_4289_pm_cb(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_4289_pm_cb(DEVCB_##obj); #define MCFG_I4004_4289_F_L_CB(obj) \ - devcb = &i4004_cpu_device::set_4289_f_l_cb(*device, DEVCB_##obj); + devcb = &downcast<i4004_cpu_device &>(*device).set_4289_f_l_cb(DEVCB_##obj); #define MCFG_I4040_ROM_MAP(map) \ @@ -94,40 +94,40 @@ enum MCFG_DEVICE_ADDRESS_MAP(i4040_cpu_device::AS_PROGRAM_MEMORY, map) #define MCFG_I4040_BUS_CYCLE_CB(obj) \ - i4040_cpu_device::set_bus_cycle_cb(*device, (MCS40CB_##obj)); + downcast<i4040_cpu_device &>(*device).set_bus_cycle_cb((MCS40CB_##obj)); #define MCFG_I4040_SYNC_CB(obj) \ - devcb = &i4040_cpu_device::set_sync_cb(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_sync_cb(DEVCB_##obj); #define MCFG_I4040_CM_ROM0_CB(obj) \ - devcb = &i4040_cpu_device::set_cm_rom_cb<0>(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_cm_rom_cb<0>(DEVCB_##obj); #define MCFG_I4040_CM_ROM1_CB(obj) \ - devcb = &i4040_cpu_device::set_cm_rom_cb<1>(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_cm_rom_cb<1>(DEVCB_##obj); #define MCFG_I4040_CM_RAM0_CB(obj) \ - devcb = &i4040_cpu_device::set_cm_ram_cb<0>(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<0>(DEVCB_##obj); #define MCFG_I4040_CM_RAM1_CB(obj) \ - devcb = &i4040_cpu_device::set_cm_ram_cb<1>(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<1>(DEVCB_##obj); #define MCFG_I4040_CM_RAM2_CB(obj) \ - devcb = &i4040_cpu_device::set_cm_ram_cb<2>(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<2>(DEVCB_##obj); #define MCFG_I4040_CM_RAM3_CB(obj) \ - devcb = &i4040_cpu_device::set_cm_ram_cb<3>(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_cm_ram_cb<3>(DEVCB_##obj); #define MCFG_I4040_CY_CB(obj) \ - devcb = &i4040_cpu_device::set_cy_cb(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_cy_cb(DEVCB_##obj); #define MCFG_I4040_STP_ACK_CB(obj) \ - devcb = &i4040_cpu_device::set_stp_ack_cb(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_stp_ack_cb(DEVCB_##obj); #define MCFG_I4040_4289_PM_CB(obj) \ - devcb = &i4040_cpu_device::set_4289_pm_cb(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_4289_pm_cb(DEVCB_##obj); #define MCFG_I4040_4289_F_L_CB(obj) \ - devcb = &i4040_cpu_device::set_4289_f_l_cb(*device, DEVCB_##obj); + devcb = &downcast<i4040_cpu_device &>(*device).set_4289_f_l_cb(DEVCB_##obj); @@ -152,12 +152,9 @@ public: typedef device_delegate<void (phase step, u8 sync, u8 data)> bus_cycle_delegate; // configuration helpers - template <typename Obj> static void set_bus_cycle_cb(device_t &device, Obj &&cb) - { downcast<mcs40_cpu_device_base &>(device).m_bus_cycle_cb = std::forward<Obj>(cb); } - template <typename Obj> static devcb_base &set_4289_pm_cb(device_t &device, Obj &&cb) - { return downcast<mcs40_cpu_device_base &>(device).m_4289_pm_cb.set_callback(std::forward<Obj>(cb)); } - template <typename Obj> static devcb_base &set_4289_f_l_cb(device_t &device, Obj &&cb) - { return downcast<mcs40_cpu_device_base &>(device).m_4289_f_l_cb.set_callback(std::forward<Obj>(cb)); } + template <typename Obj> void set_bus_cycle_cb(Obj &&cb) { m_bus_cycle_cb = std::forward<Obj>(cb); } + template <typename Obj> devcb_base &set_4289_pm_cb(Obj &&cb) { return m_4289_pm_cb.set_callback(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_4289_f_l_cb(Obj &&cb) { return m_4289_f_l_cb.set_callback(std::forward<Obj>(cb)); } // chip select outputs u8 get_cm_rom() const { return m_cm_rom; } @@ -241,16 +238,11 @@ protected: void set_stp(int state); // configuration helpers - template <typename Obj> devcb_base &set_sync_cb(Obj &&cb) - { return m_sync_cb.set_callback(std::forward<Obj>(cb)); } - template <unsigned N, typename Obj> devcb_base &set_cm_rom_cb(Obj &&cb) - { return m_cm_rom_cb[N].set_callback(std::forward<Obj>(cb)); } - template <unsigned N, typename Obj> devcb_base &set_cm_ram_cb(Obj &&cb) - { return m_cm_ram_cb[N].set_callback(std::forward<Obj>(cb)); } - template <typename Obj> devcb_base &set_cy_cb(Obj &&cb) - { return m_cy_cb.set_callback(std::forward<Obj>(cb)); } - template <typename Obj> devcb_base &set_stp_ack_cb(Obj &&cb) - { return m_stp_ack_cb.set_callback(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_sync_cb(Obj &&cb) { return m_sync_cb.set_callback(std::forward<Obj>(cb)); } + template <unsigned N, typename Obj> devcb_base &set_cm_rom_cb(Obj &&cb) { return m_cm_rom_cb[N].set_callback(std::forward<Obj>(cb)); } + template <unsigned N, typename Obj> devcb_base &set_cm_ram_cb(Obj &&cb) { return m_cm_ram_cb[N].set_callback(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_cy_cb(Obj &&cb) { return m_cy_cb.set_callback(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_stp_ack_cb(Obj &&cb) { return m_stp_ack_cb.set_callback(std::forward<Obj>(cb)); } private: enum @@ -357,12 +349,9 @@ class i4004_cpu_device : public mcs40_cpu_device_base { public: // configuration helpers - template <typename Obj> static devcb_base &set_sync_cb(device_t &device, Obj &&cb) - { return downcast<i4004_cpu_device &>(device).set_sync_cb(std::forward<Obj>(cb)); } - template <typename Obj> static devcb_base &set_cm_rom_cb(device_t &device, Obj &&cb) - { return downcast<i4004_cpu_device &>(device).set_cm_rom_cb<0>(std::forward<Obj>(cb)); } - template <unsigned N, typename Obj> static devcb_base &set_cm_ram_cb(device_t &device, Obj &&cb) - { return downcast<i4004_cpu_device &>(device).set_cm_ram_cb<N>(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_sync_cb(Obj &&cb) { return mcs40_cpu_device_base::set_sync_cb(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_cm_rom_cb(Obj &&cb) { return set_cm_rom_cb<0>(std::forward<Obj>(cb)); } + template <unsigned N, typename Obj> devcb_base &set_cm_ram_cb(Obj &&cb) { return mcs40_cpu_device_base::set_cm_ram_cb<N>(std::forward<Obj>(cb)); } i4004_cpu_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); @@ -393,16 +382,11 @@ class i4040_cpu_device : public i4004_cpu_device { public: // configuration helpers - template <typename Obj> static devcb_base &set_sync_cb(device_t &device, Obj &&cb) - { return downcast<i4040_cpu_device &>(device).set_sync_cb(std::forward<Obj>(cb)); } - template <unsigned N, typename Obj> static devcb_base &set_cm_rom_cb(device_t &device, Obj &&cb) - { return downcast<i4040_cpu_device &>(device).set_cm_rom_cb<N>(std::forward<Obj>(cb)); } - template <unsigned N, typename Obj> static devcb_base &set_cm_ram_cb(device_t &device, Obj &&cb) - { return downcast<i4040_cpu_device &>(device).set_cm_ram_cb<N>(std::forward<Obj>(cb)); } - template <typename Obj> static devcb_base &set_cy_cb(device_t &device, Obj &&cb) - { return downcast<i4040_cpu_device &>(device).set_cy_cb(std::forward<Obj>(cb)); } - template <typename Obj> static devcb_base &set_stp_ack_cb(device_t &device, Obj &&cb) - { return downcast<i4040_cpu_device &>(device).set_stp_ack_cb(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_sync_cb(Obj &&cb) { return i4004_cpu_device::set_sync_cb(std::forward<Obj>(cb)); } + template <unsigned N, typename Obj> devcb_base &set_cm_rom_cb(Obj &&cb) { return set_cm_rom_cb<N>(std::forward<Obj>(cb)); } + template <unsigned N, typename Obj> devcb_base &set_cm_ram_cb(Obj &&cb) { return set_cm_ram_cb<N>(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_cy_cb(Obj &&cb) { return i4004_cpu_device::set_cy_cb(std::forward<Obj>(cb)); } + template <typename Obj> devcb_base &set_stp_ack_cb(Obj &&cb) { return i4004_cpu_device::set_stp_ack_cb(std::forward<Obj>(cb)); } i4040_cpu_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock); diff --git a/src/devices/cpu/mcs48/mcs48.h b/src/devices/cpu/mcs48/mcs48.h index 464d3e010e1..58dc676219e 100644 --- a/src/devices/cpu/mcs48/mcs48.h +++ b/src/devices/cpu/mcs48/mcs48.h @@ -69,33 +69,33 @@ enum #define MCFG_MCS48_PORT_P1_IN_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_port_in_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_port_in_cb(0, DEVCB_##_devcb); #define MCFG_MCS48_PORT_P1_OUT_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_port_out_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_port_out_cb(0, DEVCB_##_devcb); #define MCFG_MCS48_PORT_P2_IN_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_port_in_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_port_in_cb(1, DEVCB_##_devcb); #define MCFG_MCS48_PORT_P2_OUT_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_port_out_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_port_out_cb(1, DEVCB_##_devcb); #define MCFG_MCS48_PORT_T0_IN_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_test_in_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_test_in_cb(0, DEVCB_##_devcb); #define MCFG_MCS48_PORT_T0_CLK_DEVICE(_tag) \ - mcs48_cpu_device::set_t0_clk_cb(*device, clock_update_delegate(FUNC(device_t::set_unscaled_clock), _tag, (device_t *)nullptr)); + downcast<mcs48_cpu_device &>(*device).set_t0_clk_cb(clock_update_delegate(FUNC(device_t::set_unscaled_clock), _tag, (device_t *)nullptr)); #define MCFG_MCS48_PORT_T0_CLK_CUSTOM(_class, _func) \ - mcs48_cpu_device::set_t0_clk_cb(*device, clock_update_delegate(&_class::_func, #_class "::" _func, owner)); + downcast<mcs48_cpu_device &>(*device).set_t0_clk_cb(clock_update_delegate(&_class::_func, #_class "::" _func, owner)); #define MCFG_MCS48_PORT_T1_IN_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_test_in_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_test_in_cb(1, DEVCB_##_devcb); #define MCFG_MCS48_PORT_BUS_IN_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_bus_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_bus_in_cb(DEVCB_##_devcb); #define MCFG_MCS48_PORT_BUS_OUT_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_bus_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_bus_out_cb(DEVCB_##_devcb); // PROG line to 8243 expander #define MCFG_MCS48_PORT_PROG_OUT_CB(_devcb) \ - devcb = &mcs48_cpu_device::set_prog_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mcs48_cpu_device &>(*device).set_prog_out_cb(DEVCB_##_devcb); /*************************************************************************** @@ -141,14 +141,14 @@ public: EXPANDER_OP_AND = 3 }; - // static configuration - template <class Object> static devcb_base &set_port_in_cb(device_t &device, int n, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_port_in_cb[n].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port_out_cb(device_t &device, int n, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_port_out_cb[n].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_bus_in_cb(device_t &device, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_bus_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_bus_out_cb(device_t &device, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_bus_out_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_test_in_cb(device_t &device, int n, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_test_in_cb[n].set_callback(std::forward<Object>(cb)); } - static void set_t0_clk_cb(device_t &device, clock_update_delegate &&func) { downcast<mcs48_cpu_device &>(device).m_t0_clk_func = std::move(func); } - template <class Object> static devcb_base &set_prog_out_cb(device_t &device, Object &&cb) { return downcast<mcs48_cpu_device &>(device).m_prog_out_cb.set_callback(std::forward<Object>(cb)); } + // configuration + template <class Object> devcb_base &set_port_in_cb(int n, Object &&cb) { return m_port_in_cb[n].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port_out_cb(int n, Object &&cb) { return m_port_out_cb[n].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_bus_in_cb(Object &&cb) { return m_bus_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_bus_out_cb(Object &&cb) { return m_bus_out_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_test_in_cb(int n, Object &&cb) { return m_test_in_cb[n].set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_t0_clk_cb(Object &&cb) { m_t0_clk_func = std::forward<Object>(cb); } + template <class Object> devcb_base &set_prog_out_cb(Object &&cb) { return m_prog_out_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(p1_r); DECLARE_READ8_MEMBER(p2_r); diff --git a/src/devices/cpu/mcs51/mcs51.h b/src/devices/cpu/mcs51/mcs51.h index e19c38f2a7b..2f4c096c04e 100644 --- a/src/devices/cpu/mcs51/mcs51.h +++ b/src/devices/cpu/mcs51/mcs51.h @@ -33,30 +33,30 @@ #define MCFG_MCS51_PORT_P0_IN_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_in_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(0, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P0_OUT_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_out_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(0, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P1_IN_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_in_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(1, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P1_OUT_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_out_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(1, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P2_IN_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_in_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(2, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P2_OUT_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_out_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(2, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P3_IN_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_in_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_in_cb(3, DEVCB_##_devcb); #define MCFG_MCS51_PORT_P3_OUT_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_port_out_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_port_out_cb(3, DEVCB_##_devcb); #define MCFG_MCS51_SERIAL_RX_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_serial_rx_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_serial_rx_cb(DEVCB_##_devcb); #define MCFG_MCS51_SERIAL_TX_CB(_devcb) \ - devcb = &mcs51_cpu_device::set_serial_tx_cb(*device, DEVCB_##_devcb); + devcb = &downcast<mcs51_cpu_device &>(*device).set_serial_tx_cb(DEVCB_##_devcb); enum @@ -84,21 +84,21 @@ enum */ #define MCFG_MCS51_PORT1_CONFIG(_forced_inputs) \ - mcs51_cpu_device::set_port_forced_input(*device, 1, _forced_inputs); + downcast<mcs51_cpu_device &>(*device).set_port_forced_input(1, _forced_inputs); #define MCFG_MCS51_PORT2_CONFIG(_forced_inputs) \ - mcs51_cpu_device::set_port_forced_input(*device, 2, _forced_inputs); + downcast<mcs51_cpu_device &>(*device).set_port_forced_input(2, _forced_inputs); #define MCFG_MCS51_PORT3_CONFIG(_forced_inputs) \ - mcs51_cpu_device::set_port_forced_input(*device, 3, _forced_inputs); + downcast<mcs51_cpu_device &>(*device).set_port_forced_input(3, _forced_inputs); class mcs51_cpu_device : public cpu_device { public: // configuration helpers - template<class Object> static devcb_base &set_port_in_cb(device_t &device, int n, Object &&cb) { return downcast<mcs51_cpu_device &>(device).m_port_in_cb[n].set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_port_out_cb(device_t &device, int n, Object &&cb) { return downcast<mcs51_cpu_device &>(device).m_port_out_cb[n].set_callback(std::forward<Object>(cb)); } - static void set_port_forced_input(device_t &device, uint8_t port, uint8_t forced_input) { downcast<mcs51_cpu_device &>(device).m_forced_inputs[port] = forced_input; } - template<class Object> static devcb_base &set_serial_rx_cb(device_t &device, Object &&cb) { return downcast<mcs51_cpu_device &>(device).m_serial_rx_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_serial_tx_cb(device_t &device, Object &&cb) { return downcast<mcs51_cpu_device &>(device).m_serial_tx_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_port_in_cb(int n, Object &&cb) { return m_port_in_cb[n].set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_port_out_cb(int n, Object &&cb) { return m_port_out_cb[n].set_callback(std::forward<Object>(cb)); } + void set_port_forced_input(uint8_t port, uint8_t forced_input) { m_forced_inputs[port] = forced_input; } + template<class Object> devcb_base &set_serial_rx_cb(Object &&cb) { return m_serial_rx_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_serial_tx_cb(Object &&cb) { return m_serial_tx_cb.set_callback(std::forward<Object>(cb)); } void data_7bit(address_map &map); void data_8bit(address_map &map); @@ -527,9 +527,9 @@ public: // construction/destruction ds5002fp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_mcon(device_t &device, uint8_t mcon) { downcast<ds5002fp_device &>(device).m_ds5002fp.mcon = mcon; } - static void set_rpctl(device_t &device, uint8_t rpctl) { downcast<ds5002fp_device &>(device).m_ds5002fp.rpctl = rpctl; } - static void set_crc(device_t &device, uint8_t crc) { downcast<ds5002fp_device &>(device).m_ds5002fp.crc = crc; } + void set_mcon(uint8_t mcon) { m_ds5002fp.mcon = mcon; } + void set_rpctl(uint8_t rpctl) { m_ds5002fp.rpctl = rpctl; } + void set_crc(uint8_t crc) { m_ds5002fp.crc = crc; } // device_nvram_interface overrides virtual void nvram_default() override; diff --git a/src/devices/cpu/melps4/melps4.h b/src/devices/cpu/melps4/melps4.h index c268d74e508..ae11114aecf 100644 --- a/src/devices/cpu/melps4/melps4.h +++ b/src/devices/cpu/melps4/melps4.h @@ -16,37 +16,37 @@ // K input or A/D input port, up to 16 pins #define MCFG_MELPS4_READ_K_CB(_devcb) \ - devcb = &melps4_cpu_device::set_read_k_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_read_k_callback(DEVCB_##_devcb); // D discrete I/O port, up to 16 pins - offset 0-15 for bit, 16 for all pins clear #define MCFG_MELPS4_READ_D_CB(_devcb) \ - devcb = &melps4_cpu_device::set_read_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_MELPS4_WRITE_D_CB(_devcb) \ - devcb = &melps4_cpu_device::set_write_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb); // 8-bit S generic I/O port #define MCFG_MELPS4_READ_S_CB(_devcb) \ - devcb = &melps4_cpu_device::set_read_s_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_read_s_callback(DEVCB_##_devcb); #define MCFG_MELPS4_WRITE_S_CB(_devcb) \ - devcb = &melps4_cpu_device::set_write_s_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_write_s_callback(DEVCB_##_devcb); // 4-bit F generic I/O port #define MCFG_MELPS4_READ_F_CB(_devcb) \ - devcb = &melps4_cpu_device::set_read_f_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_read_f_callback(DEVCB_##_devcb); #define MCFG_MELPS4_WRITE_F_CB(_devcb) \ - devcb = &melps4_cpu_device::set_write_f_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_write_f_callback(DEVCB_##_devcb); // 4-bit G generic output port #define MCFG_MELPS4_WRITE_G_CB(_devcb) \ - devcb = &melps4_cpu_device::set_write_g_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_write_g_callback(DEVCB_##_devcb); // 1-bit U generic output port #define MCFG_MELPS4_WRITE_U_CB(_devcb) \ - devcb = &melps4_cpu_device::set_write_u_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_write_u_callback(DEVCB_##_devcb); // T timer I/O pin (use execute_set_input for reads) #define MCFG_MELPS4_WRITE_T_CB(_devcb) \ - devcb = &melps4_cpu_device::set_write_t_callback(*device, DEVCB_##_devcb); + devcb = &downcast<melps4_cpu_device &>(*device).set_write_t_callback(DEVCB_##_devcb); #define MELPS4_PORTD_CLR 16 @@ -100,18 +100,18 @@ enum class melps4_cpu_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_s_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_s.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_f_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_read_f.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_s_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_s.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_f_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_f.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_g_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_g.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_u_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_u.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_t_callback(device_t &device, Object &&cb) { return downcast<melps4_cpu_device &>(device).m_write_t.set_callback(std::forward<Object>(cb)); } + // 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_d_callback(Object &&cb) { return m_read_d.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_s_callback(Object &&cb) { return m_read_s.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_f_callback(Object &&cb) { return m_read_f.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_s_callback(Object &&cb) { return m_write_s.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)); } + template <class Object> devcb_base &set_write_g_callback(Object &&cb) { return m_write_g.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_u_callback(Object &&cb) { return m_write_u.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_t_callback(Object &&cb) { return m_write_t.set_callback(std::forward<Object>(cb)); } protected: // construction/destruction diff --git a/src/devices/cpu/mips/mips3.h b/src/devices/cpu/mips/mips3.h index dd0bac966d9..e207dd23469 100644 --- a/src/devices/cpu/mips/mips3.h +++ b/src/devices/cpu/mips/mips3.h @@ -238,13 +238,13 @@ struct compiler_state #define MIPS3_MAX_TLB_ENTRIES 48 #define MCFG_MIPS3_ICACHE_SIZE(_size) \ - mips3_device::set_icache_size(*device, _size); + downcast<mips3_device &>(*device).set_icache_size(_size); #define MCFG_MIPS3_DCACHE_SIZE(_size) \ - mips3_device::set_dcache_size(*device, _size); + downcast<mips3_device &>(*device).set_dcache_size(_size); #define MCFG_MIPS3_SYSTEM_CLOCK(_clock) \ - mips3_device::set_system_clock(*device, _clock); + downcast<mips3_device &>(*device).set_system_clock(_clock); class mips3_frontend; @@ -277,9 +277,9 @@ public: // construction/destruction mips3_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, mips3_flavor flavor, endianness_t endiannes); - static void set_icache_size(device_t &device, size_t icache_size) { downcast<mips3_device &>(device).c_icache_size = icache_size; } - static void set_dcache_size(device_t &device, size_t dcache_size) { downcast<mips3_device &>(device).c_dcache_size = dcache_size; } - static void set_system_clock(device_t &device, uint32_t system_clock) { downcast<mips3_device &>(device).c_system_clock = system_clock; } + void set_icache_size(size_t icache_size) { c_icache_size = icache_size; } + void set_dcache_size(size_t dcache_size) { c_dcache_size = dcache_size; } + void set_system_clock(uint32_t system_clock) { c_system_clock = system_clock; } TIMER_CALLBACK_MEMBER(compare_int_callback); diff --git a/src/devices/cpu/mips/r3000.h b/src/devices/cpu/mips/r3000.h index a5f9998a23c..9af401484d2 100644 --- a/src/devices/cpu/mips/r3000.h +++ b/src/devices/cpu/mips/r3000.h @@ -19,19 +19,19 @@ ***************************************************************************/ #define MCFG_R3000_ENDIANNESS(_endianness) \ - r3000_device::static_set_endianness(*device, _endianness); + downcast<r3000_device &>(*device).set_endianness(_endianness); #define MCFG_R3000_BRCOND0_INPUT(_devcb) \ - devcb = &r3000_device::static_set_brcond0_input(*device, DEVCB_##_devcb); + devcb = &downcast<r3000_device &>(*device).set_brcond0_input(DEVCB_##_devcb); #define MCFG_R3000_BRCOND1_INPUT(_devcb) \ - devcb = &r3000_device::static_set_brcond1_input(*device, DEVCB_##_devcb); + devcb = &downcast<r3000_device &>(*device).set_brcond1_input(DEVCB_##_devcb); #define MCFG_R3000_BRCOND2_INPUT(_devcb) \ - devcb = &r3000_device::static_set_brcond2_input(*device, DEVCB_##_devcb); + devcb = &downcast<r3000_device &>(*device).set_brcond2_input(DEVCB_##_devcb); #define MCFG_R3000_BRCOND3_INPUT(_devcb) \ - devcb = &r3000_device::static_set_brcond3_input(*device, DEVCB_##_devcb); + devcb = &downcast<r3000_device &>(*device).set_brcond3_input(DEVCB_##_devcb); /*************************************************************************** @@ -73,30 +73,12 @@ public: virtual ~r3000_device(); // inline configuration helpers - static void static_set_endianness(device_t &device, endianness_t endianness) - { - downcast<r3000_device &>(device).m_endianness = endianness; - } - - template <class Object> static devcb_base &static_set_brcond0_input(device_t &device, Object &&cb) - { - return downcast<r3000_device &>(device).m_in_brcond0.set_callback(std::forward<Object>(cb)); - } - - template <class Object> static devcb_base &static_set_brcond1_input(device_t &device, Object &&cb) - { - return downcast<r3000_device &>(device).m_in_brcond1.set_callback(std::forward<Object>(cb)); - } - - template <class Object> static devcb_base &static_set_brcond2_input(device_t &device, Object &&cb) - { - return downcast<r3000_device &>(device).m_in_brcond2.set_callback(std::forward<Object>(cb)); - } + void set_endianness(endianness_t endianness) { m_endianness = endianness; } - template <class Object> static devcb_base &static_set_brcond3_input(device_t &device, Object &&cb) - { - return downcast<r3000_device &>(device).m_in_brcond3.set_callback(std::forward<Object>(cb)); - } + template <class Object> devcb_base &set_brcond0_input(Object &&cb) { return m_in_brcond0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_brcond1_input(Object &&cb) { return m_in_brcond1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_brcond2_input(Object &&cb) { return m_in_brcond2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_brcond3_input(Object &&cb) { return m_in_brcond3.set_callback(std::forward<Object>(cb)); } protected: enum chip_type diff --git a/src/devices/cpu/mn10200/mn10200.h b/src/devices/cpu/mn10200/mn10200.h index f3b496611bb..aadeff37281 100644 --- a/src/devices/cpu/mn10200/mn10200.h +++ b/src/devices/cpu/mn10200/mn10200.h @@ -15,9 +15,9 @@ // port setup #define MCFG_MN10200_READ_PORT_CB(X, _devcb) \ - devcb = &mn10200_device::set_read_port##X##_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mn10200_device &>(*device).set_read_port##X##_callback(DEVCB_##_devcb); #define MCFG_MN10200_WRITE_PORT_CB(X, _devcb) \ - devcb = &mn10200_device::set_write_port##X##_callback(*device, DEVCB_##_devcb); + devcb = &downcast<mn10200_device &>(*device).set_write_port##X##_callback(DEVCB_##_devcb); enum { @@ -42,18 +42,18 @@ enum class mn10200_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_read_port0_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_port1_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_port2_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_port3_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_port4_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_read_port4.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_write_port0_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port0.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_port1_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port1.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_port2_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port2.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_port3_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port3.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_port4_callback(device_t &device, Object &&cb) { return downcast<mn10200_device &>(device).m_write_port4.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_read_port0_callback(Object &&cb) { return m_read_port0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_port1_callback(Object &&cb) { return m_read_port1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_port2_callback(Object &&cb) { return m_read_port2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_port3_callback(Object &&cb) { return m_read_port3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_port4_callback(Object &&cb) { return m_read_port4.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_write_port0_callback(Object &&cb) { return m_write_port0.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_port1_callback(Object &&cb) { return m_write_port1.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_port2_callback(Object &&cb) { return m_write_port2.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_port3_callback(Object &&cb) { return m_write_port3.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_port4_callback(Object &&cb) { return m_write_port4.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(io_control_r); DECLARE_WRITE8_MEMBER(io_control_w); diff --git a/src/devices/cpu/nanoprocessor/nanoprocessor.h b/src/devices/cpu/nanoprocessor/nanoprocessor.h index 98b717e6c07..1a8c820e748 100644 --- a/src/devices/cpu/nanoprocessor/nanoprocessor.h +++ b/src/devices/cpu/nanoprocessor/nanoprocessor.h @@ -62,20 +62,20 @@ constexpr unsigned HP_NANO_IE_DC = 7; // DC line used as interrupt enable/ma // DC0 is in bit 0, DC1 in bit 1 and so on. // Keep in mind that DC7 usually masks the interrupt signal. #define MCFG_HP_NANO_DC_CHANGED(_devcb) \ - devcb = &hp_nanoprocessor_device::set_dc_changed_func(*device , DEVCB_##_devcb); + devcb = &downcast<hp_nanoprocessor_device &>(*device).set_dc_changed_func(DEVCB_##_devcb); // Callback to read the input state of DC lines // All lines that are not in input are to be reported at "1" #define MCFG_HP_NANO_READ_DC_CB(_devcb) \ - devcb = &hp_nanoprocessor_device::set_read_dc_func(*device , DEVCB_##_devcb); + devcb = &downcast<hp_nanoprocessor_device &>(*device).set_read_dc_func(DEVCB_##_devcb); class hp_nanoprocessor_device : public cpu_device { public: hp_nanoprocessor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_dc_changed_func(device_t &device, Object &&cb) { return downcast<hp_nanoprocessor_device &>(device).m_dc_changed_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_dc_func(device_t &device, Object &&cb) { return downcast<hp_nanoprocessor_device &>(device).m_read_dc_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dc_changed_func(Object &&cb) { return m_dc_changed_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_dc_func(Object &&cb) { return m_read_dc_func.set_callback(std::forward<Object>(cb)); } // device_execute_interface overrides virtual uint32_t execute_min_cycles() const override { return 2; } diff --git a/src/devices/cpu/nec/v25.h b/src/devices/cpu/nec/v25.h index cda729e88ef..b796bed3b67 100644 --- a/src/devices/cpu/nec/v25.h +++ b/src/devices/cpu/nec/v25.h @@ -23,45 +23,45 @@ enum #define MCFG_V25_CONFIG(_table) \ - v25_common_device::set_decryption_table(*device, _table); + downcast<v25_common_device &>(*device).set_decryption_table(_table); #define MCFG_V25_PORT_PT_READ_CB(_devcb) \ - devcb = &v25_common_device::set_pt_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<v25_common_device &>(*device).set_pt_in_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P0_READ_CB(_devcb) \ - devcb = &v25_common_device::set_p0_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<v25_common_device &>(*device).set_p0_in_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P1_READ_CB(_devcb) \ - devcb = &v25_common_device::set_p1_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<v25_common_device &>(*device).set_p1_in_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P2_READ_CB(_devcb) \ - devcb = &v25_common_device::set_p2_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<v25_common_device &>(*device).set_p2_in_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P0_WRITE_CB(_devcb) \ - devcb = &v25_common_device::set_p0_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<v25_common_device &>(*device).set_p0_out_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P1_WRITE_CB(_devcb) \ - devcb = &v25_common_device::set_p1_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<v25_common_device &>(*device).set_p1_out_cb(DEVCB_##_devcb); #define MCFG_V25_PORT_P2_WRITE_CB(_devcb) \ - devcb = &v25_common_device::set_p2_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<v25_common_device &>(*device).set_p2_out_cb(DEVCB_##_devcb); class v25_common_device : public cpu_device { public: - // static configuration helpers - static void set_decryption_table(device_t &device, const uint8_t *decryption_table) { downcast<v25_common_device &>(device).m_v25v35_decryptiontable = decryption_table; } + // configuration helpers + void set_decryption_table(const uint8_t *decryption_table) { m_v25v35_decryptiontable = decryption_table; } - template <class Object> static devcb_base & set_pt_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_pt_in.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base & set_p0_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p0_in.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base & set_p1_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p1_in.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base & set_p2_in_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p2_in.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pt_in_cb(Object &&cb) { return m_pt_in.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p0_in_cb(Object &&cb) { return m_p0_in.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p1_in_cb(Object &&cb) { return m_p1_in.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p2_in_cb(Object &&cb) { return m_p2_in.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base & set_p0_out_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p0_out.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base & set_p1_out_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p1_out.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base & set_p2_out_cb(device_t &device, Object &&cb) { return downcast<v25_common_device &>(device).m_p2_out.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p0_out_cb(Object &&cb) { return m_p0_out.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p1_out_cb(Object &&cb) { return m_p1_out.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p2_out_cb(Object &&cb) { return m_p2_out.set_callback(std::forward<Object>(cb)); } TIMER_CALLBACK_MEMBER(v25_timer_callback); diff --git a/src/devices/cpu/nec/v53.cpp b/src/devices/cpu/nec/v53.cpp index 0e91bb64614..018613af230 100644 --- a/src/devices/cpu/nec/v53.cpp +++ b/src/devices/cpu/nec/v53.cpp @@ -228,7 +228,7 @@ void v53_base_device::device_start() m_out_dack_2_cb.resolve_safe(); m_out_dack_3_cb.resolve_safe(); - static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(pic8259_device::inta_cb), (pic8259_device*)m_v53icu)); + set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pic8259_device::inta_cb), (pic8259_device*)m_v53icu)); } void v53_base_device::install_peripheral_io() diff --git a/src/devices/cpu/nec/v53.h b/src/devices/cpu/nec/v53.h index 1c45a3cbc89..dfecbfb5f04 100644 --- a/src/devices/cpu/nec/v53.h +++ b/src/devices/cpu/nec/v53.h @@ -16,94 +16,94 @@ // SCU #define MCFG_V53_SCU_TXD_HANDLER(_devcb) \ - devcb = &v53_base_device::set_txd_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_txd_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_DTR_HANDLER(_devcb) \ - devcb = &v53_base_device::set_dtr_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_dtr_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_RTS_HANDLER(_devcb) \ - devcb = &v53_base_device::set_rts_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_rts_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_RXRDY_HANDLER(_devcb) \ - devcb = &v53_base_device::set_rxrdy_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_rxrdy_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_TXRDY_HANDLER(_devcb) \ - devcb = &v53_base_device::set_txrdy_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_txrdy_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_TXEMPTY_HANDLER(_devcb) \ - devcb = &v53_base_device::set_txempty_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_txempty_handler(DEVCB_##_devcb); #define MCFG_V53_SCU_SYNDET_HANDLER(_devcb) \ - devcb = &v53_base_device::set_syndet_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_syndet_handler(DEVCB_##_devcb); // TCU #define MCFG_V53_TCU_CLK0(_clk) \ - v53_base_device::set_clk0(*device, _clk); + downcast<v53_base_device &>(*device).set_clk0(_clk); #define MCFG_V53_TCU_CLK1(_clk) \ - v53_base_device::set_clk1(*device, _clk); + downcast<v53_base_device &>(*device).set_clk1(_clk); #define MCFG_V53_TCU_CLK2(_clk) \ - v53_base_device::set_clk2(*device, _clk); + downcast<v53_base_device &>(*device).set_clk2(_clk); #define MCFG_V53_TCU_OUT0_HANDLER(_devcb) \ - devcb = &v53_base_device::set_out0_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out0_handler(DEVCB_##_devcb); #define MCFG_V53_TCU_OUT1_HANDLER(_devcb) \ - devcb = &v53_base_device::set_out1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out1_handler(DEVCB_##_devcb); #define MCFG_V53_TCU_OUT2_HANDLER(_devcb) \ - devcb = &v53_base_device::set_out2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out2_handler(DEVCB_##_devcb); // DMAU #define MCFG_V53_DMAU_OUT_HREQ_CB(_devcb) \ - devcb = &v53_base_device::set_out_hreq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_hreq_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_EOP_CB(_devcb) \ - devcb = &v53_base_device::set_out_eop_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_eop_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_MEMR_CB(_devcb) \ - devcb = &v53_base_device::set_in_memr_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_in_memr_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_MEMW_CB(_devcb) \ - devcb = &v53_base_device::set_out_memw_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_memw_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_IOR_0_CB(_devcb) \ - devcb = &v53_base_device::set_in_ior_0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_in_ior_0_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_IOR_1_CB(_devcb) \ - devcb = &v53_base_device::set_in_ior_1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_in_ior_1_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_IOR_2_CB(_devcb) \ - devcb = &v53_base_device::set_in_ior_2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_in_ior_2_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_IN_IOR_3_CB(_devcb) \ - devcb = &v53_base_device::set_in_ior_3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_in_ior_3_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_IOW_0_CB(_devcb) \ - devcb = &v53_base_device::set_out_iow_0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_iow_0_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_IOW_1_CB(_devcb) \ - devcb = &v53_base_device::set_out_iow_1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_iow_1_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_IOW_2_CB(_devcb) \ - devcb = &v53_base_device::set_out_iow_2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_iow_2_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_IOW_3_CB(_devcb) \ - devcb = &v53_base_device::set_out_iow_3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_iow_3_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_DACK_0_CB(_devcb) \ - devcb = &v53_base_device::set_out_dack_0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_dack_0_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_DACK_1_CB(_devcb) \ - devcb = &v53_base_device::set_out_dack_1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_dack_1_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_DACK_2_CB(_devcb) \ - devcb = &v53_base_device::set_out_dack_2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_dack_2_callback(DEVCB_##_devcb); #define MCFG_V53_DMAU_OUT_DACK_3_CB(_devcb) \ - devcb = &v53_base_device::set_out_dack_3_callback(*device, DEVCB_##_devcb); + devcb = &downcast<v53_base_device &>(*device).set_out_dack_3_callback(DEVCB_##_devcb); @@ -135,13 +135,13 @@ public: // SCU DECLARE_READ8_MEMBER(scu_simk_r); DECLARE_WRITE8_MEMBER(scu_simk_w); - template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dtr_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_dtr_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rxrdy_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_rxrdy_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txrdy_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_txrdy_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txempty_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_txempty_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_syndet_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_syndet_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dtr_handler(Object &&cb) { return m_dtr_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rts_handler(Object &&cb) { return m_rts_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rxrdy_handler(Object &&cb) { return m_rxrdy_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txrdy_handler(Object &&cb) { return m_txrdy_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txempty_handler(Object &&cb) { return m_txempty_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_syndet_handler(Object &&cb) { return m_syndet_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(scu_txd_trampoline_cb) { m_txd_handler(state); } DECLARE_WRITE_LINE_MEMBER(scu_dtr_trampoline_cb) { m_dtr_handler(state); } DECLARE_WRITE_LINE_MEMBER(scu_rts_trampoline_cb) { m_rts_handler(state); } @@ -158,33 +158,33 @@ public: DECLARE_READ8_MEMBER(tmu_tst2_r); DECLARE_WRITE8_MEMBER(tmu_tct2_w); DECLARE_WRITE8_MEMBER(tmu_tmd_w); -// static void set_clk0(device_t &device, double clk0) { downcast<v53_base_device &>(device).m_clk0 = clk0; } -// static void set_clk1(device_t &device, double clk1) { downcast<v53_base_device &>(device).m_clk1 = clk1; } -// static void set_clk2(device_t &device, double clk2) { downcast<v53_base_device &>(device).m_clk2 = clk2; } - template <class Object> static devcb_base &set_out0_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out0_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out1_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out1_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out2_handler(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out2_handler.set_callback(std::forward<Object>(cb)); } +// void set_clk0(double clk0) { m_clk0 = clk0; } +// void set_clk1(double clk1) { m_clk1 = clk1; } +// void set_clk2(double clk2) { m_clk2 = clk2; } + template <class Object> devcb_base &set_out0_handler(Object &&cb) { return m_out0_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out1_handler(Object &&cb) { return m_out1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out2_handler(Object &&cb) { return m_out2_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(tcu_out0_trampoline_cb){ m_out0_handler(state); } DECLARE_WRITE_LINE_MEMBER(tcu_out1_trampoline_cb){ m_out1_handler(state); } DECLARE_WRITE_LINE_MEMBER(tcu_out2_trampoline_cb){ m_out2_handler(state); } // DMAU - template<class Object> static devcb_base &set_out_hreq_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_hreq_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_eop_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_eop_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_in_memr_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_memr_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_memw_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_memw_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_in_ior_0_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_0_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_in_ior_1_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_1_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_in_ior_2_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_2_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_in_ior_3_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_in_ior_3_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_iow_0_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_0_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_iow_1_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_1_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_iow_2_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_2_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_iow_3_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_iow_3_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_dack_0_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_0_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_dack_1_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_1_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_dack_2_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_2_cb.set_callback(std::forward<Object>(cb)); } - template<class Object> static devcb_base &set_out_dack_3_callback(device_t &device, Object &&cb) { return downcast<v53_base_device &>(device).m_out_dack_3_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_hreq_callback(Object &&cb) { return m_out_hreq_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_eop_callback(Object &&cb) { return m_out_eop_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_in_memr_callback(Object &&cb) { return m_in_memr_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_memw_callback(Object &&cb) { return m_out_memw_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_in_ior_0_callback(Object &&cb) { return m_in_ior_0_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_in_ior_1_callback(Object &&cb) { return m_in_ior_1_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_in_ior_2_callback(Object &&cb) { return m_in_ior_2_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_in_ior_3_callback(Object &&cb) { return m_in_ior_3_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_iow_0_callback(Object &&cb) { return m_out_iow_0_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_iow_1_callback(Object &&cb) { return m_out_iow_1_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_iow_2_callback(Object &&cb) { return m_out_iow_2_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_iow_3_callback(Object &&cb) { return m_out_iow_3_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_dack_0_callback(Object &&cb) { return m_out_dack_0_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_dack_1_callback(Object &&cb) { return m_out_dack_1_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_dack_2_callback(Object &&cb) { return m_out_dack_2_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_dack_3_callback(Object &&cb) { return m_out_dack_3_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(dreq0_w); DECLARE_WRITE_LINE_MEMBER(dreq1_w); diff --git a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h index 26bf4298ad1..0450b2ea314 100644 --- a/src/devices/cpu/patinhofeio/patinhofeio_cpu.h +++ b/src/devices/cpu/patinhofeio/patinhofeio_cpu.h @@ -6,13 +6,13 @@ #pragma once #define MCFG_PATINHO_RC_READ_CB(_devcb) \ - devcb = &patinho_feio_cpu_device::set_rc_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<patinho_feio_cpu_device &>(*device).set_rc_read_callback(DEVCB_##_devcb); #define MCFG_PATINHO_BUTTONS_READ_CB(_devcb) \ - devcb = &patinho_feio_cpu_device::set_buttons_read_callback(*device, DEVCB_##_devcb); + devcb = &downcast<patinho_feio_cpu_device &>(*device).set_buttons_read_callback(DEVCB_##_devcb); #define MCFG_PATINHO_IODEV_READ_CB(devnumber, _devcb) \ - devcb = &patinho_feio_cpu_device::set_iodev_read_callback(*device, devnumber, DEVCB_##_devcb); + devcb = &downcast<patinho_feio_cpu_device &>(*device).set_iodev_read_callback(devnumber, DEVCB_##_devcb); #define MCFG_PATINHO_IODEV_WRITE_CB(devnumber, _devcb) \ - devcb = &patinho_feio_cpu_device::set_iodev_write_callback(*device, devnumber, DEVCB_##_devcb); + devcb = &downcast<patinho_feio_cpu_device &>(*device).set_iodev_write_callback(devnumber, DEVCB_##_devcb); /* register IDs */ enum @@ -53,11 +53,11 @@ public: // construction/destruction patinho_feio_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - template <class Object> static devcb_base &set_rc_read_callback(device_t &device, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_rc_read_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_buttons_read_callback(device_t &device, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_buttons_read_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_iodev_read_callback(device_t &device, int devnumber, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_read_cb[devnumber].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_iodev_write_callback(device_t &device, int devnumber, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_write_cb[devnumber].set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_iodev_status_callback(device_t &device, int devnumber, Object &&cb) { return downcast<patinho_feio_cpu_device &>(device).m_iodev_status_cb[devnumber].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rc_read_callback(Object &&cb) { return m_rc_read_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_buttons_read_callback(Object &&cb) { return m_buttons_read_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_iodev_read_callback(int devnumber, Object &&cb) { return m_iodev_read_cb[devnumber].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_iodev_write_callback(int devnumber, Object &&cb) { return m_iodev_write_cb[devnumber].set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_iodev_status_callback(int devnumber, Object &&cb) { return m_iodev_status_cb[devnumber].set_callback(std::forward<Object>(cb)); } void transfer_byte_from_external_device(uint8_t channel, uint8_t data); void set_iodev_status(uint8_t channel, bool status) { m_iodev_status[channel] = status; } diff --git a/src/devices/cpu/pdp1/pdp1.h b/src/devices/cpu/pdp1/pdp1.h index 5a2df5fd91e..a64b23f5c69 100644 --- a/src/devices/cpu/pdp1/pdp1.h +++ b/src/devices/cpu/pdp1/pdp1.h @@ -83,7 +83,7 @@ public: // construction/destruction pdp1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void static_set_reset_param(device_t &device, const pdp1_reset_param_t *param) { downcast<pdp1_device &>(device).m_reset_param = param; } + void set_reset_param(const pdp1_reset_param_t *param) { m_reset_param = param; } void pulse_start_clear(); void io_complete() { m_ios = 1; } @@ -200,7 +200,7 @@ DECLARE_DEVICE_TYPE(PDP1, pdp1_device) #define MCFG_PDP1_RESET_PARAM(_param) \ - pdp1_device::static_set_reset_param(*device, &(_param)); + downcast<pdp1_device &>(*device).set_reset_param(&(_param)); #endif // MAME_CPU_PDP1_PDP1_H diff --git a/src/devices/cpu/pdp1/tx0.h b/src/devices/cpu/pdp1/tx0.h index e9174a46413..7c69bf40649 100644 --- a/src/devices/cpu/pdp1/tx0.h +++ b/src/devices/cpu/pdp1/tx0.h @@ -22,32 +22,32 @@ enum #define MCFG_TX0_CONFIG(_cpy_devcb, _r1l_devcb, _dis_devcb, _r3l_devcb, _prt_devcb, _rsv_devcb, _p6h_devcb, _p7h_devcb, _sel_devcb, _res_devcb) \ - tx0_device::set_cpy_cb(*device, DEVCB_##_cpy_devcb); \ - tx0_device::set_r1l_cb(*device, DEVCB_##_r1l_devcb); \ - tx0_device::set_dis_cb(*device, DEVCB_##_dis_devcb); \ - tx0_device::set_r3l_cb(*device, DEVCB_##_r3l_devcb); \ - tx0_device::set_prt_cb(*device, DEVCB_##_prt_devcb); \ - tx0_device::set_rsv_cb(*device, DEVCB_##_rsv_devcb); \ - tx0_device::set_p6h_cb(*device, DEVCB_##_p6h_devcb); \ - tx0_device::set_p7h_cb(*device, DEVCB_##_p7h_devcb); \ - tx0_device::set_sel_cb(*device, DEVCB_##_sel_devcb); \ - tx0_device::set_res_cb(*device, DEVCB_##_res_devcb); + downcast<tx0_device &>(*device).set_cpy_cb(DEVCB_##_cpy_devcb); \ + downcast<tx0_device &>(*device).set_r1l_cb(DEVCB_##_r1l_devcb); \ + downcast<tx0_device &>(*device).set_dis_cb(DEVCB_##_dis_devcb); \ + downcast<tx0_device &>(*device).set_r3l_cb(DEVCB_##_r3l_devcb); \ + downcast<tx0_device &>(*device).set_prt_cb(DEVCB_##_prt_devcb); \ + downcast<tx0_device &>(*device).set_rsv_cb(DEVCB_##_rsv_devcb); \ + downcast<tx0_device &>(*device).set_p6h_cb(DEVCB_##_p6h_devcb); \ + downcast<tx0_device &>(*device).set_p7h_cb(DEVCB_##_p7h_devcb); \ + downcast<tx0_device &>(*device).set_sel_cb(DEVCB_##_sel_devcb); \ + downcast<tx0_device &>(*device).set_res_cb(DEVCB_##_res_devcb); class tx0_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_cpy_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_cpy_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_r1l_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_r1l_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dis_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_dis_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_r3l_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_r3l_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_prt_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_prt_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rsv_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_rsv_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_p6h_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_p6h_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_p7h_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_p7h_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sel_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_sel_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_res_cb(device_t &device, Object &&cb) { return downcast<tx0_device &>(device).m_io_reset_callback.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_cpy_cb(Object &&cb) { return m_cpy_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_r1l_cb(Object &&cb) { return m_r1l_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dis_cb(Object &&cb) { return m_dis_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_r3l_cb(Object &&cb) { return m_r3l_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_prt_cb(Object &&cb) { return m_prt_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rsv_cb(Object &&cb) { return m_rsv_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p6h_cb(Object &&cb) { return m_p6h_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_p7h_cb(Object &&cb) { return m_p7h_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sel_cb(Object &&cb) { return m_sel_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_res_cb(Object &&cb) { return m_io_reset_callback.set_callback(std::forward<Object>(cb)); } void pulse_reset(); void io_complete(); diff --git a/src/devices/cpu/pic16c5x/pic16c5x.h b/src/devices/cpu/pic16c5x/pic16c5x.h index 0971c5fa9a4..e442fa3a5da 100644 --- a/src/devices/cpu/pic16c5x/pic16c5x.h +++ b/src/devices/cpu/pic16c5x/pic16c5x.h @@ -37,31 +37,31 @@ enum // port a, 4 or 8 bits, 2-way #define MCFG_PIC16C5x_READ_A_CB(_devcb) \ - devcb = &pic16c5x_device::set_read_a_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_read_a_callback(DEVCB_##_devcb); #define MCFG_PIC16C5x_WRITE_A_CB(_devcb) \ - devcb = &pic16c5x_device::set_write_a_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_write_a_callback(DEVCB_##_devcb); // port b, 8 bits, 2-way #define MCFG_PIC16C5x_READ_B_CB(_devcb) \ - devcb = &pic16c5x_device::set_read_b_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_read_b_callback(DEVCB_##_devcb); #define MCFG_PIC16C5x_WRITE_B_CB(_devcb) \ - devcb = &pic16c5x_device::set_write_b_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_write_b_callback(DEVCB_##_devcb); // port c, 8 bits, 2-way #define MCFG_PIC16C5x_READ_C_CB(_devcb) \ - devcb = &pic16c5x_device::set_read_c_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_read_c_callback(DEVCB_##_devcb); #define MCFG_PIC16C5x_WRITE_C_CB(_devcb) \ - devcb = &pic16c5x_device::set_write_c_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_write_c_callback(DEVCB_##_devcb); // port d, 8 bits, 2-way #define MCFG_PIC16C5x_READ_D_CB(_devcb) \ - devcb = &pic16c5x_device::set_read_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_PIC16C5x_WRITE_D_CB(_devcb) \ - devcb = &pic16c5x_device::set_write_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<pic16c5x_device &>(*device).set_write_d_callback(DEVCB_##_devcb); // CONFIG register #define MCFG_PIC16C5x_SET_CONFIG(_data) \ - pic16c5x_device::set_config_static(*device, _data); + downcast<pic16c5x_device &>(*device).pic16c5x_set_config(_data); @@ -78,16 +78,16 @@ DECLARE_DEVICE_TYPE(PIC1655, pic1655_device) class pic16c5x_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_read_a_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_a.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_b_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_b.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_c_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_c.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_read_a_callback(Object &&cb) { return m_read_a.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_b_callback(Object &&cb) { return m_read_b.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_c_callback(Object &&cb) { return m_read_c.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> static devcb_base &set_write_a_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_a.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_b_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_b.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_c_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).m_write_c.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<pic16c5x_device &>(device).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_b_callback(Object &&cb) { return m_write_b.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_c_callback(Object &&cb) { return m_write_c.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)); } /**************************************************************************** * Function to configure the CONFIG register. This is actually hard-wired @@ -96,9 +96,6 @@ public: */ void pic16c5x_set_config(uint16_t data); - // or with a macro - static void set_config_static(device_t &device, uint16_t data) { downcast<pic16c5x_device &>(device).m_temp_config = data; } - void pic16c5x_ram_5(address_map &map); void pic16c5x_ram_7(address_map &map); void pic16c5x_rom_10(address_map &map); diff --git a/src/devices/cpu/powerpc/ppc.h b/src/devices/cpu/powerpc/ppc.h index 8a5673ae990..0a951bd2277 100644 --- a/src/devices/cpu/powerpc/ppc.h +++ b/src/devices/cpu/powerpc/ppc.h @@ -165,7 +165,7 @@ enum ***************************************************************************/ #define MCFG_PPC_BUS_FREQUENCY(_frequency) \ - ppc_device::set_bus_frequency(*device, _frequency); + downcast<ppc_device &>(*device).set_bus_frequency(_frequency); class ppc_frontend; @@ -213,8 +213,8 @@ protected: ppc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int address_bits, int data_bits, powerpc_flavor flavor, uint32_t cap, uint32_t tb_divisor, address_map_constructor internal_map); public: - static void set_bus_frequency(device_t &device, uint32_t bus_frequency) { downcast<ppc_device &>(device).c_bus_frequency = bus_frequency; } - static void set_bus_frequency(device_t &device, const XTAL &xtal) { set_bus_frequency(device, xtal.value()); } + void set_bus_frequency(uint32_t bus_frequency) { c_bus_frequency = bus_frequency; } + void set_bus_frequency(const XTAL &xtal) { set_bus_frequency(xtal.value()); } void ppc_set_dcstore_callback(write32_delegate callback); diff --git a/src/devices/cpu/pps4/pps4.h b/src/devices/cpu/pps4/pps4.h index fcf1d790756..de0bca60b1c 100644 --- a/src/devices/cpu/pps4/pps4.h +++ b/src/devices/cpu/pps4/pps4.h @@ -29,13 +29,13 @@ enum //************************************************************************** #define MCFG_PPS4_DISCRETE_INPUT_A_CB(_devcb) \ - devcb = &pps4_device::set_dia_cb(*device, DEVCB_##_devcb); + devcb = &downcast<pps4_device &>(*device).set_dia_cb(DEVCB_##_devcb); #define MCFG_PPS4_DISCRETE_INPUT_B_CB(_devcb) \ - devcb = &pps4_device::set_dib_cb(*device, DEVCB_##_devcb); + devcb = &downcast<pps4_device &>(*device).set_dib_cb(DEVCB_##_devcb); #define MCFG_PPS4_DISCRETE_OUTPUT_CB(_devcb) \ - devcb = &pps4_device::set_do_cb(*device, DEVCB_##_devcb); + devcb = &downcast<pps4_device &>(*device).set_do_cb(DEVCB_##_devcb); //************************************************************************** // DEVICE TYPE DEFINITIONS @@ -54,10 +54,10 @@ public: // construction/destruction pps4_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration helpers - template <class Object> static devcb_base &set_dia_cb(device_t &device, Object &&cb) { return downcast<pps4_device &>(device).m_dia_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dib_cb(device_t &device, Object &&cb) { return downcast<pps4_device &>(device).m_dib_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_do_cb(device_t &device, Object &&cb) { return downcast<pps4_device &>(device).m_do_cb.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_dia_cb(Object &&cb) { return m_dia_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dib_cb(Object &&cb) { return m_dib_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_do_cb(Object &&cb) { return m_do_cb.set_callback(std::forward<Object>(cb)); } DECLARE_READ16_MEMBER(address_bus_r); diff --git a/src/devices/cpu/psx/dma.h b/src/devices/cpu/psx/dma.h index ba10e80903c..7be62c0eb0d 100644 --- a/src/devices/cpu/psx/dma.h +++ b/src/devices/cpu/psx/dma.h @@ -16,7 +16,7 @@ DECLARE_DEVICE_TYPE(PSX_DMA, psxdma_device) #define MCFG_PSX_DMA_IRQ_HANDLER(_devcb) \ - devcb = &psxdma_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxdma_device &>(*device).set_irq_handler(DEVCB_##_devcb); class psxdma_device : public device_t { @@ -26,8 +26,8 @@ public: psxdma_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<psxdma_device &>(device).m_irq_handler.set_callback(object); } + //configuration helpers + template<class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } void install_read_handler( int n_channel, read_delegate p_fn_dma_read ); void install_write_handler( int n_channel, write_delegate p_fn_dma_write ); diff --git a/src/devices/cpu/psx/irq.h b/src/devices/cpu/psx/irq.h index 5a4f91b6aa7..8030845ff2e 100644 --- a/src/devices/cpu/psx/irq.h +++ b/src/devices/cpu/psx/irq.h @@ -16,15 +16,15 @@ extern const device_type PSX_IRQ; #define MCFG_PSX_IRQ_HANDLER(_devcb) \ - devcb = &psxirq_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxirq_device &>(*device).set_irq_handler(DEVCB_##_devcb); class psxirq_device : public device_t { public: psxirq_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<psxirq_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } DECLARE_READ32_MEMBER( read ); DECLARE_WRITE32_MEMBER( write ); diff --git a/src/devices/cpu/psx/psx.cpp b/src/devices/cpu/psx/psx.cpp index 6f697bbc81d..52861c92dfd 100644 --- a/src/devices/cpu/psx/psx.cpp +++ b/src/devices/cpu/psx/psx.cpp @@ -3381,11 +3381,6 @@ void psxcpu_device::setcp3cr( int reg, uint32_t value ) { } -psxcpu_device *psxcpu_device::getcpu( device_t &device, const char *cputag ) -{ - return downcast<psxcpu_device *>( device.subdevice( cputag ) ); -} - READ32_MEMBER( psxcpu_device::gpu_r ) { return m_gpu_read_handler( space, offset, mem_mask ); diff --git a/src/devices/cpu/psx/psx.h b/src/devices/cpu/psx/psx.h index bdf3b0f2327..73e4380a8f7 100644 --- a/src/devices/cpu/psx/psx.h +++ b/src/devices/cpu/psx/psx.h @@ -121,19 +121,19 @@ enum psxcpu_device::getcpu( *this, cputag )->subdevice<psxdma_device>("dma")->install_write_handler( channel, handler ); #define MCFG_PSX_GPU_READ_HANDLER(_devcb) \ - devcb = &psxcpu_device::set_gpu_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxcpu_device &>(*device).set_gpu_read_handler(DEVCB_##_devcb); #define MCFG_PSX_GPU_WRITE_HANDLER(_devcb) \ - devcb = &psxcpu_device::set_gpu_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxcpu_device &>(*device).set_gpu_write_handler(DEVCB_##_devcb); #define MCFG_PSX_SPU_READ_HANDLER(_devcb) \ - devcb = &psxcpu_device::set_spu_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxcpu_device &>(*device).set_spu_read_handler(DEVCB_##_devcb); #define MCFG_PSX_SPU_WRITE_HANDLER(_devcb) \ - devcb = &psxcpu_device::set_spu_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxcpu_device &>(*device).set_spu_write_handler(DEVCB_##_devcb); #define MCFG_PSX_CD_READ_HANDLER(_devcb) \ - devcb = &psxcpu_device::set_cd_read_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxcpu_device &>(*device).set_cd_read_handler(DEVCB_##_devcb); #define MCFG_PSX_CD_WRITE_HANDLER(_devcb) \ - devcb = &psxcpu_device::set_cd_write_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxcpu_device &>(*device).set_cd_write_handler(DEVCB_##_devcb); #define MCFG_PSX_DISABLE_ROM_BERR \ downcast<psxcpu_device *>(device)->set_disable_rom_berr(true); @@ -146,13 +146,13 @@ enum class psxcpu_device : public cpu_device, psxcpu_disassembler::config { public: - // static configuration helpers - template <class Object> static devcb_base &set_gpu_read_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_gpu_read_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_gpu_write_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_gpu_write_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_spu_read_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_spu_read_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_spu_write_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_spu_write_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cd_read_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_cd_read_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_cd_write_handler(device_t &device, Object &&cb) { return downcast<psxcpu_device &>(device).m_cd_write_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_gpu_read_handler(Object &&cb) { return m_gpu_read_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_gpu_write_handler(Object &&cb) { return m_gpu_write_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_spu_read_handler(Object &&cb) { return m_spu_read_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_spu_write_handler(Object &&cb) { return m_spu_write_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cd_read_handler(Object &&cb) { return m_cd_read_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_cd_write_handler(Object &&cb) { return m_cd_write_handler.set_callback(std::forward<Object>(cb)); } // public interfaces DECLARE_WRITE32_MEMBER( berr_w ); @@ -187,7 +187,7 @@ public: DECLARE_WRITE32_MEMBER( com_delay_w ); DECLARE_READ32_MEMBER( com_delay_r ); - static psxcpu_device *getcpu( device_t &device, const char *cputag ); + static psxcpu_device *getcpu( device_t &device, const char *cputag ) { return downcast<psxcpu_device *>( device.subdevice( cputag ) ); } void set_disable_rom_berr(bool mode); void psxcpu_internal_map(address_map &map); diff --git a/src/devices/cpu/psx/rcnt.h b/src/devices/cpu/psx/rcnt.h index 48262325bfc..2047d229c3e 100644 --- a/src/devices/cpu/psx/rcnt.h +++ b/src/devices/cpu/psx/rcnt.h @@ -16,11 +16,11 @@ DECLARE_DEVICE_TYPE(PSX_RCNT, psxrcnt_device) #define MCFG_PSX_RCNT_IRQ0_HANDLER(_devcb) \ - devcb = &psxrcnt_device::set_irq0_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxrcnt_device &>(*device).set_irq0_handler(DEVCB_##_devcb); #define MCFG_PSX_RCNT_IRQ1_HANDLER(_devcb) \ - devcb = &psxrcnt_device::set_irq1_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxrcnt_device &>(*device).set_irq1_handler(DEVCB_##_devcb); #define MCFG_PSX_RCNT_IRQ2_HANDLER(_devcb) \ - devcb = &psxrcnt_device::set_irq2_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxrcnt_device &>(*device).set_irq2_handler(DEVCB_##_devcb); #define PSX_RC_STOP ( 0x01 ) #define PSX_RC_RESET ( 0x04 ) /* guess */ #define PSX_RC_COUNTTARGET ( 0x08 ) @@ -35,10 +35,10 @@ class psxrcnt_device : public device_t public: psxrcnt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_irq0_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq0_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq1_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq1_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_irq2_handler(device_t &device, Object &&cb) { return downcast<psxrcnt_device &>(device).m_irq2_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq0_handler(Object &&cb) { return m_irq0_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq1_handler(Object &&cb) { return m_irq1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_irq2_handler(Object &&cb) { return m_irq2_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE32_MEMBER( write ); DECLARE_READ32_MEMBER( read ); diff --git a/src/devices/cpu/psx/sio.h b/src/devices/cpu/psx/sio.h index 1205e4b278c..fe2cb6af269 100644 --- a/src/devices/cpu/psx/sio.h +++ b/src/devices/cpu/psx/sio.h @@ -17,19 +17,19 @@ DECLARE_DEVICE_TYPE(PSX_SIO0, psxsio0_device) DECLARE_DEVICE_TYPE(PSX_SIO1, psxsio1_device) #define MCFG_PSX_SIO_IRQ_HANDLER(_devcb) \ - devcb = &psxsio_device::set_irq_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxsio_device &>(*device).set_irq_handler(DEVCB_##_devcb); #define MCFG_PSX_SIO_SCK_HANDLER(_devcb) \ - devcb = &psxsio_device::set_sck_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxsio_device &>(*device).set_sck_handler(DEVCB_##_devcb); #define MCFG_PSX_SIO_TXD_HANDLER(_devcb) \ - devcb = &psxsio_device::set_txd_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxsio_device &>(*device).set_txd_handler(DEVCB_##_devcb); #define MCFG_PSX_SIO_DTR_HANDLER(_devcb) \ - devcb = &psxsio_device::set_dtr_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxsio_device &>(*device).set_dtr_handler(DEVCB_##_devcb); #define MCFG_PSX_SIO_RTS_HANDLER(_devcb) \ - devcb = &psxsio_device::set_rts_handler(*device, DEVCB_##_devcb); + devcb = &downcast<psxsio_device &>(*device).set_rts_handler(DEVCB_##_devcb); #define SIO_BUF_SIZE ( 8 ) @@ -51,12 +51,12 @@ DECLARE_DEVICE_TYPE(PSX_SIO1, psxsio1_device) class psxsio_device : public device_t { public: - // static configuration helpers - template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sck_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_sck_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txd_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_txd_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_dtr_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_dtr_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rts_handler(device_t &device, Object &&cb) { return downcast<psxsio_device &>(device).m_rts_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sck_handler(Object &&cb) { return m_sck_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dtr_handler(Object &&cb) { return m_dtr_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rts_handler(Object &&cb) { return m_rts_handler.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE32_MEMBER( write ); DECLARE_READ32_MEMBER( read ); diff --git a/src/devices/cpu/rsp/rsp.h b/src/devices/cpu/rsp/rsp.h index 5f7b9ccb001..cc407513cec 100644 --- a/src/devices/cpu/rsp/rsp.h +++ b/src/devices/cpu/rsp/rsp.h @@ -84,19 +84,19 @@ enum #define RSPDRC_STRICT_VERIFY 0x0001 /* verify all instructions */ #define MCFG_RSP_DP_REG_R_CB(_devcb) \ - devcb = &rsp_device::static_set_dp_reg_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rsp_device &>(*device).set_dp_reg_r_callback(DEVCB_##_devcb); #define MCFG_RSP_DP_REG_W_CB(_devcb) \ - devcb = &rsp_device::static_set_dp_reg_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rsp_device &>(*device).set_dp_reg_w_callback(DEVCB_##_devcb); #define MCFG_RSP_SP_REG_R_CB(_devcb) \ - devcb = &rsp_device::static_set_sp_reg_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rsp_device &>(*device).set_sp_reg_r_callback(DEVCB_##_devcb); #define MCFG_RSP_SP_REG_W_CB(_devcb) \ - devcb = &rsp_device::static_set_sp_reg_w_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rsp_device &>(*device).set_sp_reg_w_callback(DEVCB_##_devcb); #define MCFG_RSP_SP_SET_STATUS_CB(_devcb) \ - devcb = &rsp_device::static_set_status_callback(*device, DEVCB_##_devcb); + devcb = &downcast<rsp_device &>(*device).set_status_callback(DEVCB_##_devcb); class rsp_frontend; @@ -113,11 +113,11 @@ public: rsp_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); void resolve_cb(); - template <class Object> static devcb_base &static_set_dp_reg_r_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_dp_reg_r_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_dp_reg_w_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_dp_reg_w_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_sp_reg_r_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_sp_reg_r_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_sp_reg_w_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_sp_reg_w_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &static_set_status_callback(device_t &device, Object &&cb) { return downcast<rsp_device &>(device).m_sp_set_status_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dp_reg_r_callback(Object &&cb) { return m_dp_reg_r_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dp_reg_w_callback(Object &&cb) { return m_dp_reg_w_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sp_reg_r_callback(Object &&cb) { return m_sp_reg_r_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sp_reg_w_callback(Object &&cb) { return m_sp_reg_w_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_status_callback(Object &&cb) { return m_sp_set_status_func.set_callback(std::forward<Object>(cb)); } void rspdrc_flush_drc_cache(); void rspdrc_set_options(uint32_t options); diff --git a/src/devices/cpu/s2650/s2650.h b/src/devices/cpu/s2650/s2650.h index e329831690c..4d8da0cde0c 100644 --- a/src/devices/cpu/s2650/s2650.h +++ b/src/devices/cpu/s2650/s2650.h @@ -28,13 +28,13 @@ DECLARE_DEVICE_TYPE(S2650, s2650_device) #define MCFG_S2650_SENSE_INPUT(_devcb) \ - devcb = &s2650_device::set_sense_handler(*device, DEVCB_##_devcb); + devcb = &downcast<s2650_device &>(*device).set_sense_handler(DEVCB_##_devcb); #define MCFG_S2650_FLAG_OUTPUT(_devcb) \ - devcb = &s2650_device::set_flag_handler(*device, DEVCB_##_devcb); + devcb = &downcast<s2650_device &>(*device).set_flag_handler(DEVCB_##_devcb); #define MCFG_S2650_INTACK_HANDLER(_devcb) \ - devcb = &s2650_device::set_intack_handler(*device, DEVCB_##_devcb); + devcb = &downcast<s2650_device &>(*device).set_intack_handler(DEVCB_##_devcb); class s2650_device : public cpu_device, public s2650_disassembler::config { @@ -42,10 +42,10 @@ public: // construction/destruction s2650_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_sense_handler(device_t &device, Object &&cb) { return downcast<s2650_device &>(device).m_sense_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_flag_handler(device_t &device, Object &&cb) { return downcast<s2650_device &>(device).m_flag_handler.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_intack_handler(device_t &device, Object &&cb) { return downcast<s2650_device &>(device).m_intack_handler.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_sense_handler(Object &&cb) { return m_sense_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_flag_handler(Object &&cb) { return m_flag_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_intack_handler(Object &&cb) { return m_intack_handler.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/cpu/saturn/saturn.h b/src/devices/cpu/saturn/saturn.h index bd49ad18806..a7ad69c43fc 100644 --- a/src/devices/cpu/saturn/saturn.h +++ b/src/devices/cpu/saturn/saturn.h @@ -63,14 +63,14 @@ enum #define MCFG_SATURN_CONFIG(_out, _in, _reset, _config, _unconfig, _id, _crc, _rsi) \ - saturn_device::set_out_func(*device, DEVCB_##_out); \ - saturn_device::set_in_func(*device, DEVCB_##_in); \ - saturn_device::set_reset_func(*device, DEVCB_##_reset); \ - saturn_device::set_config_func(*device, DEVCB_##_config); \ - saturn_device::set_unconfig_func(*device, DEVCB_##_unconfig); \ - saturn_device::set_id_func(*device, DEVCB_##_id); \ - saturn_device::set_crc_func(*device, DEVCB_##_crc); \ - saturn_device::set_rsi_func(*device, DEVCB_##_rsi); + downcast<saturn_device &>(*device).set_out_func(DEVCB_##_out); \ + downcast<saturn_device &>(*device).set_in_func(DEVCB_##_in); \ + downcast<saturn_device &>(*device).set_reset_func(DEVCB_##_reset); \ + downcast<saturn_device &>(*device).set_config_func(DEVCB_##_config); \ + downcast<saturn_device &>(*device).set_unconfig_func(DEVCB_##_unconfig); \ + downcast<saturn_device &>(*device).set_id_func(DEVCB_##_id); \ + downcast<saturn_device &>(*device).set_crc_func(DEVCB_##_crc); \ + downcast<saturn_device &>(*device).set_rsi_func(DEVCB_##_rsi); class saturn_device : public cpu_device, public saturn_disassembler::config @@ -79,15 +79,15 @@ public: // construction/destruction saturn_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_out_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_out_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_in_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_reset_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_reset_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_config_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_config_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_unconfig_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_unconfig_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_id_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_id_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_crc_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_crc_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rsi_func(device_t &device, Object &&cb) { return downcast<saturn_device &>(device).m_rsi_func.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_out_func(Object &&cb) { return m_out_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_func(Object &&cb) { return m_in_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_reset_func(Object &&cb) { return m_reset_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_config_func(Object &&cb) { return m_config_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_unconfig_func(Object &&cb) { return m_unconfig_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_id_func(Object &&cb) { return m_id_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_crc_func(Object &&cb) { return m_crc_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rsi_func(Object &&cb) { return m_rsi_func.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/cpu/sc61860/sc61860.h b/src/devices/cpu/sc61860/sc61860.h index 3b9e6745e4d..80f1733c666 100644 --- a/src/devices/cpu/sc61860/sc61860.h +++ b/src/devices/cpu/sc61860/sc61860.h @@ -45,28 +45,28 @@ enum #define MCFG_SC61860_READ_RESET_HANDLER(_devcb) \ - devcb = &sc61860_device::set_reset_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_reset_cb(DEVCB_##_devcb); #define MCFG_SC61860_READ_BRK_HANDLER(_devcb) \ - devcb = &sc61860_device::set_brk_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_brk_cb(DEVCB_##_devcb); #define MCFG_SC61860_READ_X_HANDLER(_devcb) \ - devcb = &sc61860_device::set_x_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_x_cb(DEVCB_##_devcb); #define MCFG_SC61860_READ_A_HANDLER(_devcb) \ - devcb = &sc61860_device::set_ina_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_ina_cb(DEVCB_##_devcb); #define MCFG_SC61860_WRITE_A_HANDLER(_devcb) \ - devcb = &sc61860_device::set_outa_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_outa_cb(DEVCB_##_devcb); #define MCFG_SC61860_READ_B_HANDLER(_devcb) \ - devcb = &sc61860_device::set_inb_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_inb_cb(DEVCB_##_devcb); #define MCFG_SC61860_WRITE_B_HANDLER(_devcb) \ - devcb = &sc61860_device::set_outb_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_outb_cb(DEVCB_##_devcb); #define MCFG_SC61860_WRITE_C_HANDLER(_devcb) \ - devcb = &sc61860_device::set_outc_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sc61860_device &>(*device).set_outc_cb(DEVCB_##_devcb); class sc61860_device : public cpu_device { @@ -74,15 +74,15 @@ public: // construction/destruction sc61860_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_reset_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_reset.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_brk_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_brk.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_x_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_x.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_ina_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_ina.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_outa_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_outa.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_inb_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_inb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_outb_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_outb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_outc_cb(device_t &device, Object &&cb) { return downcast<sc61860_device &>(device).m_outc.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_reset_cb(Object &&cb) { return m_reset.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_brk_cb(Object &&cb) { return m_brk.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_x_cb(Object &&cb) { return m_x.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ina_cb(Object &&cb) { return m_ina.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_outa_cb(Object &&cb) { return m_outa.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_inb_cb(Object &&cb) { return m_inb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_outb_cb(Object &&cb) { return m_outb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_outc_cb(Object &&cb) { return m_outc.set_callback(std::forward<Object>(cb)); } /* this is though for power on/off of the sharps */ uint8_t *internal_ram(); diff --git a/src/devices/cpu/scmp/scmp.h b/src/devices/cpu/scmp/scmp.h index 1ca7c699af5..c77068d40b8 100644 --- a/src/devices/cpu/scmp/scmp.h +++ b/src/devices/cpu/scmp/scmp.h @@ -7,12 +7,12 @@ #define MCFG_SCMP_CONFIG(_flag_out_devcb, _sout_devcb, _sin_devcb, _sensea_devcb, _senseb_devcb, _halt_devcb) \ - scmp_device::set_flag_out_cb(*device, DEVCB_##_flag_out_devcb); \ - scmp_device::set_sout_cb(*device, DEVCB_##_sout_devcb); \ - scmp_device::set_sin_cb(*device, DEVCB_##_sin_devcb); \ - scmp_device::set_sensea_cb(*device, DEVCB_##_sensea_devcb); \ - scmp_device::set_senseb_cb(*device, DEVCB_##_senseb_devcb); \ - scmp_device::set_halt_cb(*device, DEVCB_##_halt_devcb); + downcast<scmp_device &>(*device).set_flag_out_cb(DEVCB_##_flag_out_devcb); \ + downcast<scmp_device &>(*device).set_sout_cb(DEVCB_##_sout_devcb); \ + downcast<scmp_device &>(*device).set_sin_cb(DEVCB_##_sin_devcb); \ + downcast<scmp_device &>(*device).set_sensea_cb( DEVCB_##_sensea_devcb); \ + downcast<scmp_device &>(*device).set_senseb_cb(DEVCB_##_senseb_devcb); \ + downcast<scmp_device &>(*device).set_halt_cb(DEVCB_##_halt_devcb); class scmp_device : public cpu_device @@ -21,13 +21,13 @@ public: // construction/destruction scmp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_flag_out_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_flag_out_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sout_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_sout_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sin_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_sin_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_sensea_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_sensea_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_senseb_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_senseb_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_halt_cb(device_t &device, Object &&cb) { return downcast<scmp_device &>(device).m_halt_func.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_flag_out_cb(Object &&cb) { return m_flag_out_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sout_cb(Object &&cb) { return m_sout_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sin_cb(Object &&cb) { return m_sin_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sensea_cb(Object &&cb) { return m_sensea_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_senseb_cb(Object &&cb) { return m_senseb_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_halt_cb(Object &&cb) { return m_halt_func.set_callback(std::forward<Object>(cb)); } protected: enum diff --git a/src/devices/cpu/scudsp/scudsp.h b/src/devices/cpu/scudsp/scudsp.h index 52a132511ad..aab1a6f0af3 100644 --- a/src/devices/cpu/scudsp/scudsp.h +++ b/src/devices/cpu/scudsp/scudsp.h @@ -37,13 +37,13 @@ enum #define MCFG_SCUDSP_OUT_IRQ_CB(_devcb) \ - devcb = &scudsp_cpu_device::set_out_irq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<scudsp_cpu_device &>(*device).set_out_irq_callback(DEVCB_##_devcb); #define MCFG_SCUDSP_IN_DMA_CB(_devcb) \ - devcb = &scudsp_cpu_device::set_in_dma_callback(*device, DEVCB_##_devcb); + devcb = &downcast<scudsp_cpu_device &>(*device).set_in_dma_callback(DEVCB_##_devcb); #define MCFG_SCUDSP_OUT_DMA_CB(_devcb) \ - devcb = &scudsp_cpu_device::set_out_dma_callback(*device, DEVCB_##_devcb); + devcb = &downcast<scudsp_cpu_device &>(*device).set_out_dma_callback(DEVCB_##_devcb); #define SCUDSP_RESET INPUT_LINE_RESET /* Non-Maskable */ @@ -54,9 +54,9 @@ public: // construction/destruction scudsp_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - template <class Object> static devcb_base &set_out_irq_callback(device_t &device, Object &&cb) { return downcast<scudsp_cpu_device &>(device).m_out_irq_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_in_dma_callback(device_t &device, Object &&cb) { return downcast<scudsp_cpu_device &>(device).m_in_dma_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_dma_callback(device_t &device, Object &&cb) { return downcast<scudsp_cpu_device &>(device).m_out_dma_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_dma_callback(Object &&cb) { return m_in_dma_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_dma_callback(Object &&cb) { return m_out_dma_cb.set_callback(std::forward<Object>(cb)); } /* port 0 */ DECLARE_READ32_MEMBER( program_control_r ); diff --git a/src/devices/cpu/sh/sh2.h b/src/devices/cpu/sh/sh2.h index 4e0fd37ca30..b3b767347e7 100644 --- a/src/devices/cpu/sh/sh2.h +++ b/src/devices/cpu/sh/sh2.h @@ -46,16 +46,16 @@ #define SH2_FTCSR_READ_CB(name) void name(uint32_t data) #define MCFG_SH2_IS_SLAVE(_slave) \ - sh2_device::set_is_slave(*device, _slave); + downcast<sh2_device &>(*device).set_is_slave(_slave); #define MCFG_SH2_DMA_KLUDGE_CB(_class, _method) \ - sh2_device::set_dma_kludge_callback(*device, sh2_device::dma_kludge_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<sh2_device &>(*device).set_dma_kludge_callback(sh2_device::dma_kludge_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_SH2_FIFO_DATA_AVAIL_CB(_class, _method) \ - sh2_device::set_dma_fifo_data_available_callback(*device, sh2_device::dma_fifo_data_available_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<sh2_device &>(*device).set_dma_fifo_data_available_callback(sh2_device::dma_fifo_data_available_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_SH2_FTCSR_READ_CB(_class, _method) \ - sh2_device::set_ftcsr_read_callback(*device, sh2_device::ftcsr_read_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<sh2_device &>(*device).set_ftcsr_read_callback(sh2_device::ftcsr_read_delegate(&_class::_method, #_class "::" #_method, this)); class sh2_frontend; @@ -72,10 +72,10 @@ public: // construction/destruction sh2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - static void set_is_slave(device_t &device, int slave) { downcast<sh2_device &>(device).m_is_slave = slave; } - static void set_dma_kludge_callback(device_t &device, dma_kludge_delegate callback) { downcast<sh2_device &>(device).m_dma_kludge_cb = callback; } - static void set_dma_fifo_data_available_callback(device_t &device, dma_fifo_data_available_delegate callback) { downcast<sh2_device &>(device).m_dma_fifo_data_available_cb = callback; } - static void set_ftcsr_read_callback(device_t &device, ftcsr_read_delegate callback) { downcast<sh2_device &>(device).m_ftcsr_read_cb = callback; } + void set_is_slave(int slave) { m_is_slave = slave; } + template <typename Object> void set_dma_kludge_callback(Object &&cb) { m_dma_kludge_cb = std::forward<Object>(cb); } + template <typename Object> void set_dma_fifo_data_available_callback(Object &&cb) { m_dma_fifo_data_available_cb = std::forward<Object>(cb); } + template <typename Object> void set_ftcsr_read_callback(Object &&cb) { m_ftcsr_read_cb = std::forward<Object>(cb); } DECLARE_WRITE32_MEMBER( sh7604_w ); DECLARE_READ32_MEMBER( sh7604_r ); diff --git a/src/devices/cpu/sh/sh4.h b/src/devices/cpu/sh/sh4.h index 9954f378954..52d7cdf4c3b 100644 --- a/src/devices/cpu/sh/sh4.h +++ b/src/devices/cpu/sh/sh4.h @@ -157,38 +157,38 @@ typedef void (*sh4_ftcsr_callback)(uint32_t); #define MCFG_SH4_MD0(_md0) \ - sh34_base_device::set_md0(*device, _md0); + downcast<sh34_base_device &>(*device).set_md0(_md0); #define MCFG_SH4_MD1(_md1) \ - sh34_base_device::set_md1(*device, _md1); + downcast<sh34_base_device &>(*device).set_md1(_md1); #define MCFG_SH4_MD2(_md2) \ - sh34_base_device::set_md2(*device, _md2); + downcast<sh34_base_device &>(*device).set_md2(_md2); #define MCFG_SH4_MD3(_md3) \ - sh34_base_device::set_md3(*device, _md3); + downcast<sh34_base_device &>(*device).set_md3(_md3); #define MCFG_SH4_MD4(_md4) \ - sh34_base_device::set_md4(*device, _md4); + downcast<sh34_base_device &>(*device).set_md4(_md4); #define MCFG_SH4_MD5(_md5) \ - sh34_base_device::set_md5(*device, _md5); + downcast<sh34_base_device &>(*device).set_md5(_md5); #define MCFG_SH4_MD6(_md6) \ - sh34_base_device::set_md6(*device, _md6); + downcast<sh34_base_device &>(*device).set_md6(_md6); #define MCFG_SH4_MD7(_md7) \ - sh34_base_device::set_md7(*device, _md7); + downcast<sh34_base_device &>(*device).set_md7(_md7); #define MCFG_SH4_MD8(_md8) \ - sh34_base_device::set_md8(*device, _md8); + downcast<sh34_base_device &>(*device).set_md8(_md8); #define MCFG_SH4_CLOCK(_clock) \ - sh34_base_device::set_sh4_clock(*device, _clock); + downcast<sh34_base_device &>(*device).set_sh4_clock(_clock); #define MCFG_MMU_HACK_TYPE(_hacktype) \ - sh34_base_device::set_mmu_hacktype(*device, _hacktype); + downcast<sh34_base_device &>(*device).set_mmu_hacktype(_hacktype); class sh4_frontend; class sh4be_frontend; @@ -197,19 +197,19 @@ class sh34_base_device : public sh_common_execution { public: - static void set_md0(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md0 = md0; } - static void set_md1(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md1 = md0; } - static void set_md2(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md2 = md0; } - static void set_md3(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md3 = md0; } - static void set_md4(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md4 = md0; } - static void set_md5(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md5 = md0; } - static void set_md6(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md6 = md0; } - static void set_md7(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md7 = md0; } - static void set_md8(device_t &device, int md0) { downcast<sh34_base_device &>(device).c_md8 = md0; } - static void set_sh4_clock(device_t &device, int clock) { downcast<sh34_base_device &>(device).c_clock = clock; } - static void set_sh4_clock(device_t &device, const XTAL &xtal) { set_sh4_clock(device, xtal.value()); } - - static void set_mmu_hacktype(device_t &device, int hacktype) { downcast<sh34_base_device &>(device).m_mmuhack = hacktype; } + void set_md0(int md0) { c_md0 = md0; } + void set_md1(int md0) { c_md1 = md0; } + void set_md2(int md0) { c_md2 = md0; } + void set_md3(int md0) { c_md3 = md0; } + void set_md4(int md0) { c_md4 = md0; } + void set_md5(int md0) { c_md5 = md0; } + void set_md6(int md0) { c_md6 = md0; } + void set_md7(int md0) { c_md7 = md0; } + void set_md8(int md0) { c_md8 = md0; } + void set_sh4_clock(int clock) { c_clock = clock; } + void set_sh4_clock(const XTAL &xtal) { set_sh4_clock(xtal.value()); } + + void set_mmu_hacktype(int hacktype) { m_mmuhack = hacktype; } TIMER_CALLBACK_MEMBER( sh4_refresh_timer_callback ); TIMER_CALLBACK_MEMBER( sh4_rtc_timer_callback ); diff --git a/src/devices/cpu/sharc/sharc.h b/src/devices/cpu/sharc/sharc.h index 7780f44288b..e183fb6a866 100644 --- a/src/devices/cpu/sharc/sharc.h +++ b/src/devices/cpu/sharc/sharc.h @@ -74,7 +74,7 @@ #define MCFG_SHARC_BOOT_MODE(boot_mode) \ - adsp21062_device::set_boot_mode(*device, adsp21062_device::boot_mode); + downcast<adsp21062_device &>(*device).set_boot_mode(adsp21062_device::boot_mode); class sharc_frontend; @@ -95,8 +95,8 @@ public: // construction/destruction adsp21062_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - // static configuration helpers - static void set_boot_mode(device_t &device, const sharc_boot_mode boot_mode) { downcast<adsp21062_device &>(device).m_boot_mode = boot_mode; } + // configuration helpers + void set_boot_mode(const sharc_boot_mode boot_mode) { m_boot_mode = boot_mode; } void set_flag_input(int flag_num, int state); void external_iop_write(uint32_t address, uint32_t data); diff --git a/src/devices/cpu/sm510/sm500.h b/src/devices/cpu/sm510/sm500.h index 36e361eecdb..b0d056b47bd 100644 --- a/src/devices/cpu/sm510/sm500.h +++ b/src/devices/cpu/sm510/sm500.h @@ -18,7 +18,7 @@ // LCD segment outputs: H1/2 as a0, O group as a1-a4, O data as d0-d3 #define MCFG_SM500_WRITE_O_CB(_devcb) \ - devcb = &sm500_device::set_write_o_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm500_device &>(*device).set_write_o_callback(DEVCB_##_devcb); // see sm510.h for ACL, K, R, alpha, beta @@ -79,8 +79,8 @@ class sm500_device : public sm510_base_device public: sm500_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration helpers - template <class Object> static devcb_base &set_write_o_callback(device_t &device, Object &&cb) { return downcast<sm500_device &>(device).m_write_o.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_write_o_callback(Object &&cb) { return m_write_o.set_callback(std::forward<Object>(cb)); } protected: sm500_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int stack_levels, int o_pins, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data); diff --git a/src/devices/cpu/sm510/sm510.h b/src/devices/cpu/sm510/sm510.h index e4805188f75..d51aca23bcf 100644 --- a/src/devices/cpu/sm510/sm510.h +++ b/src/devices/cpu/sm510/sm510.h @@ -15,45 +15,45 @@ // 4-bit K input port (pull-down) #define MCFG_SM510_READ_K_CB(_devcb) \ - devcb = &sm510_base_device::set_read_k_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_read_k_callback(DEVCB_##_devcb); // when in halt state, any K input going High can wake up the CPU, // driver is required to use set_input_line(SM510_INPUT_LINE_K, state) #define SM510_INPUT_LINE_K 0 // 1-bit BA(aka alpha) input pin (pull-up) #define MCFG_SM510_READ_BA_CB(_devcb) \ - devcb = &sm510_base_device::set_read_ba_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_read_ba_callback(DEVCB_##_devcb); // 1-bit B(beta) input pin (pull-up) #define MCFG_SM510_READ_B_CB(_devcb) \ - devcb = &sm510_base_device::set_read_b_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_read_b_callback(DEVCB_##_devcb); // 8-bit S strobe output port #define MCFG_SM510_WRITE_S_CB(_devcb) \ - devcb = &sm510_base_device::set_write_s_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_write_s_callback(DEVCB_##_devcb); // 1/2/4-bit R (buzzer/melody) output port #define MCFG_SM510_WRITE_R_CB(_devcb) \ - devcb = &sm510_base_device::set_write_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_write_r_callback(DEVCB_##_devcb); // For SM510, SM500, SM5A, R port output is selected with a mask option, // either from the divider or direct contol. Documented options are: // SM510/SM5A: control, 2(4096Hz meant for alarm sound) // SM500: 14, 11, 3 (divider f1, f4, f12) #define MCFG_SM510_R_MASK_OPTION(_bit) \ - sm510_base_device::set_r_mask_option(*device, _bit); + downcast<sm510_base_device &>(*device).set_r_mask_option(_bit); #define SM510_R_CONTROL_OUTPUT -1 // LCD segment outputs: H1-4 as offset(low), a/b/c 1-16 as data d0-d15 #define MCFG_SM510_WRITE_SEGA_CB(_devcb) \ - devcb = &sm510_base_device::set_write_sega_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_write_sega_callback(DEVCB_##_devcb); #define MCFG_SM510_WRITE_SEGB_CB(_devcb) \ - devcb = &sm510_base_device::set_write_segb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_write_segb_callback(DEVCB_##_devcb); #define MCFG_SM510_WRITE_SEGC_CB(_devcb) \ - devcb = &sm510_base_device::set_write_segc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_write_segc_callback(DEVCB_##_devcb); // LCD bs output: same as above, but only up to 2 bits used #define MCFG_SM510_WRITE_SEGBS_CB(_devcb) \ - devcb = &sm510_base_device::set_write_segbs_callback(*device, DEVCB_##_devcb); + devcb = &downcast<sm510_base_device &>(*device).set_write_segbs_callback(DEVCB_##_devcb); // LCD output lazy combination #define MCFG_SM510_WRITE_SEGS_CB(_devcb) \ @@ -125,18 +125,18 @@ public: , m_write_r(*this) { } - // static configuration helpers - template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_ba_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_read_ba.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_b_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_read_b.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_s_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_s.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_r.set_callback(std::forward<Object>(cb)); } - static void set_r_mask_option(device_t &device, int bit) { downcast<sm510_base_device &>(device).m_r_mask_option = bit; } - - template <class Object> static devcb_base &set_write_sega_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_sega.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_segb_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_segb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_segc_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_segc.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_segbs_callback(device_t &device, Object &&cb) { return downcast<sm510_base_device &>(device).m_write_segbs.set_callback(std::forward<Object>(cb)); } + // 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_ba_callback(Object &&cb) { return m_read_ba.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_b_callback(Object &&cb) { return m_read_b.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_s_callback(Object &&cb) { return m_write_s.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r_callback(Object &&cb) { return m_write_r.set_callback(std::forward<Object>(cb)); } + void set_r_mask_option(int bit) { m_r_mask_option = bit; } + + template <class Object> devcb_base &set_write_sega_callback(Object &&cb) { return m_write_sega.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_segb_callback(Object &&cb) { return m_write_segb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_segc_callback(Object &&cb) { return m_write_segc.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_segbs_callback(Object &&cb) { return m_write_segbs.set_callback(std::forward<Object>(cb)); } protected: // device-level overrides diff --git a/src/devices/cpu/sm8500/sm8500.h b/src/devices/cpu/sm8500/sm8500.h index ac9aea3fe82..34e3242f957 100644 --- a/src/devices/cpu/sm8500/sm8500.h +++ b/src/devices/cpu/sm8500/sm8500.h @@ -6,10 +6,10 @@ #pragma once #define MCFG_SM8500_DMA_CB(_devcb) \ - devcb = &sm8500_cpu_device::set_dma_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sm8500_cpu_device &>(*device).set_dma_cb(DEVCB_##_devcb); #define MCFG_SM8500_TIMER_CB(_devcb) \ - devcb = &sm8500_cpu_device::set_timer_cb(*device, DEVCB_##_devcb); + devcb = &downcast<sm8500_cpu_device &>(*device).set_timer_cb(DEVCB_##_devcb); enum { @@ -28,9 +28,9 @@ public: // construction/destruction sm8500_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - // static configuration helpers - template <class Object> static devcb_base &set_dma_cb(device_t &device, Object &&cb) { return downcast<sm8500_cpu_device &>(device).m_dma_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_timer_cb(device_t &device, Object &&cb) { return downcast<sm8500_cpu_device &>(device).m_timer_func.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_dma_cb(Object &&cb) { return m_dma_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_timer_cb(Object &&cb) { return m_timer_func.set_callback(std::forward<Object>(cb)); } /* interrupts */ static constexpr int ILL_INT = 0; diff --git a/src/devices/cpu/sparc/sparc.h b/src/devices/cpu/sparc/sparc.h index 8d91183ee1a..2991886adfa 100644 --- a/src/devices/cpu/sparc/sparc.h +++ b/src/devices/cpu/sparc/sparc.h @@ -20,7 +20,7 @@ // TODO: when there are more SPARC CPUs, move setter to a base class #define MCFG_SPARC_ADD_ASI_DESC(desc) \ - mb86901_device::add_asi_desc(*device, [](sparc_disassembler *dasm) { dasm->add_asi_desc(desc); }); + downcast<mb86901_device &>(*device).add_asi_desc([](sparc_disassembler *dasm) { dasm->add_asi_desc(desc); }); class mb86901_device : public cpu_device, protected sparc_disassembler::config { @@ -51,7 +51,7 @@ public: uint8_t get_asi() { return m_asi; } uint32_t pc() { return m_pc; } - static void add_asi_desc(device_t &device, std::function<void (sparc_disassembler *)> f) { downcast<mb86901_device &>(device).m_asi_desc_adder = f; } + void add_asi_desc(std::function<void (sparc_disassembler *)> f) { m_asi_desc_adder = f; } #if LOG_FCODES void enable_log_fcodes(bool enable) { m_log_fcodes = enable; } diff --git a/src/devices/cpu/superfx/superfx.h b/src/devices/cpu/superfx/superfx.h index 0bd060bb5fa..28c474d4d92 100644 --- a/src/devices/cpu/superfx/superfx.h +++ b/src/devices/cpu/superfx/superfx.h @@ -90,7 +90,7 @@ enum #define MCFG_SUPERFX_OUT_IRQ(_devcb) \ - devcb = &superfx_device::set_out_irq_func(*device, DEVCB_##_devcb); + devcb = &downcast<superfx_device &>(*device).set_out_irq_func(DEVCB_##_devcb); class superfx_device : public cpu_device, public superfx_disassembler::config @@ -99,8 +99,8 @@ public: // construction/destruction superfx_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - // static configuration helpers - template <class Object> static devcb_base &set_out_irq_func(device_t &device, Object &&cb) { return downcast<superfx_device &>(device).m_out_irq_func.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_out_irq_func(Object &&cb) { return m_out_irq_func.set_callback(std::forward<Object>(cb)); } uint8_t mmio_read(uint32_t addr); void mmio_write(uint32_t addr, uint8_t data); diff --git a/src/devices/cpu/t11/t11.h b/src/devices/cpu/t11/t11.h index 27f1177b03f..2ca0dd0e425 100644 --- a/src/devices/cpu/t11/t11.h +++ b/src/devices/cpu/t11/t11.h @@ -29,10 +29,10 @@ enum #define MCFG_T11_INITIAL_MODE(_mode) \ - t11_device::set_initial_mode(*device, _mode); + downcast<t11_device &>(*device).set_initial_mode(_mode); #define MCFG_T11_RESET(_devcb) \ - devcb = &t11_device::set_out_reset_func(*device, DEVCB_##_devcb); + devcb = &downcast<t11_device &>(*device).set_out_reset_func(DEVCB_##_devcb); class t11_device : public cpu_device { @@ -40,9 +40,9 @@ public: // construction/destruction t11_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); - // static configuration helpers - static void set_initial_mode(device_t &device, const uint16_t mode) { downcast<t11_device &>(device).c_initial_mode = mode; } - template <class Object> static devcb_base &set_out_reset_func(device_t &device, Object &&cb) { return downcast<t11_device &>(device).m_out_reset_func.set_callback(std::forward<Object>(cb)); } + // configuration helpers + void set_initial_mode(const uint16_t mode) { c_initial_mode = mode; } + template <class Object> devcb_base &set_out_reset_func(Object &&cb) { return m_out_reset_func.set_callback(std::forward<Object>(cb)); } protected: t11_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); diff --git a/src/devices/cpu/tlcs90/tlcs90.h b/src/devices/cpu/tlcs90/tlcs90.h index abd4c081c40..bd3aa4ab249 100644 --- a/src/devices/cpu/tlcs90/tlcs90.h +++ b/src/devices/cpu/tlcs90/tlcs90.h @@ -8,59 +8,59 @@ // I/O callbacks #define MCFG_TLCS90_PORT_P0_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(0, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P1_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(1, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P2_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(2, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P3_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(3, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P4_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 4, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(4, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P5_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 5, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(5, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P6_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 6, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(6, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P7_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 7, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(7, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P8_READ_CB(_devcb) \ - devcb = &tlcs90_device::set_port_read_cb(*device, 8, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_read_cb(8, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P0_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(0, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P1_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(1, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P2_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(2, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P3_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(3, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P4_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 4, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(4, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P5_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 5, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(5, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P6_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 6, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(6, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P7_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 7, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(7, DEVCB_##_devcb); #define MCFG_TLCS90_PORT_P8_WRITE_CB(_devcb) \ - devcb = &tlcs90_device::set_port_write_cb(*device, 8, DEVCB_##_devcb); + devcb = &downcast<tlcs90_device &>(*device).set_port_write_cb(8, DEVCB_##_devcb); enum tlcs90_e_irq { INTSWI = 0, INTNMI, INTWD, INT0, INTT0, INTT1, INTT2, INTT3, INTT4, INT1, INTT5, INT2, INTRX, INTTX, INTMAX }; @@ -88,16 +88,16 @@ protected: public: - // static configuration - template<class Object> static devcb_base &set_port_read_cb(device_t &device, int port, Object &&object) + // configuration + template<class Object> devcb_base &set_port_read_cb(int port, Object &&object) { assert(port >= 0 && port < MAX_PORTS); - return downcast<tlcs90_device &>(device).m_port_read_cb[port].set_callback(std::forward<Object>(object)); + return m_port_read_cb[port].set_callback(std::forward<Object>(object)); } - template<class Object> static devcb_base &set_port_write_cb(device_t &device, int port, Object &&object) + template<class Object> devcb_base &set_port_write_cb(int port, Object &&object) { assert(port >= 0 && port < MAX_PORTS); - return downcast<tlcs90_device &>(device).m_port_write_cb[port].set_callback(std::forward<Object>(object)); + return m_port_write_cb[port].set_callback(std::forward<Object>(object)); } protected: diff --git a/src/devices/cpu/tlcs900/900tbl.hxx b/src/devices/cpu/tlcs900/900tbl.hxx index dc331c1d85c..80f46c0d1c1 100644 --- a/src/devices/cpu/tlcs900/900tbl.hxx +++ b/src/devices/cpu/tlcs900/900tbl.hxx @@ -9,28 +9,28 @@ TLCS-900/H instruction set enum e_operand { - _A=1, /* current register set register A */ - _C8, /* current register set byte */ - _C16, /* current register set word */ - _C32, /* current register set long word */ - _MC16, /* current register set mul/div register word */ - _CC, /* condition */ - _CR8, - _CR16, - _CR32, - _D8, /* byte displacement */ - _D16, /* word displacement */ - _F, /* F register */ - _I3, /* immediate 3 bit (part of last byte) */ - _I8, /* immediate byte */ - _I16, /* immediate word */ - _I24, /* immediate 3 byte address */ - _I32, /* immediate long word */ - _M, /* memory location (defined by extension) */ - _M8, /* (8) */ - _M16, /* (i16) */ - _R, /* register (defined by extension) */ - _SR /* status register */ + p_A=1, /* current register set register A */ + p_C8, /* current register set byte */ + p_C16, /* current register set word */ + p_C32, /* current register set long word */ + p_MC16, /* current register set mul/div register word */ + p_CC, /* condition */ + p_CR8, + p_CR16, + p_CR32, + p_D8, /* byte displacement */ + p_D16, /* word displacement */ + p_F, /* F register */ + p_I3, /* immediate 3 bit (part of last byte) */ + p_I8, /* immediate byte */ + p_I16, /* immediate word */ + p_I24, /* immediate 3 byte address */ + p_I32, /* immediate long word */ + p_M, /* memory location (defined by extension) */ + p_M8, /* (8) */ + p_M16, /* (i16) */ + p_R, /* register (defined by extension) */ + p_SR /* status register */ }; @@ -1231,295 +1231,295 @@ uint32_t tlcs900h_device::divs16( int32_t a, int16_t b ) } -void tlcs900h_device::_ADCBMI() +void tlcs900h_device::op_ADCBMI() { WRMEM( m_ea1.d, adc8( RDMEM( m_ea1.d ), m_imm2.b.l ) ); } -void tlcs900h_device::_ADCBMR() +void tlcs900h_device::op_ADCBMR() { WRMEM( m_ea1.d, adc8( RDMEM( m_ea1.d ), *m_p2_reg8 ) ); } -void tlcs900h_device::_ADCBRI() +void tlcs900h_device::op_ADCBRI() { *m_p1_reg8 = adc8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_ADCBRM() +void tlcs900h_device::op_ADCBRM() { *m_p1_reg8 = adc8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ADCBRR() +void tlcs900h_device::op_ADCBRR() { *m_p1_reg8 = adc8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_ADCWMI() +void tlcs900h_device::op_ADCWMI() { WRMEMW( m_ea1.d, adc16( RDMEMW( m_ea1.d ), m_imm2.w.l ) ); } -void tlcs900h_device::_ADCWMR() +void tlcs900h_device::op_ADCWMR() { WRMEMW( m_ea1.d, adc16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) ); } -void tlcs900h_device::_ADCWRI() +void tlcs900h_device::op_ADCWRI() { *m_p1_reg16 = adc16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_ADCWRM() +void tlcs900h_device::op_ADCWRM() { *m_p1_reg16 = adc16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_ADCWRR() +void tlcs900h_device::op_ADCWRR() { *m_p1_reg16 = adc16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_ADCLMR() +void tlcs900h_device::op_ADCLMR() { WRMEML( m_ea1.d, adc32( RDMEML( m_ea1.d ), *m_p2_reg32 ) ); } -void tlcs900h_device::_ADCLRI() +void tlcs900h_device::op_ADCLRI() { *m_p1_reg32 = adc32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_ADCLRM() +void tlcs900h_device::op_ADCLRM() { *m_p1_reg32 = adc32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_ADCLRR() +void tlcs900h_device::op_ADCLRR() { *m_p1_reg32 = adc32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_ADDBMI() +void tlcs900h_device::op_ADDBMI() { WRMEM( m_ea1.d, add8( RDMEM( m_ea1.d ), m_imm2.b.l ) ); } -void tlcs900h_device::_ADDBMR() +void tlcs900h_device::op_ADDBMR() { WRMEM( m_ea1.d, add8( RDMEM( m_ea1.d ), *m_p2_reg8 ) ); } -void tlcs900h_device::_ADDBRI() +void tlcs900h_device::op_ADDBRI() { *m_p1_reg8 = add8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_ADDBRM() +void tlcs900h_device::op_ADDBRM() { *m_p1_reg8 = add8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ADDBRR() +void tlcs900h_device::op_ADDBRR() { *m_p1_reg8 = add8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_ADDWMI() +void tlcs900h_device::op_ADDWMI() { WRMEMW( m_ea1.d, add16( RDMEMW( m_ea1.d ), m_imm2.w.l ) ); } -void tlcs900h_device::_ADDWMR() +void tlcs900h_device::op_ADDWMR() { WRMEMW( m_ea1.d, add16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) ); } -void tlcs900h_device::_ADDWRI() +void tlcs900h_device::op_ADDWRI() { *m_p1_reg16 = add16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_ADDWRM() +void tlcs900h_device::op_ADDWRM() { *m_p1_reg16 = add16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_ADDWRR() +void tlcs900h_device::op_ADDWRR() { *m_p1_reg16 = add16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_ADDLMR() +void tlcs900h_device::op_ADDLMR() { WRMEML( m_ea1.d, add32( RDMEML( m_ea1.d ), *m_p2_reg32 ) ); } -void tlcs900h_device::_ADDLRI() +void tlcs900h_device::op_ADDLRI() { *m_p1_reg32 = add32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_ADDLRM() +void tlcs900h_device::op_ADDLRM() { *m_p1_reg32 = add32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_ADDLRR() +void tlcs900h_device::op_ADDLRR() { *m_p1_reg32 = add32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_ANDBMI() +void tlcs900h_device::op_ANDBMI() { WRMEM( m_ea1.d, and8( RDMEM( m_ea1.d ), m_imm2.b.l ) ); } -void tlcs900h_device::_ANDBMR() +void tlcs900h_device::op_ANDBMR() { WRMEM( m_ea1.d, and8( RDMEM( m_ea1.d ), *m_p2_reg8 ) ); } -void tlcs900h_device::_ANDBRI() +void tlcs900h_device::op_ANDBRI() { *m_p1_reg8 = and8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_ANDBRM() +void tlcs900h_device::op_ANDBRM() { *m_p1_reg8 = and8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ANDBRR() +void tlcs900h_device::op_ANDBRR() { *m_p1_reg8 = and8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_ANDWMI() +void tlcs900h_device::op_ANDWMI() { WRMEMW( m_ea1.d, and16( RDMEMW( m_ea1.d ), m_imm2.w.l ) ); } -void tlcs900h_device::_ANDWMR() +void tlcs900h_device::op_ANDWMR() { WRMEMW( m_ea1.d, and16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) ); } -void tlcs900h_device::_ANDWRI() +void tlcs900h_device::op_ANDWRI() { *m_p1_reg16 = and16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_ANDWRM() +void tlcs900h_device::op_ANDWRM() { *m_p1_reg16 = and16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_ANDWRR() +void tlcs900h_device::op_ANDWRR() { *m_p1_reg16 = and16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_ANDLMR() +void tlcs900h_device::op_ANDLMR() { WRMEML( m_ea1.d, and32( RDMEML( m_ea1.d ), *m_p2_reg32 ) ); } -void tlcs900h_device::_ANDLRI() +void tlcs900h_device::op_ANDLRI() { *m_p1_reg32 = and32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_ANDLRM() +void tlcs900h_device::op_ANDLRM() { *m_p1_reg32 = and32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_ANDLRR() +void tlcs900h_device::op_ANDLRR() { *m_p1_reg32 = and32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_ANDCFBIM() +void tlcs900h_device::op_ANDCFBIM() { andcf8( m_imm1.b.l, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ANDCFBIR() +void tlcs900h_device::op_ANDCFBIR() { andcf8( m_imm1.b.l, *m_p2_reg8 ); } -void tlcs900h_device::_ANDCFBRM() +void tlcs900h_device::op_ANDCFBRM() { andcf8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ANDCFBRR() +void tlcs900h_device::op_ANDCFBRR() { andcf8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_ANDCFWIR() +void tlcs900h_device::op_ANDCFWIR() { andcf16( m_imm1.b.l, *m_p2_reg16 ); } -void tlcs900h_device::_ANDCFWRR() +void tlcs900h_device::op_ANDCFWRR() { andcf16( *m_p1_reg8, *m_p2_reg16 ); } -void tlcs900h_device::_BITBIM() +void tlcs900h_device::op_BITBIM() { m_sr.b.l &= ~ ( FLAG_ZF | FLAG_NF ); if ( RDMEM( m_ea2.d ) & ( 1 << ( m_imm1.b.l & 0x07 ) ) ) @@ -1529,7 +1529,7 @@ void tlcs900h_device::_BITBIM() } -void tlcs900h_device::_BITBIR() +void tlcs900h_device::op_BITBIR() { m_sr.b.l &= ~ ( FLAG_ZF | FLAG_NF ); if ( *m_p2_reg8 & ( 1 << ( m_imm1.b.l & 0x0f ) ) ) @@ -1539,7 +1539,7 @@ void tlcs900h_device::_BITBIR() } -void tlcs900h_device::_BITWIR() +void tlcs900h_device::op_BITWIR() { m_sr.b.l &= ~ ( FLAG_ZF | FLAG_NF ); if ( *m_p2_reg16 & ( 1 << ( m_imm1.b.l & 0x0f ) ) ) @@ -1549,7 +1549,7 @@ void tlcs900h_device::_BITWIR() } -void tlcs900h_device::_BS1BRR() +void tlcs900h_device::op_BS1BRR() { uint16_t r = *m_p2_reg16; @@ -1568,7 +1568,7 @@ void tlcs900h_device::_BS1BRR() } -void tlcs900h_device::_BS1FRR() +void tlcs900h_device::op_BS1FRR() { uint16_t r = *m_p2_reg16; @@ -1587,7 +1587,7 @@ void tlcs900h_device::_BS1FRR() } -void tlcs900h_device::_CALLI() +void tlcs900h_device::op_CALLI() { m_xssp.d -= 4; WRMEML( m_xssp.d, m_pc.d ); @@ -1596,7 +1596,7 @@ void tlcs900h_device::_CALLI() } -void tlcs900h_device::_CALLM() +void tlcs900h_device::op_CALLM() { if ( condition_true( m_op ) ) { @@ -1609,7 +1609,7 @@ void tlcs900h_device::_CALLM() } -void tlcs900h_device::_CALR() +void tlcs900h_device::op_CALR() { m_xssp.d -= 4; WRMEML( m_xssp.d, m_pc.d ); @@ -1618,116 +1618,116 @@ void tlcs900h_device::_CALR() } -void tlcs900h_device::_CCF() +void tlcs900h_device::op_CCF() { m_sr.b.l &= ~ FLAG_NF; m_sr.b.l ^= FLAG_CF; } -void tlcs900h_device::_CHGBIM() +void tlcs900h_device::op_CHGBIM() { WRMEM( m_ea2.d, RDMEM( m_ea2.d ) ^ ( 1 << ( m_imm1.b.l & 0x07 ) ) ); } -void tlcs900h_device::_CHGBIR() +void tlcs900h_device::op_CHGBIR() { *m_p2_reg8 ^= ( 1 << ( m_imm1.b.l & 0x07 ) ); } -void tlcs900h_device::_CHGWIR() +void tlcs900h_device::op_CHGWIR() { *m_p2_reg16 ^= ( 1 << ( m_imm1.b.l & 0x0f ) ); } -void tlcs900h_device::_CPBMI() +void tlcs900h_device::op_CPBMI() { sub8( RDMEM( m_ea1.d ), m_imm2.b.l ); } -void tlcs900h_device::_CPBMR() +void tlcs900h_device::op_CPBMR() { sub8( RDMEM( m_ea1.d ), *m_p2_reg8 ); } -void tlcs900h_device::_CPBRI() +void tlcs900h_device::op_CPBRI() { sub8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_CPBRM() +void tlcs900h_device::op_CPBRM() { sub8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_CPBRR() +void tlcs900h_device::op_CPBRR() { sub8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_CPWMI() +void tlcs900h_device::op_CPWMI() { sub16( RDMEMW( m_ea1.d ), m_imm2.w.l ); } -void tlcs900h_device::_CPWMR() +void tlcs900h_device::op_CPWMR() { sub16( RDMEMW( m_ea1.d ), *m_p2_reg16 ); } -void tlcs900h_device::_CPWRI() +void tlcs900h_device::op_CPWRI() { sub16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_CPWRM() +void tlcs900h_device::op_CPWRM() { sub16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_CPWRR() +void tlcs900h_device::op_CPWRR() { sub16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_CPLMR() +void tlcs900h_device::op_CPLMR() { sub32( RDMEML( m_ea1.d ), *m_p2_reg32 ); } -void tlcs900h_device::_CPLRI() +void tlcs900h_device::op_CPLRI() { sub32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_CPLRM() +void tlcs900h_device::op_CPLRM() { sub32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_CPLRR() +void tlcs900h_device::op_CPLRR() { sub32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_CPD() +void tlcs900h_device::op_CPD() { uint8_t result = *get_reg8_current( 1 ) - RDMEM( *m_p2_reg32 ); uint16_t *bc = get_reg16_current( 1 ); @@ -1740,9 +1740,9 @@ void tlcs900h_device::_CPD() } -void tlcs900h_device::_CPDR() +void tlcs900h_device::op_CPDR() { - _CPD(); + op_CPD(); if ( ( m_sr.b.l & ( FLAG_ZF | FLAG_VF ) ) == FLAG_VF ) { @@ -1753,7 +1753,7 @@ void tlcs900h_device::_CPDR() } -void tlcs900h_device::_CPDW() +void tlcs900h_device::op_CPDW() { uint16_t result = *get_reg16_current( 0 ) - RDMEMW( *m_p2_reg32 ); uint16_t *bc = get_reg16_current( 1 ); @@ -1766,9 +1766,9 @@ void tlcs900h_device::_CPDW() } -void tlcs900h_device::_CPDRW() +void tlcs900h_device::op_CPDRW() { - _CPDW(); + op_CPDW(); if ( ( m_sr.b.l & ( FLAG_ZF | FLAG_VF ) ) == FLAG_VF ) { @@ -1779,7 +1779,7 @@ void tlcs900h_device::_CPDRW() } -void tlcs900h_device::_CPI() +void tlcs900h_device::op_CPI() { uint8_t result = *get_reg8_current( 1 ) - RDMEM( *m_p2_reg32 ); uint16_t *bc = get_reg16_current( 1 ); @@ -1792,9 +1792,9 @@ void tlcs900h_device::_CPI() } -void tlcs900h_device::_CPIR() +void tlcs900h_device::op_CPIR() { - _CPI(); + op_CPI(); if ( ( m_sr.b.l & ( FLAG_ZF | FLAG_VF ) ) == FLAG_VF ) { @@ -1805,7 +1805,7 @@ void tlcs900h_device::_CPIR() } -void tlcs900h_device::_CPIW() +void tlcs900h_device::op_CPIW() { uint16_t result = *get_reg16_current( 0 ) - RDMEMW( *m_p2_reg32 ); uint16_t *bc = get_reg16_current( 1 ); @@ -1818,9 +1818,9 @@ void tlcs900h_device::_CPIW() } -void tlcs900h_device::_CPIRW() +void tlcs900h_device::op_CPIRW() { - _CPIW(); + op_CPIW(); if ( ( m_sr.b.l & ( FLAG_ZF | FLAG_VF ) ) == FLAG_VF ) { @@ -1831,21 +1831,21 @@ void tlcs900h_device::_CPIRW() } -void tlcs900h_device::_CPLBR() +void tlcs900h_device::op_CPLBR() { *m_p1_reg8 = ~ *m_p1_reg8; m_sr.b.l |= FLAG_HF | FLAG_NF; } -void tlcs900h_device::_CPLWR() +void tlcs900h_device::op_CPLWR() { *m_p1_reg16 = ~ *m_p1_reg16; m_sr.b.l |= FLAG_HF | FLAG_NF; } -void tlcs900h_device::_DAABR() +void tlcs900h_device::op_DAABR() { uint8_t oldval = *m_p1_reg8; uint8_t fixval = 0; @@ -1907,13 +1907,13 @@ void tlcs900h_device::_DAABR() } -void tlcs900h_device::_DB() +void tlcs900h_device::op_DB() { logerror("%08x: invalid or illegal instruction\n", m_pc.d ); } -void tlcs900h_device::_DECBIM() +void tlcs900h_device::op_DECBIM() { uint8_t cy = m_sr.b.l & FLAG_CF; @@ -1922,7 +1922,7 @@ void tlcs900h_device::_DECBIM() } -void tlcs900h_device::_DECBIR() +void tlcs900h_device::op_DECBIR() { uint8_t cy = m_sr.b.l & FLAG_CF; @@ -1931,7 +1931,7 @@ void tlcs900h_device::_DECBIR() } -void tlcs900h_device::_DECWIM() +void tlcs900h_device::op_DECWIM() { uint8_t cy = m_sr.b.l & FLAG_CF; @@ -1940,19 +1940,19 @@ void tlcs900h_device::_DECWIM() } -void tlcs900h_device::_DECWIR() +void tlcs900h_device::op_DECWIR() { *m_p2_reg16 -= m_imm1.b.l ? m_imm1.b.l : 8; } -void tlcs900h_device::_DECLIR() +void tlcs900h_device::op_DECLIR() { *m_p2_reg32 -= m_imm1.b.l ? m_imm1.b.l : 8; } -void tlcs900h_device::_DECF() +void tlcs900h_device::op_DECF() { /* 0x03 for MAX mode, 0x07 for MIN mode */ m_sr.b.h = ( m_sr.b.h & 0xf8 ) | ( ( m_sr.b.h - 1 ) & 0x07 ); @@ -1960,79 +1960,79 @@ void tlcs900h_device::_DECF() } -void tlcs900h_device::_DIVBRI() +void tlcs900h_device::op_DIVBRI() { *m_p1_reg16 = div8( *m_p1_reg16, m_imm2.b.l ); } -void tlcs900h_device::_DIVBRM() +void tlcs900h_device::op_DIVBRM() { *m_p1_reg16 = div8( *m_p1_reg16, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_DIVBRR() +void tlcs900h_device::op_DIVBRR() { *m_p1_reg16 = div8( *m_p1_reg16, *m_p2_reg8 ); } -void tlcs900h_device::_DIVWRI() +void tlcs900h_device::op_DIVWRI() { *m_p1_reg32 = div16( *m_p1_reg32, m_imm2.w.l ); } -void tlcs900h_device::_DIVWRM() +void tlcs900h_device::op_DIVWRM() { *m_p1_reg32 = div16( *m_p1_reg32, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_DIVWRR() +void tlcs900h_device::op_DIVWRR() { *m_p1_reg32 = div16( *m_p1_reg32, *m_p2_reg16 ); } -void tlcs900h_device::_DIVSBRI() +void tlcs900h_device::op_DIVSBRI() { *m_p1_reg16 = divs8( *m_p1_reg16, m_imm2.b.l ); } -void tlcs900h_device::_DIVSBRM() +void tlcs900h_device::op_DIVSBRM() { *m_p1_reg16 = divs8( *m_p1_reg16, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_DIVSBRR() +void tlcs900h_device::op_DIVSBRR() { *m_p1_reg16 = divs8( *m_p1_reg16, *m_p2_reg8 ); } -void tlcs900h_device::_DIVSWRI() +void tlcs900h_device::op_DIVSWRI() { *m_p1_reg32 = divs16( *m_p1_reg32, m_imm2.w.l ); } -void tlcs900h_device::_DIVSWRM() +void tlcs900h_device::op_DIVSWRM() { *m_p1_reg32 = divs16( *m_p1_reg32, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_DIVSWRR() +void tlcs900h_device::op_DIVSWRR() { *m_p1_reg32 = divs16( *m_p1_reg32, *m_p2_reg16 ); } -void tlcs900h_device::_DJNZB() +void tlcs900h_device::op_DJNZB() { *m_p1_reg8 -= 1; if ( *m_p1_reg8 ) @@ -2044,7 +2044,7 @@ void tlcs900h_device::_DJNZB() } -void tlcs900h_device::_DJNZW() +void tlcs900h_device::op_DJNZW() { *m_p1_reg16 -= 1; if ( *m_p1_reg16 ) @@ -2056,14 +2056,14 @@ void tlcs900h_device::_DJNZW() } -void tlcs900h_device::_EI() +void tlcs900h_device::op_EI() { m_sr.b.h = ( m_sr.b.h & 0x8f ) | ( ( m_imm1.b.l & 0x07 ) << 4 ); m_check_irqs = 1; } -void tlcs900h_device::_EXBMR() +void tlcs900h_device::op_EXBMR() { uint8_t i = RDMEM( m_ea1.d ); @@ -2072,7 +2072,7 @@ void tlcs900h_device::_EXBMR() } -void tlcs900h_device::_EXBRR() +void tlcs900h_device::op_EXBRR() { uint8_t i = *m_p2_reg8; @@ -2081,7 +2081,7 @@ void tlcs900h_device::_EXBRR() } -void tlcs900h_device::_EXWMR() +void tlcs900h_device::op_EXWMR() { uint16_t i = RDMEMW( m_ea1.d ); @@ -2090,7 +2090,7 @@ void tlcs900h_device::_EXWMR() } -void tlcs900h_device::_EXWRR() +void tlcs900h_device::op_EXWRR() { uint16_t i = *m_p2_reg16; @@ -2099,7 +2099,7 @@ void tlcs900h_device::_EXWRR() } -void tlcs900h_device::_EXTSWR() +void tlcs900h_device::op_EXTSWR() { if ( *m_p1_reg16 & 0x0080 ) *m_p1_reg16 |= 0xff00; @@ -2108,7 +2108,7 @@ void tlcs900h_device::_EXTSWR() } -void tlcs900h_device::_EXTSLR() +void tlcs900h_device::op_EXTSLR() { if ( *m_p1_reg32 & 0x00008000 ) *m_p1_reg32 |= 0xffff0000; @@ -2117,25 +2117,25 @@ void tlcs900h_device::_EXTSLR() } -void tlcs900h_device::_EXTZWR() +void tlcs900h_device::op_EXTZWR() { *m_p1_reg16 &= 0x00ff; } -void tlcs900h_device::_EXTZLR() +void tlcs900h_device::op_EXTZLR() { *m_p1_reg32 &= 0x0000ffff; } -void tlcs900h_device::_HALT() +void tlcs900h_device::op_HALT() { m_halted = 1; } -void tlcs900h_device::_INCBIM() +void tlcs900h_device::op_INCBIM() { uint8_t cy = m_sr.b.l & FLAG_CF; @@ -2144,7 +2144,7 @@ void tlcs900h_device::_INCBIM() } -void tlcs900h_device::_INCBIR() +void tlcs900h_device::op_INCBIR() { uint8_t cy = m_sr.b.l & FLAG_CF; @@ -2153,7 +2153,7 @@ void tlcs900h_device::_INCBIR() } -void tlcs900h_device::_INCWIM() +void tlcs900h_device::op_INCWIM() { uint8_t cy = m_sr.b.l & FLAG_CF; @@ -2162,19 +2162,19 @@ void tlcs900h_device::_INCWIM() } -void tlcs900h_device::_INCWIR() +void tlcs900h_device::op_INCWIR() { *m_p2_reg16 += m_imm1.b.l ? m_imm1.b.l : 8; } -void tlcs900h_device::_INCLIR() +void tlcs900h_device::op_INCLIR() { *m_p2_reg32 += m_imm1.b.l ? m_imm1.b.l : 8; } -void tlcs900h_device::_INCF() +void tlcs900h_device::op_INCF() { /* 0x03 for MAX mode, 0x07 for MIN mode */ m_sr.b.h = ( m_sr.b.h & 0xf8 ) | ( ( m_sr.b.h + 1 ) & 0x07 ); @@ -2182,14 +2182,14 @@ void tlcs900h_device::_INCF() } -void tlcs900h_device::_JPI() +void tlcs900h_device::op_JPI() { m_pc.d = m_imm1.d; m_prefetch_clear = true; } -void tlcs900h_device::_JPM() +void tlcs900h_device::op_JPM() { if ( condition_true( m_op ) ) { @@ -2200,7 +2200,7 @@ void tlcs900h_device::_JPM() } -void tlcs900h_device::_JR() +void tlcs900h_device::op_JR() { if ( condition_true( m_op ) ) { @@ -2211,7 +2211,7 @@ void tlcs900h_device::_JR() } -void tlcs900h_device::_JRL() +void tlcs900h_device::op_JRL() { if ( condition_true( m_op ) ) { @@ -2222,169 +2222,169 @@ void tlcs900h_device::_JRL() } -void tlcs900h_device::_LDBMI() +void tlcs900h_device::op_LDBMI() { WRMEM( m_ea1.d, m_imm2.b.l ); } -void tlcs900h_device::_LDBMM() +void tlcs900h_device::op_LDBMM() { WRMEM( m_ea1.d, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_LDBMR() +void tlcs900h_device::op_LDBMR() { WRMEM( m_ea1.d, *m_p2_reg8 ); } -void tlcs900h_device::_LDBRI() +void tlcs900h_device::op_LDBRI() { *m_p1_reg8 = m_imm2.b.l; } -void tlcs900h_device::_LDBRM() +void tlcs900h_device::op_LDBRM() { *m_p1_reg8 = RDMEM( m_ea2.d ); } -void tlcs900h_device::_LDBRR() +void tlcs900h_device::op_LDBRR() { *m_p1_reg8 = *m_p2_reg8; } -void tlcs900h_device::_LDWMI() +void tlcs900h_device::op_LDWMI() { WRMEMW( m_ea1.d, m_imm2.w.l ); } -void tlcs900h_device::_LDWMM() +void tlcs900h_device::op_LDWMM() { WRMEMW( m_ea1.d, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_LDWMR() +void tlcs900h_device::op_LDWMR() { WRMEMW( m_ea1.d, *m_p2_reg16 ); } -void tlcs900h_device::_LDWRI() +void tlcs900h_device::op_LDWRI() { *m_p1_reg16 = m_imm2.w.l; } -void tlcs900h_device::_LDWRM() +void tlcs900h_device::op_LDWRM() { *m_p1_reg16 = RDMEMW( m_ea2.d ); } -void tlcs900h_device::_LDWRR() +void tlcs900h_device::op_LDWRR() { *m_p1_reg16 = *m_p2_reg16; } -void tlcs900h_device::_LDLRI() +void tlcs900h_device::op_LDLRI() { *m_p1_reg32 = m_imm2.d; } -void tlcs900h_device::_LDLRM() +void tlcs900h_device::op_LDLRM() { *m_p1_reg32 = RDMEML( m_ea2.d ); } -void tlcs900h_device::_LDLRR() +void tlcs900h_device::op_LDLRR() { *m_p1_reg32 = *m_p2_reg32; } -void tlcs900h_device::_LDLMR() +void tlcs900h_device::op_LDLMR() { WRMEML( m_ea1.d, *m_p2_reg32 ); } -void tlcs900h_device::_LDAW() +void tlcs900h_device::op_LDAW() { *m_p1_reg16 = m_ea2.w.l; } -void tlcs900h_device::_LDAL() +void tlcs900h_device::op_LDAL() { *m_p1_reg32 = m_ea2.d; } -void tlcs900h_device::_LDCBRR() +void tlcs900h_device::op_LDCBRR() { *m_p1_reg8 = *m_p2_reg8; } -void tlcs900h_device::_LDCWRR() +void tlcs900h_device::op_LDCWRR() { *m_p1_reg16 = *m_p2_reg16; } -void tlcs900h_device::_LDCLRR() +void tlcs900h_device::op_LDCLRR() { *m_p1_reg32 = *m_p2_reg32; } -void tlcs900h_device::_LDCFBIM() +void tlcs900h_device::op_LDCFBIM() { ldcf8( m_imm1.b.l, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_LDCFBIR() +void tlcs900h_device::op_LDCFBIR() { ldcf8( m_imm1.b.l, *m_p2_reg8 ); } -void tlcs900h_device::_LDCFBRM() +void tlcs900h_device::op_LDCFBRM() { ldcf8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_LDCFBRR() +void tlcs900h_device::op_LDCFBRR() { ldcf8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_LDCFWIR() +void tlcs900h_device::op_LDCFWIR() { ldcf16( m_imm1.b.l, *m_p2_reg16 ); } -void tlcs900h_device::_LDCFWRR() +void tlcs900h_device::op_LDCFWRR() { ldcf16( *m_p1_reg8, *m_p2_reg16 ); } -void tlcs900h_device::_LDD() +void tlcs900h_device::op_LDD() { uint16_t *bc = get_reg16_current( 1 ); @@ -2400,7 +2400,7 @@ void tlcs900h_device::_LDD() } -void tlcs900h_device::_LDDR() +void tlcs900h_device::op_LDDR() { uint16_t *bc = get_reg16_current( 1 ); @@ -2419,7 +2419,7 @@ void tlcs900h_device::_LDDR() } -void tlcs900h_device::_LDDRW() +void tlcs900h_device::op_LDDRW() { uint16_t *bc = get_reg16_current( 1 ); @@ -2438,7 +2438,7 @@ void tlcs900h_device::_LDDRW() } -void tlcs900h_device::_LDDW() +void tlcs900h_device::op_LDDW() { uint16_t *bc = get_reg16_current( 1 ); @@ -2454,14 +2454,14 @@ void tlcs900h_device::_LDDW() } -void tlcs900h_device::_LDF() +void tlcs900h_device::op_LDF() { m_sr.b.h = ( m_sr.b.h & 0xf8 ) | ( m_imm1.b.l & 0x07 ); m_regbank = m_imm1.b.l & 0x03; } -void tlcs900h_device::_LDI() +void tlcs900h_device::op_LDI() { uint16_t *bc = get_reg16_current( 1 ); @@ -2477,7 +2477,7 @@ void tlcs900h_device::_LDI() } -void tlcs900h_device::_LDIR() +void tlcs900h_device::op_LDIR() { uint16_t *bc = get_reg16_current( 1 ); @@ -2496,7 +2496,7 @@ void tlcs900h_device::_LDIR() } -void tlcs900h_device::_LDIRW() +void tlcs900h_device::op_LDIRW() { uint16_t *bc = get_reg16_current( 1 ); @@ -2515,7 +2515,7 @@ void tlcs900h_device::_LDIRW() } -void tlcs900h_device::_LDIW() +void tlcs900h_device::op_LDIW() { uint16_t *bc = get_reg16_current( 1 ); @@ -2531,7 +2531,7 @@ void tlcs900h_device::_LDIW() } -void tlcs900h_device::_LDX() +void tlcs900h_device::op_LDX() { uint8_t a, b; @@ -2544,7 +2544,7 @@ void tlcs900h_device::_LDX() } -void tlcs900h_device::_LINK() +void tlcs900h_device::op_LINK() { m_xssp.d -= 4; WRMEML( m_xssp.d, *m_p1_reg32 ); @@ -2553,13 +2553,13 @@ void tlcs900h_device::_LINK() } -void tlcs900h_device::_MAX() +void tlcs900h_device::op_MAX() { m_sr.b.h |= 0x04; } -void tlcs900h_device::_MDEC1() +void tlcs900h_device::op_MDEC1() { if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l ) *m_p2_reg16 += m_imm1.w.l; @@ -2568,7 +2568,7 @@ void tlcs900h_device::_MDEC1() } -void tlcs900h_device::_MDEC2() +void tlcs900h_device::op_MDEC2() { if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l ) *m_p2_reg16 += m_imm1.w.l; @@ -2577,7 +2577,7 @@ void tlcs900h_device::_MDEC2() } -void tlcs900h_device::_MDEC4() +void tlcs900h_device::op_MDEC4() { if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l ) *m_p2_reg16 += m_imm1.w.l; @@ -2586,7 +2586,7 @@ void tlcs900h_device::_MDEC4() } -void tlcs900h_device::_MINC1() +void tlcs900h_device::op_MINC1() { if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l ) *m_p2_reg16 -= m_imm1.w.l; @@ -2595,7 +2595,7 @@ void tlcs900h_device::_MINC1() } -void tlcs900h_device::_MINC2() +void tlcs900h_device::op_MINC2() { if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l ) *m_p2_reg16 -= m_imm1.w.l; @@ -2604,7 +2604,7 @@ void tlcs900h_device::_MINC2() } -void tlcs900h_device::_MINC4() +void tlcs900h_device::op_MINC4() { if ( ( *m_p2_reg16 & m_imm1.w.l ) == m_imm1.w.l ) *m_p2_reg16 -= m_imm1.w.l; @@ -2613,7 +2613,7 @@ void tlcs900h_device::_MINC4() } -void tlcs900h_device::_MIRRW() +void tlcs900h_device::op_MIRRW() { uint16_t r = *m_p1_reg16; uint16_t s = ( r & 0x01 ); @@ -2631,43 +2631,43 @@ void tlcs900h_device::_MIRRW() } -void tlcs900h_device::_MULBRI() +void tlcs900h_device::op_MULBRI() { *m_p1_reg16 = ( *m_p1_reg16 & 0xff ) * m_imm2.b.l; } -void tlcs900h_device::_MULBRM() +void tlcs900h_device::op_MULBRM() { *m_p1_reg16 = ( *m_p1_reg16 & 0xff ) * RDMEM( m_ea2.d ); } -void tlcs900h_device::_MULBRR() +void tlcs900h_device::op_MULBRR() { *m_p1_reg16 = ( *m_p1_reg16 & 0xff ) * *m_p2_reg8; } -void tlcs900h_device::_MULWRI() +void tlcs900h_device::op_MULWRI() { *m_p1_reg32 = ( *m_p1_reg32 & 0xffff ) * m_imm2.w.l; } -void tlcs900h_device::_MULWRM() +void tlcs900h_device::op_MULWRM() { *m_p1_reg32 = ( *m_p1_reg32 & 0xffff ) * RDMEMW( m_ea2.d ); } -void tlcs900h_device::_MULWRR() +void tlcs900h_device::op_MULWRR() { *m_p1_reg32 = ( *m_p1_reg32 & 0xffff ) * *m_p2_reg16; } -void tlcs900h_device::_MULAR() +void tlcs900h_device::op_MULAR() { uint32_t *xde = get_reg32_current( 2 ); uint32_t *xhl = get_reg32_current( 3 ); @@ -2680,317 +2680,317 @@ void tlcs900h_device::_MULAR() } -void tlcs900h_device::_MULSBRI() +void tlcs900h_device::op_MULSBRI() { *m_p1_reg16 = (int8_t)( *m_p1_reg16 & 0xff ) * m_imm2.sb.l; } -void tlcs900h_device::_MULSBRM() +void tlcs900h_device::op_MULSBRM() { *m_p1_reg16 = (int8_t)( *m_p1_reg16 & 0xff ) * (int8_t)RDMEM( m_ea2.d ); } -void tlcs900h_device::_MULSBRR() +void tlcs900h_device::op_MULSBRR() { *m_p1_reg16 = (int8_t)( *m_p1_reg16 & 0xff ) * (int8_t)*m_p2_reg8; } -void tlcs900h_device::_MULSWRI() +void tlcs900h_device::op_MULSWRI() { *m_p1_reg32 = (int16_t)( *m_p1_reg32 & 0xffff ) * m_imm2.sw.l; } -void tlcs900h_device::_MULSWRM() +void tlcs900h_device::op_MULSWRM() { *m_p1_reg32 = (int16_t)( *m_p1_reg32 & 0xffff ) * (int16_t)RDMEMW( m_ea2.d ); } -void tlcs900h_device::_MULSWRR() +void tlcs900h_device::op_MULSWRR() { *m_p1_reg32 = (int16_t)( *m_p1_reg32 & 0xffff ) * (int16_t)*m_p2_reg16; } -void tlcs900h_device::_NEGBR() +void tlcs900h_device::op_NEGBR() { *m_p1_reg8 = sub8( 0, *m_p1_reg8 ); } -void tlcs900h_device::_NEGWR() +void tlcs900h_device::op_NEGWR() { *m_p1_reg16 = sub16( 0, *m_p1_reg16 ); } -void tlcs900h_device::_NOP() +void tlcs900h_device::op_NOP() { /* Do nothing */ } -void tlcs900h_device::_NORMAL() +void tlcs900h_device::op_NORMAL() { m_sr.b.h &= 0x7F; } -void tlcs900h_device::_ORBMI() +void tlcs900h_device::op_ORBMI() { WRMEM( m_ea1.d, or8( RDMEM( m_ea1.d ), m_imm2.b.l ) ); } -void tlcs900h_device::_ORBMR() +void tlcs900h_device::op_ORBMR() { WRMEM( m_ea1.d, or8( RDMEM( m_ea1.d ), *m_p2_reg8 ) ); } -void tlcs900h_device::_ORBRI() +void tlcs900h_device::op_ORBRI() { *m_p1_reg8 = or8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_ORBRM() +void tlcs900h_device::op_ORBRM() { *m_p1_reg8 = or8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ORBRR() +void tlcs900h_device::op_ORBRR() { *m_p1_reg8 = or8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_ORWMI() +void tlcs900h_device::op_ORWMI() { WRMEMW( m_ea1.d, or16( RDMEMW( m_ea1.d ), m_imm2.w.l ) ); } -void tlcs900h_device::_ORWMR() +void tlcs900h_device::op_ORWMR() { WRMEMW( m_ea1.d, or16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) ); } -void tlcs900h_device::_ORWRI() +void tlcs900h_device::op_ORWRI() { *m_p1_reg16 = or16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_ORWRM() +void tlcs900h_device::op_ORWRM() { *m_p1_reg16 = or16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_ORWRR() +void tlcs900h_device::op_ORWRR() { *m_p1_reg16 = or16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_ORLMR() +void tlcs900h_device::op_ORLMR() { WRMEML( m_ea1.d, or32( RDMEML( m_ea1.d ), *m_p2_reg32 ) ); } -void tlcs900h_device::_ORLRI() +void tlcs900h_device::op_ORLRI() { *m_p1_reg32 = or32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_ORLRM() +void tlcs900h_device::op_ORLRM() { *m_p1_reg32 = or32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_ORLRR() +void tlcs900h_device::op_ORLRR() { *m_p1_reg32 = or32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_ORCFBIM() +void tlcs900h_device::op_ORCFBIM() { orcf8( m_imm1.b.l, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ORCFBIR() +void tlcs900h_device::op_ORCFBIR() { orcf8( m_imm1.b.l, *m_p2_reg8 ); } -void tlcs900h_device::_ORCFBRM() +void tlcs900h_device::op_ORCFBRM() { orcf8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_ORCFBRR() +void tlcs900h_device::op_ORCFBRR() { orcf8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_ORCFWIR() +void tlcs900h_device::op_ORCFWIR() { orcf16( m_imm1.b.l, *m_p2_reg16 ); } -void tlcs900h_device::_ORCFWRR() +void tlcs900h_device::op_ORCFWRR() { orcf16( *m_p1_reg8, *m_p2_reg16 ); } -void tlcs900h_device::_PAAWR() +void tlcs900h_device::op_PAAWR() { if ( *m_p1_reg16 & 1 ) *m_p1_reg16 += 1; } -void tlcs900h_device::_PAALR() +void tlcs900h_device::op_PAALR() { if ( *m_p1_reg32 & 1 ) *m_p1_reg32 += 1; } -void tlcs900h_device::_POPBM() +void tlcs900h_device::op_POPBM() { WRMEM( m_ea1.d, RDMEM( m_xssp.d ) ); m_xssp.d += 1; } -void tlcs900h_device::_POPBR() +void tlcs900h_device::op_POPBR() { *m_p1_reg8 = RDMEM( m_xssp.d ); m_xssp.d += 1; } -void tlcs900h_device::_POPWM() +void tlcs900h_device::op_POPWM() { WRMEMW( m_ea1.d, RDMEMW( m_xssp.d ) ); m_xssp.d += 2; } -void tlcs900h_device::_POPWR() +void tlcs900h_device::op_POPWR() { *m_p1_reg16 = RDMEMW( m_xssp.d ); m_xssp.d += 2; } -void tlcs900h_device::_POPWSR() +void tlcs900h_device::op_POPWSR() { - _POPWR(); + op_POPWR(); m_regbank = m_sr.b.h & 0x03; m_check_irqs = 1; } -void tlcs900h_device::_POPLR() +void tlcs900h_device::op_POPLR() { *m_p1_reg32 = RDMEML( m_xssp.d ); m_xssp.d += 4; } -void tlcs900h_device::_PUSHBI() +void tlcs900h_device::op_PUSHBI() { m_xssp.d -= 1; WRMEM( m_xssp.d, m_imm1.b.l ); } -void tlcs900h_device::_PUSHBM() +void tlcs900h_device::op_PUSHBM() { m_xssp.d -= 1; WRMEM( m_xssp.d, RDMEM( m_ea1.d ) ); } -void tlcs900h_device::_PUSHBR() +void tlcs900h_device::op_PUSHBR() { m_xssp.d -= 1; WRMEM( m_xssp.d, *m_p1_reg8 ); } -void tlcs900h_device::_PUSHWI() +void tlcs900h_device::op_PUSHWI() { m_xssp.d -= 2; WRMEMW( m_xssp.d, m_imm1.w.l ); } -void tlcs900h_device::_PUSHWM() +void tlcs900h_device::op_PUSHWM() { m_xssp.d -= 2; WRMEMW( m_xssp.d, RDMEMW( m_ea1.d ) ); } -void tlcs900h_device::_PUSHWR() +void tlcs900h_device::op_PUSHWR() { m_xssp.d -= 2; WRMEMW( m_xssp.d, *m_p1_reg16 ); } -void tlcs900h_device::_PUSHLR() +void tlcs900h_device::op_PUSHLR() { m_xssp.d -= 4; WRMEML( m_xssp.d, *m_p1_reg32 ); } -void tlcs900h_device::_RCF() +void tlcs900h_device::op_RCF() { m_sr.b.l &= ~ ( FLAG_HF | FLAG_NF | FLAG_CF ); } -void tlcs900h_device::_RESBIM() +void tlcs900h_device::op_RESBIM() { WRMEM( m_ea2.d, RDMEM( m_ea2.d ) & ~( 1 << ( m_imm1.d & 0x07 ) ) ); } -void tlcs900h_device::_RESBIR() +void tlcs900h_device::op_RESBIR() { *m_p2_reg8 = *m_p2_reg8 & ~( 1 << ( m_imm1.d & 0x07 ) ); } -void tlcs900h_device::_RESWIR() +void tlcs900h_device::op_RESWIR() { *m_p2_reg16 = *m_p2_reg16 & ~( 1 << ( m_imm1.d & 0x0f ) ); } -void tlcs900h_device::_RET() +void tlcs900h_device::op_RET() { m_pc.d = RDMEML( m_xssp.d ); m_xssp.d += 4; @@ -2998,7 +2998,7 @@ void tlcs900h_device::_RET() } -void tlcs900h_device::_RETCC() +void tlcs900h_device::op_RETCC() { if ( condition_true( m_op ) ) { @@ -3010,7 +3010,7 @@ void tlcs900h_device::_RETCC() } -void tlcs900h_device::_RETD() +void tlcs900h_device::op_RETD() { m_pc.d = RDMEML( m_xssp.d ); m_xssp.d += 4 + m_imm1.sw.l; @@ -3018,7 +3018,7 @@ void tlcs900h_device::_RETD() } -void tlcs900h_device::_RETI() +void tlcs900h_device::op_RETI() { m_sr.w.l = RDMEMW( m_xssp.d ); m_xssp.d += 2; @@ -3030,103 +3030,103 @@ void tlcs900h_device::_RETI() } -void tlcs900h_device::_RLBM() +void tlcs900h_device::op_RLBM() { WRMEM( m_ea2.d, rl8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RLWM() +void tlcs900h_device::op_RLWM() { WRMEMW( m_ea2.d, rl16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RLBIR() +void tlcs900h_device::op_RLBIR() { *m_p2_reg8 = rl8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_RLBRR() +void tlcs900h_device::op_RLBRR() { *m_p2_reg8 = rl8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_RLWIR() +void tlcs900h_device::op_RLWIR() { *m_p2_reg16 = rl16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_RLWRR() +void tlcs900h_device::op_RLWRR() { *m_p2_reg16 = rl16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_RLLIR() +void tlcs900h_device::op_RLLIR() { *m_p2_reg32 = rl32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_RLLRR() +void tlcs900h_device::op_RLLRR() { *m_p2_reg32 = rl32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_RLCBM() +void tlcs900h_device::op_RLCBM() { WRMEM( m_ea2.d, rlc8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RLCWM() +void tlcs900h_device::op_RLCWM() { WRMEMW( m_ea2.d, rlc16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RLCBIR() +void tlcs900h_device::op_RLCBIR() { *m_p2_reg8 = rlc8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_RLCBRR() +void tlcs900h_device::op_RLCBRR() { *m_p2_reg8 = rlc8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_RLCWIR() +void tlcs900h_device::op_RLCWIR() { *m_p2_reg16 = rlc16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_RLCWRR() +void tlcs900h_device::op_RLCWRR() { *m_p2_reg16 = rlc16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_RLCLIR() +void tlcs900h_device::op_RLCLIR() { *m_p2_reg32 = rlc32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_RLCLRR() +void tlcs900h_device::op_RLCLRR() { *m_p2_reg32 = rlc32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_RLDRM() +void tlcs900h_device::op_RLDRM() { uint8_t a = *m_p1_reg8 & 0x0f; uint8_t b = RDMEM( m_ea2.d ); @@ -3139,103 +3139,103 @@ void tlcs900h_device::_RLDRM() } -void tlcs900h_device::_RRBM() +void tlcs900h_device::op_RRBM() { WRMEM( m_ea2.d, rr8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RRWM() +void tlcs900h_device::op_RRWM() { WRMEMW( m_ea2.d, rr16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RRBIR() +void tlcs900h_device::op_RRBIR() { *m_p2_reg8 = rr8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_RRBRR() +void tlcs900h_device::op_RRBRR() { *m_p2_reg8 = rr8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_RRWIR() +void tlcs900h_device::op_RRWIR() { *m_p2_reg16 = rr16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_RRWRR() +void tlcs900h_device::op_RRWRR() { *m_p2_reg16 = rr16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_RRLIR() +void tlcs900h_device::op_RRLIR() { *m_p2_reg32 = rr32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_RRLRR() +void tlcs900h_device::op_RRLRR() { *m_p2_reg32 = rr32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_RRCBM() +void tlcs900h_device::op_RRCBM() { WRMEM( m_ea2.d, rrc8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RRCWM() +void tlcs900h_device::op_RRCWM() { WRMEMW( m_ea2.d, rrc16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_RRCBIR() +void tlcs900h_device::op_RRCBIR() { *m_p2_reg8 = rrc8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_RRCBRR() +void tlcs900h_device::op_RRCBRR() { *m_p2_reg8 = rrc8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_RRCWIR() +void tlcs900h_device::op_RRCWIR() { *m_p2_reg16 = rrc16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_RRCWRR() +void tlcs900h_device::op_RRCWRR() { *m_p2_reg16 = rrc16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_RRCLIR() +void tlcs900h_device::op_RRCLIR() { *m_p2_reg32 = rrc32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_RRCLRR() +void tlcs900h_device::op_RRCLRR() { *m_p2_reg32 = rrc32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_RRDRM() +void tlcs900h_device::op_RRDRM() { uint8_t a = *m_p1_reg8 & 0x0f; uint8_t b = RDMEM( m_ea2.d ); @@ -3248,320 +3248,320 @@ void tlcs900h_device::_RRDRM() } -void tlcs900h_device::_SBCBMI() +void tlcs900h_device::op_SBCBMI() { WRMEM( m_ea1.d, sbc8( RDMEM( m_ea1.d ), m_imm2.b.l ) ); } -void tlcs900h_device::_SBCBMR() +void tlcs900h_device::op_SBCBMR() { WRMEM( m_ea1.d, sbc8( RDMEM( m_ea1.d ), *m_p2_reg8 ) ); } -void tlcs900h_device::_SBCBRI() +void tlcs900h_device::op_SBCBRI() { *m_p1_reg8 = sbc8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_SBCBRM() +void tlcs900h_device::op_SBCBRM() { *m_p1_reg8 = sbc8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_SBCBRR() +void tlcs900h_device::op_SBCBRR() { *m_p1_reg8 = sbc8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_SBCWMI() +void tlcs900h_device::op_SBCWMI() { WRMEMW( m_ea1.d, sbc16( RDMEMW( m_ea1.d ), m_imm2.w.l ) ); } -void tlcs900h_device::_SBCWMR() +void tlcs900h_device::op_SBCWMR() { WRMEMW( m_ea1.d, sbc16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) ); } -void tlcs900h_device::_SBCWRI() +void tlcs900h_device::op_SBCWRI() { *m_p1_reg16 = sbc16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_SBCWRM() +void tlcs900h_device::op_SBCWRM() { *m_p1_reg16 = sbc16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_SBCWRR() +void tlcs900h_device::op_SBCWRR() { *m_p1_reg16 = sbc16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_SBCLMR() +void tlcs900h_device::op_SBCLMR() { WRMEML( m_ea1.d, sbc32( RDMEML( m_ea1.d ), *m_p2_reg32 ) ); } -void tlcs900h_device::_SBCLRI() +void tlcs900h_device::op_SBCLRI() { *m_p1_reg32 = sbc32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_SBCLRM() +void tlcs900h_device::op_SBCLRM() { *m_p1_reg32 = sbc32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_SBCLRR() +void tlcs900h_device::op_SBCLRR() { *m_p1_reg32 = sbc32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_SCCBR() +void tlcs900h_device::op_SCCBR() { *m_p2_reg8 = condition_true( m_op ) ? 1 : 0; } -void tlcs900h_device::_SCCWR() +void tlcs900h_device::op_SCCWR() { *m_p2_reg16 = condition_true( m_op ) ? 1 : 0; } -void tlcs900h_device::_SCF() +void tlcs900h_device::op_SCF() { m_sr.b.l &= ~ ( FLAG_HF | FLAG_NF ); m_sr.b.l |= FLAG_CF; } -void tlcs900h_device::_SETBIM() +void tlcs900h_device::op_SETBIM() { WRMEM( m_ea2.d, RDMEM( m_ea2.d ) | ( 1 << ( m_imm1.d & 0x07 ) ) ); } -void tlcs900h_device::_SETBIR() +void tlcs900h_device::op_SETBIR() { *m_p2_reg8 = *m_p2_reg8 | ( 1 << ( m_imm1.d & 0x07 ) ); } -void tlcs900h_device::_SETWIR() +void tlcs900h_device::op_SETWIR() { *m_p2_reg16 = *m_p2_reg16 | ( 1 << ( m_imm1.d & 0x0f ) ); } -void tlcs900h_device::_SLABM() +void tlcs900h_device::op_SLABM() { WRMEM( m_ea2.d, sla8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SLAWM() +void tlcs900h_device::op_SLAWM() { WRMEMW( m_ea2.d, sla16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SLABIR() +void tlcs900h_device::op_SLABIR() { *m_p2_reg8 = sla8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_SLABRR() +void tlcs900h_device::op_SLABRR() { *m_p2_reg8 = sla8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_SLAWIR() +void tlcs900h_device::op_SLAWIR() { *m_p2_reg16 = sla16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_SLAWRR() +void tlcs900h_device::op_SLAWRR() { *m_p2_reg16 = sla16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_SLALIR() +void tlcs900h_device::op_SLALIR() { *m_p2_reg32 = sla32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_SLALRR() +void tlcs900h_device::op_SLALRR() { *m_p2_reg32 = sla32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_SLLBM() +void tlcs900h_device::op_SLLBM() { WRMEM( m_ea2.d, sla8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SLLWM() +void tlcs900h_device::op_SLLWM() { WRMEMW( m_ea2.d, sla16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SLLBIR() +void tlcs900h_device::op_SLLBIR() { *m_p2_reg8 = sla8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_SLLBRR() +void tlcs900h_device::op_SLLBRR() { *m_p2_reg8 = sla8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_SLLWIR() +void tlcs900h_device::op_SLLWIR() { *m_p2_reg16 = sla16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_SLLWRR() +void tlcs900h_device::op_SLLWRR() { *m_p2_reg16 = sla16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_SLLLIR() +void tlcs900h_device::op_SLLLIR() { *m_p2_reg32 = sla32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_SLLLRR() +void tlcs900h_device::op_SLLLRR() { *m_p2_reg32 = sla32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_SRABM() +void tlcs900h_device::op_SRABM() { WRMEM( m_ea2.d, sra8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SRAWM() +void tlcs900h_device::op_SRAWM() { WRMEMW( m_ea2.d, sra16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SRABIR() +void tlcs900h_device::op_SRABIR() { *m_p2_reg8 = sra8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_SRABRR() +void tlcs900h_device::op_SRABRR() { *m_p2_reg8 = sra8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_SRAWIR() +void tlcs900h_device::op_SRAWIR() { *m_p2_reg16 = sra16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_SRAWRR() +void tlcs900h_device::op_SRAWRR() { *m_p2_reg16 = sra16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_SRALIR() +void tlcs900h_device::op_SRALIR() { *m_p2_reg32 = sra32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_SRALRR() +void tlcs900h_device::op_SRALRR() { *m_p2_reg32 = sra32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_SRLBM() +void tlcs900h_device::op_SRLBM() { WRMEM( m_ea2.d, srl8( RDMEM( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SRLWM() +void tlcs900h_device::op_SRLWM() { WRMEMW( m_ea2.d, srl16( RDMEMW( m_ea2.d ), 1 ) ); } -void tlcs900h_device::_SRLBIR() +void tlcs900h_device::op_SRLBIR() { *m_p2_reg8 = srl8( *m_p2_reg8, m_imm1.b.l ); } -void tlcs900h_device::_SRLBRR() +void tlcs900h_device::op_SRLBRR() { *m_p2_reg8 = srl8( *m_p2_reg8, *m_p1_reg8 ); } -void tlcs900h_device::_SRLWIR() +void tlcs900h_device::op_SRLWIR() { *m_p2_reg16 = srl16( *m_p2_reg16, m_imm1.b.l ); } -void tlcs900h_device::_SRLWRR() +void tlcs900h_device::op_SRLWRR() { *m_p2_reg16 = srl16( *m_p2_reg16, *m_p1_reg8 ); } -void tlcs900h_device::_SRLLIR() +void tlcs900h_device::op_SRLLIR() { *m_p2_reg32 = srl32( *m_p2_reg32, m_imm1.b.l ); } -void tlcs900h_device::_SRLLRR() +void tlcs900h_device::op_SRLLRR() { *m_p2_reg32 = srl32( *m_p2_reg32, *m_p1_reg8 ); } -void tlcs900h_device::_STCFBIM() +void tlcs900h_device::op_STCFBIM() { if ( m_sr.b.l & FLAG_CF ) WRMEM( m_ea2.d, RDMEM( m_ea2.d ) | ( 1 << ( m_imm1.b.l & 0x07 ) ) ); @@ -3570,7 +3570,7 @@ void tlcs900h_device::_STCFBIM() } -void tlcs900h_device::_STCFBIR() +void tlcs900h_device::op_STCFBIR() { if ( m_sr.b.l & FLAG_CF ) *m_p2_reg8 |= ( 1 << ( m_imm1.b.l & 0x07 ) ); @@ -3579,7 +3579,7 @@ void tlcs900h_device::_STCFBIR() } -void tlcs900h_device::_STCFBRM() +void tlcs900h_device::op_STCFBRM() { if ( m_sr.b.l & FLAG_CF ) WRMEM( m_ea2.d, RDMEM( m_ea2.d ) | ( 1 << ( *m_p1_reg8 & 0x07 ) ) ); @@ -3588,7 +3588,7 @@ void tlcs900h_device::_STCFBRM() } -void tlcs900h_device::_STCFBRR() +void tlcs900h_device::op_STCFBRR() { if ( m_sr.b.l & FLAG_CF ) *m_p2_reg8 |= ( 1 << ( *m_p1_reg8 & 0x07 ) ); @@ -3597,7 +3597,7 @@ void tlcs900h_device::_STCFBRR() } -void tlcs900h_device::_STCFWIR() +void tlcs900h_device::op_STCFWIR() { if ( m_sr.b.l & FLAG_CF ) *m_p2_reg16 |= ( 1 << ( m_imm1.b.l & 0x0f ) ); @@ -3606,7 +3606,7 @@ void tlcs900h_device::_STCFWIR() } -void tlcs900h_device::_STCFWRR() +void tlcs900h_device::op_STCFWRR() { if ( m_sr.b.l & FLAG_CF ) *m_p2_reg16 |= ( 1 << ( *m_p1_reg8 & 0x0f ) ); @@ -3615,91 +3615,91 @@ void tlcs900h_device::_STCFWRR() } -void tlcs900h_device::_SUBBMI() +void tlcs900h_device::op_SUBBMI() { WRMEM( m_ea1.d, sub8( RDMEM( m_ea1.d ), m_imm2.b.l ) ); } -void tlcs900h_device::_SUBBMR() +void tlcs900h_device::op_SUBBMR() { WRMEM( m_ea1.d, sub8( RDMEM( m_ea1.d ), *m_p2_reg8 ) ); } -void tlcs900h_device::_SUBBRI() +void tlcs900h_device::op_SUBBRI() { *m_p1_reg8 = sub8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_SUBBRM() +void tlcs900h_device::op_SUBBRM() { *m_p1_reg8 = sub8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_SUBBRR() +void tlcs900h_device::op_SUBBRR() { *m_p1_reg8 = sub8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_SUBWMI() +void tlcs900h_device::op_SUBWMI() { WRMEMW( m_ea1.d, sub16( RDMEMW( m_ea1.d ), m_imm2.w.l ) ); } -void tlcs900h_device::_SUBWMR() +void tlcs900h_device::op_SUBWMR() { WRMEMW( m_ea1.d, sub16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) ); } -void tlcs900h_device::_SUBWRI() +void tlcs900h_device::op_SUBWRI() { *m_p1_reg16 = sub16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_SUBWRM() +void tlcs900h_device::op_SUBWRM() { *m_p1_reg16 = sub16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_SUBWRR() +void tlcs900h_device::op_SUBWRR() { *m_p1_reg16 = sub16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_SUBLMR() +void tlcs900h_device::op_SUBLMR() { WRMEML( m_ea1.d, sub32( RDMEML( m_ea1.d ), *m_p2_reg32 ) ); } -void tlcs900h_device::_SUBLRI() +void tlcs900h_device::op_SUBLRI() { *m_p1_reg32 = sub32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_SUBLRM() +void tlcs900h_device::op_SUBLRM() { *m_p1_reg32 = sub32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_SUBLRR() +void tlcs900h_device::op_SUBLRR() { *m_p1_reg32 = sub32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_SWI() +void tlcs900h_device::op_SWI() { m_xssp.d -= 4; WRMEML( m_xssp.d, m_pc.d ); @@ -3710,7 +3710,7 @@ void tlcs900h_device::_SWI() } -void tlcs900h_device::_TSETBIM() +void tlcs900h_device::op_TSETBIM() { uint8_t b = 1 << ( m_imm1.b.l & 0x07 ); uint8_t a = RDMEM( m_ea2.d ); @@ -3721,7 +3721,7 @@ void tlcs900h_device::_TSETBIM() } -void tlcs900h_device::_TSETBIR() +void tlcs900h_device::op_TSETBIR() { uint8_t b = 1 << ( m_imm1.b.l & 0x07 ); @@ -3731,7 +3731,7 @@ void tlcs900h_device::_TSETBIR() } -void tlcs900h_device::_TSETWIR() +void tlcs900h_device::op_TSETWIR() { uint16_t b = 1 << ( m_imm1.b.l & 0x0f ); @@ -3741,7 +3741,7 @@ void tlcs900h_device::_TSETWIR() } -void tlcs900h_device::_UNLK() +void tlcs900h_device::op_UNLK() { m_xssp.d = *m_p1_reg32; *m_p1_reg32 = RDMEML( m_xssp.d ); @@ -3749,127 +3749,127 @@ void tlcs900h_device::_UNLK() } -void tlcs900h_device::_XORBMI() +void tlcs900h_device::op_XORBMI() { WRMEM( m_ea1.d, xor8( RDMEM( m_ea1.d ), m_imm2.b.l ) ); } -void tlcs900h_device::_XORBMR() +void tlcs900h_device::op_XORBMR() { WRMEM( m_ea1.d, xor8( RDMEM( m_ea1.d ), *m_p2_reg8 ) ); } -void tlcs900h_device::_XORBRI() +void tlcs900h_device::op_XORBRI() { *m_p1_reg8 = xor8( *m_p1_reg8, m_imm2.b.l ); } -void tlcs900h_device::_XORBRM() +void tlcs900h_device::op_XORBRM() { *m_p1_reg8 = xor8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_XORBRR() +void tlcs900h_device::op_XORBRR() { *m_p1_reg8 = xor8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_XORWMI() +void tlcs900h_device::op_XORWMI() { WRMEMW( m_ea1.d, xor16( RDMEMW( m_ea1.d ), m_imm2.w.l ) ); } -void tlcs900h_device::_XORWMR() +void tlcs900h_device::op_XORWMR() { WRMEMW( m_ea1.d, xor16( RDMEMW( m_ea1.d ), *m_p2_reg16 ) ); } -void tlcs900h_device::_XORWRI() +void tlcs900h_device::op_XORWRI() { *m_p1_reg16 = xor16( *m_p1_reg16, m_imm2.w.l ); } -void tlcs900h_device::_XORWRM() +void tlcs900h_device::op_XORWRM() { *m_p1_reg16 = xor16( *m_p1_reg16, RDMEMW( m_ea2.d ) ); } -void tlcs900h_device::_XORWRR() +void tlcs900h_device::op_XORWRR() { *m_p1_reg16 = xor16( *m_p1_reg16, *m_p2_reg16 ); } -void tlcs900h_device::_XORLMR() +void tlcs900h_device::op_XORLMR() { WRMEML( m_ea1.d, xor32( RDMEML( m_ea1.d ), *m_p2_reg32 ) ); } -void tlcs900h_device::_XORLRI() +void tlcs900h_device::op_XORLRI() { *m_p1_reg32 = xor32( *m_p1_reg32, m_imm2.d ); } -void tlcs900h_device::_XORLRM() +void tlcs900h_device::op_XORLRM() { *m_p1_reg32 = xor32( *m_p1_reg32, RDMEML( m_ea2.d ) ); } -void tlcs900h_device::_XORLRR() +void tlcs900h_device::op_XORLRR() { *m_p1_reg32 = xor32( *m_p1_reg32, *m_p2_reg32 ); } -void tlcs900h_device::_XORCFBIM() +void tlcs900h_device::op_XORCFBIM() { xorcf8( m_imm1.b.l, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_XORCFBIR() +void tlcs900h_device::op_XORCFBIR() { xorcf8( m_imm1.b.l, *m_p2_reg8 ); } -void tlcs900h_device::_XORCFBRM() +void tlcs900h_device::op_XORCFBRM() { xorcf8( *m_p1_reg8, RDMEM( m_ea2.d ) ); } -void tlcs900h_device::_XORCFBRR() +void tlcs900h_device::op_XORCFBRR() { xorcf8( *m_p1_reg8, *m_p2_reg8 ); } -void tlcs900h_device::_XORCFWIR() +void tlcs900h_device::op_XORCFWIR() { xorcf16( m_imm1.b.l, *m_p2_reg16 ); } -void tlcs900h_device::_XORCFWRR() +void tlcs900h_device::op_XORCFWRR() { xorcf16( *m_p1_reg8, *m_p2_reg16 ); } -void tlcs900h_device::_ZCF() +void tlcs900h_device::op_ZCF() { m_sr.b.l &= ~ ( FLAG_NF | FLAG_CF ); m_sr.b.l |= ( ( m_sr.b.l & FLAG_ZF ) ? 0 : FLAG_CF ); @@ -3880,28 +3880,28 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) { switch ( inst->operand1 ) { - case _A: + case p_A: m_p1_reg8 = &m_xwa[m_regbank].b.l; break; - case _F: + case p_F: m_p1_reg8 = &m_sr.b.l; break; - case _SR: + case p_SR: m_p1_reg16 = &m_sr.w.l; break; - case _C8: + case p_C8: m_p1_reg8 = get_reg8_current( m_op ); break; - case _C16: + case p_C16: m_p1_reg16 = get_reg16_current( m_op ); break; - case _MC16: /* For MUL and DIV operations */ + case p_MC16: /* For MUL and DIV operations */ m_p1_reg16 = get_reg16_current( ( m_op >> 1 ) & 0x03 ); break; - case _C32: + case p_C32: m_p1_reg32 = get_reg32_current( m_op ); break; - case _CR8: + case p_CR8: m_imm1.d = RDOP(); switch( m_imm1.d ) { @@ -3922,7 +3922,7 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) break; } break; - case _CR16: + case p_CR16: m_imm1.d = RDOP(); switch( m_imm1.d ) { @@ -3943,7 +3943,7 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) break; } break; - case _CR32: + case p_CR32: m_imm1.d = RDOP(); switch( m_imm1.d ) { @@ -3976,47 +3976,47 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) break; } break; - case _D8: + case p_D8: m_ea1.d = RDOP(); m_ea1.d = m_pc.d + m_ea1.sb.l; break; - case _D16: + case p_D16: m_ea1.d = RDOP(); m_ea1.b.h = RDOP(); m_ea1.d = m_pc.d + m_ea1.sw.l; break; - case _I3: + case p_I3: m_imm1.d = m_op & 0x07; break; - case _I8: + case p_I8: m_imm1.d = RDOP(); break; - case _I16: + case p_I16: m_imm1.d = RDOP(); m_imm1.b.h = RDOP(); break; - case _I24: + case p_I24: m_imm1.d = RDOP(); m_imm1.b.h = RDOP(); m_imm1.b.h2 = RDOP(); break; - case _I32: + case p_I32: m_imm1.d = RDOP(); m_imm1.b.h = RDOP(); m_imm1.b.h2 = RDOP(); m_imm1.b.h3 = RDOP(); break; - case _M: + case p_M: m_ea1.d = m_ea2.d; break; - case _M8: + case p_M8: m_ea1.d = RDOP(); break; - case _M16: + case p_M16: m_ea1.d = RDOP(); m_ea1.b.h = RDOP(); break; - case _R: + case p_R: m_p1_reg8 = m_p2_reg8; m_p1_reg16 = m_p2_reg16; m_p1_reg32 = m_p2_reg32; @@ -4025,25 +4025,25 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) switch ( inst->operand2 ) { - case _A: + case p_A: m_p2_reg8 = &m_xwa[m_regbank].b.l; break; - case _F: /* F' */ + case p_F: /* F' */ m_p2_reg8 = &m_f2.b.l; break; - case _SR: + case p_SR: m_p2_reg16 = &m_sr.w.l; break; - case _C8: + case p_C8: m_p2_reg8 = get_reg8_current( m_op ); break; - case _C16: + case p_C16: m_p2_reg16 = get_reg16_current( m_op ); break; - case _C32: + case p_C32: m_p2_reg32 = get_reg32_current( m_op ); break; - case _CR8: + case p_CR8: m_imm1.d = RDOP(); switch( m_imm1.d ) { @@ -4064,7 +4064,7 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) break; } break; - case _CR16: + case p_CR16: m_imm1.d = RDOP(); switch( m_imm1.d ) { @@ -4085,7 +4085,7 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) break; } break; - case _CR32: + case p_CR32: m_imm1.d = RDOP(); switch( m_imm1.d ) { @@ -4118,35 +4118,35 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) break; } break; - case _D8: + case p_D8: m_ea2.d = RDOP(); m_ea2.d = m_pc.d + m_ea2.sb.l; break; - case _D16: + case p_D16: m_ea2.d = RDOP(); m_ea2.b.h = RDOP(); m_ea2.d = m_pc.d + m_ea2.sw.l; break; - case _I3: + case p_I3: m_imm2.d = m_op & 0x07; break; - case _I8: + case p_I8: m_imm2.d = RDOP(); break; - case _I16: + case p_I16: m_imm2.d = RDOP(); m_imm2.b.h = RDOP(); break; - case _I32: + case p_I32: m_imm2.d = RDOP(); m_imm2.b.h = RDOP(); m_imm2.b.h2 = RDOP(); m_imm2.b.h3 = RDOP(); break; - case _M8: + case p_M8: m_ea2.d = RDOP(); break; - case _M16: + case p_M16: m_ea2.d = RDOP(); m_ea2.b.h = RDOP(); break; @@ -4157,1181 +4157,1181 @@ void tlcs900h_device::prepare_operands(const tlcs900inst *inst) const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_80[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_PUSHBM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_RLDRM, _A, _M, 12 }, { &tlcs900h_device::_RRDRM, _A, _M, 12 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDI, 0, 0, 10 }, { &tlcs900h_device::_LDIR, 0, 0, 10 }, { &tlcs900h_device::_LDD, 0, 0, 10 }, { &tlcs900h_device::_LDDR, 0, 0, 10 }, - { &tlcs900h_device::_CPI, 0, 0, 8 }, { &tlcs900h_device::_CPIR, 0, 0, 10 }, { &tlcs900h_device::_CPD, 0, 0, 8 }, { &tlcs900h_device::_CPDR, 0, 0, 10 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDBMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_PUSHBM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_RLDRM, p_A, p_M, 12 }, { &tlcs900h_device::op_RRDRM, p_A, p_M, 12 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDI, 0, 0, 10 }, { &tlcs900h_device::op_LDIR, 0, 0, 10 }, { &tlcs900h_device::op_LDD, 0, 0, 10 }, { &tlcs900h_device::op_LDDR, 0, 0, 10 }, + { &tlcs900h_device::op_CPI, 0, 0, 8 }, { &tlcs900h_device::op_CPIR, 0, 0, 10 }, { &tlcs900h_device::op_CPD, 0, 0, 8 }, { &tlcs900h_device::op_CPDR, 0, 0, 10 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDBMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, - { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADDBMI, _M, _I8, 7 }, { &tlcs900h_device::_ADCBMI, _M, _I8, 7 }, { &tlcs900h_device::_SUBBMI, _M, _I8, 7 }, { &tlcs900h_device::_SBCBMI, _M, _I8, 7 }, - { &tlcs900h_device::_ANDBMI, _M, _I8, 7 }, { &tlcs900h_device::_XORBMI, _M, _I8, 7 }, { &tlcs900h_device::_ORBMI, _M, _I8, 7 }, { &tlcs900h_device::_CPBMI, _M, _I8, 6 }, + { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ADCBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SUBBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SBCBMI, p_M, p_I8, 7 }, + { &tlcs900h_device::op_ANDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_XORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_CPBMI, p_M, p_I8, 6 }, /* 40 - 5F */ - { &tlcs900h_device::_MULBRM, _MC16, _M, 18}, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULBRM, _MC16, _M, 18}, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, - { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, - { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, - { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, + { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18}, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18}, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, + { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, + { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, + { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, /* 60 - 7F */ - { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, - { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_RLCBM, _M, 0, 8 }, { &tlcs900h_device::_RRCBM, _M, 0, 8 }, { &tlcs900h_device::_RLBM, _M, 0, 8 }, { &tlcs900h_device::_RRBM, _M, 0, 8 }, - { &tlcs900h_device::_SLABM, _M, 0, 8 }, { &tlcs900h_device::_SRABM, _M, 0, 8 }, { &tlcs900h_device::_SLLBM, _M, 0, 8 }, { &tlcs900h_device::_SRLBM, _M, 0, 8 }, + { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_RLCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RLBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRBM, p_M, 0, 8 }, + { &tlcs900h_device::op_SLABM, p_M, 0, 8 }, { &tlcs900h_device::op_SRABM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLBM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLBM, p_M, 0, 8 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, /* A0 - BF */ - { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, /* C0 - DF */ - { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, /* E0 - FF */ - { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, - { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, - { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, - { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_88[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_PUSHBM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_RLDRM, _A, _M, 12 }, { &tlcs900h_device::_RRDRM, _A, _M, 12 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDBMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_PUSHBM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_RLDRM, p_A, p_M, 12 }, { &tlcs900h_device::op_RRDRM, p_A, p_M, 12 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDBMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, - { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADDBMI, _M, _I8, 7 }, { &tlcs900h_device::_ADCBMI, _M, _I8, 7 }, { &tlcs900h_device::_SUBBMI, _M, _I8, 7 }, { &tlcs900h_device::_SBCBMI, _M, _I8, 7 }, - { &tlcs900h_device::_ANDBMI, _M, _I8, 7 }, { &tlcs900h_device::_XORBMI, _M, _I8, 7 }, { &tlcs900h_device::_ORBMI, _M, _I8, 7 }, { &tlcs900h_device::_CPBMI, _M, _I8, 6 }, + { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ADCBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SUBBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SBCBMI, p_M, p_I8, 7 }, + { &tlcs900h_device::op_ANDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_XORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_CPBMI, p_M, p_I8, 6 }, /* 40 - 5F */ - { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, - { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, - { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, - { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, + { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, + { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, + { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, + { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, /* 60 - 7F */ - { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, - { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_RLCBM, _M, 0, 8 }, { &tlcs900h_device::_RRCBM, _M, 0, 8 }, { &tlcs900h_device::_RLBM, _M, 0, 8 }, { &tlcs900h_device::_RRBM, _M, 0, 8 }, - { &tlcs900h_device::_SLABM, _M, 0, 8 }, { &tlcs900h_device::_SRABM, _M, 0, 8 }, { &tlcs900h_device::_SLLBM, _M, 0, 8 }, { &tlcs900h_device::_SRLBM, _M, 0, 8 }, + { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_RLCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RLBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRBM, p_M, 0, 8 }, + { &tlcs900h_device::op_SLABM, p_M, 0, 8 }, { &tlcs900h_device::op_SRABM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLBM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLBM, p_M, 0, 8 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, /* A0 - BF */ - { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, /* C0 - DF */ - { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, /* E0 - FF */ - { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, - { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, - { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, - { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_90[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_PUSHWM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDIW, 0, 0, 10 }, { &tlcs900h_device::_LDIRW, 0, 0, 10 }, { &tlcs900h_device::_LDDW, 0, 0, 10 }, { &tlcs900h_device::_LDDRW, 0, 0, 10 }, - { &tlcs900h_device::_CPIW, 0, 0, 8 }, { &tlcs900h_device::_CPIRW, 0, 0, 10 }, { &tlcs900h_device::_CPDW, 0, 0, 8 }, { &tlcs900h_device::_CPDRW, 0, 0, 10 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_PUSHWM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDIW, 0, 0, 10 }, { &tlcs900h_device::op_LDIRW, 0, 0, 10 }, { &tlcs900h_device::op_LDDW, 0, 0, 10 }, { &tlcs900h_device::op_LDDRW, 0, 0, 10 }, + { &tlcs900h_device::op_CPIW, 0, 0, 8 }, { &tlcs900h_device::op_CPIRW, 0, 0, 10 }, { &tlcs900h_device::op_CPDW, 0, 0, 8 }, { &tlcs900h_device::op_CPDRW, 0, 0, 10 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, - { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADDWMI, _M, _I16, 8 }, { &tlcs900h_device::_ADCWMI, _M, _I16, 8 }, { &tlcs900h_device::_SUBWMI, _M, _I16, 8 }, { &tlcs900h_device::_SBCWMI, _M, _I16, 8 }, - { &tlcs900h_device::_ANDWMI, _M, _I16, 8 }, { &tlcs900h_device::_XORWMI, _M, _I16, 8 }, { &tlcs900h_device::_ORWMI, _M, _I16, 8 }, { &tlcs900h_device::_CPWMI, _M, _I16, 6 }, + { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ADCWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SUBWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SBCWMI, p_M, p_I16, 8 }, + { &tlcs900h_device::op_ANDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_XORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_CPWMI, p_M, p_I16, 6 }, /* 40 - 5F */ - { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, - { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, - { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, - { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, - { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, + { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, + { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, + { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, + { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, /* 60 - 7F */ - { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, - { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_RLCWM, _M, 0, 8 }, { &tlcs900h_device::_RRCWM, _M, 0, 8 }, { &tlcs900h_device::_RLWM, _M, 0, 8 }, { &tlcs900h_device::_RRWM, _M, 0, 8 }, - { &tlcs900h_device::_SLAWM, _M, 0, 8 }, { &tlcs900h_device::_SRAWM, _M, 0, 8 }, { &tlcs900h_device::_SLLWM, _M, 0, 8 }, { &tlcs900h_device::_SRLWM, _M, 0, 8 }, + { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_RLCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RLWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRWM, p_M, 0, 8 }, + { &tlcs900h_device::op_SLAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLWM, p_M, 0, 8 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, /* A0 - BF */ - { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, /* C0 - DF */ - { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, /* E0 - FF */ - { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, - { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, - { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, - { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_98[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_PUSHWM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_PUSHWM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, - { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADDWMI, _M, _I16, 8 }, { &tlcs900h_device::_ADCWMI, _M, _I16, 8 }, { &tlcs900h_device::_SUBWMI, _M, _I16, 8 }, { &tlcs900h_device::_SBCWMI, _M, _I16, 8 }, - { &tlcs900h_device::_ANDWMI, _M, _I16, 8 }, { &tlcs900h_device::_XORWMI, _M, _I16, 8 }, { &tlcs900h_device::_ORWMI, _M, _I16, 8 }, { &tlcs900h_device::_CPWMI, _M, _I16, 6 }, + { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ADCWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SUBWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SBCWMI, p_M, p_I16, 8 }, + { &tlcs900h_device::op_ANDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_XORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_CPWMI, p_M, p_I16, 6 }, /* 40 - 5F */ - { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, - { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, - { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, - { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, - { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, + { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, + { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, + { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, + { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, /* 60 - 7F */ - { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, - { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_RLCWM, _M, 0, 8 }, { &tlcs900h_device::_RRCWM, _M, 0, 8 }, { &tlcs900h_device::_RLWM, _M, 0, 8 }, { &tlcs900h_device::_RRWM, _M, 0, 8 }, - { &tlcs900h_device::_SLAWM, _M, 0, 8 }, { &tlcs900h_device::_SRAWM, _M, 0, 8 }, { &tlcs900h_device::_SLLWM, _M, 0, 8 }, { &tlcs900h_device::_SRLWM, _M, 0, 8 }, + { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_RLCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RLWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRWM, p_M, 0, 8 }, + { &tlcs900h_device::op_SLAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLWM, p_M, 0, 8 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, /* A0 - BF */ - { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, /* C0 - DF */ - { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, /* E0 - FF */ - { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, - { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, - { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, - { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_a0[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 60 - 7F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, + { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, /* A0 - BF */ - { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, - { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, - { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, - { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, + { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, /* C0 - DF */ - { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, - { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, + { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, /* E0 - FF */ - { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, - { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, - { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, - { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, - { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, + { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_b0[256] = { /* 00 - 1F */ - { &tlcs900h_device::_LDBMI, _M, _I8, 5 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMI, _M, _I16, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_POPBM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_POPWM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDBMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMI, p_M, p_I8, 5 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMI, p_M, p_I16, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_POPBM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_POPWM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, - { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, - { &tlcs900h_device::_ANDCFBRM, _A, _M, 8 }, { &tlcs900h_device::_ORCFBRM, _A, _M, 8 }, { &tlcs900h_device::_XORCFBRM, _A, _M, 8 }, { &tlcs900h_device::_LDCFBRM, _A, _M, 8 }, - { &tlcs900h_device::_STCFBRM, _A, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, - { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, + { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_ORCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_XORCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_LDCFBRM, p_A, p_M, 8 }, + { &tlcs900h_device::op_STCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, + { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, - { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, - { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, + { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, + { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 60 - 7F */ - { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, - { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 80 - 9F */ - { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, + { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, /* A0 - BF */ - { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, - { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, - { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, - { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, - { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, - { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, + { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, + { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, + { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, /* C0 - DF */ - { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, - { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, - { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, - { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, + { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, /* E0 - FF */ - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, - { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, - { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, - { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 }, { &tlcs900h_device::_RETCC, _CC, 0, 6 } + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, + { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, + { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, + { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 }, { &tlcs900h_device::op_RETCC, p_CC, 0, 6 } }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_b8[256] = { /* 00 - 1F */ - { &tlcs900h_device::_LDBMI, _M, _I8, 5 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMI, _M, _I16, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_POPBM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_POPWM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDBMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMI, p_M, p_I8, 5 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMI, p_M, p_I16, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_POPBM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_POPWM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, - { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, - { &tlcs900h_device::_ANDCFBRM, _A, _M, 8 }, { &tlcs900h_device::_ORCFBRM, _A, _M, 8 }, { &tlcs900h_device::_XORCFBRM, _A, _M, 8 }, { &tlcs900h_device::_LDCFBRM, _A, _M, 8 }, - { &tlcs900h_device::_STCFBRM, _A, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, - { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, + { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_ORCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_XORCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_LDCFBRM, p_A, p_M, 8 }, + { &tlcs900h_device::op_STCFBRM, p_A, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, + { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, - { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, - { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, + { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, + { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 60 - 7F */ - { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, - { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 80 - 9F */ - { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 8 }, + { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 8 }, /* A0 - BF */ - { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 8 }, - { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, - { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, - { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, - { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, - { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, - { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, + { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, + { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, + { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, /* C0 - DF */ - { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, - { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, - { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, - { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, { &tlcs900h_device::_BITBIM, _I3, _M, 8 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, + { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, /* E0 - FF */ - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 } + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 } }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_c0[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_PUSHBM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_RLDRM, _A, _M, 12 }, { &tlcs900h_device::_RRDRM, _A, _M, 12 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDBMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_PUSHBM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_RLDRM, p_A, p_M, 12 }, { &tlcs900h_device::op_RRDRM, p_A, p_M, 12 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDBMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, { &tlcs900h_device::_LDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, - { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, { &tlcs900h_device::_EXBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADDBMI, _M, _I8, 7 }, { &tlcs900h_device::_ADCBMI, _M, _I8, 7 }, { &tlcs900h_device::_SUBBMI, _M, _I8, 7 }, { &tlcs900h_device::_SBCBMI, _M, _I8, 7 }, - { &tlcs900h_device::_ANDBMI, _M, _I8, 7 }, { &tlcs900h_device::_XORBMI, _M, _I8, 7 }, { &tlcs900h_device::_ORBMI, _M, _I8, 7 }, { &tlcs900h_device::_CPBMI, _M, _I8, 6 }, + { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_LDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_EXBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ADCBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SUBBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_SBCBMI, p_M, p_I8, 7 }, + { &tlcs900h_device::op_ANDBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_XORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_ORBMI, p_M, p_I8, 7 }, { &tlcs900h_device::op_CPBMI, p_M, p_I8, 6 }, /* 40 - 5F */ - { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, { &tlcs900h_device::_MULSBRM, _MC16, _M, 18 }, - { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, - { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, { &tlcs900h_device::_DIVBRM, _MC16, _M, 22 }, - { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, - { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, { &tlcs900h_device::_DIVSBRM, _MC16, _M, 24 }, + { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, { &tlcs900h_device::op_MULSBRM, p_MC16, p_M, 18 }, + { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, + { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, { &tlcs900h_device::op_DIVBRM, p_MC16, p_M, 22 }, + { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, + { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, { &tlcs900h_device::op_DIVSBRM, p_MC16, p_M, 24 }, /* 60 - 7F */ - { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, - { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, { &tlcs900h_device::_INCBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, { &tlcs900h_device::_DECBIM, _I3, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_RLCBM, _M, 0, 8 }, { &tlcs900h_device::_RRCBM, _M, 0, 8 }, { &tlcs900h_device::_RLBM, _M, 0, 8 }, { &tlcs900h_device::_RRBM, _M, 0, 8 }, - { &tlcs900h_device::_SLABM, _M, 0, 8 }, { &tlcs900h_device::_SRABM, _M, 0, 8 }, { &tlcs900h_device::_SLLBM, _M, 0, 8 }, { &tlcs900h_device::_SRLBM, _M, 0, 8 }, + { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECBIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_RLCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCBM, p_M, 0, 8 }, { &tlcs900h_device::op_RLBM, p_M, 0, 8 }, { &tlcs900h_device::op_RRBM, p_M, 0, 8 }, + { &tlcs900h_device::op_SLABM, p_M, 0, 8 }, { &tlcs900h_device::op_SRABM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLBM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLBM, p_M, 0, 8 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, { &tlcs900h_device::_ADCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, { &tlcs900h_device::_ADCBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ADCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ADCBMR, p_M, p_C8, 6 }, /* A0 - BF */ - { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, { &tlcs900h_device::_SUBBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, { &tlcs900h_device::_SUBBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, { &tlcs900h_device::_SBCBRM, _C8, _M, 4 }, - { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, - { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, { &tlcs900h_device::_SBCBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SUBBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SUBBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_SBCBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_SBCBMR, p_M, p_C8, 6 }, /* C0 - DF */ - { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, { &tlcs900h_device::_ANDBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, { &tlcs900h_device::_ANDBMR, _M, _C8, 6 }, - { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, { &tlcs900h_device::_XORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, { &tlcs900h_device::_XORBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ANDBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ANDBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_XORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_XORBMR, p_M, p_C8, 6 }, /* E0 - FF */ - { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, { &tlcs900h_device::_ORBRM, _C8, _M, 4 }, - { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, { &tlcs900h_device::_ORBMR, _M, _C8, 6 }, - { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, - { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, { &tlcs900h_device::_CPBRM, _C8, _M, 4 }, - { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, - { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, { &tlcs900h_device::_CPBMR, _M, _C8, 6 }, + { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_ORBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_ORBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, { &tlcs900h_device::op_CPBRM, p_C8, p_M, 4 }, + { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, + { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, { &tlcs900h_device::op_CPBMR, p_M, p_C8, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_c8[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDBRI, _R, _I8, 4 }, - { &tlcs900h_device::_PUSHBR, _R, 0, 6 }, { &tlcs900h_device::_POPBR, _R, 0, 6 }, { &tlcs900h_device::_CPLBR, _R, 0, 4 }, { &tlcs900h_device::_NEGBR, _R, 0, 5 }, - { &tlcs900h_device::_MULBRI, _R, _I8, 18}, { &tlcs900h_device::_MULSBRI, _R, _I8, 18 }, { &tlcs900h_device::_DIVBRI, _R, _I8, 22 }, { &tlcs900h_device::_DIVSBRI, _R, _I8, 24 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DAABR, _R, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DJNZB, _R, _D8, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDBRI, p_R, p_I8, 4 }, + { &tlcs900h_device::op_PUSHBR, p_R, 0, 6 }, { &tlcs900h_device::op_POPBR, p_R, 0, 6 }, { &tlcs900h_device::op_CPLBR, p_R, 0, 4 }, { &tlcs900h_device::op_NEGBR, p_R, 0, 5 }, + { &tlcs900h_device::op_MULBRI, p_R, p_I8, 18}, { &tlcs900h_device::op_MULSBRI, p_R, p_I8, 18 }, { &tlcs900h_device::op_DIVBRI, p_R, p_I8, 22 }, { &tlcs900h_device::op_DIVSBRI, p_R, p_I8, 24 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DAABR, p_R, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DJNZB, p_R, p_D8, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_ANDCFBIR, _I8, _R, 4 }, { &tlcs900h_device::_ORCFBIR, _I8, _R, 4 }, { &tlcs900h_device::_XORCFBIR, _I8, _R, 4 }, { &tlcs900h_device::_LDCFBIR, _I8, _R, 4 }, - { &tlcs900h_device::_STCFBIR, _I8, _R, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_ANDCFBRR, _A, _R, 4 }, { &tlcs900h_device::_ORCFBRR, _A, _R, 4 }, { &tlcs900h_device::_XORCFBRR, _A, _R, 4 }, { &tlcs900h_device::_LDCFBRR, _A, _R, 4 }, - { &tlcs900h_device::_STCFBRR, _A, _R, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDCBRR, _CR8, _R, 1 }, { &tlcs900h_device::_LDCBRR, _R, _CR8, 1 }, - { &tlcs900h_device::_RESBIR, _I8, _R, 4 }, { &tlcs900h_device::_SETBIR, _I8, _R, 4 }, { &tlcs900h_device::_CHGBIR, _I8, _R, 4 }, { &tlcs900h_device::_BITBIR, _I8, _R, 4 }, - { &tlcs900h_device::_TSETBIR, _I8, _R, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_ANDCFBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_ORCFBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_XORCFBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_LDCFBIR, p_I8, p_R, 4 }, + { &tlcs900h_device::op_STCFBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_ANDCFBRR, p_A, p_R, 4 }, { &tlcs900h_device::op_ORCFBRR, p_A, p_R, 4 }, { &tlcs900h_device::op_XORCFBRR, p_A, p_R, 4 }, { &tlcs900h_device::op_LDCFBRR, p_A, p_R, 4 }, + { &tlcs900h_device::op_STCFBRR, p_A, p_R, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDCBRR, p_CR8, p_R, 1 }, { &tlcs900h_device::op_LDCBRR, p_R, p_CR8, 1 }, + { &tlcs900h_device::op_RESBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_SETBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_CHGBIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_BITBIR, p_I8, p_R, 4 }, + { &tlcs900h_device::op_TSETBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, - { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULBRR, _MC16, _R, 18 }, - { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, - { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, { &tlcs900h_device::_MULSBRR, _MC16, _R, 18 }, - { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, - { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, { &tlcs900h_device::_DIVBRR, _MC16, _R, 22 }, - { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, - { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, { &tlcs900h_device::_DIVSBRR, _MC16, _R, 24 }, + { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, + { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULBRR, p_MC16, p_R, 18 }, + { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, + { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, { &tlcs900h_device::op_MULSBRR, p_MC16, p_R, 18 }, + { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, + { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, { &tlcs900h_device::op_DIVBRR, p_MC16, p_R, 22 }, + { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, + { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, { &tlcs900h_device::op_DIVSBRR, p_MC16, p_R, 24 }, /* 60 - 7F */ - { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, - { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, { &tlcs900h_device::_INCBIR, _I3, _R, 4 }, - { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, - { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, { &tlcs900h_device::_DECBIR, _I3, _R, 4 }, - { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, - { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, - { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, - { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, { &tlcs900h_device::_SCCBR, _CC, _R, 6 }, + { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCBIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECBIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, + { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, + { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, + { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCBR, p_CC, p_R, 6 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, - { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADDBRR, _C8, _R, 4 }, - { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, - { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, { &tlcs900h_device::_LDBRR, _C8, _R, 4 }, - { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, - { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, { &tlcs900h_device::_ADCBRR, _C8, _R, 4 }, - { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, - { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, { &tlcs900h_device::_LDBRR, _R, _C8, 4 }, + { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADDBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_LDBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ADCBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, + { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, { &tlcs900h_device::op_LDBRR, p_R, p_C8, 4 }, /* A0 - BF */ - { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, - { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, { &tlcs900h_device::_SUBBRR, _C8, _R, 4 }, - { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, - { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, { &tlcs900h_device::_LDBRI, _R, _I3, 4 }, - { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, - { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, { &tlcs900h_device::_SBCBRR, _C8, _R, 4 }, - { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, - { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, { &tlcs900h_device::_EXBRR, _C8, _R, 5 }, + { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SUBBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDBRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_SBCBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, + { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, { &tlcs900h_device::op_EXBRR, p_C8, p_R, 5 }, /* C0 - DF */ - { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, - { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, { &tlcs900h_device::_ANDBRR, _C8, _R, 4 }, - { &tlcs900h_device::_ADDBRI, _R, _I8, 4 }, { &tlcs900h_device::_ADCBRI, _R, _I8, 4 }, { &tlcs900h_device::_SUBBRI, _R, _I8, 4 }, { &tlcs900h_device::_SBCBRI, _R, _I8, 4 }, - { &tlcs900h_device::_ANDBRI, _R, _I8, 4 }, { &tlcs900h_device::_XORBRI, _R, _I8, 4 }, { &tlcs900h_device::_ORBRI, _R, _I8, 4 }, { &tlcs900h_device::_CPBRI, _R, _I8, 4 }, - { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, - { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, { &tlcs900h_device::_XORBRR, _C8, _R, 4 }, - { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, - { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, { &tlcs900h_device::_CPBRI, _R, _I3, 4 }, + { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ANDBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_ADDBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_ADCBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_SUBBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_SBCBRI, p_R, p_I8, 4 }, + { &tlcs900h_device::op_ANDBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_XORBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_ORBRI, p_R, p_I8, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I8, 4 }, + { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_XORBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPBRI, p_R, p_I3, 4 }, /* E0 - FF */ - { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, - { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, { &tlcs900h_device::_ORBRR, _C8, _R, 4 }, - { &tlcs900h_device::_RLCBIR, _I8, _R, 6 }, { &tlcs900h_device::_RRCBIR, _I8, _R, 6 }, { &tlcs900h_device::_RLBIR, _I8, _R, 6 }, { &tlcs900h_device::_RRBIR, _I8, _R, 6 }, - { &tlcs900h_device::_SLABIR, _I8, _R, 6 }, { &tlcs900h_device::_SRABIR, _I8, _R, 6 }, { &tlcs900h_device::_SLLBIR, _I8, _R, 6 }, { &tlcs900h_device::_SRLBIR, _I8, _R, 6 }, - { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, - { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, { &tlcs900h_device::_CPBRR, _C8, _R, 4 }, - { &tlcs900h_device::_RLCBRR, _A, _R, 6 }, { &tlcs900h_device::_RRCBRR, _A, _R, 6 }, { &tlcs900h_device::_RLBRR, _A, _R, 6 }, { &tlcs900h_device::_RRBRR, _A, _R, 6 }, - { &tlcs900h_device::_SLABRR, _A, _R, 6 }, { &tlcs900h_device::_SRABRR, _A, _R, 6 }, { &tlcs900h_device::_SLLBRR, _A, _R, 6 }, { &tlcs900h_device::_SRLBRR, _A, _R, 6 } + { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_ORBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_RLCBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RRCBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RLBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RRBIR, p_I8, p_R, 6 }, + { &tlcs900h_device::op_SLABIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SRABIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SLLBIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SRLBIR, p_I8, p_R, 6 }, + { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, { &tlcs900h_device::op_CPBRR, p_C8, p_R, 4 }, + { &tlcs900h_device::op_RLCBRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RRCBRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RLBRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RRBRR, p_A, p_R, 6 }, + { &tlcs900h_device::op_SLABRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SRABRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SLLBRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SRLBRR, p_A, p_R, 6 } }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_d0[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_PUSHWM, _M, 0, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M16, _M, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_PUSHWM, p_M, 0, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M16, p_M, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, { &tlcs900h_device::_LDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, - { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, { &tlcs900h_device::_EXWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADDWMI, _M, _I16, 8 }, { &tlcs900h_device::_ADCWMI, _M, _I16, 8 }, { &tlcs900h_device::_SUBWMI, _M, _I16, 8 }, { &tlcs900h_device::_SBCWMI, _M, _I16, 8 }, - { &tlcs900h_device::_ANDWMI, _M, _I16, 8 }, { &tlcs900h_device::_XORWMI, _M, _I16, 8 }, { &tlcs900h_device::_ORWMI, _M, _I16, 8 }, { &tlcs900h_device::_CPWMI, _M, _I16, 6 }, + { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_EXWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ADCWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SUBWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_SBCWMI, p_M, p_I16, 8 }, + { &tlcs900h_device::op_ANDWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_XORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_ORWMI, p_M, p_I16, 8 }, { &tlcs900h_device::op_CPWMI, p_M, p_I16, 6 }, /* 40 - 5F */ - { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, - { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, { &tlcs900h_device::_MULSWRM, _C32, _M, 26 }, - { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, - { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, { &tlcs900h_device::_DIVWRM, _C32, _M, 30 }, - { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, - { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, { &tlcs900h_device::_DIVSWRM, _C32, _M, 32 }, + { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, { &tlcs900h_device::op_MULSWRM, p_C32, p_M, 26 }, + { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, + { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, { &tlcs900h_device::op_DIVWRM, p_C32, p_M, 30 }, + { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, + { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, { &tlcs900h_device::op_DIVSWRM, p_C32, p_M, 32 }, /* 60 - 7F */ - { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, - { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, { &tlcs900h_device::_INCWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, { &tlcs900h_device::_DECWIM, _I3, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_RLCWM, _M, 0, 8 }, { &tlcs900h_device::_RRCWM, _M, 0, 8 }, { &tlcs900h_device::_RLWM, _M, 0, 8 }, { &tlcs900h_device::_RRWM, _M, 0, 8 }, - { &tlcs900h_device::_SLAWM, _M, 0, 8 }, { &tlcs900h_device::_SRAWM, _M, 0, 8 }, { &tlcs900h_device::_SLLWM, _M, 0, 8 }, { &tlcs900h_device::_SRLWM, _M, 0, 8 }, + { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_INCWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, { &tlcs900h_device::op_DECWIM, p_I3, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_RLCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRCWM, p_M, 0, 8 }, { &tlcs900h_device::op_RLWM, p_M, 0, 8 }, { &tlcs900h_device::op_RRWM, p_M, 0, 8 }, + { &tlcs900h_device::op_SLAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRAWM, p_M, 0, 8 }, { &tlcs900h_device::op_SLLWM, p_M, 0, 8 }, { &tlcs900h_device::op_SRLWM, p_M, 0, 8 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, { &tlcs900h_device::_ADCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, { &tlcs900h_device::_ADCWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ADCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ADCWMR, p_M, p_C16, 6 }, /* A0 - BF */ - { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, { &tlcs900h_device::_SUBWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, { &tlcs900h_device::_SUBWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, { &tlcs900h_device::_SBCWRM, _C16, _M, 4 }, - { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, - { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, { &tlcs900h_device::_SBCWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SUBWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SUBWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_SBCWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_SBCWMR, p_M, p_C16, 6 }, /* C0 - DF */ - { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, { &tlcs900h_device::_ANDWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, { &tlcs900h_device::_ANDWMR, _M, _C16, 6 }, - { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, { &tlcs900h_device::_XORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, { &tlcs900h_device::_XORWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ANDWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ANDWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_XORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_XORWMR, p_M, p_C16, 6 }, /* E0 - FF */ - { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, { &tlcs900h_device::_ORWRM, _C16, _M, 4 }, - { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, { &tlcs900h_device::_ORWMR, _M, _C16, 6 }, - { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, - { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, { &tlcs900h_device::_CPWRM, _C16, _M, 4 }, - { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, - { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, { &tlcs900h_device::_CPWMR, _M, _C16, 6 }, + { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_ORWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_ORWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, { &tlcs900h_device::op_CPWRM, p_C16, p_M, 4 }, + { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, + { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, { &tlcs900h_device::op_CPWMR, p_M, p_C16, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_d8[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWRI, _R, _I16, 4 }, - { &tlcs900h_device::_PUSHWR, _R, 0, 5 }, { &tlcs900h_device::_POPWR, _R, 0, 6 }, { &tlcs900h_device::_CPLWR, _R, 0, 4 }, { &tlcs900h_device::_NEGWR, _R, 0, 5 }, - { &tlcs900h_device::_MULWRI, _R, _I16, 26 }, { &tlcs900h_device::_MULSWRI, _R, _I16, 26 }, { &tlcs900h_device::_DIVWRI, _R, _I16, 30 }, { &tlcs900h_device::_DIVSWRI, _R, _I16, 32 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_BS1FRR, _A, _R, 4 }, { &tlcs900h_device::_BS1BRR, _A, _R, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_EXTZWR, _R, 0, 4 }, { &tlcs900h_device::_EXTSWR, _R, 0, 5 }, - { &tlcs900h_device::_PAAWR, _R, 0, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_MIRRW, _R, 0, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_MULAR, _R, 0, 31 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DJNZW, _R, _D8, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWRI, p_R, p_I16, 4 }, + { &tlcs900h_device::op_PUSHWR, p_R, 0, 5 }, { &tlcs900h_device::op_POPWR, p_R, 0, 6 }, { &tlcs900h_device::op_CPLWR, p_R, 0, 4 }, { &tlcs900h_device::op_NEGWR, p_R, 0, 5 }, + { &tlcs900h_device::op_MULWRI, p_R, p_I16, 26 }, { &tlcs900h_device::op_MULSWRI, p_R, p_I16, 26 }, { &tlcs900h_device::op_DIVWRI, p_R, p_I16, 30 }, { &tlcs900h_device::op_DIVSWRI, p_R, p_I16, 32 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_BS1FRR, p_A, p_R, 4 }, { &tlcs900h_device::op_BS1BRR, p_A, p_R, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_EXTZWR, p_R, 0, 4 }, { &tlcs900h_device::op_EXTSWR, p_R, 0, 5 }, + { &tlcs900h_device::op_PAAWR, p_R, 0, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_MIRRW, p_R, 0, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_MULAR, p_R, 0, 31 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DJNZW, p_R, p_D8, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_ANDCFWIR, _I8, _R, 4 }, { &tlcs900h_device::_ORCFWIR, _I8, _R, 4 }, { &tlcs900h_device::_XORCFWIR, _I8, _R, 4 }, { &tlcs900h_device::_LDCFWIR, _I8, _R, 4 }, - { &tlcs900h_device::_STCFWIR, _I8, _R, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_ANDCFWRR, _A, _R, 4 }, { &tlcs900h_device::_ORCFWRR, _A, _R, 4 }, { &tlcs900h_device::_XORCFWRR, _A, _R, 4 }, { &tlcs900h_device::_LDCFWRR, _A, _R, 4 }, - { &tlcs900h_device::_STCFWRR, _A, _R, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDCWRR, _CR16, _R, 1 }, { &tlcs900h_device::_LDCWRR, _R, _CR16, 1 }, - { &tlcs900h_device::_RESWIR, _I8, _R, 4 }, { &tlcs900h_device::_SETWIR, _I8, _R, 4 }, { &tlcs900h_device::_CHGWIR, _I8, _R, 4 }, { &tlcs900h_device::_BITWIR, _I8, _R, 4 }, - { &tlcs900h_device::_TSETWIR, _I8, _R, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_MINC1, _I16, _R, 8 }, { &tlcs900h_device::_MINC2, _I16, _R, 8 }, { &tlcs900h_device::_MINC4, _I16, _R, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_MDEC1, _I16, _R, 7 }, { &tlcs900h_device::_MDEC2, _I16, _R, 7 }, { &tlcs900h_device::_MDEC4, _I16, _R, 7 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_ANDCFWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_ORCFWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_XORCFWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_LDCFWIR, p_I8, p_R, 4 }, + { &tlcs900h_device::op_STCFWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_ANDCFWRR, p_A, p_R, 4 }, { &tlcs900h_device::op_ORCFWRR, p_A, p_R, 4 }, { &tlcs900h_device::op_XORCFWRR, p_A, p_R, 4 }, { &tlcs900h_device::op_LDCFWRR, p_A, p_R, 4 }, + { &tlcs900h_device::op_STCFWRR, p_A, p_R, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDCWRR, p_CR16, p_R, 1 }, { &tlcs900h_device::op_LDCWRR, p_R, p_CR16, 1 }, + { &tlcs900h_device::op_RESWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_SETWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_CHGWIR, p_I8, p_R, 4 }, { &tlcs900h_device::op_BITWIR, p_I8, p_R, 4 }, + { &tlcs900h_device::op_TSETWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_MINC1, p_I16, p_R, 8 }, { &tlcs900h_device::op_MINC2, p_I16, p_R, 8 }, { &tlcs900h_device::op_MINC4, p_I16, p_R, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_MDEC1, p_I16, p_R, 7 }, { &tlcs900h_device::op_MDEC2, p_I16, p_R, 7 }, { &tlcs900h_device::op_MDEC4, p_I16, p_R, 7 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, - { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULWRR, _C32, _R, 26 }, - { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, - { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, { &tlcs900h_device::_MULSWRR, _C32, _R, 26 }, - { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, - { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, { &tlcs900h_device::_DIVWRR, _C32, _R, 30 }, - { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, - { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, { &tlcs900h_device::_DIVSWRR, _C32, _R, 32 }, + { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, + { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULWRR, p_C32, p_R, 26 }, + { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, + { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, { &tlcs900h_device::op_MULSWRR, p_C32, p_R, 26 }, + { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, + { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, { &tlcs900h_device::op_DIVWRR, p_C32, p_R, 30 }, + { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, + { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, { &tlcs900h_device::op_DIVSWRR, p_C32, p_R, 32 }, /* 60 - 7F */ - { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, - { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, { &tlcs900h_device::_INCWIR, _I3, _R, 4 }, - { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, - { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, { &tlcs900h_device::_DECWIR, _I3, _R, 4 }, - { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, - { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, - { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, - { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, { &tlcs900h_device::_SCCWR, _CC, _R, 6 }, + { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCWIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECWIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, + { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, + { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, + { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, { &tlcs900h_device::op_SCCWR, p_CC, p_R, 6 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, - { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADDWRR, _C16, _R, 4 }, - { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, - { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, { &tlcs900h_device::_LDWRR, _C16, _R, 4 }, - { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, - { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, { &tlcs900h_device::_ADCWRR, _C16, _R, 4 }, - { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, - { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, { &tlcs900h_device::_LDWRR, _R, _C16, 4 }, + { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADDWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_LDWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ADCWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, + { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, { &tlcs900h_device::op_LDWRR, p_R, p_C16, 4 }, /* A0 - BF */ - { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, - { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, { &tlcs900h_device::_SUBWRR, _C16, _R, 4 }, - { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, - { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, { &tlcs900h_device::_LDWRI, _R, _I3, 4 }, - { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, - { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, { &tlcs900h_device::_SBCWRR, _C16, _R, 4 }, - { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, - { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, { &tlcs900h_device::_EXWRR, _C16, _R, 5 }, + { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SUBWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDWRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_SBCWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, + { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, { &tlcs900h_device::op_EXWRR, p_C16, p_R, 5 }, /* C0 - DF */ - { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, - { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, { &tlcs900h_device::_ANDWRR, _C16, _R, 4 }, - { &tlcs900h_device::_ADDWRI, _R, _I16, 4 }, { &tlcs900h_device::_ADCWRI, _R, _I16, 4 }, { &tlcs900h_device::_SUBWRI, _R, _I16, 4 }, { &tlcs900h_device::_SBCWRI, _R, _I16, 4 }, - { &tlcs900h_device::_ANDWRI, _R, _I16, 4 }, { &tlcs900h_device::_XORWRI, _R, _I16, 4 }, { &tlcs900h_device::_ORWRI, _R, _I16, 4 }, { &tlcs900h_device::_CPWRI, _R, _I16, 4 }, - { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, - { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, { &tlcs900h_device::_XORWRR, _C16, _R, 4 }, - { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, - { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, { &tlcs900h_device::_CPWRI, _R, _I3, 4 }, + { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ANDWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_ADDWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_ADCWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_SUBWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_SBCWRI, p_R, p_I16, 4 }, + { &tlcs900h_device::op_ANDWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_XORWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_ORWRI, p_R, p_I16, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I16, 4 }, + { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_XORWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_CPWRI, p_R, p_I3, 4 }, /* E0 - FF */ - { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, - { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, { &tlcs900h_device::_ORWRR, _C16, _R, 4 }, - { &tlcs900h_device::_RLCWIR, _I8, _R, 6 }, { &tlcs900h_device::_RRCWIR, _I8, _R, 6 }, { &tlcs900h_device::_RLWIR, _I8, _R, 6 }, { &tlcs900h_device::_RRWIR, _I8, _R, 6 }, - { &tlcs900h_device::_SLAWIR, _I8, _R, 6 }, { &tlcs900h_device::_SRAWIR, _I8, _R, 6 }, { &tlcs900h_device::_SLLWIR, _I8, _R, 6 }, { &tlcs900h_device::_SRLWIR, _I8, _R, 6 }, - { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, - { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, { &tlcs900h_device::_CPWRR, _C16, _R, 4 }, - { &tlcs900h_device::_RLCWRR, _A, _R, 6 }, { &tlcs900h_device::_RRCWRR, _A, _R, 6 }, { &tlcs900h_device::_RLWRR, _A, _R, 6 }, { &tlcs900h_device::_RRWRR, _A, _R, 6 }, - { &tlcs900h_device::_SLAWRR, _A, _R, 6 }, { &tlcs900h_device::_SRAWRR, _A, _R, 6 }, { &tlcs900h_device::_SLLWRR, _A, _R, 6 }, { &tlcs900h_device::_SRLWRR, _A, _R, 6 } + { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_ORWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_RLCWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RRCWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RLWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_RRWIR, p_I8, p_R, 6 }, + { &tlcs900h_device::op_SLAWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SRAWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SLLWIR, p_I8, p_R, 6 }, { &tlcs900h_device::op_SRLWIR, p_I8, p_R, 6 }, + { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, { &tlcs900h_device::op_CPWRR, p_C16, p_R, 4 }, + { &tlcs900h_device::op_RLCWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RRCWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RLWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_RRWRR, p_A, p_R, 6 }, + { &tlcs900h_device::op_SLAWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SRAWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SLLWRR, p_A, p_R, 6 }, { &tlcs900h_device::op_SRLWRR, p_A, p_R, 6 } }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_e0[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, { &tlcs900h_device::_LDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_LDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 60 - 7F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, { &tlcs900h_device::_ADCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, { &tlcs900h_device::_ADCLMR, _M, _C32, 10 }, + { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ADCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ADCLMR, p_M, p_C32, 10 }, /* A0 - BF */ - { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, { &tlcs900h_device::_SUBLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, - { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, { &tlcs900h_device::_SUBLMR, _M, _C32, 10 }, - { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, { &tlcs900h_device::_SBCLRM, _C32, _M, 6 }, - { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, - { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, { &tlcs900h_device::_SBCLMR, _M, _C32, 10 }, + { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SUBLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SUBLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_SBCLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_SBCLMR, p_M, p_C32, 10 }, /* C0 - DF */ - { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, { &tlcs900h_device::_ANDLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, { &tlcs900h_device::_ANDLMR, _M, _C32, 10 }, - { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, { &tlcs900h_device::_XORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, - { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, { &tlcs900h_device::_XORLMR, _M, _C32, 10 }, + { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ANDLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ANDLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_XORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_XORLMR, p_M, p_C32, 10 }, /* E0 - FF */ - { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, { &tlcs900h_device::_ORLRM, _C32, _M, 6 }, - { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, - { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, { &tlcs900h_device::_ORLMR, _M, _C32, 10 }, - { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, - { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, { &tlcs900h_device::_CPLRM, _C32, _M, 6 }, - { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, - { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, { &tlcs900h_device::_CPLMR, _M, _C32, 6 }, + { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_ORLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, { &tlcs900h_device::op_ORLMR, p_M, p_C32, 10 }, + { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, { &tlcs900h_device::op_CPLRM, p_C32, p_M, 6 }, + { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_CPLMR, p_M, p_C32, 6 }, }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_e8[256] = { /* 00 - 1F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDLRI, _R, _I32, 6 }, - { &tlcs900h_device::_PUSHLR, _R, 0, 7 }, { &tlcs900h_device::_POPLR, _R, 0, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LINK, _R, _I16, 10 }, { &tlcs900h_device::_UNLK, _R, 0, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_EXTZLR, _R, 0, 4 }, { &tlcs900h_device::_EXTSLR, _R, 0, 5 }, - { &tlcs900h_device::_PAALR, _R, 0, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDLRI, p_R, p_I32, 6 }, + { &tlcs900h_device::op_PUSHLR, p_R, 0, 7 }, { &tlcs900h_device::op_POPLR, p_R, 0, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LINK, p_R, p_I16, 10 }, { &tlcs900h_device::op_UNLK, p_R, 0, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_EXTZLR, p_R, 0, 4 }, { &tlcs900h_device::op_EXTSLR, p_R, 0, 5 }, + { &tlcs900h_device::op_PAALR, p_R, 0, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDCLRR, _CR32, _R, 1 }, { &tlcs900h_device::_LDCLRR, _R, _CR32, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDCLRR, p_CR32, p_R, 1 }, { &tlcs900h_device::op_LDCLRR, p_R, p_CR32, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 60 - 7F */ - { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, - { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, { &tlcs900h_device::_INCLIR, _I3, _R, 4 }, - { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, - { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, { &tlcs900h_device::_DECLIR, _I3, _R, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_INCLIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, { &tlcs900h_device::op_DECLIR, p_I3, p_R, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 80 - 9F */ - { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, - { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADDLRR, _C32, _R, 7 }, - { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, - { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, { &tlcs900h_device::_LDLRR, _C32, _R, 4 }, - { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, - { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, { &tlcs900h_device::_ADCLRR, _C32, _R, 7 }, - { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, - { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, { &tlcs900h_device::_LDLRR, _R, _C32, 4 }, + { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADDLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, + { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, { &tlcs900h_device::op_LDLRR, p_C32, p_R, 4 }, + { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ADCLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, + { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, { &tlcs900h_device::op_LDLRR, p_R, p_C32, 4 }, /* A0 - BF */ - { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, - { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, { &tlcs900h_device::_SUBLRR, _C32, _R, 7 }, - { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, - { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, { &tlcs900h_device::_LDLRI, _R, _I3, 4 }, - { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, - { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, { &tlcs900h_device::_SBCLRR, _C32, _R, 7 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SUBLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, { &tlcs900h_device::op_LDLRI, p_R, p_I3, 4 }, + { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_SBCLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* C0 - DF */ - { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, - { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, { &tlcs900h_device::_ANDLRR, _C32, _R, 7 }, - { &tlcs900h_device::_ADDLRI, _R, _I32, 7 }, { &tlcs900h_device::_ADCLRI, _R, _I32, 7 }, { &tlcs900h_device::_SUBLRI, _R, _I32, 7 }, { &tlcs900h_device::_SBCLRI, _R, _I32, 7 }, - { &tlcs900h_device::_ANDLRI, _R, _I32, 7 }, { &tlcs900h_device::_XORLRI, _R, _I32, 7 }, { &tlcs900h_device::_ORLRI, _R, _I32, 7 }, { &tlcs900h_device::_CPLRI, _R, _I32, 7 }, - { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, - { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, { &tlcs900h_device::_XORLRR, _C32, _R, 7 }, - { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, - { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, { &tlcs900h_device::_CPLRI, _R, _I3, 6 }, + { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ANDLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_ADDLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_ADCLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_SUBLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_SBCLRI, p_R, p_I32, 7 }, + { &tlcs900h_device::op_ANDLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_XORLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_ORLRI, p_R, p_I32, 7 }, { &tlcs900h_device::op_CPLRI, p_R, p_I32, 7 }, + { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_XORLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, + { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, { &tlcs900h_device::op_CPLRI, p_R, p_I3, 6 }, /* E0 - FF */ - { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, - { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, { &tlcs900h_device::_ORLRR, _C32, _R, 7 }, - { &tlcs900h_device::_RLCLIR, _I8, _R, 8 }, { &tlcs900h_device::_RRCLIR, _I8, _R, 8 }, { &tlcs900h_device::_RLLIR, _I8, _R, 8 }, { &tlcs900h_device::_RRLIR, _I8, _R, 8 }, - { &tlcs900h_device::_SLALIR, _I8, _R, 8 }, { &tlcs900h_device::_SRALIR, _I8, _R, 8 }, { &tlcs900h_device::_SLLLIR, _I8, _R, 8 }, { &tlcs900h_device::_SRLLIR, _I8, _R, 8 }, - { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, - { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, { &tlcs900h_device::_CPLRR, _C32, _R, 7 }, - { &tlcs900h_device::_RLCLRR, _A, _R, 8 }, { &tlcs900h_device::_RRCLRR, _A, _R, 8 }, { &tlcs900h_device::_RLLRR, _A, _R, 8 }, { &tlcs900h_device::_RRLRR, _A, _R, 8 }, - { &tlcs900h_device::_SLALRR, _A, _R, 8 }, { &tlcs900h_device::_SRALRR, _A, _R, 8 }, { &tlcs900h_device::_SLLLRR, _A, _R, 8 }, { &tlcs900h_device::_SRLLRR, _A, _R, 8 } + { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_ORLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_RLCLIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_RRCLIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_RLLIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_RRLIR, p_I8, p_R, 8 }, + { &tlcs900h_device::op_SLALIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_SRALIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_SLLLIR, p_I8, p_R, 8 }, { &tlcs900h_device::op_SRLLIR, p_I8, p_R, 8 }, + { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, { &tlcs900h_device::op_CPLRR, p_C32, p_R, 7 }, + { &tlcs900h_device::op_RLCLRR, p_A, p_R, 8 }, { &tlcs900h_device::op_RRCLRR, p_A, p_R, 8 }, { &tlcs900h_device::op_RLLRR, p_A, p_R, 8 }, { &tlcs900h_device::op_RRLRR, p_A, p_R, 8 }, + { &tlcs900h_device::op_SLALRR, p_A, p_R, 8 }, { &tlcs900h_device::op_SRALRR, p_A, p_R, 8 }, { &tlcs900h_device::op_SLLLRR, p_A, p_R, 8 }, { &tlcs900h_device::op_SRLLRR, p_A, p_R, 8 } }; const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic_f0[256] = { /* 00 - 1F */ - { &tlcs900h_device::_LDBMI, _M, _I8, 5 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMI, _M, _I16, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_POPBM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_POPWM, _M, 0, 6 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDBMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_LDWMM, _M, _M16, 8 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMI, p_M, p_I8, 5 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMI, p_M, p_I16, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_POPBM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_POPWM, p_M, 0, 6 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_LDWMM, p_M, p_M16, 8 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, - { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, { &tlcs900h_device::_LDAW, _C16, _M, 4 }, - { &tlcs900h_device::_ANDCFBRM, _A, _M, 4 }, { &tlcs900h_device::_ORCFBRM, _A, _M, 4 }, { &tlcs900h_device::_XORCFBRM, _A, _M, 4 }, { &tlcs900h_device::_LDCFBRM, _A, _M, 4 }, - { &tlcs900h_device::_STCFBRM, _A, _M, 4 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, - { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, { &tlcs900h_device::_LDAL, _C32, _M, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, + { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, { &tlcs900h_device::op_LDAW, p_C16, p_M, 4 }, + { &tlcs900h_device::op_ANDCFBRM, p_A, p_M, 4 }, { &tlcs900h_device::op_ORCFBRM, p_A, p_M, 4 }, { &tlcs900h_device::op_XORCFBRM, p_A, p_M, 4 }, { &tlcs900h_device::op_LDCFBRM, p_A, p_M, 4 }, + { &tlcs900h_device::op_STCFBRM, p_A, p_M, 4 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, + { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, { &tlcs900h_device::op_LDAL, p_C32, p_M, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 40 - 5F */ - { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, - { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, { &tlcs900h_device::_LDBMR, _M, _C8, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, - { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, { &tlcs900h_device::_LDWMR, _M, _C16, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, + { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, { &tlcs900h_device::op_LDBMR, p_M, p_C8, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, + { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, { &tlcs900h_device::op_LDWMR, p_M, p_C16, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 60 - 7F */ - { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, - { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, { &tlcs900h_device::_LDLMR, _M, _C32, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, { &tlcs900h_device::op_LDLMR, p_M, p_C32, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 80 - 9F */ - { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ANDCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_ORCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_XORCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_LDCFBIM, _I3, _M, 4 }, + { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ANDCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_ORCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_XORCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_LDCFBIM, p_I3, p_M, 4 }, /* A0 - BF */ - { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, { &tlcs900h_device::_STCFBIM, _I3, _M, 4 }, - { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, - { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, { &tlcs900h_device::_TSETBIM, _I3, _M, 10 }, - { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, - { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, { &tlcs900h_device::_RESBIM, _I3, _M, 8 }, - { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, - { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, { &tlcs900h_device::_SETBIM, _I3, _M, 8 }, + { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_STCFBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, + { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, { &tlcs900h_device::op_TSETBIM, p_I3, p_M, 10 }, + { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_RESBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_SETBIM, p_I3, p_M, 8 }, /* C0 - DF */ - { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, - { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, { &tlcs900h_device::_CHGBIM, _I3, _M, 8 }, - { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, - { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, { &tlcs900h_device::_BITBIM, _I3, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, - { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, { &tlcs900h_device::_JPM, _CC, _M, 4 }, + { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, { &tlcs900h_device::op_CHGBIM, p_I3, p_M, 8 }, + { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, { &tlcs900h_device::op_BITBIM, p_I3, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, + { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, { &tlcs900h_device::op_JPM, p_CC, p_M, 4 }, /* E0 - FF */ - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, { &tlcs900h_device::_CALLM, _CC, _M, 6 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 } + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, { &tlcs900h_device::op_CALLM, p_CC, p_M, 6 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 } }; /* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP) used as source in byte operations */ -void tlcs900h_device::_80() +void tlcs900h_device::op_80() { const tlcs900inst *inst; @@ -5349,7 +5349,7 @@ void tlcs900h_device::_80() /* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP + d8) used as source in byte operations */ -void tlcs900h_device::_88() +void tlcs900h_device::op_88() { const tlcs900inst *inst; @@ -5370,7 +5370,7 @@ void tlcs900h_device::_88() /* (XWA/XBC/XDE/XHL/XIXI/XIY/XIZ/XSP) used as source in word operations */ -void tlcs900h_device::_90() +void tlcs900h_device::op_90() { const tlcs900inst *inst; @@ -5388,7 +5388,7 @@ void tlcs900h_device::_90() /* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP + d8) used as source in word operations */ -void tlcs900h_device::_98() +void tlcs900h_device::op_98() { const tlcs900inst *inst; @@ -5405,7 +5405,7 @@ void tlcs900h_device::_98() /* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP) used as source in long word operations */ -void tlcs900h_device::_A0() +void tlcs900h_device::op_A0() { const tlcs900inst *inst; @@ -5419,7 +5419,7 @@ void tlcs900h_device::_A0() /* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP + d8) used as source in long word operations */ -void tlcs900h_device::_A8() +void tlcs900h_device::op_A8() { const tlcs900inst *inst; @@ -5436,7 +5436,7 @@ void tlcs900h_device::_A8() /* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP) used as destination in operations */ -void tlcs900h_device::_B0() +void tlcs900h_device::op_B0() { const tlcs900inst *inst; @@ -5450,7 +5450,7 @@ void tlcs900h_device::_B0() /* (XWA/XBC/XDE/XHL/XIX/XIY/XIZ/XSP + d8) used as destination in operations */ -void tlcs900h_device::_B8() +void tlcs900h_device::op_B8() { const tlcs900inst *inst; @@ -5467,7 +5467,7 @@ void tlcs900h_device::_B8() /* memory used as source in byte operations */ -void tlcs900h_device::_C0() +void tlcs900h_device::op_C0() { const tlcs900inst *inst; uint32_t *reg = nullptr; @@ -5596,7 +5596,7 @@ void tlcs900h_device::oC8() /* memory used as source in word operations */ -void tlcs900h_device::_D0() +void tlcs900h_device::op_D0() { const tlcs900inst *inst; uint32_t *reg = nullptr; @@ -5723,7 +5723,7 @@ void tlcs900h_device::oD8() /* memory used as source in long word operations */ -void tlcs900h_device::_E0() +void tlcs900h_device::op_E0() { const tlcs900inst *inst; uint32_t *reg = nullptr; @@ -5826,7 +5826,7 @@ void tlcs900h_device::_E0() } -void tlcs900h_device::_E8() +void tlcs900h_device::op_E8() { const tlcs900inst *inst; @@ -5848,7 +5848,7 @@ void tlcs900h_device::_E8() /* memory used as destination operations */ -void tlcs900h_device::_F0() +void tlcs900h_device::op_F0() { const tlcs900inst *inst; uint32_t *reg = nullptr; @@ -5955,82 +5955,82 @@ void tlcs900h_device::_F0() const tlcs900h_device::tlcs900inst tlcs900h_device::s_mnemonic[256] = { /* 00 - 1F */ - { &tlcs900h_device::_NOP, 0, 0, 1 }, { &tlcs900h_device::_NORMAL, 0, 0, 4 }, { &tlcs900h_device::_PUSHWR, _SR, 0, 4 }, { &tlcs900h_device::_POPWSR, _SR, 0, 6 }, - { &tlcs900h_device::_MAX, 0, 0, 4 }, { &tlcs900h_device::_HALT, 0, 0, 8 }, { &tlcs900h_device::_EI, _I8, 0, 5 }, { &tlcs900h_device::_RETI, 0, 0, 12 }, - { &tlcs900h_device::_LDBMI, _M8, _I8, 5 }, { &tlcs900h_device::_PUSHBI, _I8, 0, 4 }, { &tlcs900h_device::_LDWMI, _M8, _I16, 6 }, { &tlcs900h_device::_PUSHWI, _I16, 0, 5 }, - { &tlcs900h_device::_INCF, 0, 0, 2 }, { &tlcs900h_device::_DECF, 0, 0, 2 }, { &tlcs900h_device::_RET, 0, 0, 9 }, { &tlcs900h_device::_RETD, _I16, 0, 9 }, - { &tlcs900h_device::_RCF, 0, 0, 2 }, { &tlcs900h_device::_SCF, 0, 0, 2 }, { &tlcs900h_device::_CCF, 0, 0, 2 }, { &tlcs900h_device::_ZCF, 0, 0, 2 }, - { &tlcs900h_device::_PUSHBR, _A, 0, 3 }, { &tlcs900h_device::_POPBR, _A, 0, 4 }, { &tlcs900h_device::_EXBRR, _F, _F, 2 }, { &tlcs900h_device::_LDF, _I8, 0, 2 }, - { &tlcs900h_device::_PUSHBR, _F, 0, 3 }, { &tlcs900h_device::_POPBR, _F, 0, 4 }, { &tlcs900h_device::_JPI, _I16, 0, 7 }, { &tlcs900h_device::_JPI, _I24, 0, 7 }, - { &tlcs900h_device::_CALLI, _I16, 0, 12 }, { &tlcs900h_device::_CALLI, _I24, 0, 12 }, { &tlcs900h_device::_CALR, _D16, 0, 12 }, { &tlcs900h_device::_DB, 0, 0, 1 }, + { &tlcs900h_device::op_NOP, 0, 0, 1 }, { &tlcs900h_device::op_NORMAL, 0, 0, 4 }, { &tlcs900h_device::op_PUSHWR, p_SR, 0, 4 }, { &tlcs900h_device::op_POPWSR, p_SR, 0, 6 }, + { &tlcs900h_device::op_MAX, 0, 0, 4 }, { &tlcs900h_device::op_HALT, 0, 0, 8 }, { &tlcs900h_device::op_EI, p_I8, 0, 5 }, { &tlcs900h_device::op_RETI, 0, 0, 12 }, + { &tlcs900h_device::op_LDBMI, p_M8, p_I8, 5 }, { &tlcs900h_device::op_PUSHBI, p_I8, 0, 4 }, { &tlcs900h_device::op_LDWMI, p_M8, p_I16, 6 }, { &tlcs900h_device::op_PUSHWI, p_I16, 0, 5 }, + { &tlcs900h_device::op_INCF, 0, 0, 2 }, { &tlcs900h_device::op_DECF, 0, 0, 2 }, { &tlcs900h_device::op_RET, 0, 0, 9 }, { &tlcs900h_device::op_RETD, p_I16, 0, 9 }, + { &tlcs900h_device::op_RCF, 0, 0, 2 }, { &tlcs900h_device::op_SCF, 0, 0, 2 }, { &tlcs900h_device::op_CCF, 0, 0, 2 }, { &tlcs900h_device::op_ZCF, 0, 0, 2 }, + { &tlcs900h_device::op_PUSHBR, p_A, 0, 3 }, { &tlcs900h_device::op_POPBR, p_A, 0, 4 }, { &tlcs900h_device::op_EXBRR, p_F, p_F, 2 }, { &tlcs900h_device::op_LDF, p_I8, 0, 2 }, + { &tlcs900h_device::op_PUSHBR, p_F, 0, 3 }, { &tlcs900h_device::op_POPBR, p_F, 0, 4 }, { &tlcs900h_device::op_JPI, p_I16, 0, 7 }, { &tlcs900h_device::op_JPI, p_I24, 0, 7 }, + { &tlcs900h_device::op_CALLI, p_I16, 0, 12 }, { &tlcs900h_device::op_CALLI, p_I24, 0, 12 }, { &tlcs900h_device::op_CALR, p_D16, 0, 12 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, /* 20 - 3F */ - { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, - { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, { &tlcs900h_device::_LDBRI, _C8, _I8, 2 }, - { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, - { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, { &tlcs900h_device::_PUSHWR, _C16, 0, 3 }, - { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, - { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, { &tlcs900h_device::_LDWRI, _C16, _I16, 3 }, - { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, - { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, { &tlcs900h_device::_PUSHLR, _C32, 0, 5 }, + { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, + { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, { &tlcs900h_device::op_LDBRI, p_C8, p_I8, 2 }, + { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, + { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, { &tlcs900h_device::op_PUSHWR, p_C16, 0, 3 }, + { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, + { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, { &tlcs900h_device::op_LDWRI, p_C16, p_I16, 3 }, + { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, + { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, { &tlcs900h_device::op_PUSHLR, p_C32, 0, 5 }, /* 40 - 5F */ - { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, - { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, { &tlcs900h_device::_LDLRI, _C32, _I32, 5 }, - { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, - { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, { &tlcs900h_device::_POPWR, _C16, 0, 4 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, { &tlcs900h_device::_DB, 0, 0, 1 }, - { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, - { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, { &tlcs900h_device::_POPLR, _C32, 0, 6 }, + { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, + { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, { &tlcs900h_device::op_LDLRI, p_C32, p_I32, 5 }, + { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, + { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, { &tlcs900h_device::op_POPWR, p_C16, 0, 4 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, { &tlcs900h_device::op_DB, 0, 0, 1 }, + { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, + { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, { &tlcs900h_device::op_POPLR, p_C32, 0, 6 }, /* 60 - 7F */ - { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, - { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, - { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, - { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, { &tlcs900h_device::_JR, _CC, _D8, 4 }, - { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, - { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, - { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, - { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, { &tlcs900h_device::_JRL, _CC, _D16, 4 }, + { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, + { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, + { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, + { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, { &tlcs900h_device::op_JR, p_CC, p_D8, 4 }, + { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, + { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, + { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, + { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, { &tlcs900h_device::op_JRL, p_CC, p_D16, 4 }, /* 80 - 9F */ - { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, - { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, { &tlcs900h_device::_80, 0, 0, 0 }, - { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, - { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, { &tlcs900h_device::_88, 0, 0, 0 }, - { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, - { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, { &tlcs900h_device::_90, 0, 0, 0 }, - { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, - { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, { &tlcs900h_device::_98, 0, 0, 0 }, + { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, + { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, { &tlcs900h_device::op_80, 0, 0, 0 }, + { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, + { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, { &tlcs900h_device::op_88, 0, 0, 0 }, + { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, + { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, { &tlcs900h_device::op_90, 0, 0, 0 }, + { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, + { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, { &tlcs900h_device::op_98, 0, 0, 0 }, /* A0 - BF */ - { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, - { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, { &tlcs900h_device::_A0, 0, 0, 0 }, - { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, - { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, { &tlcs900h_device::_A8, 0, 0, 0 }, - { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, - { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, { &tlcs900h_device::_B0, 0, 0, 0 }, - { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, - { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, { &tlcs900h_device::_B8, 0, 0, 0 }, + { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, + { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, { &tlcs900h_device::op_A0, 0, 0, 0 }, + { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, + { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, { &tlcs900h_device::op_A8, 0, 0, 0 }, + { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, + { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, { &tlcs900h_device::op_B0, 0, 0, 0 }, + { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, + { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, { &tlcs900h_device::op_B8, 0, 0, 0 }, /* C0 - DF */ - { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_C0, 0, 0, 0 }, - { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_C0, 0, 0, 0 }, { &tlcs900h_device::_DB, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, + { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_C0, 0, 0, 0 }, + { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_C0, 0, 0, 0 }, { &tlcs900h_device::op_DB, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, { &tlcs900h_device::oC8, 0, 0, 0 }, - { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_D0, 0, 0, 0 }, - { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_D0, 0, 0, 0 }, { &tlcs900h_device::_DB, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, + { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_D0, 0, 0, 0 }, + { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_D0, 0, 0, 0 }, { &tlcs900h_device::op_DB, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, { &tlcs900h_device::oD8, 0, 0, 0 }, /* E0 - FF */ - { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_E0, 0, 0, 0 }, - { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_E0, 0, 0, 0 }, { &tlcs900h_device::_DB, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, - { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, - { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, { &tlcs900h_device::_E8, 0, 0, 0 }, - { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_F0, 0, 0, 0 }, - { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_F0, 0, 0, 0 }, { &tlcs900h_device::_DB, 0, 0, 0 }, { &tlcs900h_device::_LDX, 0, 0, 9 }, - { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }, - { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 }, { &tlcs900h_device::_SWI, _I3, 0, 16 } + { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_E0, 0, 0, 0 }, + { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_E0, 0, 0, 0 }, { &tlcs900h_device::op_DB, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, + { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, + { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, { &tlcs900h_device::op_E8, 0, 0, 0 }, + { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_F0, 0, 0, 0 }, + { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_F0, 0, 0, 0 }, { &tlcs900h_device::op_DB, 0, 0, 0 }, { &tlcs900h_device::op_LDX, 0, 0, 9 }, + { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, + { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 }, { &tlcs900h_device::op_SWI, p_I3, 0, 16 } }; diff --git a/src/devices/cpu/tlcs900/tlcs900.h b/src/devices/cpu/tlcs900/tlcs900.h index 536bc8f99a8..27c3ccdc689 100644 --- a/src/devices/cpu/tlcs900/tlcs900.h +++ b/src/devices/cpu/tlcs900/tlcs900.h @@ -44,13 +44,13 @@ DECLARE_DEVICE_TYPE(TMP95C061, tmp95c061_device) DECLARE_DEVICE_TYPE(TMP95C063, tmp95c063_device) -#define MCFG_TLCS900H_AM8_16( am8_16 ) tlcs900h_device::set_am8_16( *device, am8_16 ); +#define MCFG_TLCS900H_AM8_16( am8_16 ) downcast<tlcs900h_device &>(*device).set_am8_16(am8_16 ); class tlcs900h_device : public cpu_device { public: - // static configuration helpers - static void set_am8_16(device_t &device, int am8_16) { downcast<tlcs900h_device &>(device).m_am8_16 = am8_16; } + // configuration helpers + void set_am8_16(int am8_16) { m_am8_16 = am8_16; } protected: // construction/destruction @@ -229,420 +229,420 @@ protected: uint32_t div16( uint32_t a, uint16_t b ); uint16_t divs8( int16_t a, int8_t b ); uint32_t divs16( int32_t a, int16_t b ); - void _ADCBMI(); - void _ADCBMR(); - void _ADCBRI(); - void _ADCBRM(); - void _ADCBRR(); - void _ADCWMI(); - void _ADCWMR(); - void _ADCWRI(); - void _ADCWRM(); - void _ADCWRR(); - void _ADCLMR(); - void _ADCLRI(); - void _ADCLRM(); - void _ADCLRR(); - void _ADDBMI(); - void _ADDBMR(); - void _ADDBRI(); - void _ADDBRM(); - void _ADDBRR(); - void _ADDWMI(); - void _ADDWMR(); - void _ADDWRI(); - void _ADDWRM(); - void _ADDWRR(); - void _ADDLMR(); - void _ADDLRI(); - void _ADDLRM(); - void _ADDLRR(); - void _ANDBMI(); - void _ANDBMR(); - void _ANDBRI(); - void _ANDBRM(); - void _ANDBRR(); - void _ANDWMI(); - void _ANDWMR(); - void _ANDWRI(); - void _ANDWRM(); - void _ANDWRR(); - void _ANDLMR(); - void _ANDLRI(); - void _ANDLRM(); - void _ANDLRR(); - void _ANDCFBIM(); - void _ANDCFBIR(); - void _ANDCFBRM(); - void _ANDCFBRR(); - void _ANDCFWIR(); - void _ANDCFWRR(); - void _BITBIM(); - void _BITBIR(); - void _BITWIR(); - void _BS1BRR(); - void _BS1FRR(); - void _CALLI(); - void _CALLM(); - void _CALR(); - void _CCF(); - void _CHGBIM(); - void _CHGBIR(); - void _CHGWIR(); - void _CPBMI(); - void _CPBMR(); - void _CPBRI(); - void _CPBRM(); - void _CPBRR(); - void _CPWMI(); - void _CPWMR(); - void _CPWRI(); - void _CPWRM(); - void _CPWRR(); - void _CPLMR(); - void _CPLRI(); - void _CPLRM(); - void _CPLRR(); - void _CPD(); - void _CPDR(); - void _CPDW(); - void _CPDRW(); - void _CPI(); - void _CPIR(); - void _CPIW(); - void _CPIRW(); - void _CPLBR(); - void _CPLWR(); - void _DAABR(); - void _DB(); - void _DECBIM(); - void _DECBIR(); - void _DECWIM(); - void _DECWIR(); - void _DECLIR(); - void _DECF(); - void _DIVBRI(); - void _DIVBRM(); - void _DIVBRR(); - void _DIVWRI(); - void _DIVWRM(); - void _DIVWRR(); - void _DIVSBRI(); - void _DIVSBRM(); - void _DIVSBRR(); - void _DIVSWRI(); - void _DIVSWRM(); - void _DIVSWRR(); - void _DJNZB(); - void _DJNZW(); - void _EI(); - void _EXBMR(); - void _EXBRR(); - void _EXWMR(); - void _EXWRR(); - void _EXTSWR(); - void _EXTSLR(); - void _EXTZWR(); - void _EXTZLR(); - void _HALT(); - void _INCBIM(); - void _INCBIR(); - void _INCWIM(); - void _INCWIR(); - void _INCLIR(); - void _INCF(); - void _JPI(); - void _JPM(); - void _JR(); - void _JRL(); - void _LDBMI(); - void _LDBMM(); - void _LDBMR(); - void _LDBRI(); - void _LDBRM(); - void _LDBRR(); - void _LDWMI(); - void _LDWMM(); - void _LDWMR(); - void _LDWRI(); - void _LDWRM(); - void _LDWRR(); - void _LDLRI(); - void _LDLRM(); - void _LDLRR(); - void _LDLMR(); - void _LDAW(); - void _LDAL(); - void _LDCBRR(); - void _LDCWRR(); - void _LDCLRR(); - void _LDCFBIM(); - void _LDCFBIR(); - void _LDCFBRM(); - void _LDCFBRR(); - void _LDCFWIR(); - void _LDCFWRR(); - void _LDD(); - void _LDDR(); - void _LDDRW(); - void _LDDW(); - void _LDF(); - void _LDI(); - void _LDIR(); - void _LDIRW(); - void _LDIW(); - void _LDX(); - void _LINK(); - void _MAX(); - void _MDEC1(); - void _MDEC2(); - void _MDEC4(); - void _MINC1(); - void _MINC2(); - void _MINC4(); - void _MIRRW(); - void _MULBRI(); - void _MULBRM(); - void _MULBRR(); - void _MULWRI(); - void _MULWRM(); - void _MULWRR(); - void _MULAR(); - void _MULSBRI(); - void _MULSBRM(); - void _MULSBRR(); - void _MULSWRI(); - void _MULSWRM(); - void _MULSWRR(); - void _NEGBR(); - void _NEGWR(); - void _NOP(); - void _NORMAL(); - void _ORBMI(); - void _ORBMR(); - void _ORBRI(); - void _ORBRM(); - void _ORBRR(); - void _ORWMI(); - void _ORWMR(); - void _ORWRI(); - void _ORWRM(); - void _ORWRR(); - void _ORLMR(); - void _ORLRI(); - void _ORLRM(); - void _ORLRR(); - void _ORCFBIM(); - void _ORCFBIR(); - void _ORCFBRM(); - void _ORCFBRR(); - void _ORCFWIR(); - void _ORCFWRR(); - void _PAAWR(); - void _PAALR(); - void _POPBM(); - void _POPBR(); - void _POPWM(); - void _POPWR(); - void _POPWSR(); - void _POPLR(); - void _PUSHBI(); - void _PUSHBM(); - void _PUSHBR(); - void _PUSHWI(); - void _PUSHWM(); - void _PUSHWR(); - void _PUSHLR(); - void _RCF(); - void _RESBIM(); - void _RESBIR(); - void _RESWIR(); - void _RET(); - void _RETCC(); - void _RETD(); - void _RETI(); - void _RLBM(); - void _RLWM(); - void _RLBIR(); - void _RLBRR(); - void _RLWIR(); - void _RLWRR(); - void _RLLIR(); - void _RLLRR(); - void _RLCBM(); - void _RLCWM(); - void _RLCBIR(); - void _RLCBRR(); - void _RLCWIR(); - void _RLCWRR(); - void _RLCLIR(); - void _RLCLRR(); - void _RLDRM(); - void _RRBM(); - void _RRWM(); - void _RRBIR(); - void _RRBRR(); - void _RRWIR(); - void _RRWRR(); - void _RRLIR(); - void _RRLRR(); - void _RRCBM(); - void _RRCWM(); - void _RRCBIR(); - void _RRCBRR(); - void _RRCWIR(); - void _RRCWRR(); - void _RRCLIR(); - void _RRCLRR(); - void _RRDRM(); - void _SBCBMI(); - void _SBCBMR(); - void _SBCBRI(); - void _SBCBRM(); - void _SBCBRR(); - void _SBCWMI(); - void _SBCWMR(); - void _SBCWRI(); - void _SBCWRM(); - void _SBCWRR(); - void _SBCLMR(); - void _SBCLRI(); - void _SBCLRM(); - void _SBCLRR(); - void _SCCBR(); - void _SCCWR(); - void _SCF(); - void _SETBIM(); - void _SETBIR(); - void _SETWIR(); - void _SLABM(); - void _SLAWM(); - void _SLABIR(); - void _SLABRR(); - void _SLAWIR(); - void _SLAWRR(); - void _SLALIR(); - void _SLALRR(); - void _SLLBM(); - void _SLLWM(); - void _SLLBIR(); - void _SLLBRR(); - void _SLLWIR(); - void _SLLWRR(); - void _SLLLIR(); - void _SLLLRR(); - void _SRABM(); - void _SRAWM(); - void _SRABIR(); - void _SRABRR(); - void _SRAWIR(); - void _SRAWRR(); - void _SRALIR(); - void _SRALRR(); - void _SRLBM(); - void _SRLWM(); - void _SRLBIR(); - void _SRLBRR(); - void _SRLWIR(); - void _SRLWRR(); - void _SRLLIR(); - void _SRLLRR(); - void _STCFBIM(); - void _STCFBIR(); - void _STCFBRM(); - void _STCFBRR(); - void _STCFWIR(); - void _STCFWRR(); - void _SUBBMI(); - void _SUBBMR(); - void _SUBBRI(); - void _SUBBRM(); - void _SUBBRR(); - void _SUBWMI(); - void _SUBWMR(); - void _SUBWRI(); - void _SUBWRM(); - void _SUBWRR(); - void _SUBLMR(); - void _SUBLRI(); - void _SUBLRM(); - void _SUBLRR(); - void _SWI(); - void _TSETBIM(); - void _TSETBIR(); - void _TSETWIR(); - void _UNLK(); - void _XORBMI(); - void _XORBMR(); - void _XORBRI(); - void _XORBRM(); - void _XORBRR(); - void _XORWMI(); - void _XORWMR(); - void _XORWRI(); - void _XORWRM(); - void _XORWRR(); - void _XORLMR(); - void _XORLRI(); - void _XORLRM(); - void _XORLRR(); - void _XORCFBIM(); - void _XORCFBIR(); - void _XORCFBRM(); - void _XORCFBRR(); - void _XORCFWIR(); - void _XORCFWRR(); - void _ZCF(); + void op_ADCBMI(); + void op_ADCBMR(); + void op_ADCBRI(); + void op_ADCBRM(); + void op_ADCBRR(); + void op_ADCWMI(); + void op_ADCWMR(); + void op_ADCWRI(); + void op_ADCWRM(); + void op_ADCWRR(); + void op_ADCLMR(); + void op_ADCLRI(); + void op_ADCLRM(); + void op_ADCLRR(); + void op_ADDBMI(); + void op_ADDBMR(); + void op_ADDBRI(); + void op_ADDBRM(); + void op_ADDBRR(); + void op_ADDWMI(); + void op_ADDWMR(); + void op_ADDWRI(); + void op_ADDWRM(); + void op_ADDWRR(); + void op_ADDLMR(); + void op_ADDLRI(); + void op_ADDLRM(); + void op_ADDLRR(); + void op_ANDBMI(); + void op_ANDBMR(); + void op_ANDBRI(); + void op_ANDBRM(); + void op_ANDBRR(); + void op_ANDWMI(); + void op_ANDWMR(); + void op_ANDWRI(); + void op_ANDWRM(); + void op_ANDWRR(); + void op_ANDLMR(); + void op_ANDLRI(); + void op_ANDLRM(); + void op_ANDLRR(); + void op_ANDCFBIM(); + void op_ANDCFBIR(); + void op_ANDCFBRM(); + void op_ANDCFBRR(); + void op_ANDCFWIR(); + void op_ANDCFWRR(); + void op_BITBIM(); + void op_BITBIR(); + void op_BITWIR(); + void op_BS1BRR(); + void op_BS1FRR(); + void op_CALLI(); + void op_CALLM(); + void op_CALR(); + void op_CCF(); + void op_CHGBIM(); + void op_CHGBIR(); + void op_CHGWIR(); + void op_CPBMI(); + void op_CPBMR(); + void op_CPBRI(); + void op_CPBRM(); + void op_CPBRR(); + void op_CPWMI(); + void op_CPWMR(); + void op_CPWRI(); + void op_CPWRM(); + void op_CPWRR(); + void op_CPLMR(); + void op_CPLRI(); + void op_CPLRM(); + void op_CPLRR(); + void op_CPD(); + void op_CPDR(); + void op_CPDW(); + void op_CPDRW(); + void op_CPI(); + void op_CPIR(); + void op_CPIW(); + void op_CPIRW(); + void op_CPLBR(); + void op_CPLWR(); + void op_DAABR(); + void op_DB(); + void op_DECBIM(); + void op_DECBIR(); + void op_DECWIM(); + void op_DECWIR(); + void op_DECLIR(); + void op_DECF(); + void op_DIVBRI(); + void op_DIVBRM(); + void op_DIVBRR(); + void op_DIVWRI(); + void op_DIVWRM(); + void op_DIVWRR(); + void op_DIVSBRI(); + void op_DIVSBRM(); + void op_DIVSBRR(); + void op_DIVSWRI(); + void op_DIVSWRM(); + void op_DIVSWRR(); + void op_DJNZB(); + void op_DJNZW(); + void op_EI(); + void op_EXBMR(); + void op_EXBRR(); + void op_EXWMR(); + void op_EXWRR(); + void op_EXTSWR(); + void op_EXTSLR(); + void op_EXTZWR(); + void op_EXTZLR(); + void op_HALT(); + void op_INCBIM(); + void op_INCBIR(); + void op_INCWIM(); + void op_INCWIR(); + void op_INCLIR(); + void op_INCF(); + void op_JPI(); + void op_JPM(); + void op_JR(); + void op_JRL(); + void op_LDBMI(); + void op_LDBMM(); + void op_LDBMR(); + void op_LDBRI(); + void op_LDBRM(); + void op_LDBRR(); + void op_LDWMI(); + void op_LDWMM(); + void op_LDWMR(); + void op_LDWRI(); + void op_LDWRM(); + void op_LDWRR(); + void op_LDLRI(); + void op_LDLRM(); + void op_LDLRR(); + void op_LDLMR(); + void op_LDAW(); + void op_LDAL(); + void op_LDCBRR(); + void op_LDCWRR(); + void op_LDCLRR(); + void op_LDCFBIM(); + void op_LDCFBIR(); + void op_LDCFBRM(); + void op_LDCFBRR(); + void op_LDCFWIR(); + void op_LDCFWRR(); + void op_LDD(); + void op_LDDR(); + void op_LDDRW(); + void op_LDDW(); + void op_LDF(); + void op_LDI(); + void op_LDIR(); + void op_LDIRW(); + void op_LDIW(); + void op_LDX(); + void op_LINK(); + void op_MAX(); + void op_MDEC1(); + void op_MDEC2(); + void op_MDEC4(); + void op_MINC1(); + void op_MINC2(); + void op_MINC4(); + void op_MIRRW(); + void op_MULBRI(); + void op_MULBRM(); + void op_MULBRR(); + void op_MULWRI(); + void op_MULWRM(); + void op_MULWRR(); + void op_MULAR(); + void op_MULSBRI(); + void op_MULSBRM(); + void op_MULSBRR(); + void op_MULSWRI(); + void op_MULSWRM(); + void op_MULSWRR(); + void op_NEGBR(); + void op_NEGWR(); + void op_NOP(); + void op_NORMAL(); + void op_ORBMI(); + void op_ORBMR(); + void op_ORBRI(); + void op_ORBRM(); + void op_ORBRR(); + void op_ORWMI(); + void op_ORWMR(); + void op_ORWRI(); + void op_ORWRM(); + void op_ORWRR(); + void op_ORLMR(); + void op_ORLRI(); + void op_ORLRM(); + void op_ORLRR(); + void op_ORCFBIM(); + void op_ORCFBIR(); + void op_ORCFBRM(); + void op_ORCFBRR(); + void op_ORCFWIR(); + void op_ORCFWRR(); + void op_PAAWR(); + void op_PAALR(); + void op_POPBM(); + void op_POPBR(); + void op_POPWM(); + void op_POPWR(); + void op_POPWSR(); + void op_POPLR(); + void op_PUSHBI(); + void op_PUSHBM(); + void op_PUSHBR(); + void op_PUSHWI(); + void op_PUSHWM(); + void op_PUSHWR(); + void op_PUSHLR(); + void op_RCF(); + void op_RESBIM(); + void op_RESBIR(); + void op_RESWIR(); + void op_RET(); + void op_RETCC(); + void op_RETD(); + void op_RETI(); + void op_RLBM(); + void op_RLWM(); + void op_RLBIR(); + void op_RLBRR(); + void op_RLWIR(); + void op_RLWRR(); + void op_RLLIR(); + void op_RLLRR(); + void op_RLCBM(); + void op_RLCWM(); + void op_RLCBIR(); + void op_RLCBRR(); + void op_RLCWIR(); + void op_RLCWRR(); + void op_RLCLIR(); + void op_RLCLRR(); + void op_RLDRM(); + void op_RRBM(); + void op_RRWM(); + void op_RRBIR(); + void op_RRBRR(); + void op_RRWIR(); + void op_RRWRR(); + void op_RRLIR(); + void op_RRLRR(); + void op_RRCBM(); + void op_RRCWM(); + void op_RRCBIR(); + void op_RRCBRR(); + void op_RRCWIR(); + void op_RRCWRR(); + void op_RRCLIR(); + void op_RRCLRR(); + void op_RRDRM(); + void op_SBCBMI(); + void op_SBCBMR(); + void op_SBCBRI(); + void op_SBCBRM(); + void op_SBCBRR(); + void op_SBCWMI(); + void op_SBCWMR(); + void op_SBCWRI(); + void op_SBCWRM(); + void op_SBCWRR(); + void op_SBCLMR(); + void op_SBCLRI(); + void op_SBCLRM(); + void op_SBCLRR(); + void op_SCCBR(); + void op_SCCWR(); + void op_SCF(); + void op_SETBIM(); + void op_SETBIR(); + void op_SETWIR(); + void op_SLABM(); + void op_SLAWM(); + void op_SLABIR(); + void op_SLABRR(); + void op_SLAWIR(); + void op_SLAWRR(); + void op_SLALIR(); + void op_SLALRR(); + void op_SLLBM(); + void op_SLLWM(); + void op_SLLBIR(); + void op_SLLBRR(); + void op_SLLWIR(); + void op_SLLWRR(); + void op_SLLLIR(); + void op_SLLLRR(); + void op_SRABM(); + void op_SRAWM(); + void op_SRABIR(); + void op_SRABRR(); + void op_SRAWIR(); + void op_SRAWRR(); + void op_SRALIR(); + void op_SRALRR(); + void op_SRLBM(); + void op_SRLWM(); + void op_SRLBIR(); + void op_SRLBRR(); + void op_SRLWIR(); + void op_SRLWRR(); + void op_SRLLIR(); + void op_SRLLRR(); + void op_STCFBIM(); + void op_STCFBIR(); + void op_STCFBRM(); + void op_STCFBRR(); + void op_STCFWIR(); + void op_STCFWRR(); + void op_SUBBMI(); + void op_SUBBMR(); + void op_SUBBRI(); + void op_SUBBRM(); + void op_SUBBRR(); + void op_SUBWMI(); + void op_SUBWMR(); + void op_SUBWRI(); + void op_SUBWRM(); + void op_SUBWRR(); + void op_SUBLMR(); + void op_SUBLRI(); + void op_SUBLRM(); + void op_SUBLRR(); + void op_SWI(); + void op_TSETBIM(); + void op_TSETBIR(); + void op_TSETWIR(); + void op_UNLK(); + void op_XORBMI(); + void op_XORBMR(); + void op_XORBRI(); + void op_XORBRM(); + void op_XORBRR(); + void op_XORWMI(); + void op_XORWMR(); + void op_XORWRI(); + void op_XORWRM(); + void op_XORWRR(); + void op_XORLMR(); + void op_XORLRI(); + void op_XORLRM(); + void op_XORLRR(); + void op_XORCFBIM(); + void op_XORCFBIR(); + void op_XORCFBRM(); + void op_XORCFBRR(); + void op_XORCFWIR(); + void op_XORCFWRR(); + void op_ZCF(); void prepare_operands(const tlcs900inst *inst); - void _80(); - void _88(); - void _90(); - void _98(); - void _A0(); - void _A8(); - void _B0(); - void _B8(); - void _C0(); + void op_80(); + void op_88(); + void op_90(); + void op_98(); + void op_A0(); + void op_A8(); + void op_B0(); + void op_B8(); + void op_C0(); void oC8(); - void _D0(); + void op_D0(); void oD8(); - void _E0(); - void _E8(); - void _F0(); + void op_E0(); + void op_E8(); + void op_F0(); }; #define MCFG_TMP95C061_PORT1_READ( _port_read ) \ - devcb = &tmp95c061_device::set_port1_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_port1_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT1_WRITE( _port_write ) \ - devcb = &tmp95c061_device::set_port1_write( *device, DEVCB_##_port_write ); + devcb = &downcast<tmp95c061_device &>(*device).set_port1_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT2_WRITE( _port_write ) \ - devcb = &tmp95c061_device::set_port2_write( *device, DEVCB_##_port_write ); + devcb = &downcast<tmp95c061_device &>(*device).set_port2_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT5_READ( _port_read ) \ - devcb = &tmp95c061_device::set_port5_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_port5_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT5_WRITE( _port_write ) \ - devcb = &tmp95c061_device::set_port5_write( *device, DEVCB_##_port_write ); + devcb = &downcast<tmp95c061_device &>(*device).set_port5_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT6_READ( _port_read ) \ - devcb = &tmp95c061_device::set_port6_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_port6_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT6_WRITE( _port_write ) \ - devcb = &tmp95c061_device::set_port6_write( *device, DEVCB_##_port_write ); + devcb = &downcast<tmp95c061_device &>(*device).set_port6_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT7_READ( _port_read ) \ - devcb = &tmp95c061_device::set_port7_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_port7_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT7_WRITE( _port_write ) \ - devcb = &tmp95c061_device::set_port7_write( *device, DEVCB_##_port_write ); + devcb = &downcast<tmp95c061_device &>(*device).set_port7_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT8_READ( _port_read ) \ - devcb = &tmp95c061_device::set_port8_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_port8_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORT8_WRITE( _port_write ) \ - devcb = &mp95c061_device::set_port8_write( *device, DEVCB_##_port_write ); + devcb = &downcast<mp95c061_device &>(*device).set_port8_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORT9_READ( _port_read ) \ - devcb = &tmp95c061_device::set_port9_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_port9_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORTA_READ( _port_read ) \ - devcb = &tmp95c061_device::set_porta_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_porta_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORTA_WRITE( _port_write ) \ - devcb = &tmp95c061_device::set_porta_write( *device, DEVCB_##_port_write ); + devcb = &downcast<tmp95c061_device &>(*device).set_porta_write(DEVCB_##_port_write); #define MCFG_TMP95C061_PORTB_READ( _port_read ) \ - devcb = &tmp95c061_device::set_portb_read( *device, DEVCB_##_port_read ); + devcb = &downcast<tmp95c061_device &>(*device).set_portb_read(DEVCB_##_port_read); #define MCFG_TMP95C061_PORTB_WRITE( _port_write ) \ - devcb = &tmp95c061_device::set_portb_write( *device, DEVCB_##_port_write ); + devcb = &downcast<tmp95c061_device &>(*device).set_portb_write(DEVCB_##_port_write); class tmp95c061_device : public tlcs900h_device { @@ -650,22 +650,22 @@ public: // construction/destruction tmp95c061_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_port1_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port1_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port1_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port1_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port2_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port2_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port5_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port5_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port5_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port5_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port6_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port6_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port7_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port7_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port7_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port7_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port8_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port8_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port8_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port8_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port9_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_port9_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_porta_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_porta_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_porta_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_porta_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portb_read(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_portb_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portb_write(device_t &device, Object &&cb) { return downcast<tmp95c061_device &>(device).m_portb_write.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_port1_read(Object &&cb) { return m_port1_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port1_write(Object &&cb) { return m_port1_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port2_write(Object &&cb) { return m_port2_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port5_read(Object &&cb) { return m_port5_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port5_write(Object &&cb) { return m_port5_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port6_write(Object &&cb) { return m_port6_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port7_read(Object &&cb) { return m_port7_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port7_write(Object &&cb) { return m_port7_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port8_read(Object &&cb) { return m_port8_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port8_write(Object &&cb) { return m_port8_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port9_read(Object &&cb) { return m_port9_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_porta_read(Object &&cb) { return m_porta_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_porta_write(Object &&cb) { return m_porta_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portb_read(Object &&cb) { return m_portb_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portb_write(Object &&cb) { return m_portb_write.set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER( internal_r ); DECLARE_WRITE8_MEMBER( internal_w ); @@ -727,44 +727,44 @@ private: }; -#define MCFG_TMP95C063_PORT0_READ( _port_read ) tmp95c063_device::set_port0_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT0_WRITE( _port_write ) tmp95c063_device::set_port0_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT1_READ( _port_read ) tmp95c063_device::set_port1_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT1_WRITE( _port_write ) tmp95c063_device::set_port1_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT2_READ( _port_read ) tmp95c063_device::set_port2_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT2_WRITE( _port_write ) tmp95c063_device::set_port2_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT3_READ( _port_read ) tmp95c063_device::set_port3_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT3_WRITE( _port_write ) tmp95c063_device::set_port3_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT4_READ( _port_read ) tmp95c063_device::set_port4_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT4_WRITE( _port_write ) tmp95c063_device::set_port4_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT5_READ( _port_read ) tmp95c063_device::set_port5_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT5_WRITE( _port_write ) tmp95c063_device::set_port5_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT6_READ( _port_read ) tmp95c063_device::set_port6_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT6_WRITE( _port_write ) tmp95c063_device::set_port6_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT7_READ( _port_read ) tmp95c063_device::set_port7_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT7_WRITE( _port_write ) tmp95c063_device::set_port7_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT8_READ( _port_read ) tmp95c063_device::set_port8_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT8_WRITE( _port_write ) tmp95c063_device::set_port8_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORT9_READ( _port_read ) tmp95c063_device::set_port9_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORT9_WRITE( _port_write ) tmp95c063_device::set_port9_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORTA_READ( _port_read ) tmp95c063_device::set_porta_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORTA_WRITE( _port_write ) tmp95c063_device::set_porta_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORTB_READ( _port_read ) tmp95c063_device::set_portb_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORTB_WRITE( _port_write ) tmp95c063_device::set_portb_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORTC_READ( _port_read ) tmp95c063_device::set_portc_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORTC_WRITE( _port_write ) tmp95c063_device::set_portc_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORTD_READ( _port_read ) tmp95c063_device::set_portd_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORTD_WRITE( _port_write ) tmp95c063_device::set_portd_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_PORTE_READ( _port_read ) tmp95c063_device::set_porte_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_PORTE_WRITE( _port_write ) tmp95c063_device::set_porte_write( *device, DEVCB_##_port_write ); -#define MCFG_TMP95C063_AN0_READ( _port_read ) tmp95c063_device::set_an0_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_AN1_READ( _port_read ) tmp95c063_device::set_an1_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_AN2_READ( _port_read ) tmp95c063_device::set_an2_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_AN3_READ( _port_read ) tmp95c063_device::set_an3_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_AN4_READ( _port_read ) tmp95c063_device::set_an4_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_AN5_READ( _port_read ) tmp95c063_device::set_an5_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_AN6_READ( _port_read ) tmp95c063_device::set_an6_read( *device, DEVCB_##_port_read ); -#define MCFG_TMP95C063_AN7_READ( _port_read ) tmp95c063_device::set_an7_read( *device, DEVCB_##_port_read ); +#define MCFG_TMP95C063_PORT0_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port0_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT0_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port0_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT1_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port1_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT1_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port1_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT2_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port2_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT2_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port2_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT3_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port3_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT3_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port3_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT4_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port4_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT4_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port4_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT5_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port5_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT5_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port5_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT6_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port6_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT6_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port6_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT7_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port7_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT7_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port7_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT8_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port8_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT8_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port8_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORT9_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_port9_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORT9_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_port9_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTA_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_porta_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTA_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_porta_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTB_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_portb_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTB_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_portb_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTC_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_portc_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTC_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_portc_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTD_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_portd_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTD_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_portd_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_PORTE_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_porte_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_PORTE_WRITE( _port_write ) devcb = &downcast<tmp95c063_device &>(*device).set_porte_write(DEVCB_##_port_write); +#define MCFG_TMP95C063_AN0_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an0_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN1_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an1_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN2_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an2_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN3_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an3_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN4_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an4_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN5_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an5_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN6_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an6_read(DEVCB_##_port_read); +#define MCFG_TMP95C063_AN7_READ( _port_read ) devcb = &downcast<tmp95c063_device &>(*device).set_an7_read(DEVCB_##_port_read); class tmp95c063_device : public tlcs900h_device { @@ -775,37 +775,37 @@ public: DECLARE_READ8_MEMBER( internal_r ); DECLARE_WRITE8_MEMBER( internal_w ); - // static configuration helpers - template <class Object> static devcb_base &set_port1_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port1_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port1_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port1_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port2_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port2_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port5_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port5_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port5_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port5_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port6_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port6_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port6_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port6_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port7_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port7_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port7_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port7_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port8_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port8_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port8_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port8_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port9_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port9_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_port9_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_port9_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_porta_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porta_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_porta_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porta_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portb_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portb_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portb_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portb_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portc_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portc_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portd_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portd_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_portd_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_portd_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_porte_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porte_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_porte_write(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_porte_write.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an0_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an0_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an1_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an1_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an2_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an2_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an3_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an3_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an4_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an4_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an5_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an5_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an6_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an6_read.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an7_read(device_t &device, Object &&cb) { return downcast<tmp95c063_device &>(device).m_an7_read.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_port1_read(Object &&cb) { return m_port1_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port1_write(Object &&cb) { return m_port1_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port2_write(Object &&cb) { return m_port2_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port5_read(Object &&cb) { return m_port5_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port5_write(Object &&cb) { return m_port5_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port6_read(Object &&cb) { return m_port6_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port6_write(Object &&cb) { return m_port6_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port7_read(Object &&cb) { return m_port7_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port7_write(Object &&cb) { return m_port7_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port8_read(Object &&cb) { return m_port8_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port8_write(Object &&cb) { return m_port8_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port9_read(Object &&cb) { return m_port9_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_port9_write(Object &&cb) { return m_port9_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_porta_read(Object &&cb) { return m_porta_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_porta_write(Object &&cb) { return m_porta_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portb_read(Object &&cb) { return m_portb_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portb_write(Object &&cb) { return m_portb_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portc_read(Object &&cb) { return m_portc_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portd_read(Object &&cb) { return m_portd_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_portd_write(Object &&cb) { return m_portd_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_porte_read(Object &&cb) { return m_porte_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_porte_write(Object &&cb) { return m_porte_write.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an0_read(Object &&cb) { return m_an0_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an1_read(Object &&cb) { return m_an1_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an2_read(Object &&cb) { return m_an2_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an3_read(Object &&cb) { return m_an3_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an4_read(Object &&cb) { return m_an4_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an5_read(Object &&cb) { return m_an5_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an6_read(Object &&cb) { return m_an6_read.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an7_read(Object &&cb) { return m_an7_read.set_callback(std::forward<Object>(cb)); } void tmp95c063_mem16(address_map &map); void tmp95c063_mem8(address_map &map); diff --git a/src/devices/cpu/tms1000/tms0270.h b/src/devices/cpu/tms1000/tms0270.h index a4fa7108d59..64f28d4b544 100644 --- a/src/devices/cpu/tms1000/tms0270.h +++ b/src/devices/cpu/tms1000/tms0270.h @@ -16,13 +16,13 @@ // TMS0270 was designed to interface with TMS5100, set it up at driver level #define MCFG_TMS0270_READ_CTL_CB(_devcb) \ - devcb = &tms0270_cpu_device::set_read_ctl_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms0270_cpu_device &>(*device).set_read_ctl_callback(DEVCB_##_devcb); #define MCFG_TMS0270_WRITE_CTL_CB(_devcb) \ - devcb = &tms0270_cpu_device::set_write_ctl_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms0270_cpu_device &>(*device).set_write_ctl_callback(DEVCB_##_devcb); #define MCFG_TMS0270_WRITE_PDC_CB(_devcb) \ - devcb = &tms0270_cpu_device::set_write_pdc_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms0270_cpu_device &>(*device).set_write_pdc_callback(DEVCB_##_devcb); class tms0270_cpu_device : public tms0980_cpu_device @@ -30,10 +30,10 @@ class tms0270_cpu_device : public tms0980_cpu_device public: tms0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // static configuration helpers - template <class Object> static devcb_base &set_read_ctl_callback(device_t &device, Object &&cb) { return downcast<tms0270_cpu_device &>(device).m_read_ctl.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_ctl_callback(device_t &device, Object &&cb) { return downcast<tms0270_cpu_device &>(device).m_write_ctl.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_pdc_callback(device_t &device, Object &&cb) { return downcast<tms0270_cpu_device &>(device).m_write_pdc.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_read_ctl_callback(Object &&cb) { return m_read_ctl.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_ctl_callback(Object &&cb) { return m_write_ctl.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_pdc_callback(Object &&cb) { return m_write_pdc.set_callback(std::forward<Object>(cb)); } protected: // overrides diff --git a/src/devices/cpu/tms1000/tms1k_base.h b/src/devices/cpu/tms1000/tms1k_base.h index e34e93e7d1c..ed7164f2d43 100644 --- a/src/devices/cpu/tms1000/tms1k_base.h +++ b/src/devices/cpu/tms1000/tms1k_base.h @@ -19,24 +19,24 @@ // K input pins #define MCFG_TMS1XXX_READ_K_CB(_devcb) \ - devcb = &tms1k_base_device::set_read_k_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms1k_base_device &>(*device).set_read_k_callback(DEVCB_##_devcb); // O/Segment output pins #define MCFG_TMS1XXX_WRITE_O_CB(_devcb) \ - devcb = &tms1k_base_device::set_write_o_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms1k_base_device &>(*device).set_write_o_callback(DEVCB_##_devcb); // Use this if the output PLA is unknown: // If the microinstructions (or other) PLA is unknown, try using one from another romset. #define MCFG_TMS1XXX_OUTPUT_PLA(_pla) \ - tms1k_base_device::set_output_pla(*device, _pla); + downcast<tms1k_base_device &>(*device).set_output_pla(_pla); // R output pins (also called D on some chips) #define MCFG_TMS1XXX_WRITE_R_CB(_devcb) \ - devcb = &tms1k_base_device::set_write_r_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms1k_base_device &>(*device).set_write_r_callback(DEVCB_##_devcb); // OFF request on TMS0980 and up #define MCFG_TMS1XXX_POWER_OFF_CB(_devcb) \ - devcb = &tms1k_base_device::set_power_off_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms1k_base_device &>(*device).set_power_off_callback(DEVCB_##_devcb); // HALT input pin on CMOS chips (use set_input_line) #define TMS1XXX_INPUT_LINE_HALT 0 @@ -87,12 +87,12 @@ class tms1k_base_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_read_k_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_read_k.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_o_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_write_o.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_r_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_write_r.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_power_off_callback(device_t &device, Object &&cb) { return downcast<tms1k_base_device &>(device).m_power_off.set_callback(std::forward<Object>(cb)); } - static void set_output_pla(device_t &device, const u16 *output_pla) { downcast<tms1k_base_device &>(device).m_output_pla_table = output_pla; } + // 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_write_o_callback(Object &&cb) { return m_write_o.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_r_callback(Object &&cb) { return m_write_r.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_power_off_callback(Object &&cb) { return m_power_off.set_callback(std::forward<Object>(cb)); } + void set_output_pla(const u16 *output_pla) { m_output_pla_table = output_pla; } u8 debug_peek_o_index() { return m_o_index; } // get output PLA index, for debugging (don't use in emulation) diff --git a/src/devices/cpu/tms32010/tms32010.h b/src/devices/cpu/tms32010/tms32010.h index b7ed35d7853..1d1f60833c2 100644 --- a/src/devices/cpu/tms32010/tms32010.h +++ b/src/devices/cpu/tms32010/tms32010.h @@ -18,7 +18,7 @@ #define MCFG_TMS32010_BIO_IN_CB(_devcb) \ - devcb = &tms32010_device::set_bio_in_cb(*device, DEVCB_##_devcb); /* BIO input */ + devcb = &downcast<tms32010_device &>(*device).set_bio_in_cb(DEVCB_##_devcb); /* BIO input */ #define TMS32010_INT_PENDING 0x80000000 @@ -44,8 +44,8 @@ public: // construction/destruction tms32010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base & set_bio_in_cb(device_t &device, Object &&cb) { return downcast<tms32010_device &>(device).m_bio_in.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_bio_in_cb(Object &&cb) { return m_bio_in.set_callback(std::forward<Object>(cb)); } void tms32010_ram(address_map &map); void tms32015_ram(address_map &map); diff --git a/src/devices/cpu/tms32025/tms32025.h b/src/devices/cpu/tms32025/tms32025.h index ade0a0289d6..c3576dacb50 100644 --- a/src/devices/cpu/tms32025/tms32025.h +++ b/src/devices/cpu/tms32025/tms32025.h @@ -24,22 +24,22 @@ #define MCFG_TMS32025_BIO_IN_CB(_devcb) \ - devcb = &tms32025_device::set_bio_in_cb(*device, DEVCB_##_devcb); /* BIO input */ + devcb = &downcast<tms32025_device &>(*device).set_bio_in_cb(DEVCB_##_devcb); /* BIO input */ #define MCFG_TMS32025_HOLD_IN_CB(_devcb) \ - devcb = &tms32025_device::set_hold_in_cb(*device, DEVCB_##_devcb); /* HOLD input */ + devcb = &downcast<tms32025_device &>(*device).set_hold_in_cb(DEVCB_##_devcb); /* HOLD input */ #define MCFG_TMS32025_HOLD_ACK_OUT_CB(_devcb) \ - devcb = &tms32025_device::set_hold_ack_out_cb(*device, DEVCB_##_devcb); /* HOLD Acknowledge output */ + devcb = &downcast<tms32025_device &>(*device).set_hold_ack_out_cb(DEVCB_##_devcb); /* HOLD Acknowledge output */ #define MCFG_TMS32025_XF_OUT_CB(_devcb) \ - devcb = &tms32025_device::set_xf_out_cb(*device, DEVCB_##_devcb); /* XF output */ + devcb = &downcast<tms32025_device &>(*device).set_xf_out_cb(DEVCB_##_devcb); /* XF output */ #define MCFG_TMS32025_DR_IN_CB(_devcb) \ - devcb = &tms32025_device::set_dr_in_cb(*device, DEVCB_##_devcb); /* Serial Data Receive input */ + devcb = &downcast<tms32025_device &>(*device).set_dr_in_cb(DEVCB_##_devcb); /* Serial Data Receive input */ #define MCFG_TMS32025_DX_OUT_CB(_devcb) \ - devcb = &tms32025_device::set_dx_out_cb(*device, DEVCB_##_devcb); /* Serial Data Transmit output */ + devcb = &downcast<tms32025_device &>(*device).set_dx_out_cb(DEVCB_##_devcb); /* Serial Data Transmit output */ /**************************************************************************** @@ -83,13 +83,13 @@ public: // construction/destruction tms32025_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template<class _Object> static devcb_base & set_bio_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_bio_in.set_callback(object); } - template<class _Object> static devcb_base & set_hold_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_hold_in.set_callback(object); } - template<class _Object> static devcb_base & set_hold_ack_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_hold_ack_out.set_callback(object); } - template<class _Object> static devcb_base & set_xf_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_xf_out.set_callback(object); } - template<class _Object> static devcb_base & set_dr_in_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_dr_in.set_callback(object); } - template<class _Object> static devcb_base & set_dx_out_cb(device_t &device, _Object object) { return downcast<tms32025_device &>(device).m_dx_out.set_callback(object); } + // configuration helpers + template<class Object> devcb_base &set_bio_in_cb(Object &&cb) { return m_bio_in.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_hold_in_cb(Object &&cb) { return m_hold_in.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_hold_ack_out_cb(Object &&cb) { return m_hold_ack_out.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_xf_out_cb(Object &&cb) { return m_xf_out.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_dr_in_cb(Object &&cb) { return m_dr_in.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_dx_out_cb(Object &&cb) { return m_dx_out.set_callback(std::forward<Object>(cb)); } DECLARE_READ16_MEMBER( drr_r); DECLARE_WRITE16_MEMBER(drr_w); diff --git a/src/devices/cpu/tms32031/tms32031.h b/src/devices/cpu/tms32031/tms32031.h index be5ef8d3c42..4b6b3a8057b 100644 --- a/src/devices/cpu/tms32031/tms32031.h +++ b/src/devices/cpu/tms32031/tms32031.h @@ -91,16 +91,16 @@ enum //************************************************************************** #define MCFG_TMS3203X_MCBL(_mode) \ - tms3203x_device::set_mcbl_mode(*device, _mode); + downcast<tms3203x_device &>(*device).set_mcbl_mode(_mode); #define MCFG_TMS3203X_XF0_CB(_devcb) \ - devcb = &tms3203x_device::set_xf0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms3203x_device &>(*device).set_xf0_callback(DEVCB_##_devcb); #define MCFG_TMS3203X_XF1_CB(_devcb) \ - devcb = &tms3203x_device::set_xf1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms3203x_device &>(*device).set_xf1_callback(DEVCB_##_devcb); #define MCFG_TMS3203X_IACK_CB(_devcb) \ - devcb = &tms3203x_device::set_iack_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms3203x_device &>(*device).set_iack_callback(DEVCB_##_devcb); //************************************************************************** @@ -139,10 +139,10 @@ public: virtual ~tms3203x_device(); // inline configuration helpers - static void set_mcbl_mode(device_t &device, bool mode) { downcast<tms3203x_device &>(device).m_mcbl_mode = mode; } - template <class Object> static devcb_base &set_xf0_callback(device_t &device, Object &&cb) { return downcast<tms3203x_device &>(device).m_xf0_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_xf1_callback(device_t &device, Object &&cb) { return downcast<tms3203x_device &>(device).m_xf1_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_iack_callback(device_t &device, Object &&cb) { return downcast<tms3203x_device &>(device).m_iack_cb.set_callback(std::forward<Object>(cb)); } + void set_mcbl_mode(bool mode) { m_mcbl_mode = mode; } + template <class Object> devcb_base &set_xf0_callback(Object &&cb) { return m_xf0_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_xf1_callback(Object &&cb) { return m_xf1_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_iack_callback(Object &&cb) { return m_iack_cb.set_callback(std::forward<Object>(cb)); } // public interfaces static float fp_to_float(uint32_t floatdata); diff --git a/src/devices/cpu/tms34010/tms34010.h b/src/devices/cpu/tms34010/tms34010.h index d1d1c35ca63..056f414d80a 100644 --- a/src/devices/cpu/tms34010/tms34010.h +++ b/src/devices/cpu/tms34010/tms34010.h @@ -104,40 +104,40 @@ enum #define MCFG_TMS340X0_HALT_ON_RESET(_value) \ - tms340x0_device::set_halt_on_reset(*device, _value); + downcast<tms340x0_device &>(*device).set_halt_on_reset(_value); #define MCFG_TMS340X0_PIXEL_CLOCK(_value) \ - tms340x0_device::set_pixel_clock(*device, _value); + downcast<tms340x0_device &>(*device).set_pixel_clock(_value); #define MCFG_TMS340X0_PIXELS_PER_CLOCK(_value) \ - tms340x0_device::set_pixels_per_clock(*device, _value); + downcast<tms340x0_device &>(*device).set_pixels_per_clock(_value); #define TMS340X0_SCANLINE_IND16_CB_MEMBER(_name) void _name(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms340x0_device::display_params *params) #define MCFG_TMS340X0_SCANLINE_IND16_CB(_class, _method) \ - tms340x0_device::set_scanline_ind16_callback(*device, tms340x0_device::scanline_ind16_cb_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<tms340x0_device &>(*device).set_scanline_ind16_callback(tms340x0_device::scanline_ind16_cb_delegate(&_class::_method, #_class "::" #_method, this)); #define TMS340X0_SCANLINE_RGB32_CB_MEMBER(_name) void _name(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms340x0_device::display_params *params) #define MCFG_TMS340X0_SCANLINE_RGB32_CB(_class, _method) \ - tms340x0_device::set_scanline_rgb32_callback(*device, tms340x0_device::scanline_rgb32_cb_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<tms340x0_device &>(*device).set_scanline_rgb32_callback(tms340x0_device::scanline_rgb32_cb_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_TMS340X0_OUTPUT_INT_CB(_devcb) \ - devcb = &tms340x0_device::set_output_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tms340x0_device &>(*device).set_output_int_callback(DEVCB_##_devcb); #define TMS340X0_TO_SHIFTREG_CB_MEMBER(_name) void _name(address_space &space, offs_t address, uint16_t *shiftreg) #define MCFG_TMS340X0_TO_SHIFTREG_CB(_class, _method) \ - tms340x0_device::set_to_shiftreg_callback(*device, tms340x0_device::to_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<tms340x0_device &>(*device).set_to_shiftreg_callback(tms340x0_device::to_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, this)); #define TMS340X0_FROM_SHIFTREG_CB_MEMBER(_name) void _name(address_space &space, offs_t address, uint16_t *shiftreg) #define MCFG_TMS340X0_FROM_SHIFTREG_CB(_class, _method) \ - tms340x0_device::set_from_shiftreg_callback(*device, tms340x0_device::from_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<tms340x0_device &>(*device).set_from_shiftreg_callback(tms340x0_device::from_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, this)); class tms340x0_device : public cpu_device, @@ -160,15 +160,15 @@ public: typedef device_delegate<void (address_space &space, offs_t address, uint16_t *shiftreg)> to_shiftreg_cb_delegate; typedef device_delegate<void (address_space &space, offs_t address, uint16_t *shiftreg)> from_shiftreg_cb_delegate; - static void set_halt_on_reset(device_t &device, bool halt_on_reset) { downcast<tms340x0_device &>(device).m_halt_on_reset = halt_on_reset; } - static void set_pixel_clock(device_t &device, uint32_t pixclock) { downcast<tms340x0_device &>(device).m_pixclock = pixclock; } - static void set_pixel_clock(device_t &device, const XTAL &xtal) { set_pixel_clock(device, xtal.value()); } - static void set_pixels_per_clock(device_t &device, int pixperclock) { downcast<tms340x0_device &>(device).m_pixperclock = pixperclock; } - static void set_scanline_ind16_callback(device_t &device, scanline_ind16_cb_delegate callback) { downcast<tms340x0_device &>(device).m_scanline_ind16_cb = callback; } - static void set_scanline_rgb32_callback(device_t &device, scanline_rgb32_cb_delegate callback) { downcast<tms340x0_device &>(device).m_scanline_rgb32_cb = callback; } - template <class Object> static devcb_base &set_output_int_callback(device_t &device, Object &&cb) { return downcast<tms340x0_device &>(device).m_output_int_cb.set_callback(std::forward<Object>(cb)); } - static void set_to_shiftreg_callback(device_t &device, to_shiftreg_cb_delegate callback) { downcast<tms340x0_device &>(device).m_to_shiftreg_cb = callback; } - static void set_from_shiftreg_callback(device_t &device, from_shiftreg_cb_delegate callback) { downcast<tms340x0_device &>(device).m_from_shiftreg_cb = callback; } + void set_halt_on_reset(bool halt_on_reset) { m_halt_on_reset = halt_on_reset; } + void set_pixel_clock(uint32_t pixclock) { m_pixclock = pixclock; } + void set_pixel_clock(const XTAL &xtal) { set_pixel_clock(xtal.value()); } + void set_pixels_per_clock(int pixperclock) { m_pixperclock = pixperclock; } + template <typename Object> void set_scanline_ind16_callback(Object &&cb) { m_scanline_ind16_cb = std::forward<Object>(cb); } + template <typename Object> void set_scanline_rgb32_callback(Object &&cb) { m_scanline_rgb32_cb = std::forward<Object>(cb); } + template <class Object> devcb_base &set_output_int_callback(Object &&cb) { return m_output_int_cb.set_callback(std::forward<Object>(cb)); } + template <typename Object> void set_to_shiftreg_callback(Object &&cb) { m_to_shiftreg_cb = std::forward<Object>(cb); } + template <typename Object> void set_from_shiftreg_callback(Object &&cb) { m_from_shiftreg_cb = std::forward<Object>(cb); } void get_display_params(display_params *params); void tms34010_state_postload(); diff --git a/src/devices/cpu/tms7000/tms7000.h b/src/devices/cpu/tms7000/tms7000.h index 987aa8af543..2fdbf26af43 100644 --- a/src/devices/cpu/tms7000/tms7000.h +++ b/src/devices/cpu/tms7000/tms7000.h @@ -16,29 +16,29 @@ // read-only on 70x0 #define MCFG_TMS7000_IN_PORTA_CB(_devcb) \ - devcb = &tms7000_device::set_port_read_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(0, DEVCB_##_devcb); #define MCFG_TMS7000_OUT_PORTA_CB(_devcb) \ - devcb = &tms7000_device::set_port_write_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(0, DEVCB_##_devcb); // write-only #define MCFG_TMS7000_OUT_PORTB_CB(_devcb) \ - devcb = &tms7000_device::set_port_write_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(1, DEVCB_##_devcb); #define MCFG_TMS7000_IN_PORTC_CB(_devcb) \ - devcb = &tms7000_device::set_port_read_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(2, DEVCB_##_devcb); #define MCFG_TMS7000_OUT_PORTC_CB(_devcb) \ - devcb = &tms7000_device::set_port_write_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(2, DEVCB_##_devcb); #define MCFG_TMS7000_IN_PORTD_CB(_devcb) \ - devcb = &tms7000_device::set_port_read_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(3, DEVCB_##_devcb); #define MCFG_TMS7000_OUT_PORTD_CB(_devcb) \ - devcb = &tms7000_device::set_port_write_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(3, DEVCB_##_devcb); // TMS70C46 only #define MCFG_TMS7000_IN_PORTE_CB(_devcb) \ - devcb = &tms7000_device::set_port_read_cb(*device, 4, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_read_cb(4, DEVCB_##_devcb); #define MCFG_TMS7000_OUT_PORTE_CB(_devcb) \ - devcb = &tms7000_device::set_port_write_cb(*device, 4, DEVCB_##_devcb); + devcb = &downcast<tms7000_device &>(*device).set_port_write_cb(4, DEVCB_##_devcb); enum { TMS7000_PC=1, TMS7000_SP, TMS7000_ST }; @@ -57,11 +57,9 @@ public: // construction/destruction tms7000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration - template<class Object> - static devcb_base &set_port_read_cb(device_t &device, int p, Object &&object) { return downcast<tms7000_device &>(device).m_port_in_cb[p].set_callback(std::move(object)); } - template<class Object> - static devcb_base &set_port_write_cb(device_t &device, int p, Object &&object) { return downcast<tms7000_device &>(device).m_port_out_cb[p].set_callback(std::move(object)); } + // configuration + template<class Object> devcb_base &set_port_read_cb(int p, Object &&cb) { return m_port_in_cb[p].set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_port_write_cb(int p, Object &&cb) { return m_port_out_cb[p].set_callback(std::forward<Object>(cb)); } DECLARE_READ8_MEMBER(tms7000_unmapped_rf_r) { if (!machine().side_effects_disabled()) logerror("'%s' (%04X): unmapped_rf_r @ $%04x\n", tag(), m_pc, offset + 0x80); return 0; }; DECLARE_WRITE8_MEMBER(tms7000_unmapped_rf_w) { logerror("'%s' (%04X): unmapped_rf_w @ $%04x = $%02x\n", tag(), m_pc, offset + 0x80, data); }; diff --git a/src/devices/cpu/tms9900/tms9900.h b/src/devices/cpu/tms9900/tms9900.h index 61a0fc46b69..7c320908937 100644 --- a/src/devices/cpu/tms9900/tms9900.h +++ b/src/devices/cpu/tms9900/tms9900.h @@ -54,13 +54,13 @@ public: void set_hold(int state); // Callbacks - template<class _Object> static devcb_base &static_set_extop_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_external_operation.set_callback(object); } - template<class _Object> static devcb_base &static_set_intlevel_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_get_intlevel.set_callback(object); } - template<class _Object> static devcb_base &static_set_iaq_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_iaq_line.set_callback(object); } - template<class _Object> static devcb_base &static_set_clkout_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_clock_out_line.set_callback(object); } - template<class _Object> static devcb_base &static_set_wait_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_wait_line.set_callback(object); } - template<class _Object> static devcb_base &static_set_holda_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_holda_line.set_callback(object); } - template<class _Object> static devcb_base &static_set_dbin_callback(device_t &device, _Object object) { return downcast<tms99xx_device &>(device).m_dbin_line.set_callback(object); } + template<class Object> devcb_base &set_extop_callback(Object &&cb) { return m_external_operation.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_intlevel_callback(Object &&cb) { return m_get_intlevel.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_iaq_callback(Object &&cb) { return m_iaq_line.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_clkout_callback(Object &&cb) { return m_clock_out_line.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_wait_callback(Object &&cb) { return m_wait_line.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_holda_callback(Object &&cb) { return m_holda_line.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_dbin_callback(Object &&cb) { return m_dbin_line.set_callback(std::forward<Object>(cb)); } protected: tms99xx_device(const machine_config &mconfig, device_type type, diff --git a/src/devices/cpu/tms9900/tms9995.h b/src/devices/cpu/tms9900/tms9995.h index 9550cff94e4..e623c1573af 100644 --- a/src/devices/cpu/tms9900/tms9995.h +++ b/src/devices/cpu/tms9900/tms9995.h @@ -28,19 +28,19 @@ enum }; #define MCFG_TMS9995_EXTOP_HANDLER( _extop) \ - devcb = &tms9995_device::static_set_extop_callback( *device, DEVCB_##_extop ); + devcb = &downcast<tms9995_device &>(*device).set_extop_callback(DEVCB_##_extop); #define MCFG_TMS9995_IAQ_HANDLER( _iaq ) \ - devcb = &tms9995_device::static_set_iaq_callback( *device, DEVCB_##_iaq ); + devcb = &downcast<tms9995_device &>(*device).set_iaq_callback(DEVCB_##_iaq); #define MCFG_TMS9995_CLKOUT_HANDLER( _clkout ) \ - devcb = &tms9995_device::static_set_clkout_callback( *device, DEVCB_##_clkout ); + devcb = &downcast<tms9995_device &>(*device).set_clkout_callback(DEVCB_##_clkout); #define MCFG_TMS9995_HOLDA_HANDLER( _holda ) \ - devcb = &tms9995_device::static_set_holda_callback( *device, DEVCB_##_holda ); + devcb = &downcast<tms9995_device &>(*device).set_holda_callback(DEVCB_##_holda); #define MCFG_TMS9995_DBIN_HANDLER( _dbin ) \ - devcb = &tms9995_device::static_set_dbin_callback( *device, DEVCB_##_dbin ); + devcb = &downcast<tms9995_device &>(*device).set_dbin_callback(DEVCB_##_dbin); #define MCFG_TMS9995_ENABLE_OVINT( _ovint ) \ downcast<tms9995_device*>(device)->set_overflow_interrupt( _ovint ); @@ -66,11 +66,11 @@ public: DECLARE_WRITE_LINE_MEMBER( reset_line ); // Callbacks - template<class _Object> static devcb_base &static_set_extop_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_external_operation.set_callback(object); } - template<class _Object> static devcb_base &static_set_iaq_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_iaq_line.set_callback(object); } - template<class _Object> static devcb_base &static_set_clkout_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_clock_out_line.set_callback(object); } - template<class _Object> static devcb_base &static_set_holda_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_holda_line.set_callback(object); } - template<class _Object> static devcb_base &static_set_dbin_callback(device_t &device, _Object object) { return downcast<tms9995_device &>(device).m_dbin_line.set_callback(object); } + template<class Object> devcb_base &set_extop_callback(Object &&cb) { return m_external_operation.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_iaq_callback(Object &&cb) { return m_iaq_line.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_clkout_callback(Object &&cb) { return m_clock_out_line.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_holda_callback(Object &&cb) { return m_holda_line.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_dbin_callback(Object &&cb) { return m_dbin_line.set_callback(std::forward<Object>(cb)); } // For debugger access uint8_t debug_read_onchip_memory(offs_t addr) { return m_onchip_memory[addr & 0xff]; }; diff --git a/src/devices/cpu/tms9900/tms99com.h b/src/devices/cpu/tms9900/tms99com.h index 3a1aeeb57ee..2ee65b3f2cc 100644 --- a/src/devices/cpu/tms9900/tms99com.h +++ b/src/devices/cpu/tms9900/tms99com.h @@ -47,25 +47,25 @@ MCFG_DEVICE_IO_MAP(_iomap) #define MCFG_TMS99xx_EXTOP_HANDLER( _extop) \ - devcb = &tms99xx_device::static_set_extop_callback( *device, DEVCB_##_extop ); + devcb = &downcast<tms99xx_device &>(*device).set_extop_callback(DEVCB_##_extop); #define MCFG_TMS99xx_INTLEVEL_HANDLER( _intlevel ) \ - devcb = &tms99xx_device::static_set_intlevel_callback( *device, DEVCB_##_intlevel ); + devcb = &downcast<tms99xx_device &>(*device).set_intlevel_callback(DEVCB_##_intlevel); #define MCFG_TMS99xx_IAQ_HANDLER( _iaq ) \ - devcb = &tms99xx_device::static_set_iaq_callback( *device, DEVCB_##_iaq ); + devcb = &downcast<tms99xx_device &>(*device).set_iaq_callback(DEVCB_##_iaq); #define MCFG_TMS99xx_CLKOUT_HANDLER( _clkout ) \ - devcb = &tms99xx_device::static_set_clkout_callback( *device, DEVCB_##_clkout ); + devcb = &downcast<tms99xx_device &>(*device).set_clkout_callback(DEVCB_##_clkout); #define MCFG_TMS99xx_WAIT_HANDLER( _wait ) \ - devcb = &tms99xx_device::static_set_wait_callback( *device, DEVCB_##_wait ); + devcb = &downcast<tms99xx_device &>(*device).set_wait_callback(DEVCB_##_wait); #define MCFG_TMS99xx_HOLDA_HANDLER( _holda ) \ - devcb = &tms99xx_device::static_set_holda_callback( *device, DEVCB_##_holda ); + devcb = &downcast<tms99xx_device &>(*device).set_holda_callback(DEVCB_##_holda); #define MCFG_TMS99xx_DBIN_HANDLER( _dbin ) \ - devcb = &tms99xx_device::static_set_dbin_callback( *device, DEVCB_##_dbin ); + devcb = &downcast<tms99xx_device &>(*device).set_dbin_callback(DEVCB_##_dbin); enum { diff --git a/src/devices/cpu/ucom4/ucom4.h b/src/devices/cpu/ucom4/ucom4.h index 3dcadb11e26..1b47c612e37 100644 --- a/src/devices/cpu/ucom4/ucom4.h +++ b/src/devices/cpu/ucom4/ucom4.h @@ -14,35 +14,35 @@ // I/O ports setup #define MCFG_UCOM4_READ_A_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_read_a_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_read_a_callback(DEVCB_##_devcb); #define MCFG_UCOM4_READ_B_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_read_b_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_read_b_callback(DEVCB_##_devcb); #define MCFG_UCOM4_READ_C_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_read_c_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_read_c_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_C_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_write_c_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_write_c_callback(DEVCB_##_devcb); #define MCFG_UCOM4_READ_D_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_read_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_read_d_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_D_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_write_d_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_write_d_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_E_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_write_e_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_write_e_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_F_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_write_f_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_write_f_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_G_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_write_g_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_write_g_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_H_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_write_h_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_write_h_callback(DEVCB_##_devcb); #define MCFG_UCOM4_WRITE_I_CB(_devcb) \ - devcb = &ucom4_cpu_device::set_write_i_callback(*device, DEVCB_##_devcb); + devcb = &downcast<ucom4_cpu_device &>(*device).set_write_i_callback(DEVCB_##_devcb); enum { @@ -99,19 +99,19 @@ enum class ucom4_cpu_device : public cpu_device { public: - // static configuration helpers - template <class Object> static devcb_base &set_read_a_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_a.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_b_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_b.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_c_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_c.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_read_d_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_read_d.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_write_c_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_c.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_d_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_d.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_e_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_e.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_f_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_f.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_g_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_g.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_h_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_h.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_write_i_callback(device_t &device, Object &&cb) { return downcast<ucom4_cpu_device &>(device).m_write_i.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_read_a_callback(Object &&cb) { return m_read_a.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_b_callback(Object &&cb) { return m_read_b.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_read_c_callback(Object &&cb) { return m_read_c.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_c_callback(Object &&cb) { return m_write_c.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_e_callback(Object &&cb) { return m_write_e.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)); } + template <class Object> devcb_base &set_write_g_callback(Object &&cb) { return m_write_g.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_h_callback(Object &&cb) { return m_write_h.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_write_i_callback(Object &&cb) { return m_write_i.set_callback(std::forward<Object>(cb)); } protected: // construction/destruction diff --git a/src/devices/cpu/upd7725/upd7725.h b/src/devices/cpu/upd7725/upd7725.h index ec00eb1e153..16c196c5a66 100644 --- a/src/devices/cpu/upd7725/upd7725.h +++ b/src/devices/cpu/upd7725/upd7725.h @@ -30,37 +30,37 @@ enum #define MCFG_NECDSP_IN_INT_CB(_devcb) \ - devcb = &necdsp_device::set_in_int_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_in_int_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_SI_CB(_devcb) \ - devcb = &necdsp_device::set_in_si_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_in_si_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_SCK_CB(_devcb) \ - devcb = &necdsp_device::set_in_sck_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_in_sck_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_SIEN_CB(_devcb) \ - devcb = &necdsp_device::set_in_sien_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_in_sien_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_SOEN_CB(_devcb) \ - devcb = &necdsp_device::set_in_soen_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_in_soen_callback(DEVCB_##_devcb); #define MCFG_NECDSP_IN_DACK_CB(_devcb) \ - devcb = &necdsp_device::set_in_dack_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_in_dack_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_P0_CB(_devcb) \ - devcb = &necdsp_device::set_out_p0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_out_p0_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_P1_CB(_devcb) \ - devcb = &necdsp_device::set_out_p1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_out_p1_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_SO_CB(_devcb) \ - devcb = &necdsp_device::set_out_so_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_out_so_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_SORQ_CB(_devcb) \ - devcb = &necdsp_device::set_out_sorq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_out_sorq_callback(DEVCB_##_devcb); #define MCFG_NECDSP_OUT_DRQ_CB(_devcb) \ - devcb = &necdsp_device::set_out_drq_callback(*device, DEVCB_##_devcb); + devcb = &downcast<necdsp_device &>(*device).set_out_drq_callback(DEVCB_##_devcb); // ======================> necdsp_device @@ -68,17 +68,17 @@ enum class necdsp_device : public cpu_device { public: - template <class Object> static devcb_base &set_in_int_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_int_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_in_si_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_si_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_in_sck_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_sck_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_in_sien_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_sien_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_in_soen_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_soen_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_in_dack_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_in_dack_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_p0_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_p0_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_out_p1_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_p1_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_out_so_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_so_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_out_sorq_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_sorq_cb.set_callback(std::forward<Object>(cb)); } - //template <class Object> static devcb_base &set_out_drq_callback(device_t &device, Object &&cb) { return downcast<necdsp_device &>(device).m_out_drq_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_in_int_callback(Object &&cb) { return m_in_int_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_in_si_callback(Object &&cb) { return m_in_si_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_in_sck_callback(Object &&cb) { return m_in_sck_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_in_sien_callback(Object &&cb) { return m_in_sien_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_in_soen_callback(Object &&cb) { return m_in_soen_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_in_dack_callback(Object &&cb) { return m_in_dack_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_p0_callback(Object &&cb) { return m_out_p0_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_out_p1_callback(Object &&cb) { return m_out_p1_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_out_so_callback(Object &&cb) { return m_out_so_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_out_sorq_callback(Object &&cb) { return m_out_sorq_cb.set_callback(std::forward<Object>(cb)); } + //template <class Object> devcb_base &set_out_drq_callback(Object &&cb) { return m_out_drq_cb.set_callback(std::forward<Object>(cb)); } uint8_t snesdsp_read(bool mode); void snesdsp_write(bool mode, uint8_t data); diff --git a/src/devices/cpu/upd7810/upd7810.h b/src/devices/cpu/upd7810/upd7810.h index eb68f1b0537..1f0e12fcc85 100644 --- a/src/devices/cpu/upd7810/upd7810.h +++ b/src/devices/cpu/upd7810/upd7810.h @@ -39,74 +39,74 @@ enum #define MCFG_UPD7810_TO(_devcb) \ - devcb = &upd7810_device::set_to_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_to_func(DEVCB_##_devcb); #define MCFG_UPD7810_CO0(_devcb) \ - devcb = &upd7810_device::set_co0_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_co0_func(DEVCB_##_devcb); #define MCFG_UPD7810_CO1(_devcb) \ - devcb = &upd7810_device::set_co1_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_co1_func(DEVCB_##_devcb); #define MCFG_UPD7810_TXD(_devcb) \ - devcb = &upd7810_device::set_txd_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_txd_func(DEVCB_##_devcb); #define MCFG_UPD7810_RXD(_devcb) \ - devcb = &upd7810_device::set_rxd_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_rxd_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN0(_devcb) \ - devcb = &upd7810_device::set_an0_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an0_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN1(_devcb) \ - devcb = &upd7810_device::set_an1_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an1_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN2(_devcb) \ - devcb = &upd7810_device::set_an2_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an2_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN3(_devcb) \ - devcb = &upd7810_device::set_an3_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an3_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN4(_devcb) \ - devcb = &upd7810_device::set_an4_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an4_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN5(_devcb) \ - devcb = &upd7810_device::set_an5_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an5_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN6(_devcb) \ - devcb = &upd7810_device::set_an6_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an6_func(DEVCB_##_devcb); #define MCFG_UPD7810_AN7(_devcb) \ - devcb = &upd7810_device::set_an7_func(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_an7_func(DEVCB_##_devcb); #define MCFG_UPD7810_PORTA_READ_CB(_devcb) \ - devcb = &upd7810_device::set_pa_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pa_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTB_READ_CB(_devcb) \ - devcb = &upd7810_device::set_pb_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pb_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTC_READ_CB(_devcb) \ - devcb = &upd7810_device::set_pc_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pc_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTD_READ_CB(_devcb) \ - devcb = &upd7810_device::set_pd_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pd_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTF_READ_CB(_devcb) \ - devcb = &upd7810_device::set_pf_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pf_in_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTA_WRITE_CB(_devcb) \ - devcb = &upd7810_device::set_pa_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pa_out_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTB_WRITE_CB(_devcb) \ - devcb = &upd7810_device::set_pb_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pb_out_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTC_WRITE_CB(_devcb) \ - devcb = &upd7810_device::set_pc_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pc_out_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTD_WRITE_CB(_devcb) \ - devcb = &upd7810_device::set_pd_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pd_out_cb(DEVCB_##_devcb); #define MCFG_UPD7810_PORTF_WRITE_CB(_devcb) \ - devcb = &upd7810_device::set_pf_out_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pf_out_cb(DEVCB_##_devcb); #define MCFG_UPD7807_PORTA_READ_CB MCFG_UPD7810_PORTA_READ_CB @@ -121,7 +121,7 @@ enum #define MCFG_UPD7807_PORTF_WRITE_CB MCFG_UPD7810_PORTF_WRITE_CB #define MCFG_UPD7807_PORTT_READ_CB(_devcb) \ - devcb = &upd7810_device::set_pt_in_cb(*device, DEVCB_##_devcb); + devcb = &downcast<upd7810_device &>(*device).set_pt_in_cb(DEVCB_##_devcb); class upd7810_device : public cpu_device @@ -130,33 +130,33 @@ public: // construction/destruction upd7810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // static configuration helpers - template <class Object> static devcb_base &set_to_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_to_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_co0_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_co0_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_co1_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_co1_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_txd_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_txd_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_rxd_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_rxd_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an0_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an0_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an1_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an1_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an2_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an2_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an3_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an3_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an4_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an4_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an5_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an5_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an6_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an6_func.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_an7_func(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_an7_func.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_pa_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pa_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pb_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pb_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pc_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pc_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pd_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pd_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pf_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pf_in_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pa_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pa_out_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pb_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pb_out_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pc_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pc_out_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pd_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pd_out_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_pf_out_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pf_out_cb.set_callback(std::forward<Object>(cb)); } - - template <class Object> static devcb_base &set_pt_in_cb(device_t &device, Object &&cb) { return downcast<upd7810_device &>(device).m_pt_in_cb.set_callback(std::forward<Object>(cb)); } + // configuration helpers + template <class Object> devcb_base &set_to_func(Object &&cb) { return m_to_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_co0_func(Object &&cb) { return m_co0_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_co1_func(Object &&cb) { return m_co1_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_txd_func(Object &&cb) { return m_txd_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rxd_func(Object &&cb) { return m_rxd_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an0_func(Object &&cb) { return m_an0_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an1_func(Object &&cb) { return m_an1_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an2_func(Object &&cb) { return m_an2_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an3_func(Object &&cb) { return m_an3_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an4_func(Object &&cb) { return m_an4_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an5_func(Object &&cb) { return m_an5_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an6_func(Object &&cb) { return m_an6_func.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_an7_func(Object &&cb) { return m_an7_func.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_pa_in_cb(Object &&cb) { return m_pa_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pb_in_cb(Object &&cb) { return m_pb_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pc_in_cb(Object &&cb) { return m_pc_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pd_in_cb(Object &&cb) { return m_pd_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pf_in_cb(Object &&cb) { return m_pf_in_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pa_out_cb(Object &&cb) { return m_pa_out_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pb_out_cb(Object &&cb) { return m_pb_out_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pc_out_cb(Object &&cb) { return m_pc_out_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pd_out_cb(Object &&cb) { return m_pd_out_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_pf_out_cb(Object &&cb) { return m_pf_out_cb.set_callback(std::forward<Object>(cb)); } + + template <class Object> devcb_base &set_pt_in_cb(Object &&cb) { return m_pt_in_cb.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE8_MEMBER(pa_w); DECLARE_WRITE8_MEMBER(pb_w); diff --git a/src/devices/cpu/z8/z8.h b/src/devices/cpu/z8/z8.h index ad5bf2a1c42..96654f1efc8 100644 --- a/src/devices/cpu/z8/z8.h +++ b/src/devices/cpu/z8/z8.h @@ -13,46 +13,44 @@ #define MCFG_Z8_PORT_P0_READ_CB(_devcb) \ - devcb = &z8_device::set_input_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_input_cb(0, DEVCB_##_devcb); #define MCFG_Z8_PORT_P1_READ_CB(_devcb) \ - devcb = &z8_device::set_input_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_input_cb(1, DEVCB_##_devcb); #define MCFG_Z8_PORT_P2_READ_CB(_devcb) \ - devcb = &z8_device::set_input_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_input_cb(2, DEVCB_##_devcb); #define MCFG_Z8_PORT_P3_READ_CB(_devcb) \ - devcb = &z8_device::set_input_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_input_cb(3, DEVCB_##_devcb); #define MCFG_Z8_PORT_P0_WRITE_CB(_devcb) \ - devcb = &z8_device::set_output_cb(*device, 0, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_output_cb(0, DEVCB_##_devcb); #define MCFG_Z8_PORT_P1_WRITE_CB(_devcb) \ - devcb = &z8_device::set_output_cb(*device, 1, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_output_cb(1, DEVCB_##_devcb); #define MCFG_Z8_PORT_P2_WRITE_CB(_devcb) \ - devcb = &z8_device::set_output_cb(*device, 2, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_output_cb(2, DEVCB_##_devcb); #define MCFG_Z8_PORT_P3_WRITE_CB(_devcb) \ - devcb = &z8_device::set_output_cb(*device, 3, DEVCB_##_devcb); + devcb = &downcast<z8_device &>(*device).set_output_cb(3, DEVCB_##_devcb); class z8_device : public cpu_device { public: - // static configuration - template<class Object> - static devcb_base &set_input_cb(device_t &device, int port, Object &&object) + // configuration + template<class Object> devcb_base &set_input_cb(int port, Object &&object) { assert(port >= 0 && port < 4); - return downcast<z8_device &>(device).m_input_cb[port].set_callback(std::forward<Object>(object)); + return m_input_cb[port].set_callback(std::forward<Object>(object)); } - template<class Object> - static devcb_base &set_output_cb(device_t &device, int port, Object &&object) + template<class Object> devcb_base &set_output_cb(int port, Object &&object) { assert(port >= 0 && port < 4); - return downcast<z8_device &>(device).m_output_cb[port].set_callback(std::forward<Object>(object)); + return m_output_cb[port].set_callback(std::forward<Object>(object)); } protected: diff --git a/src/devices/cpu/z80/kl5c80a12.h b/src/devices/cpu/z80/kl5c80a12.h index c9dbf4b118e..d77dce279c5 100644 --- a/src/devices/cpu/z80/kl5c80a12.h +++ b/src/devices/cpu/z80/kl5c80a12.h @@ -36,8 +36,6 @@ class kl5c80a12_device : public z80_device public: kl5c80a12_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t); - // static configuration helpers - protected: // device-level overrides virtual void device_add_mconfig(machine_config &config) override; diff --git a/src/devices/cpu/z80/tmpz84c011.h b/src/devices/cpu/z80/tmpz84c011.h index f54b639a7f2..b210dbd1589 100644 --- a/src/devices/cpu/z80/tmpz84c011.h +++ b/src/devices/cpu/z80/tmpz84c011.h @@ -25,46 +25,46 @@ // CTC callbacks #define MCFG_TMPZ84C011_ZC0_CB(_devcb) \ - devcb = &tmpz84c011_device::set_zc0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_zc0_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C011_ZC1_CB(_devcb) \ - devcb = &tmpz84c011_device::set_zc1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_zc1_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C011_ZC2_CB(_devcb) \ - devcb = &tmpz84c011_device::set_zc2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_zc2_callback(DEVCB_##_devcb); // I/O callbacks #define MCFG_TMPZ84C011_PORTA_READ_CB(_devcb) \ - devcb = &tmpz84c011_device::set_inportsa_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_inportsa_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTB_READ_CB(_devcb) \ - devcb = &tmpz84c011_device::set_inportsb_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_inportsb_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTC_READ_CB(_devcb) \ - devcb = &tmpz84c011_device::set_inportsc_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_inportsc_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTD_READ_CB(_devcb) \ - devcb = &tmpz84c011_device::set_inportsd_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_inportsd_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTE_READ_CB(_devcb) \ - devcb = &tmpz84c011_device::set_inportse_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_inportse_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTA_WRITE_CB(_devcb) \ - devcb = &tmpz84c011_device::set_outportsa_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_outportsa_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTB_WRITE_CB(_devcb) \ - devcb = &tmpz84c011_device::set_outportsb_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_outportsb_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTC_WRITE_CB(_devcb) \ - devcb = &tmpz84c011_device::set_outportsc_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_outportsc_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTD_WRITE_CB(_devcb) \ - devcb = &tmpz84c011_device::set_outportsd_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_outportsd_cb(DEVCB_##_devcb); #define MCFG_TMPZ84C011_PORTE_WRITE_CB(_devcb) \ - devcb = &tmpz84c011_device::set_outportse_cb(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c011_device &>(*device).set_outportse_cb(DEVCB_##_devcb); /*************************************************************************** @@ -76,22 +76,22 @@ class tmpz84c011_device : public z80_device public: tmpz84c011_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t); - // static configuration helpers - template<class _Object> static devcb_base &set_zc0_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc0_cb.set_callback(object); } - template<class _Object> static devcb_base &set_zc1_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc1_cb.set_callback(object); } - template<class _Object> static devcb_base &set_zc2_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc2_cb.set_callback(object); } - - template<class _Object> static devcb_base & set_outportsa_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportsa.set_callback(object); } - template<class _Object> static devcb_base & set_outportsb_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportsb.set_callback(object); } - template<class _Object> static devcb_base & set_outportsc_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportsc.set_callback(object); } - template<class _Object> static devcb_base & set_outportsd_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportsd.set_callback(object); } - template<class _Object> static devcb_base & set_outportse_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_outportse.set_callback(object); } - - template<class _Object> static devcb_base & set_inportsa_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportsa.set_callback(object); } - template<class _Object> static devcb_base & set_inportsb_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportsb.set_callback(object); } - template<class _Object> static devcb_base & set_inportsc_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportsc.set_callback(object); } - template<class _Object> static devcb_base & set_inportsd_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportsd.set_callback(object); } - template<class _Object> static devcb_base & set_inportse_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportse.set_callback(object); } + // configuration helpers + template<class Object> devcb_base &set_zc0_callback(Object &&cb) { return m_zc0_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_zc1_callback(Object &&cb) { return m_zc1_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_zc2_callback(Object &&cb) { return m_zc2_cb.set_callback(std::forward<Object>(cb)); } + + template<class Object> devcb_base &set_outportsa_cb(Object &&cb) { return m_outportsa.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_outportsb_cb(Object &&cb) { return m_outportsb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_outportsc_cb(Object &&cb) { return m_outportsc.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_outportsd_cb(Object &&cb) { return m_outportsd.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_outportse_cb(Object &&cb) { return m_outportse.set_callback(std::forward<Object>(cb)); } + + template<class Object> devcb_base &set_inportsa_cb(Object &&cb) { return m_inportsa.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_inportsb_cb(Object &&cb) { return m_inportsb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_inportsc_cb(Object &&cb) { return m_inportsc.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_inportsd_cb(Object &&cb) { return m_inportsd.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_inportse_cb(Object &&cb) { return m_inportse.set_callback(std::forward<Object>(cb)); } // CTC public interface DECLARE_WRITE_LINE_MEMBER( trg0 ) { m_ctc->trg0(state); } diff --git a/src/devices/cpu/z80/tmpz84c015.h b/src/devices/cpu/z80/tmpz84c015.h index f1729207674..c061b95efb1 100644 --- a/src/devices/cpu/z80/tmpz84c015.h +++ b/src/devices/cpu/z80/tmpz84c015.h @@ -24,77 +24,77 @@ // SIO callbacks #define MCFG_TMPZ84C015_OUT_TXDA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_txda_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_txda_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_DTRA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_dtra_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_dtra_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_RTSA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_rtsa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_rtsa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_WRDYA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_wrdya_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_wrdya_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_SYNCA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_synca_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_synca_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_TXDB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_txdb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_txdb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_DTRB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_dtrb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_dtrb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_RTSB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_rtsb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_rtsb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_WRDYB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_wrdyb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_wrdyb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_SYNCB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_syncb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_syncb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_RXDRQA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_rxdrqa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_rxdrqa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_TXDRQA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_txdrqa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_txdrqa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_RXDRQB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_rxdrqb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_rxdrqb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_TXDRQB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_txdrqb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_txdrqb_callback(DEVCB_##_devcb); // CTC callbacks #define MCFG_TMPZ84C015_ZC0_CB(_devcb) \ - devcb = &tmpz84c015_device::set_zc0_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_zc0_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_ZC1_CB(_devcb) \ - devcb = &tmpz84c015_device::set_zc1_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_zc1_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_ZC2_CB(_devcb) \ - devcb = &tmpz84c015_device::set_zc2_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_zc2_callback(DEVCB_##_devcb); // PIO callbacks #define MCFG_TMPZ84C015_IN_PA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_in_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_in_pa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_PA_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_pa_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_pa_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_ARDY_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_ardy_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_ardy_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_IN_PB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_in_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_in_pb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_PB_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_pb_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_pb_callback(DEVCB_##_devcb); #define MCFG_TMPZ84C015_OUT_BRDY_CB(_devcb) \ - devcb = &tmpz84c015_device::set_out_brdy_callback(*device, DEVCB_##_devcb); + devcb = &downcast<tmpz84c015_device &>(*device).set_out_brdy_callback(DEVCB_##_devcb); /*************************************************************************** @@ -106,35 +106,35 @@ class tmpz84c015_device : public z80_device public: tmpz84c015_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t); - // static configuration helpers - template<class _Object> static devcb_base &set_out_txda_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_txda_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_dtra_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_dtra_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_rtsa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_rtsa_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_wrdya_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_wrdya_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_synca_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_synca_cb.set_callback(object); } - - template<class _Object> static devcb_base &set_out_txdb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_txdb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_dtrb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_dtrb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_rtsb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_rtsb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_wrdyb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_wrdyb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_syncb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_syncb_cb.set_callback(object); } - - template<class _Object> static devcb_base &set_out_rxdrqa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_rxdrqa_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_txdrqa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_txdrqa_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_rxdrqb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_rxdrqb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_txdrqb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_txdrqb_cb.set_callback(object); } - - template<class _Object> static devcb_base &set_zc0_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_zc0_cb.set_callback(object); } - template<class _Object> static devcb_base &set_zc1_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_zc1_cb.set_callback(object); } - template<class _Object> static devcb_base &set_zc2_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_zc2_cb.set_callback(object); } - - template<class _Object> static devcb_base &set_in_pa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_in_pa_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_pa_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_pa_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_ardy_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_ardy_cb.set_callback(object); } - - template<class _Object> static devcb_base &set_in_pb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_in_pb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_pb_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_pb_cb.set_callback(object); } - template<class _Object> static devcb_base &set_out_brdy_callback(device_t &device, _Object object) { return downcast<tmpz84c015_device &>(device).m_out_brdy_cb.set_callback(object); } + // configuration helpers + template<class Object> devcb_base &set_out_txda_callback(Object &&cb) { return m_out_txda_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_dtra_callback(Object &&cb) { return m_out_dtra_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_rtsa_callback(Object &&cb) { return m_out_rtsa_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_wrdya_callback(Object &&cb) { return m_out_wrdya_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_synca_callback(Object &&cb) { return m_out_synca_cb.set_callback(std::forward<Object>(cb)); } + + template<class Object> devcb_base &set_out_txdb_callback(Object &&cb) { return m_out_txdb_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_dtrb_callback(Object &&cb) { return m_out_dtrb_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_rtsb_callback(Object &&cb) { return m_out_rtsb_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_wrdyb_callback(Object &&cb) { return m_out_wrdyb_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_syncb_callback(Object &&cb) { return m_out_syncb_cb.set_callback(std::forward<Object>(cb)); } + + template<class Object> devcb_base &set_out_rxdrqa_callback(Object &&cb) { return m_out_rxdrqa_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_txdrqa_callback(Object &&cb) { return m_out_txdrqa_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_rxdrqb_callback(Object &&cb) { return m_out_rxdrqb_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_txdrqb_callback(Object &&cb) { return m_out_txdrqb_cb.set_callback(std::forward<Object>(cb)); } + + template<class Object> devcb_base &set_zc0_callback(Object &&cb) { return m_zc0_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_zc1_callback(Object &&cb) { return m_zc1_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_zc2_callback(Object &&cb) { return m_zc2_cb.set_callback(std::forward<Object>(cb)); } + + template<class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_ardy_callback(Object &&cb) { return m_out_ardy_cb.set_callback(std::forward<Object>(cb)); } + + template<class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_out_brdy_callback(Object &&cb) { return m_out_brdy_cb.set_callback(std::forward<Object>(cb)); } // SIO public interface DECLARE_WRITE_LINE_MEMBER( rxa_w ) { m_sio->rxa_w(state); } diff --git a/src/devices/cpu/z80/z80.h b/src/devices/cpu/z80/z80.h index 19f89a3cc22..3acb54b2cf0 100644 --- a/src/devices/cpu/z80/z80.h +++ b/src/devices/cpu/z80/z80.h @@ -8,13 +8,13 @@ #include "z80daisy.h" #define MCFG_Z80_SET_IRQACK_CALLBACK(_devcb) \ - devcb = &z80_device::set_irqack_cb(*device, DEVCB_##_devcb); + devcb = &downcast<z80_device &>(*device).set_irqack_cb(DEVCB_##_devcb); #define MCFG_Z80_SET_REFRESH_CALLBACK(_devcb) \ - devcb = &z80_device::set_refresh_cb(*device, DEVCB_##_devcb); + devcb = &downcast<z80_device &>(*device).set_refresh_cb(DEVCB_##_devcb); #define MCFG_Z80_SET_HALT_CALLBACK(_devcb) \ - devcb = &z80_device::set_halt_cb(*device, DEVCB_##_devcb); + devcb = &downcast<z80_device &>(*device).set_halt_cb(DEVCB_##_devcb); enum { @@ -42,9 +42,9 @@ public: z80_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); void z80_set_cycle_tables(const uint8_t *op, const uint8_t *cb, const uint8_t *ed, const uint8_t *xy, const uint8_t *xycb, const uint8_t *ex); - template<class _Object> static devcb_base &set_irqack_cb(device_t &device, _Object object) { return downcast<z80_device &>(device).m_irqack_cb.set_callback(object); } - template<class _Object> static devcb_base &set_refresh_cb(device_t &device, _Object object) { return downcast<z80_device &>(device).m_refresh_cb.set_callback(object); } - template<class _Object> static devcb_base &set_halt_cb(device_t &device, _Object object) { return downcast<z80_device &>(device).m_halt_cb.set_callback(object); } + template<class Object> devcb_base &set_irqack_cb(Object &&cb) { return m_irqack_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_refresh_cb(Object &&cb) { return m_refresh_cb.set_callback(std::forward<Object>(cb)); } + template<class Object> devcb_base &set_halt_cb(Object &&cb) { return m_halt_cb.set_callback(std::forward<Object>(cb)); } protected: z80_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); diff --git a/src/devices/cpu/z80/z80daisy.cpp b/src/devices/cpu/z80/z80daisy.cpp index 23169dd3600..094c97b851c 100644 --- a/src/devices/cpu/z80/z80daisy.cpp +++ b/src/devices/cpu/z80/z80daisy.cpp @@ -64,19 +64,6 @@ z80_daisy_chain_interface::~z80_daisy_chain_interface() //------------------------------------------------- -// static_set_daisy_config - configuration helper -// to set up the daisy chain -//------------------------------------------------- -void z80_daisy_chain_interface::static_set_daisy_config(device_t &device, const z80_daisy_config *config) -{ - z80_daisy_chain_interface *daisyintf; - if (!device.interface(daisyintf)) - throw emu_fatalerror("MCFG_Z80_DAISY_CHAIN called on device '%s' with no daisy chain interface", device.tag()); - daisyintf->m_daisy_config = config; -} - - -//------------------------------------------------- // interface_post_start - work to be done after // actually starting a device //------------------------------------------------- diff --git a/src/devices/cpu/z80/z80daisy.h b/src/devices/cpu/z80/z80daisy.h index 896285516ee..75a20a38316 100644 --- a/src/devices/cpu/z80/z80daisy.h +++ b/src/devices/cpu/z80/z80daisy.h @@ -31,7 +31,7 @@ const uint8_t Z80_DAISY_IEO = 0x02; // interrupt disable mask (IEO) // configure devices #define MCFG_Z80_DAISY_CHAIN(_config) \ - z80_daisy_chain_interface::static_set_daisy_config(*device, _config); + dynamic_cast<z80_daisy_chain_interface &>(*device).set_daisy_config(_config); @@ -81,7 +81,7 @@ public: virtual ~z80_daisy_chain_interface(); // configuration helpers - static void static_set_daisy_config(device_t &device, const z80_daisy_config *config); + void set_daisy_config(const z80_daisy_config *config) { m_daisy_config = config; } // getters bool daisy_chain_present() const { return (m_chain != nullptr); } diff --git a/src/devices/cpu/z80/z80daisy_generic.cpp b/src/devices/cpu/z80/z80daisy_generic.cpp index 57d08c13066..3a5b6562f30 100644 --- a/src/devices/cpu/z80/z80daisy_generic.cpp +++ b/src/devices/cpu/z80/z80daisy_generic.cpp @@ -34,16 +34,6 @@ z80daisy_generic_device::z80daisy_generic_device(const machine_config &mconfig, } //------------------------------------------------- -// static_set_vector - static configuration -//------------------------------------------------- - -void z80daisy_generic_device::static_set_vector(device_t &device, uint8_t vector) -{ - z80daisy_generic_device &dev = downcast<z80daisy_generic_device &>(device); - dev.m_vector = vector; -} - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- diff --git a/src/devices/cpu/z80/z80daisy_generic.h b/src/devices/cpu/z80/z80daisy_generic.h index 389c5eda43f..24fa5b98d90 100644 --- a/src/devices/cpu/z80/z80daisy_generic.h +++ b/src/devices/cpu/z80/z80daisy_generic.h @@ -20,10 +20,10 @@ #define MCFG_Z80DAISY_GENERIC_ADD(_tag, _vector) \ MCFG_DEVICE_ADD(_tag, Z80DAISY_GENERIC, 0) \ - z80daisy_generic_device::static_set_vector(*device, _vector); \ + downcast<z80daisy_generic_device &>(*device).set_vector(_vector); \ #define MCFG_Z80DAISY_GENERIC_INT_CB(_devcb) \ - devcb = &z80daisy_generic_device::set_int_handler(*device, DEVCB_##_devcb); + devcb = &downcast<z80daisy_generic_device &>(*device).set_int_handler(DEVCB_##_devcb); //************************************************************************** @@ -37,11 +37,10 @@ public: z80daisy_generic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // callbacks - template <class Object> static devcb_base &set_int_handler(device_t &device, Object &&cb) - { return downcast<z80daisy_generic_device &>(device).m_int_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); } // configuration - static void static_set_vector(device_t &device, uint8_t vector); + void set_vector(uint8_t vector) { m_vector = vector; } DECLARE_WRITE_LINE_MEMBER(int_w); DECLARE_WRITE_LINE_MEMBER(mask_w); diff --git a/src/devices/cpu/z8000/z8000.h b/src/devices/cpu/z8000/z8000.h index 4e3f69e5858..bea1dfe9b5a 100644 --- a/src/devices/cpu/z8000/z8000.h +++ b/src/devices/cpu/z8000/z8000.h @@ -30,7 +30,7 @@ enum #define Z8000_HALT 0x0100 /* halted flag */ #define MCFG_Z8000_MO(_devcb) \ - devcb = &z8002_device::set_mo_callback(*device, DEVCB_##_devcb); + devcb = &downcast<z8002_device &>(*device).set_mo_callback(DEVCB_##_devcb); class z8002_device : public cpu_device, public z8000_disassembler::config { @@ -39,7 +39,7 @@ public: z8002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~z8002_device(); - template <class Object> static devcb_base &set_mo_callback(device_t &device, Object &&cb) { return downcast<z8002_device &>(device).m_mo_out.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_mo_callback(Object &&cb) { return m_mo_out.set_callback(std::forward<Object>(cb)); } DECLARE_WRITE_LINE_MEMBER(mi_w) { m_mi = state; } // XXX: this has to apply in the middle of an insn for now protected: |