summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2018-12-07 12:27:29 +0100
committer mooglyguy <therealmogminer@gmail.com>2018-12-07 12:27:29 +0100
commit89d9354184a171c659f32494235c66ee61e07950 (patch)
treea1db403ca60132267d2bd3fa357faa4ae19bdfef
parent2032792ba3ab89e9b8bfbd718a134ac278eb15b9 (diff)
tlcs90, tlcs900: Removed MCFG, nw
-rw-r--r--src/devices/cpu/tlcs90/tlcs90.h70
-rw-r--r--src/devices/cpu/tlcs900/tlcs900.cpp77
-rw-r--r--src/devices/cpu/tlcs900/tlcs900.h166
-rw-r--r--src/mame/drivers/dynax.cpp26
-rw-r--r--src/mame/drivers/ngp.cpp10
-rw-r--r--src/mame/drivers/royalmah.cpp66
-rw-r--r--src/mame/drivers/taitopjc.cpp22
-rw-r--r--src/mame/drivers/taitotz.cpp67
-rw-r--r--src/mame/machine/nmk004.cpp11
9 files changed, 175 insertions, 340 deletions
diff --git a/src/devices/cpu/tlcs90/tlcs90.h b/src/devices/cpu/tlcs90/tlcs90.h
index 73a168efb84..ee7fa72f042 100644
--- a/src/devices/cpu/tlcs90/tlcs90.h
+++ b/src/devices/cpu/tlcs90/tlcs90.h
@@ -5,64 +5,6 @@
#pragma once
-
-// I/O callbacks
-#define MCFG_TLCS90_PORT_P0_READ_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_read_cb(0, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P1_READ_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_read_cb(1, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P2_READ_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_read_cb(2, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P3_READ_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_read_cb(3, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P4_READ_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_read_cb(4, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P5_READ_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_read_cb(5, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P6_READ_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_read_cb(6, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P7_READ_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_read_cb(7, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P8_READ_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_read_cb(8, DEVCB_##_devcb);
-
-
-#define MCFG_TLCS90_PORT_P0_WRITE_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_write_cb(0, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P1_WRITE_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_write_cb(1, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P2_WRITE_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_write_cb(2, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P3_WRITE_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_write_cb(3, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P4_WRITE_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_write_cb(4, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P5_WRITE_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_write_cb(5, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P6_WRITE_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_write_cb(6, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P7_WRITE_CB(_devcb) \
- downcast<tlcs90_device &>(*device).set_port_write_cb(7, DEVCB_##_devcb);
-
-#define MCFG_TLCS90_PORT_P8_WRITE_CB(_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 };
DECLARE_ENUM_INCDEC_OPERATORS(tlcs90_e_irq)
@@ -89,16 +31,8 @@ protected:
public:
// configuration
- template<class Object> devcb_base &set_port_read_cb(int port, Object &&object)
- {
- assert(port >= 0 && port < MAX_PORTS);
- return m_port_read_cb[port].set_callback(std::forward<Object>(object));
- }
- template<class Object> devcb_base &set_port_write_cb(int port, Object &&object)
- {
- assert(port >= 0 && port < MAX_PORTS);
- return m_port_write_cb[port].set_callback(std::forward<Object>(object));
- }
+ template <size_t Port> auto port_read() { return m_port_read_cb[Port].bind(); }
+ template <size_t Port> auto port_write() { return m_port_write_cb[Port].bind(); }
protected:
// construction/destruction
diff --git a/src/devices/cpu/tlcs900/tlcs900.cpp b/src/devices/cpu/tlcs900/tlcs900.cpp
index 4ee4b4c3327..dfd6e86e626 100644
--- a/src/devices/cpu/tlcs900/tlcs900.cpp
+++ b/src/devices/cpu/tlcs900/tlcs900.cpp
@@ -123,14 +123,7 @@ tmp95c063_device::tmp95c063_device(const machine_config &mconfig, const char *ta
m_portd_write(*this),
m_porte_read(*this),
m_porte_write(*this),
- m_an0_read(*this),
- m_an1_read(*this),
- m_an2_read(*this),
- m_an3_read(*this),
- m_an4_read(*this),
- m_an5_read(*this),
- m_an6_read(*this),
- m_an7_read(*this)
+ m_an_read{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}}
{
}
@@ -1765,42 +1758,42 @@ void tmp95c063_device::tlcs900_handle_ad()
switch( m_reg[TMP95C063_ADMOD2] & 0x07 )
{
case 0x00: // AN0
- ad_value = m_an0_read(0) & 0x3ff;
+ ad_value = m_an_read[0](0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
break;
case 0x01: // AN1
- ad_value = m_an1_read(0) & 0x3ff;
+ ad_value = m_an_read[1](0) & 0x3ff;
m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
break;
case 0x02: // AN2
- ad_value = m_an2_read(0) & 0x3ff;
+ ad_value = m_an_read[2](0) & 0x3ff;
m_reg[TMP95C063_ADREG26L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG26H] = (ad_value >> 2) & 0xff;
break;
case 0x03: // AN3
- ad_value = m_an3_read(0) & 0x3ff;
+ ad_value = m_an_read[3](0) & 0x3ff;
m_reg[TMP95C063_ADREG37L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG37H] = (ad_value >> 2) & 0xff;
break;
case 0x04: // AN4
- ad_value = m_an4_read(0) & 0x3ff;
+ ad_value = m_an_read[4](0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
break;
case 0x05: // AN5
- ad_value = m_an5_read(0) & 0x3ff;
+ ad_value = m_an_read[5](0) & 0x3ff;
m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
break;
case 0x06: // AN6
- ad_value = m_an6_read(0) & 0x3ff;
+ ad_value = m_an_read[6](0) & 0x3ff;
m_reg[TMP95C063_ADREG26L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG26H] = (ad_value >> 2) & 0xff;
break;
case 0x07: // AN7
- ad_value = m_an7_read(0) & 0x3ff;
+ ad_value = m_an_read[7](0) & 0x3ff;
m_reg[TMP95C063_ADREG37L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG37H] = (ad_value >> 2) & 0xff;
break;
@@ -1811,78 +1804,78 @@ void tmp95c063_device::tlcs900_handle_ad()
switch( m_reg[TMP95C063_ADMOD2] & 0x07 )
{
case 0x00: // AN0
- ad_value = m_an0_read(0) & 0x3ff;
+ ad_value = m_an_read[0](0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
break;
case 0x01: // AN0 -> AN1
- ad_value = m_an0_read(0) & 0x3ff;
+ ad_value = m_an_read[0](0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
- ad_value = m_an1_read(0) & 0x3ff;
+ ad_value = m_an_read[1](0) & 0x3ff;
m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
break;
case 0x02: // AN0 -> AN1 -> AN2
- ad_value = m_an0_read(0) & 0x3ff;
+ ad_value = m_an_read[0](0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
- ad_value = m_an1_read(0) & 0x3ff;
+ ad_value = m_an_read[1](0) & 0x3ff;
m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
- ad_value = m_an2_read(0) & 0x3ff;
+ ad_value = m_an_read[2](0) & 0x3ff;
m_reg[TMP95C063_ADREG26L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG26H] = (ad_value >> 2) & 0xff;
break;
case 0x03: // AN0 -> AN1 -> AN2 -> AN3
- ad_value = m_an0_read(0) & 0x3ff;
+ ad_value = m_an_read[0](0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
- ad_value = m_an1_read(0) & 0x3ff;
+ ad_value = m_an_read[1](0) & 0x3ff;
m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
- ad_value = m_an2_read(0) & 0x3ff;
+ ad_value = m_an_read[2](0) & 0x3ff;
m_reg[TMP95C063_ADREG26L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG26H] = (ad_value >> 2) & 0xff;
- ad_value = m_an3_read(0) & 0x3ff;
+ ad_value = m_an_read[3](0) & 0x3ff;
m_reg[TMP95C063_ADREG37L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG37H] = (ad_value >> 2) & 0xff;
break;
case 0x04: // AN4
- ad_value = m_an4_read(0) & 0x3ff;
+ ad_value = m_an_read[4](0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
break;
case 0x05: // AN4 -> AN5
- ad_value = m_an4_read(0) & 0x3ff;
+ ad_value = m_an_read[4](0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
- ad_value = m_an5_read(0) & 0x3ff;
+ ad_value = m_an_read[5](0) & 0x3ff;
m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
break;
case 0x06: // AN4 -> AN5 -> AN6
- ad_value = m_an4_read(0) & 0x3ff;
+ ad_value = m_an_read[4](0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
- ad_value = m_an5_read(0) & 0x3ff;
+ ad_value = m_an_read[5](0) & 0x3ff;
m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
- ad_value = m_an6_read(0) & 0x3ff;
+ ad_value = m_an_read[6](0) & 0x3ff;
m_reg[TMP95C063_ADREG26L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG26H] = (ad_value >> 2) & 0xff;
break;
case 0x07: // AN4 -> AN5 -> AN6 -> AN7
- ad_value = m_an4_read(0) & 0x3ff;
+ ad_value = m_an_read[4](0) & 0x3ff;
m_reg[TMP95C063_ADREG04L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG04H] = (ad_value >> 2) & 0xff;
- ad_value = m_an5_read(0) & 0x3ff;
+ ad_value = m_an_read[5](0) & 0x3ff;
m_reg[TMP95C063_ADREG15L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG15H] = (ad_value >> 2) & 0xff;
- ad_value = m_an6_read(0) & 0x3ff;
+ ad_value = m_an_read[6](0) & 0x3ff;
m_reg[TMP95C063_ADREG26L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG26H] = (ad_value >> 2) & 0xff;
- ad_value = m_an7_read(0) & 0x3ff;
+ ad_value = m_an_read[7](0) & 0x3ff;
m_reg[TMP95C063_ADREG37L] = (ad_value & 0x3) << 6;
m_reg[TMP95C063_ADREG37H] = (ad_value >> 2) & 0xff;
break;
@@ -1926,14 +1919,10 @@ void tmp95c063_device::device_start()
m_portd_write.resolve_safe();
m_porte_read.resolve_safe(0);
m_porte_write.resolve_safe();
- m_an0_read.resolve_safe(0);
- m_an1_read.resolve_safe(0);
- m_an2_read.resolve_safe(0);
- m_an3_read.resolve_safe(0);
- m_an4_read.resolve_safe(0);
- m_an5_read.resolve_safe(0);
- m_an6_read.resolve_safe(0);
- m_an7_read.resolve_safe(0);
+ for (int i = 0; i < 8; i++)
+ {
+ m_an_read[i].resolve_safe(0);
+ }
}
void tmp95c063_device::device_reset()
diff --git a/src/devices/cpu/tlcs900/tlcs900.h b/src/devices/cpu/tlcs900/tlcs900.h
index 2fd1d37fbaa..2016c00996f 100644
--- a/src/devices/cpu/tlcs900/tlcs900.h
+++ b/src/devices/cpu/tlcs900/tlcs900.h
@@ -44,8 +44,6 @@ DECLARE_DEVICE_TYPE(TMP95C061, tmp95c061_device)
DECLARE_DEVICE_TYPE(TMP95C063, tmp95c063_device)
-#define MCFG_TLCS900H_AM8_16( am8_16 ) downcast<tlcs900h_device &>(*device).set_am8_16(am8_16 );
-
class tlcs900h_device : public cpu_device
{
public:
@@ -612,39 +610,6 @@ protected:
void op_F0();
};
-#define MCFG_TMP95C061_PORT1_READ( _port_read ) \
- downcast<tmp95c061_device &>(*device).set_port1_read(DEVCB_##_port_read);
-#define MCFG_TMP95C061_PORT1_WRITE( _port_write ) \
- downcast<tmp95c061_device &>(*device).set_port1_write(DEVCB_##_port_write);
-#define MCFG_TMP95C061_PORT2_WRITE( _port_write ) \
- downcast<tmp95c061_device &>(*device).set_port2_write(DEVCB_##_port_write);
-#define MCFG_TMP95C061_PORT5_READ( _port_read ) \
- downcast<tmp95c061_device &>(*device).set_port5_read(DEVCB_##_port_read);
-#define MCFG_TMP95C061_PORT5_WRITE( _port_write ) \
- downcast<tmp95c061_device &>(*device).set_port5_write(DEVCB_##_port_write);
-#define MCFG_TMP95C061_PORT6_READ( _port_read ) \
- downcast<tmp95c061_device &>(*device).set_port6_read(DEVCB_##_port_read);
-#define MCFG_TMP95C061_PORT6_WRITE( _port_write ) \
- downcast<tmp95c061_device &>(*device).set_port6_write(DEVCB_##_port_write);
-#define MCFG_TMP95C061_PORT7_READ( _port_read ) \
- downcast<tmp95c061_device &>(*device).set_port7_read(DEVCB_##_port_read);
-#define MCFG_TMP95C061_PORT7_WRITE( _port_write ) \
- downcast<tmp95c061_device &>(*device).set_port7_write(DEVCB_##_port_write);
-#define MCFG_TMP95C061_PORT8_READ( _port_read ) \
- downcast<tmp95c061_device &>(*device).set_port8_read(DEVCB_##_port_read);
-#define MCFG_TMP95C061_PORT8_WRITE( _port_write ) \
- downcast<mp95c061_device &>(*device).set_port8_write(DEVCB_##_port_write);
-#define MCFG_TMP95C061_PORT9_READ( _port_read ) \
- downcast<tmp95c061_device &>(*device).set_port9_read(DEVCB_##_port_read);
-#define MCFG_TMP95C061_PORTA_READ( _port_read ) \
- downcast<tmp95c061_device &>(*device).set_porta_read(DEVCB_##_port_read);
-#define MCFG_TMP95C061_PORTA_WRITE( _port_write ) \
- downcast<tmp95c061_device &>(*device).set_porta_write(DEVCB_##_port_write);
-#define MCFG_TMP95C061_PORTB_READ( _port_read ) \
- downcast<tmp95c061_device &>(*device).set_portb_read(DEVCB_##_port_read);
-#define MCFG_TMP95C061_PORTB_WRITE( _port_write ) \
- downcast<tmp95c061_device &>(*device).set_portb_write(DEVCB_##_port_write);
-
class tmp95c061_device : public tlcs900h_device
{
public:
@@ -652,21 +617,21 @@ public:
tmp95c061_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// 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)); }
+ auto port1_read() { return m_port1_read.bind(); }
+ auto port1_write() { return m_port1_write.bind(); }
+ auto port2_write() { return m_port2_write.bind(); }
+ auto port5_read() { return m_port5_read.bind(); }
+ auto port5_write() { return m_port5_write.bind(); }
+ auto port6_write() { return m_port6_write.bind(); }
+ auto port7_read() { return m_port7_read.bind(); }
+ auto port7_write() { return m_port7_write.bind(); }
+ auto port8_read() { return m_port8_read.bind(); }
+ auto port8_write() { return m_port8_write.bind(); }
+ auto port9_read() { return m_port9_read.bind(); }
+ auto porta_read() { return m_porta_read.bind(); }
+ auto porta_write() { return m_porta_write.bind(); }
+ auto portb_read() { return m_portb_read.bind(); }
+ auto portb_write() { return m_portb_write.bind(); }
DECLARE_READ8_MEMBER( internal_r );
DECLARE_WRITE8_MEMBER( internal_w );
@@ -728,45 +693,6 @@ private:
};
-#define MCFG_TMP95C063_PORT0_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port0_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORT0_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port0_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_PORT1_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port1_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORT1_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port1_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_PORT2_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port2_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORT2_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port2_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_PORT3_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port3_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORT3_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port3_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_PORT4_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port4_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORT4_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port4_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_PORT5_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port5_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORT5_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port5_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_PORT6_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port6_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORT6_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port6_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_PORT7_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port7_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORT7_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port7_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_PORT8_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port8_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORT8_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port8_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_PORT9_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_port9_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORT9_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_port9_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_PORTA_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_porta_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORTA_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_porta_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_PORTB_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_portb_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORTB_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_portb_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_PORTC_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_portc_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORTC_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_portc_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_PORTD_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_portd_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORTD_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_portd_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_PORTE_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_porte_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_PORTE_WRITE( _port_write ) downcast<tmp95c063_device &>(*device).set_porte_write(DEVCB_##_port_write);
-#define MCFG_TMP95C063_AN0_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an0_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_AN1_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an1_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_AN2_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an2_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_AN3_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an3_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_AN4_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an4_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_AN5_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an5_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_AN6_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an6_read(DEVCB_##_port_read);
-#define MCFG_TMP95C063_AN7_READ( _port_read ) downcast<tmp95c063_device &>(*device).set_an7_read(DEVCB_##_port_read);
-
class tmp95c063_device : public tlcs900h_device
{
public:
@@ -777,36 +703,29 @@ public:
DECLARE_WRITE8_MEMBER( internal_w );
// 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)); }
+ auto port1_read() { return m_port1_read.bind(); }
+ auto port1_write() { return m_port1_write.bind(); }
+ auto port2_write() { return m_port2_write.bind(); }
+ auto port5_read() { return m_port5_read.bind(); }
+ auto port5_write() { return m_port5_write.bind(); }
+ auto port6_read() { return m_port6_read.bind(); }
+ auto port6_write() { return m_port6_write.bind(); }
+ auto port7_read() { return m_port7_read.bind(); }
+ auto port7_write() { return m_port7_write.bind(); }
+ auto port8_read() { return m_port8_read.bind(); }
+ auto port8_write() { return m_port8_write.bind(); }
+ auto port9_read() { return m_port9_read.bind(); }
+ auto port9_write() { return m_port9_write.bind(); }
+ auto porta_read() { return m_porta_read.bind(); }
+ auto porta_write() { return m_porta_write.bind(); }
+ auto portb_read() { return m_portb_read.bind(); }
+ auto portb_write() { return m_portb_write.bind(); }
+ auto portc_read() { return m_portc_read.bind(); }
+ auto portd_read() { return m_portd_read.bind(); }
+ auto portd_write() { return m_portd_write.bind(); }
+ auto porte_read() { return m_porte_read.bind(); }
+ auto porte_write() { return m_porte_write.bind(); }
+ template <size_t Bit> auto an_read() { return m_an_read[Bit].bind(); }
void tmp95c063_mem16(address_map &map);
void tmp95c063_mem8(address_map &map);
@@ -869,14 +788,7 @@ private:
devcb_write8 m_porte_write;
// analogue inputs, sampled at 10 bits
- devcb_read16 m_an0_read;
- devcb_read16 m_an1_read;
- devcb_read16 m_an2_read;
- devcb_read16 m_an3_read;
- devcb_read16 m_an4_read;
- devcb_read16 m_an5_read;
- devcb_read16 m_an6_read;
- devcb_read16 m_an7_read;
+ devcb_read16 m_an_read[8];
};
#endif // MAME_CPU_TLCS900_TLCS900_H
diff --git a/src/mame/drivers/dynax.cpp b/src/mame/drivers/dynax.cpp
index d1514c1291e..39200069a7e 100644
--- a/src/mame/drivers/dynax.cpp
+++ b/src/mame/drivers/dynax.cpp
@@ -4853,16 +4853,16 @@ WRITE_LINE_MEMBER(dynax_state::tenkai_blitter_ack_w)
MACHINE_CONFIG_START(dynax_state::tenkai)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu",TMP91640, 21472700 / 2)
- MCFG_DEVICE_PROGRAM_MAP(tenkai_map)
- MCFG_TLCS90_PORT_P3_READ_CB(READ8(*this, dynax_state, tenkai_p3_r))
- MCFG_TLCS90_PORT_P3_WRITE_CB(WRITE8(*this, dynax_state, tenkai_p3_w))
- MCFG_TLCS90_PORT_P4_WRITE_CB(WRITE8(*this, dynax_state, tenkai_p4_w))
- MCFG_TLCS90_PORT_P5_READ_CB(READ8(*this, dynax_state, tenkai_p5_r))
- MCFG_TLCS90_PORT_P6_WRITE_CB(WRITE8(*this, dynax_state, tenkai_p6_w))
- MCFG_TLCS90_PORT_P7_WRITE_CB(WRITE8(*this, dynax_state, tenkai_p7_w))
- MCFG_TLCS90_PORT_P8_READ_CB(READ8(*this, dynax_state, tenkai_p8_r))
- MCFG_TLCS90_PORT_P8_WRITE_CB(WRITE8(*this, dynax_state, tenkai_p8_w))
+ tmp91640_device &tmp(TMP91640(config, m_maincpu, 21472700 / 2));
+ tmp.set_addrmap(AS_PROGRAM, &dynax_state::tenkai_map);
+ tmp.port_read<3>().set(FUNC(dynax_state::tenkai_p3_r));
+ tmp.port_write<3>().set(FUNC(dynax_state::tenkai_p3_w));
+ tmp.port_write<4>().set(FUNC(dynax_state::tenkai_p4_w));
+ tmp.port_read<5>().set(FUNC(dynax_state::tenkai_p5_r));
+ tmp.port_write<6>().set(FUNC(dynax_state::tenkai_p6_w));
+ tmp.port_write<7>().set(FUNC(dynax_state::tenkai_p7_w));
+ tmp.port_read<8>().set(FUNC(dynax_state::tenkai_p8_r));
+ tmp.port_write<8>().set(FUNC(dynax_state::tenkai_p8_w));
ADDRESS_MAP_BANK(config, m_bankdev).set_map(&dynax_state::tenkai_banked_map).set_data_width(8).set_addr_width(20).set_stride(0x8000);
@@ -4933,9 +4933,9 @@ void dynax_state::mjreach(machine_config &config)
MACHINE_CONFIG_START(dynax_state::gekisha)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu",TMP90841, XTAL(10'000'000) ) // ?
- MCFG_DEVICE_PROGRAM_MAP(gekisha_map)
- MCFG_TLCS90_PORT_P4_WRITE_CB(WRITE8(*this, dynax_state, gekisha_p4_w))
+ tmp90841_device &tmp(TMP90841(config, m_maincpu, XTAL(10'000'000))); // ?
+ tmp.set_addrmap(AS_PROGRAM, &dynax_state::gekisha_map);
+ tmp.port_write<4>().set(FUNC(dynax_state::gekisha_p4_w));
ADDRESS_MAP_BANK(config, m_bankdev).set_map(&dynax_state::gekisha_banked_map).set_data_width(8).set_addr_width(17).set_stride(0x8000);
diff --git a/src/mame/drivers/ngp.cpp b/src/mame/drivers/ngp.cpp
index e2be1d57e41..287b7c884e3 100644
--- a/src/mame/drivers/ngp.cpp
+++ b/src/mame/drivers/ngp.cpp
@@ -177,7 +177,7 @@ private:
uint8_t command[2];
} m_flash_chip[2];
- required_device<cpu_device> m_maincpu;
+ required_device<tmp95c061_device> m_maincpu;
required_device<cpu_device> m_z80;
required_device<t6w28_device> m_t6w28;
required_device<dac_byte_interface> m_ldac;
@@ -828,10 +828,10 @@ void ngp_state::nvram_write(emu_file &file)
MACHINE_CONFIG_START(ngp_state::ngp_common)
- MCFG_DEVICE_ADD( "maincpu", TMP95C061, 6.144_MHz_XTAL )
- MCFG_TLCS900H_AM8_16(1)
- MCFG_DEVICE_PROGRAM_MAP( ngp_mem)
- MCFG_TMP95C061_PORTA_WRITE(WRITE8(*this, ngp_state,ngp_tlcs900_porta))
+ TMP95C061(config, m_maincpu, 6.144_MHz_XTAL);
+ m_maincpu->set_am8_16(1);
+ m_maincpu->set_addrmap(AS_PROGRAM, &ngp_state::ngp_mem);
+ m_maincpu->porta_write().set(FUNC(ngp_state::ngp_tlcs900_porta));
MCFG_DEVICE_ADD( "soundcpu", Z80, 6.144_MHz_XTAL/2 )
MCFG_DEVICE_PROGRAM_MAP( z80_mem)
diff --git a/src/mame/drivers/royalmah.cpp b/src/mame/drivers/royalmah.cpp
index 166826417a1..3c81e563326 100644
--- a/src/mame/drivers/royalmah.cpp
+++ b/src/mame/drivers/royalmah.cpp
@@ -3674,16 +3674,16 @@ void royalmah_state::janptr96(machine_config &config)
MACHINE_CONFIG_START(royalmah_state::mjifb)
mjderngr(config);
- MCFG_DEVICE_REPLACE("maincpu",TMP90841, 8000000) /* ? */
- MCFG_DEVICE_PROGRAM_MAP(mjifb_map)
- MCFG_TLCS90_PORT_P3_READ_CB(READ8(*this, royalmah_state, mjifb_p3_r))
- MCFG_TLCS90_PORT_P3_WRITE_CB(WRITE8(*this, royalmah_state, mjifb_p3_w))
- MCFG_TLCS90_PORT_P4_WRITE_CB(WRITE8(*this, royalmah_state, mjifb_p4_w))
- MCFG_TLCS90_PORT_P5_READ_CB(READ8(*this, royalmah_state, mjifb_p5_r))
- MCFG_TLCS90_PORT_P6_READ_CB(READ8(*this, royalmah_state, mjifb_p6_r))
- MCFG_TLCS90_PORT_P7_READ_CB(READ8(*this, royalmah_state, mjifb_p7_r))
- MCFG_TLCS90_PORT_P8_READ_CB(READ8(*this, royalmah_state, mjifb_p8_r))
- MCFG_TLCS90_PORT_P8_WRITE_CB(WRITE8(*this, royalmah_state, mjifb_p8_w))
+ tmp90841_device &tmp(TMP90841(config.replace(), m_maincpu, 8000000)); /* ? */
+ tmp.set_addrmap(AS_PROGRAM, &royalmah_state::mjifb_map);
+ tmp.port_read<3>().set(FUNC(royalmah_state::mjifb_p3_r));
+ tmp.port_write<3>().set(FUNC(royalmah_state::mjifb_p3_w));
+ tmp.port_write<4>().set(FUNC(royalmah_state::mjifb_p4_w));
+ tmp.port_read<5>().set(FUNC(royalmah_state::mjifb_p5_r));
+ tmp.port_read<6>().set(FUNC(royalmah_state::mjifb_p6_r));
+ tmp.port_read<7>().set(FUNC(royalmah_state::mjifb_p7_r));
+ tmp.port_read<8>().set(FUNC(royalmah_state::mjifb_p8_r));
+ tmp.port_write<8>().set(FUNC(royalmah_state::mjifb_p8_w));
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
@@ -3693,16 +3693,16 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(royalmah_state::mjdejavu)
mjderngr(config);
- MCFG_DEVICE_REPLACE("maincpu",TMP90841, 8000000) /* ? */
- MCFG_DEVICE_PROGRAM_MAP(mjdejavu_map)
- MCFG_TLCS90_PORT_P3_READ_CB(READ8(*this, royalmah_state, mjifb_p3_r))
- MCFG_TLCS90_PORT_P3_WRITE_CB(WRITE8(*this, royalmah_state, mjifb_p3_w))
- MCFG_TLCS90_PORT_P4_WRITE_CB(WRITE8(*this, royalmah_state, mjifb_p4_w))
- MCFG_TLCS90_PORT_P5_READ_CB(READ8(*this, royalmah_state, mjifb_p5_r))
- MCFG_TLCS90_PORT_P6_READ_CB(READ8(*this, royalmah_state, mjifb_p6_r))
- MCFG_TLCS90_PORT_P7_READ_CB(READ8(*this, royalmah_state, mjifb_p7_r))
- MCFG_TLCS90_PORT_P8_READ_CB(READ8(*this, royalmah_state, mjifb_p8_r))
- MCFG_TLCS90_PORT_P8_WRITE_CB(WRITE8(*this, royalmah_state, mjifb_p8_w))
+ tmp90841_device &tmp(TMP90841(config.replace(), m_maincpu, 8000000)); /* ? */
+ tmp.set_addrmap(AS_PROGRAM, &royalmah_state::mjdejavu_map);
+ tmp.port_read<3>().set(FUNC(royalmah_state::mjifb_p3_r));
+ tmp.port_write<3>().set(FUNC(royalmah_state::mjifb_p3_w));
+ tmp.port_write<4>().set(FUNC(royalmah_state::mjifb_p4_w));
+ tmp.port_read<5>().set(FUNC(royalmah_state::mjifb_p5_r));
+ tmp.port_read<6>().set(FUNC(royalmah_state::mjifb_p6_r));
+ tmp.port_read<7>().set(FUNC(royalmah_state::mjifb_p7_r));
+ tmp.port_read<8>().set(FUNC(royalmah_state::mjifb_p8_r));
+ tmp.port_write<8>().set(FUNC(royalmah_state::mjifb_p8_w));
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
@@ -3712,10 +3712,10 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(royalmah_state::mjtensin)
mjderngr(config);
- MCFG_DEVICE_REPLACE("maincpu",TMP90841, 12000000) /* ? */
- MCFG_DEVICE_PROGRAM_MAP(mjtensin_map)
- MCFG_TLCS90_PORT_P3_READ_CB(READ8(*this, royalmah_state, mjtensin_p3_r))
- MCFG_TLCS90_PORT_P4_WRITE_CB(WRITE8(*this, royalmah_state, mjtensin_p4_w))
+ tmp90841_device &tmp(TMP90841(config.replace(), m_maincpu, 12000000)); /* ? */
+ tmp.set_addrmap(AS_PROGRAM, &royalmah_state::mjtensin_map);
+ tmp.port_read<3>().set(FUNC(royalmah_state::mjtensin_p3_r));
+ tmp.port_write<4>().set(FUNC(royalmah_state::mjtensin_p4_w));
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
@@ -3727,10 +3727,10 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(royalmah_state::cafetime)
mjderngr(config);
- MCFG_DEVICE_REPLACE("maincpu",TMP90841, 12000000) /* ? */
- MCFG_DEVICE_PROGRAM_MAP(cafetime_map)
- MCFG_TLCS90_PORT_P3_WRITE_CB(WRITE8(*this, royalmah_state, cafetime_p3_w))
- MCFG_TLCS90_PORT_P4_WRITE_CB(WRITE8(*this, royalmah_state, cafetime_p4_w))
+ tmp90841_device &tmp(TMP90841(config.replace(), m_maincpu, 12000000)); /* ? */
+ tmp.set_addrmap(AS_PROGRAM, &royalmah_state::cafetime_map);
+ tmp.port_write<3>().set(FUNC(royalmah_state::cafetime_p3_w));
+ tmp.port_write<4>().set(FUNC(royalmah_state::cafetime_p4_w));
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
@@ -3742,11 +3742,11 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(royalmah_state::mjvegasa)
mjderngr(config);
- MCFG_DEVICE_REPLACE("maincpu",TMP90841, XTAL(8'000'000)) /* ? */
- MCFG_DEVICE_PROGRAM_MAP(mjvegasa_map)
- MCFG_TLCS90_PORT_P3_READ_CB(READ8(*this, royalmah_state, mjtensin_p3_r))
- MCFG_TLCS90_PORT_P3_WRITE_CB(WRITE8(*this, royalmah_state, mjvegasa_p3_w))
- MCFG_TLCS90_PORT_P4_WRITE_CB(WRITE8(*this, royalmah_state, mjvegasa_p4_w))
+ tmp90841_device &tmp(TMP90841(config.replace(), m_maincpu, XTAL(8'000'000))); /* ? */
+ tmp.set_addrmap(AS_PROGRAM, &royalmah_state::mjvegasa_map);
+ tmp.port_read<3>().set(FUNC(royalmah_state::mjtensin_p3_r));
+ tmp.port_write<3>().set(FUNC(royalmah_state::mjvegasa_p3_w));
+ tmp.port_write<4>().set(FUNC(royalmah_state::mjvegasa_p4_w));
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
diff --git a/src/mame/drivers/taitopjc.cpp b/src/mame/drivers/taitopjc.cpp
index 1587483a60d..7882443ea3a 100644
--- a/src/mame/drivers/taitopjc.cpp
+++ b/src/mame/drivers/taitopjc.cpp
@@ -117,7 +117,7 @@ public:
private:
required_device<cpu_device> m_maincpu;
- required_device<cpu_device> m_iocpu;
+ required_device<tmp95c063_device> m_iocpu;
required_device<cpu_device> m_soundcpu;
required_device<cpu_device> m_dsp;
required_device<tc0780fpa_device> m_tc0780fpa;
@@ -775,16 +775,16 @@ MACHINE_CONFIG_START(taitopjc_state::taitopjc)
MCFG_DEVICE_PROGRAM_MAP(ppc603e_mem)
/* TMP95C063F I/O CPU */
- MCFG_DEVICE_ADD("iocpu", TMP95C063, 25000000)
- MCFG_TMP95C063_PORT5_READ(IOPORT("INPUTS1"))
- MCFG_TMP95C063_PORTD_READ(IOPORT("INPUTS2"))
- MCFG_TMP95C063_PORTE_READ(IOPORT("INPUTS3"))
- MCFG_TMP95C063_AN0_READ(IOPORT("ANALOG1"))
- MCFG_TMP95C063_AN1_READ(IOPORT("ANALOG2"))
- MCFG_TMP95C063_AN2_READ(IOPORT("ANALOG3"))
- MCFG_TMP95C063_AN3_READ(IOPORT("ANALOG4"))
- MCFG_DEVICE_PROGRAM_MAP(tlcs900h_mem)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taitopjc_state, taitopjc_vbi)
+ TMP95C063(config, m_iocpu, 25000000);
+ m_iocpu->port5_read().set_ioport("INPUTS1");
+ m_iocpu->portd_read().set_ioport("INPUTS2");
+ m_iocpu->porte_read().set_ioport("INPUTS3");
+ m_iocpu->an_read<0>().set_ioport("ANALOG1");
+ m_iocpu->an_read<1>().set_ioport("ANALOG2");
+ m_iocpu->an_read<2>().set_ioport("ANALOG3");
+ m_iocpu->an_read<3>().set_ioport("ANALOG4");
+ m_iocpu->set_addrmap(AS_PROGRAM, &taitopjc_state::tlcs900h_mem);
+ m_iocpu->set_vblank_int("screen", FUNC(taitopjc_state::taitopjc_vbi));
/* TMS320C53 DSP */
MCFG_DEVICE_ADD("dsp", TMS32053, 40000000)
diff --git a/src/mame/drivers/taitotz.cpp b/src/mame/drivers/taitotz.cpp
index 9c7f95e4deb..b9df8ee4109 100644
--- a/src/mame/drivers/taitotz.cpp
+++ b/src/mame/drivers/taitotz.cpp
@@ -566,7 +566,7 @@ public:
private:
required_device<ppc_device> m_maincpu;
- required_device<cpu_device> m_iocpu;
+ required_device<tmp95c063_device> m_iocpu;
required_shared_ptr<uint64_t> m_work_ram;
required_shared_ptr<uint16_t> m_mbox_ram;
required_device<ata_interface_device> m_ata;
@@ -2570,53 +2570,52 @@ WRITE_LINE_MEMBER(taitotz_state::ide_interrupt)
m_iocpu->set_input_line(TLCS900_INT2, state);
}
-MACHINE_CONFIG_START(taitotz_state::taitotz)
+void taitotz_state::taitotz(machine_config &config)
+{
/* IBM EMPPC603eBG-100 */
- MCFG_DEVICE_ADD("maincpu", PPC603E, 100000000)
- MCFG_PPC_BUS_FREQUENCY(XTAL(66'666'700)) /* Multiplier 1.5, Bus = 66MHz, Core = 100MHz */
- MCFG_DEVICE_PROGRAM_MAP(ppc603e_mem)
+ PPC603E(config, m_maincpu, 100000000);
+ m_maincpu->set_bus_frequency(XTAL(66'666'700)); /* Multiplier 1.5, Bus = 66MHz, Core = 100MHz */
+ m_maincpu->set_addrmap(AS_PROGRAM, &taitotz_state::ppc603e_mem);
/* TMP95C063F I/O CPU */
- MCFG_DEVICE_ADD("iocpu", TMP95C063, 25000000)
- MCFG_TMP95C063_PORT9_READ(IOPORT("INPUTS1"))
- MCFG_TMP95C063_PORTB_READ(IOPORT("INPUTS2"))
- MCFG_TMP95C063_PORTD_READ(IOPORT("INPUTS3"))
- MCFG_TMP95C063_PORTE_READ(IOPORT("INPUTS4"))
- MCFG_TMP95C063_AN0_READ(IOPORT("ANALOG1"))
- MCFG_TMP95C063_AN1_READ(IOPORT("ANALOG2"))
- MCFG_TMP95C063_AN2_READ(IOPORT("ANALOG3"))
- MCFG_TMP95C063_AN3_READ(IOPORT("ANALOG4"))
- MCFG_TMP95C063_AN4_READ(IOPORT("ANALOG5"))
- MCFG_TMP95C063_AN5_READ(IOPORT("ANALOG6"))
- MCFG_TMP95C063_AN6_READ(IOPORT("ANALOG7"))
- MCFG_TMP95C063_AN7_READ(IOPORT("ANALOG8"))
-
- MCFG_DEVICE_PROGRAM_MAP(tlcs900h_mem)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", taitotz_state, taitotz_vbi)
+ TMP95C063(config, m_iocpu, 25000000);
+ m_iocpu->port9_read().set_ioport("INPUTS1");
+ m_iocpu->portb_read().set_ioport("INPUTS2");
+ m_iocpu->portd_read().set_ioport("INPUTS3");
+ m_iocpu->porte_read().set_ioport("INPUTS4");
+ m_iocpu->an_read<0>().set_ioport("ANALOG1");
+ m_iocpu->an_read<1>().set_ioport("ANALOG2");
+ m_iocpu->an_read<2>().set_ioport("ANALOG3");
+ m_iocpu->an_read<3>().set_ioport("ANALOG4");
+ m_iocpu->an_read<4>().set_ioport("ANALOG5");
+ m_iocpu->an_read<5>().set_ioport("ANALOG6");
+ m_iocpu->an_read<6>().set_ioport("ANALOG7");
+ m_iocpu->an_read<7>().set_ioport("ANALOG8");
+ m_iocpu->set_addrmap(AS_PROGRAM, &taitotz_state::tlcs900h_mem);
+ m_iocpu->set_vblank_int("screen", FUNC(taitotz_state::taitotz_vbi));
/* MN1020819DA sound CPU */
- MCFG_QUANTUM_TIME(attotime::from_hz(120))
+ config.m_minimum_quantum = attotime::from_hz(120);
ata_interface_device &ata(ATA_INTERFACE(config, "ata").options(ata_devices, "hdd", nullptr, true));
ata.irq_handler().set(FUNC(taitotz_state::ide_interrupt));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(512, 384)
- MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
- MCFG_SCREEN_UPDATE_DRIVER(taitotz_state, screen_update_taitotz)
-
-MACHINE_CONFIG_END
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(60);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ m_screen->set_size(512, 384);
+ m_screen->set_visarea(0, 511, 0, 383);
+ m_screen->set_screen_update(FUNC(taitotz_state::screen_update_taitotz));
+}
-MACHINE_CONFIG_START(taitotz_state::landhigh)
+void taitotz_state::landhigh(machine_config &config)
+{
taitotz(config);
- MCFG_DEVICE_MODIFY("iocpu")
- MCFG_DEVICE_PROGRAM_MAP(landhigh_tlcs900h_mem)
-MACHINE_CONFIG_END
+ m_iocpu->set_addrmap(AS_PROGRAM, &taitotz_state::landhigh_tlcs900h_mem);
+}
// Init for BIOS v1.52
diff --git a/src/mame/machine/nmk004.cpp b/src/mame/machine/nmk004.cpp
index bc3ac8c0d1a..976c1ed6ec0 100644
--- a/src/mame/machine/nmk004.cpp
+++ b/src/mame/machine/nmk004.cpp
@@ -110,11 +110,12 @@ void nmk004_device::device_start()
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(nmk004_device::device_add_mconfig)
- MCFG_DEVICE_ADD("mcu",TMP90840, DERIVED_CLOCK(1,1)) // Toshiba TMP90C840AF in QFP64 package with 8Kbyte internal ROM
- MCFG_DEVICE_PROGRAM_MAP(nmk004_sound_mem_map)
- MCFG_TLCS90_PORT_P4_WRITE_CB(WRITE8(*this, nmk004_device, nmk004_port4_w))
-MACHINE_CONFIG_END
+void nmk004_device::device_add_mconfig(machine_config &config)
+{
+ TMP90840(config, m_cpu, DERIVED_CLOCK(1,1)); // Toshiba TMP90C840AF in QFP64 package with 8Kbyte internal ROM
+ m_cpu->set_addrmap(AS_PROGRAM, &nmk004_device::nmk004_sound_mem_map);
+ m_cpu->port_write<4>().set(FUNC(nmk004_device::nmk004_port4_w));
+}
//-------------------------------------------------
// device_rom_region - return a pointer to the