summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2018-12-07 11:32:05 +0100
committer mooglyguy <therealmogminer@gmail.com>2018-12-07 11:32:05 +0100
commit2032792ba3ab89e9b8bfbd718a134ac278eb15b9 (patch)
tree00c595e59db51993ee078174dd5a14419c7c4c7d /src/devices
parentb6e950613701d3a64c6f88002bb08cd6effc6234 (diff)
-tms1xxx: Removed MCFG macros.
-eva.cpp: Refactored into subclasses. nw
Diffstat (limited to 'src/devices')
-rw-r--r--src/devices/cpu/cop400/cop400.h11
-rw-r--r--src/devices/cpu/tms1000/tms0270.cpp15
-rw-r--r--src/devices/cpu/tms1000/tms0270.h19
-rw-r--r--src/devices/cpu/tms1000/tms0970.cpp33
-rw-r--r--src/devices/cpu/tms1000/tms0980.cpp33
-rw-r--r--src/devices/cpu/tms1000/tms1000.cpp12
-rw-r--r--src/devices/cpu/tms1000/tms1000c.cpp12
-rw-r--r--src/devices/cpu/tms1000/tms1400.cpp12
-rw-r--r--src/devices/cpu/tms1000/tms1k_base.h40
-rw-r--r--src/devices/cpu/tms1000/tp0320.cpp12
-rw-r--r--src/devices/machine/pla.h7
-rw-r--r--src/devices/sound/tms5110.h5
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 );