diff options
author | mooglyguy <therealmogminer@gmail.com> | 2018-12-07 11:32:05 +0100 |
---|---|---|
committer | mooglyguy <therealmogminer@gmail.com> | 2018-12-07 11:32:05 +0100 |
commit | 2032792ba3ab89e9b8bfbd718a134ac278eb15b9 (patch) | |
tree | 00c595e59db51993ee078174dd5a14419c7c4c7d /src/devices | |
parent | b6e950613701d3a64c6f88002bb08cd6effc6234 (diff) |
-tms1xxx: Removed MCFG macros.
-eva.cpp: Refactored into subclasses.
nw
Diffstat (limited to 'src/devices')
-rw-r--r-- | src/devices/cpu/cop400/cop400.h | 11 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms0270.cpp | 15 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms0270.h | 19 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms0970.cpp | 33 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms0980.cpp | 33 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms1000.cpp | 12 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms1000c.cpp | 12 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms1400.cpp | 12 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tms1k_base.h | 40 | ||||
-rw-r--r-- | src/devices/cpu/tms1000/tp0320.cpp | 12 | ||||
-rw-r--r-- | src/devices/machine/pla.h | 7 | ||||
-rw-r--r-- | src/devices/sound/tms5110.h | 5 |
12 files changed, 93 insertions, 118 deletions
diff --git a/src/devices/cpu/cop400/cop400.h b/src/devices/cpu/cop400/cop400.h index 3fa806d2b06..383b89372a1 100644 --- a/src/devices/cpu/cop400/cop400.h +++ b/src/devices/cpu/cop400/cop400.h @@ -134,6 +134,17 @@ public: 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)); } + auto read_l() { return m_read_l.bind(); } + auto read_l_tristate() { return m_read_l_tristate.bind(); } + auto write_l() { return m_write_l.bind(); } + auto read_g() { return m_read_g.bind(); } + auto write_g() { return m_write_g.bind(); } + auto write_d() { return m_write_d.bind(); } + auto read_in() { return m_read_in.bind(); } + auto read_si() { return m_read_si.bind(); } + auto write_so() { return m_write_so.bind(); } + auto write_sk() { return m_write_sk.bind(); } + auto read_cko() { return m_read_cko.bind(); } void set_config(cop400_cki_bond cki, cop400_cko_bond cko, bool has_microbus) { diff --git a/src/devices/cpu/tms1000/tms0270.cpp b/src/devices/cpu/tms1000/tms0270.cpp index 99cbd496590..5d1eb2b14d1 100644 --- a/src/devices/cpu/tms1000/tms0270.cpp +++ b/src/devices/cpu/tms1000/tms0270.cpp @@ -32,16 +32,13 @@ tms0270_cpu_device::tms0270_cpu_device(const machine_config &mconfig, const char // machine configs -MACHINE_CONFIG_START(tms0270_cpu_device::device_add_mconfig) - +void tms0270_cpu_device::device_add_mconfig(machine_config &config) +{ // main opcodes PLA, microinstructions PLA, output PLA - MCFG_PLA_ADD("ipla", 9, 22, 24) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("mpla", 6, 22, 64) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("opla", 6, 16, 48) - MCFG_PLA_FILEFORMAT(BERKELEY) -MACHINE_CONFIG_END + PLA(config, "ipla", 9, 22, 24).set_format(pla_device::FMT::BERKELEY); + PLA(config, "mpla", 6, 22, 64).set_format(pla_device::FMT::BERKELEY); + PLA(config, "opla", 6, 16, 48).set_format(pla_device::FMT::BERKELEY); +} // device_start/reset diff --git a/src/devices/cpu/tms1000/tms0270.h b/src/devices/cpu/tms1000/tms0270.h index d0947e5bc47..3043119e2aa 100644 --- a/src/devices/cpu/tms1000/tms0270.h +++ b/src/devices/cpu/tms1000/tms0270.h @@ -14,26 +14,15 @@ #include "tms0980.h" -// TMS0270 was designed to interface with TMS5100, set it up at driver level -#define MCFG_TMS0270_READ_CTL_CB(_devcb) \ - downcast<tms0270_cpu_device &>(*device).set_read_ctl_callback(DEVCB_##_devcb); - -#define MCFG_TMS0270_WRITE_CTL_CB(_devcb) \ - downcast<tms0270_cpu_device &>(*device).set_write_ctl_callback(DEVCB_##_devcb); - -#define MCFG_TMS0270_WRITE_PDC_CB(_devcb) \ - downcast<tms0270_cpu_device &>(*device).set_write_pdc_callback(DEVCB_##_devcb); - - class tms0270_cpu_device : public tms0980_cpu_device { public: tms0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // 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)); } + // TMS0270 was designed to interface with TMS5100, set it up at driver level + auto read_ctl() { return m_read_ctl.bind(); } + auto write_ctl() { return m_write_ctl.bind(); } + auto write_pdc() { return m_write_pdc.bind(); } protected: // overrides diff --git a/src/devices/cpu/tms1000/tms0970.cpp b/src/devices/cpu/tms1000/tms0970.cpp index e401f2cd323..be7a1c717f8 100644 --- a/src/devices/cpu/tms1000/tms0970.cpp +++ b/src/devices/cpu/tms1000/tms0970.cpp @@ -48,29 +48,22 @@ tms1990_cpu_device::tms1990_cpu_device(const machine_config &mconfig, const char // machine configs -MACHINE_CONFIG_START(tms0950_cpu_device::device_add_mconfig) - +void tms0950_cpu_device::device_add_mconfig(machine_config &config) +{ // microinstructions PLA, output PLA, segment PLA - MCFG_PLA_ADD("mpla", 8, 16, 30) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("opla", 4, 8, 10) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("spla", 3, 8, 8) - MCFG_PLA_FILEFORMAT(BERKELEY) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(tms0970_cpu_device::device_add_mconfig) + PLA(config, "mpla", 8, 16, 30).set_format(pla_device::FMT::BERKELEY); + PLA(config, "opla", 4, 8, 10).set_format(pla_device::FMT::BERKELEY); + PLA(config, "spla", 3, 8, 8).set_format(pla_device::FMT::BERKELEY); +} +void tms0970_cpu_device::device_add_mconfig(machine_config &config) +{ // main opcodes PLA, microinstructions PLA, output PLA, segment PLA - MCFG_PLA_ADD("ipla", 8, 15, 18) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("mpla", 5, 15, 32) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("opla", 4, 8, 16) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("spla", 3, 8, 8) - MCFG_PLA_FILEFORMAT(BERKELEY) -MACHINE_CONFIG_END + PLA(config, "ipla", 8, 15, 18).set_format(pla_device::FMT::BERKELEY); + PLA(config, "mpla", 5, 15, 32).set_format(pla_device::FMT::BERKELEY); + PLA(config, "opla", 4, 8, 16).set_format(pla_device::FMT::BERKELEY); + PLA(config, "spla", 3, 8, 8).set_format(pla_device::FMT::BERKELEY); +} // device_reset diff --git a/src/devices/cpu/tms1000/tms0980.cpp b/src/devices/cpu/tms1000/tms0980.cpp index 3140c7ca517..8521505d585 100644 --- a/src/devices/cpu/tms1000/tms0980.cpp +++ b/src/devices/cpu/tms1000/tms0980.cpp @@ -61,29 +61,22 @@ tms1980_cpu_device::tms1980_cpu_device(const machine_config &mconfig, const char // machine configs -MACHINE_CONFIG_START(tms0980_cpu_device::device_add_mconfig) - +void tms0980_cpu_device::device_add_mconfig(machine_config &config) +{ // main opcodes PLA, microinstructions PLA, output PLA, segment PLA - MCFG_PLA_ADD("ipla", 9, 22, 24) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("mpla", 6, 20, 64) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("opla", 4, 8, 16) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("spla", 3, 8, 8) - MCFG_PLA_FILEFORMAT(BERKELEY) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(tms1980_cpu_device::device_add_mconfig) + PLA(config, "ipla", 9, 22, 24).set_format(pla_device::FMT::BERKELEY); + PLA(config, "mpla", 6, 20, 64).set_format(pla_device::FMT::BERKELEY); + PLA(config, "opla", 4, 8, 16).set_format(pla_device::FMT::BERKELEY); + PLA(config, "spla", 3, 8, 8).set_format(pla_device::FMT::BERKELEY); +} +void tms1980_cpu_device::device_add_mconfig(machine_config &config) +{ // main opcodes PLA, microinstructions PLA, output PLA - MCFG_PLA_ADD("ipla", 9, 22, 24) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("mpla", 6, 22, 64) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("opla", 5, 7, 32) - MCFG_PLA_FILEFORMAT(BERKELEY) -MACHINE_CONFIG_END + PLA(config, "ipla", 9, 22, 24).set_format(pla_device::FMT::BERKELEY); + PLA(config, "mpla", 6, 22, 64).set_format(pla_device::FMT::BERKELEY); + PLA(config, "opla", 5, 7, 32).set_format(pla_device::FMT::BERKELEY); +} // disasm diff --git a/src/devices/cpu/tms1000/tms1000.cpp b/src/devices/cpu/tms1000/tms1000.cpp index d9455fe5bc3..f99aacc637f 100644 --- a/src/devices/cpu/tms1000/tms1000.cpp +++ b/src/devices/cpu/tms1000/tms1000.cpp @@ -107,14 +107,12 @@ mc141200_cpu_device::mc141200_cpu_device(const machine_config &mconfig, const ch // machine configs -MACHINE_CONFIG_START(tms1000_cpu_device::device_add_mconfig) - +void tms1000_cpu_device::device_add_mconfig(machine_config &config) +{ // microinstructions PLA, output PLA - MCFG_PLA_ADD("mpla", 8, 16, 30) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("opla", 5, 8, 20) - MCFG_PLA_FILEFORMAT(BERKELEY) -MACHINE_CONFIG_END + PLA(config, "mpla", 8, 16, 30).set_format(pla_device::FMT::BERKELEY); + PLA(config, "opla", 5, 8, 20).set_format(pla_device::FMT::BERKELEY); +} // disasm diff --git a/src/devices/cpu/tms1000/tms1000c.cpp b/src/devices/cpu/tms1000/tms1000c.cpp index d83e822be44..defc8482eef 100644 --- a/src/devices/cpu/tms1000/tms1000c.cpp +++ b/src/devices/cpu/tms1000/tms1000c.cpp @@ -31,14 +31,12 @@ tms1000c_cpu_device::tms1000c_cpu_device(const machine_config &mconfig, const ch // machine configs -MACHINE_CONFIG_START(tms1000c_cpu_device::device_add_mconfig) - +void tms1000c_cpu_device::device_add_mconfig(machine_config &config) +{ // microinstructions PLA, output PLA - MCFG_PLA_ADD("mpla", 8, 16, 32) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("opla", 5, 8, 32) - MCFG_PLA_FILEFORMAT(BERKELEY) -MACHINE_CONFIG_END + PLA(config, "mpla", 8, 16, 32).set_format(pla_device::FMT::BERKELEY); + PLA(config, "opla", 5, 8, 32).set_format(pla_device::FMT::BERKELEY); +} // microinstructions decode (different order, no active-negative) diff --git a/src/devices/cpu/tms1000/tms1400.cpp b/src/devices/cpu/tms1000/tms1400.cpp index 67effbe3ad0..31da9295f48 100644 --- a/src/devices/cpu/tms1000/tms1400.cpp +++ b/src/devices/cpu/tms1000/tms1400.cpp @@ -67,14 +67,12 @@ tms1670_cpu_device::tms1670_cpu_device(const machine_config &mconfig, const char // machine configs -MACHINE_CONFIG_START(tms1400_cpu_device::device_add_mconfig) - +void tms1400_cpu_device::device_add_mconfig(machine_config &config) +{ // microinstructions PLA, output PLA - MCFG_PLA_ADD("mpla", 8, 16, 30) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("opla", 5, 8, 32) - MCFG_PLA_FILEFORMAT(BERKELEY) -MACHINE_CONFIG_END + PLA(config, "mpla", 8, 16, 30).set_format(pla_device::FMT::BERKELEY); + PLA(config, "opla", 5, 8, 32).set_format(pla_device::FMT::BERKELEY); +} // device_reset diff --git a/src/devices/cpu/tms1000/tms1k_base.h b/src/devices/cpu/tms1000/tms1k_base.h index 481e9ad0d49..7a394b8dfbb 100644 --- a/src/devices/cpu/tms1000/tms1k_base.h +++ b/src/devices/cpu/tms1000/tms1k_base.h @@ -17,27 +17,6 @@ #include "machine/pla.h" -// K input pins -#define MCFG_TMS1XXX_READ_K_CB(_devcb) \ - downcast<tms1k_base_device &>(*device).set_read_k_callback(DEVCB_##_devcb); - -// O/Segment output pins -#define MCFG_TMS1XXX_WRITE_O_CB(_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) \ - 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) \ - downcast<tms1k_base_device &>(*device).set_write_r_callback(DEVCB_##_devcb); - -// OFF request on TMS0980 and up -#define MCFG_TMS1XXX_POWER_OFF_CB(_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,11 +66,20 @@ class tms1k_base_device : public cpu_device { public: - // configuration helpers - template <class Object> devcb_base &set_read_k_callback(Object &&cb) { return m_read_k.set_callback(std::forward<Object>(cb)); } - template <class Object> devcb_base &set_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)); } + // K input pins + auto k() { return m_read_k.bind(); } + + // O/Segment output pins + auto o() { return m_write_o.bind(); } + + // R output pins (also called D on some chips) + auto r() { return m_write_r.bind(); } + + // OFF request on TMS0980 and up + auto power_off() { return m_power_off.bind(); } + + // Use this if the output PLA is unknown: + // If the microinstructions (or other) PLA is unknown, try using one from another romset. 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/tms1000/tp0320.cpp b/src/devices/cpu/tms1000/tp0320.cpp index 62ca7072ab2..57c53b240fd 100644 --- a/src/devices/cpu/tms1000/tp0320.cpp +++ b/src/devices/cpu/tms1000/tp0320.cpp @@ -42,14 +42,12 @@ tp0320_cpu_device::tp0320_cpu_device(const machine_config &mconfig, const char * // machine configs -MACHINE_CONFIG_START(tp0320_cpu_device::device_add_mconfig) - +void tp0320_cpu_device::device_add_mconfig(machine_config &config) +{ // main opcodes PLA(partial), microinstructions PLA - MCFG_PLA_ADD("ipla", 9, 6, 8) - MCFG_PLA_FILEFORMAT(BERKELEY) - MCFG_PLA_ADD("mpla", 6, 22, 64) - MCFG_PLA_FILEFORMAT(BERKELEY) -MACHINE_CONFIG_END + PLA(config, "ipla", 9, 6, 8).set_format(pla_device::FMT::BERKELEY); + PLA(config, "mpla", 6, 22, 64).set_format(pla_device::FMT::BERKELEY); +} // disasm diff --git a/src/devices/machine/pla.h b/src/devices/machine/pla.h index 0d3fef80cc0..b6cfeb42eb8 100644 --- a/src/devices/machine/pla.h +++ b/src/devices/machine/pla.h @@ -76,6 +76,13 @@ public: // construction/destruction pla_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); pla_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + pla_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t inputs, uint32_t outputs, uint32_t terms) + : pla_device(mconfig, tag, owner, (uint32_t)0) + { + set_num_inputs(inputs); + set_num_outputs(outputs); + set_num_terms(terms); + } // configuration helpers void set_num_inputs(uint32_t i) { m_inputs = i; } diff --git a/src/devices/sound/tms5110.h b/src/devices/sound/tms5110.h index b4a5a48d68d..4857326b697 100644 --- a/src/devices/sound/tms5110.h +++ b/src/devices/sound/tms5110.h @@ -56,6 +56,11 @@ public: template <class Object> devcb_base &set_addr_callback(Object &&cb) { return m_addr_cb.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_data_callback(Object &&cb) { return m_data_cb.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_romclk_callback(Object &&cb) { return m_romclk_cb.set_callback(std::forward<Object>(cb)); } + auto m0() { return m_m0_cb.bind(); } + auto m1() { return m_m1_cb.bind(); } + auto addr() { return m_addr_cb.bind(); } + auto data() { return m_data_cb.bind(); } + auto romclk() { return m_romclk_cb.bind(); } DECLARE_WRITE8_MEMBER( ctl_w ); DECLARE_READ8_MEMBER( ctl_r ); |