summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2018-12-15 18:23:57 +0100
committer mooglyguy <therealmogminer@gmail.com>2018-12-15 18:23:57 +0100
commite36bad6f40b404331bd6edf4f0c4d72e4fb035e4 (patch)
tree7287be9d04bc8a009418384112b49e284b4f40f7
parent8a44816c0679d94b4a175804618d0b447a71f028 (diff)
-bus/apricot/expansion/expansion, bus/isbx, cpu/i8086, cpu/i8089, : Removed MCFG macros. [Ryan Holtz]
-a7150, altos8600, apricot, fanucspmg, isbc, machine/isbc_215g: Removed MACHINE_CONFIG macros. [Ryan Holtz]
-rw-r--r--src/devices/bus/apricot/expansion/expansion.cpp14
-rw-r--r--src/devices/bus/apricot/expansion/expansion.h71
-rw-r--r--src/devices/bus/isbx/isbx.h43
-rw-r--r--src/devices/cpu/i8089/i8089.cpp11
-rw-r--r--src/devices/cpu/i8089/i8089.h18
-rw-r--r--src/devices/cpu/i8089/i8089_channel.cpp2
-rw-r--r--src/devices/cpu/i8089/i8089_channel.h15
-rw-r--r--src/devices/cpu/i8089/i8089_ops.cpp2
-rw-r--r--src/devices/cpu/i86/i86.h26
-rw-r--r--src/mame/drivers/a7150.cpp31
-rw-r--r--src/mame/drivers/altos8600.cpp47
-rw-r--r--src/mame/drivers/apricot.cpp61
-rw-r--r--src/mame/drivers/compis.cpp40
-rw-r--r--src/mame/drivers/fanucspmg.cpp31
-rw-r--r--src/mame/drivers/isbc.cpp76
-rw-r--r--src/mame/drivers/rc759.cpp22
-rw-r--r--src/mame/machine/isbc_215g.cpp33
17 files changed, 234 insertions, 309 deletions
diff --git a/src/devices/bus/apricot/expansion/expansion.cpp b/src/devices/bus/apricot/expansion/expansion.cpp
index a7b04ca3cb7..98141860782 100644
--- a/src/devices/bus/apricot/expansion/expansion.cpp
+++ b/src/devices/bus/apricot/expansion/expansion.cpp
@@ -68,7 +68,9 @@ apricot_expansion_bus_device::apricot_expansion_bus_device(const machine_config
m_ext1_handler(*this),
m_ext2_handler(*this),
m_int2_handler(*this),
- m_int3_handler(*this), m_cpu_tag(nullptr), m_iop_tag(nullptr)
+ m_int3_handler(*this),
+ m_cpu(*this, finder_base::DUMMY_TAG),
+ m_iop(*this, finder_base::DUMMY_TAG)
{
}
@@ -102,13 +104,11 @@ void apricot_expansion_bus_device::device_start()
void apricot_expansion_bus_device::device_reset()
{
- cpu_device *cpu = m_owner->subdevice<cpu_device>(m_cpu_tag);
- m_program = &cpu->space(AS_PROGRAM);
- m_io = &cpu->space(AS_IO);
+ m_program = &m_cpu->space(AS_PROGRAM);
+ m_io = &m_cpu->space(AS_IO);
- cpu_device *iop = m_owner->subdevice<cpu_device>(m_iop_tag);
- m_program_iop = &iop->space(AS_PROGRAM);
- m_io_iop = &iop->space(AS_IO);
+ m_program_iop = &m_iop->space(AS_PROGRAM);
+ m_io_iop = &m_iop->space(AS_IO);
}
//-------------------------------------------------
diff --git a/src/devices/bus/apricot/expansion/expansion.h b/src/devices/bus/apricot/expansion/expansion.h
index e7f2b881819..85b0e47dc5e 100644
--- a/src/devices/bus/apricot/expansion/expansion.h
+++ b/src/devices/bus/apricot/expansion/expansion.h
@@ -47,41 +47,6 @@
#pragma once
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_EXPANSION_ADD(_tag, _cpu_tag) \
- MCFG_DEVICE_ADD(_tag, APRICOT_EXPANSION_BUS, 0) \
- downcast<apricot_expansion_bus_device &>(*device).set_cpu_tag(this, _cpu_tag);
-
-#define MCFG_EXPANSION_IOP_ADD(_tag) \
- downcast<apricot_expansion_bus_device &>(*device).set_iop_tag(this, _tag);
-
-#define MCFG_EXPANSION_SLOT_ADD(_tag, _slot_intf, _def_slot) \
- MCFG_DEVICE_ADD(_tag, APRICOT_EXPANSION_SLOT, 0) \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-
-#define MCFG_EXPANSION_DMA1_HANDLER(_devcb) \
- downcast<apricot_expansion_bus_device &>(*device).set_dma1_handler(DEVCB_##_devcb);
-
-#define MCFG_EXPANSION_DMA2_HANDLER(_devcb) \
- downcast<apricot_expansion_bus_device &>(*device).set_dma2_handler(DEVCB_##_devcb);
-
-#define MCFG_EXPANSION_EXT1_HANDLER(_devcb) \
- downcast<apricot_expansion_bus_device &>(*device).set_ext1_handler(DEVCB_##_devcb);
-
-#define MCFG_EXPANSION_EXT2_HANDLER(_devcb) \
- downcast<apricot_expansion_bus_device &>(*device).set_ext2_handler(DEVCB_##_devcb);
-
-#define MCFG_EXPANSION_INT2_HANDLER(_devcb) \
- downcast<apricot_expansion_bus_device &>(*device).set_int2_handler(DEVCB_##_devcb);
-
-#define MCFG_EXPANSION_INT3_HANDLER(_devcb) \
- downcast<apricot_expansion_bus_device &>(*device).set_int3_handler(DEVCB_##_devcb);
-
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -96,6 +61,15 @@ class apricot_expansion_slot_device : public device_t, public device_slot_interf
{
public:
// construction/destruction
+ template <typename T>
+ apricot_expansion_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt)
+ : apricot_expansion_slot_device(mconfig, tag, owner, (uint32_t)0)
+ {
+ option_reset();
+ opts(*this);
+ set_default_option(dflt);
+ set_fixed(false);
+ }
apricot_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
@@ -115,19 +89,22 @@ class apricot_expansion_bus_device : public device_t
{
public:
// construction/destruction
+ template <typename T, typename U>
+ apricot_expansion_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu_tag, U &&iop_tag)
+ : apricot_expansion_bus_device(mconfig, tag, owner, (uint32_t)0)
+ {
+ m_cpu.set_tag(std::forward<T>(cpu_tag));
+ m_iop.set_tag(std::forward<U>(iop_tag));
+ }
apricot_expansion_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~apricot_expansion_bus_device();
- template <class Object> devcb_base &set_dma1_handler(Object &&cb) { return m_dma1_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_dma2_handler(Object &&cb) { return m_dma2_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_ext1_handler(Object &&cb) { return m_ext1_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_ext2_handler(Object &&cb) { return m_ext2_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_int2_handler(Object &&cb) { return m_int2_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_int3_handler(Object &&cb) { return m_int3_handler.set_callback(std::forward<Object>(cb)); }
-
- // inline configuration
- void set_cpu_tag(device_t *owner, const char *tag) { m_cpu_tag = tag; }
- void set_iop_tag(device_t *owner, const char *tag) { m_iop_tag = tag; }
+ auto dma1() { return m_dma1_handler.bind(); }
+ auto dma2() { return m_dma2_handler.bind(); }
+ auto ext1() { return m_ext1_handler.bind(); }
+ auto ext2() { return m_ext2_handler.bind(); }
+ auto int2() { return m_int2_handler.bind(); }
+ auto int3() { return m_int3_handler.bind(); }
void add_card(device_apricot_expansion_card_interface *card);
@@ -163,8 +140,8 @@ private:
devcb_write_line m_int3_handler;
// configuration
- const char *m_cpu_tag;
- const char *m_iop_tag;
+ required_device<cpu_device> m_cpu;
+ required_device<cpu_device> m_iop;
};
// device type definition
diff --git a/src/devices/bus/isbx/isbx.h b/src/devices/bus/isbx/isbx.h
index 1219a5fc61c..d62d9515fe1 100644
--- a/src/devices/bus/isbx/isbx.h
+++ b/src/devices/bus/isbx/isbx.h
@@ -36,32 +36,6 @@
#pragma once
-
-
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_ISBX_SLOT_ADD(_tag, _clock, _slot_intf, _def_slot) \
- MCFG_DEVICE_ADD(_tag, ISBX_SLOT, _clock) \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-
-
-#define MCFG_ISBX_SLOT_MINTR0_CALLBACK(_mintr0) \
- downcast<isbx_slot_device *>(device)->set_mintr0_callback(DEVCB_##_mintr0);
-
-#define MCFG_ISBX_SLOT_MINTR1_CALLBACK(_mintr1) \
- downcast<isbx_slot_device *>(device)->set_mintr1_callback(DEVCB_##_mintr1);
-
-#define MCFG_ISBX_SLOT_MDRQT_CALLBACK(_mdrqt) \
- downcast<isbx_slot_device *>(device)->set_mdrqt_callback(DEVCB_##_mdrqt);
-
-#define MCFG_ISBX_SLOT_MWAIT_CALLBACK(_mwait) \
- downcast<isbx_slot_device *>(device)->set_mwait_callback(DEVCB_##_mwait);
-
-
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -101,12 +75,21 @@ class isbx_slot_device : public device_t,
{
public:
// construction/destruction
+ template <typename T>
+ isbx_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock, T &&opts, char const *dflt)
+ : isbx_slot_device(mconfig, tag, owner, clock)
+ {
+ option_reset();
+ opts(*this);
+ set_default_option(dflt);
+ set_fixed(false);
+ }
isbx_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> void set_mintr0_callback(Object &&cb) { m_write_mintr0.set_callback(std::forward<Object>(cb)); }
- template <class Object> void set_mintr1_callback(Object &&cb) { m_write_mintr1.set_callback(std::forward<Object>(cb)); }
- template <class Object> void set_mdrqt_callback(Object &&cb) { m_write_mdrqt.set_callback(std::forward<Object>(cb)); }
- template <class Object> void set_mwait_callback(Object &&cb) { m_write_mwait.set_callback(std::forward<Object>(cb)); }
+ auto mintr0() { return m_write_mintr0.bind(); }
+ auto mintr1() { return m_write_mintr1.bind(); }
+ auto mdrqt() { return m_write_mdrqt.bind(); }
+ auto mwait() { return m_write_mwait.bind(); }
// computer interface
DECLARE_READ8_MEMBER( mcs0_r ) { return m_card ? m_card->mcs0_r(space, offset) : 0xff; }
diff --git a/src/devices/cpu/i8089/i8089.cpp b/src/devices/cpu/i8089/i8089.cpp
index c99fe209aba..cf694d53cfb 100644
--- a/src/devices/cpu/i8089/i8089.cpp
+++ b/src/devices/cpu/i8089/i8089.cpp
@@ -208,12 +208,11 @@ void i8089_device::state_string_export(const device_state_entry &entry, std::str
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(i8089_device::device_add_mconfig)
- MCFG_I8089_CHANNEL_ADD("1")
- MCFG_I8089_CHANNEL_SINTR(WRITELINE(*this, i8089_device, ch1_sintr_w))
- MCFG_I8089_CHANNEL_ADD("2")
- MCFG_I8089_CHANNEL_SINTR(WRITELINE(*this, i8089_device, ch2_sintr_w))
-MACHINE_CONFIG_END
+void i8089_device::device_add_mconfig(machine_config &config)
+{
+ I8089_CHANNEL(config, m_ch1, 0).sintr().set(FUNC(i8089_device::ch1_sintr_w));
+ I8089_CHANNEL(config, m_ch2, 0).sintr().set(FUNC(i8089_device::ch2_sintr_w));
+}
//**************************************************************************
diff --git a/src/devices/cpu/i8089/i8089.h b/src/devices/cpu/i8089/i8089.h
index 0ea8c523f0a..19f81136336 100644
--- a/src/devices/cpu/i8089/i8089.h
+++ b/src/devices/cpu/i8089/i8089.h
@@ -19,20 +19,6 @@
//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_I8089_DATA_WIDTH(_data_width) \
- downcast<i8089_device &>(*device).set_data_width(_data_width);
-
-#define MCFG_I8089_SINTR1(_sintr1) \
- downcast<i8089_device *>(device)->set_sintr1_callback(DEVCB_##_sintr1);
-
-#define MCFG_I8089_SINTR2(_sintr2) \
- downcast<i8089_device *>(device)->set_sintr2_callback(DEVCB_##_sintr2);
-
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -50,8 +36,8 @@ public:
i8089_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- 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)); }
+ auto sintr1() { return m_write_sintr1.bind(); }
+ auto sintr2() { return m_write_sintr2.bind(); }
// configuration helpers
void set_data_width(uint8_t data_width) { m_data_width = data_width; }
diff --git a/src/devices/cpu/i8089/i8089_channel.cpp b/src/devices/cpu/i8089/i8089_channel.cpp
index b34bd98e16a..433a3ca792c 100644
--- a/src/devices/cpu/i8089/i8089_channel.cpp
+++ b/src/devices/cpu/i8089/i8089_channel.cpp
@@ -461,7 +461,7 @@ int i8089_channel_device::execute_run()
{
case 0: nop(); break;
case 1: invalid(opc); break;
- case 2: sintr(); break;
+ case 2: do_sintr(); break;
case 3: xfer(); break;
default: wid(BIT(brp, 1), BIT(brp, 0));
}
diff --git a/src/devices/cpu/i8089/i8089_channel.h b/src/devices/cpu/i8089/i8089_channel.h
index c4d64d776ed..89aa511193b 100644
--- a/src/devices/cpu/i8089/i8089_channel.h
+++ b/src/devices/cpu/i8089/i8089_channel.h
@@ -15,17 +15,6 @@
//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_I8089_CHANNEL_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, I8089_CHANNEL, 0)
-
-#define MCFG_I8089_CHANNEL_SINTR(_sintr) \
- downcast<i8089_channel_device *>(device)->set_sintr_callback(DEVCB_##_sintr);
-
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -38,7 +27,7 @@ public:
// construction/destruction
i8089_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> void set_sintr_callback(Object &&sintr) { m_write_sintr.set_callback(std::forward<Object>(sintr)); }
+ auto sintr() { return m_write_sintr.bind(); }
// set register
void set_reg(int reg, uint32_t value, int tag = -1);
@@ -157,7 +146,7 @@ private:
void ori_ri(int r, int16_t i);
void ori_mi(int m, int16_t i, int o);
void setb(int m, int b, int o);
- void sintr();
+ void do_sintr();
void tsl(int m, int8_t i, int8_t d, int o);
void wid(int s, int d);
void xfer();
diff --git a/src/devices/cpu/i8089/i8089_ops.cpp b/src/devices/cpu/i8089/i8089_ops.cpp
index 271bfddbed0..a8399e20aaa 100644
--- a/src/devices/cpu/i8089/i8089_ops.cpp
+++ b/src/devices/cpu/i8089/i8089_ops.cpp
@@ -378,7 +378,7 @@ void i8089_channel_device::setb(int m, int b, int o)
// set interrupt service flip-flop
-void i8089_channel_device::sintr()
+void i8089_channel_device::do_sintr()
{
if (BIT(m_r[PSW].w, 4))
{
diff --git a/src/devices/cpu/i86/i86.h b/src/devices/cpu/i86/i86.h
index 09b2696e38b..3d0a372b7d5 100644
--- a/src/devices/cpu/i86/i86.h
+++ b/src/devices/cpu/i86/i86.h
@@ -16,27 +16,6 @@ DECLARE_DEVICE_TYPE(I8088, i8088_cpu_device)
#define INPUT_LINE_TEST 20
-#define MCFG_I8086_LOCK_HANDLER(_write) \
- downcast<i8086_common_cpu_device &>(*device).set_lock_handler(DEVCB_##_write);
-
-#define MCFG_I8086_IF_HANDLER(_write) \
- 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)
-
-#define MCFG_I8086_CODE_MAP(map) \
- MCFG_DEVICE_ADDRESS_MAP(i8086_cpu_device::AS_CODE, map)
-
-#define MCFG_I8086_EXTRA_MAP(map) \
- MCFG_DEVICE_ADDRESS_MAP(i8086_cpu_device::AS_EXTRA, map)
-
-#define MCFG_I8086_ESC_OPCODE_HANDLER(_write) \
- downcast<i8086_cpu_device &>(*device).set_esc_opcode_handler(DEVCB_##_write);
-
-#define MCFG_I8086_ESC_DATA_HANDLER(_write) \
- downcast<i8086_cpu_device &>(*device).set_esc_data_handler(DEVCB_##_write);
-
enum
{
I8086_PC = STATE_GENPC,
@@ -49,7 +28,7 @@ enum
class i8086_common_cpu_device : public cpu_device, public i386_disassembler::config
{
public:
- template <class Object> devcb_base &set_lock_handler(Object &&cb) { return m_lock_handler.set_callback(std::forward<Object>(cb)); }
+ auto lock_handler() { return m_lock_handler.bind(); }
protected:
enum
@@ -366,9 +345,6 @@ public:
// device_memory_interface overrides
virtual space_config_vector memory_space_config() const override;
- 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)); }
auto if_handler() { return m_out_if_func.bind(); }
auto esc_opcode_handler() { return m_esc_opcode_handler.bind(); }
auto esc_data_handler() { return m_esc_data_handler.bind(); }
diff --git a/src/mame/drivers/a7150.cpp b/src/mame/drivers/a7150.cpp
index 857710a02b2..c4145243659 100644
--- a/src/mame/drivers/a7150.cpp
+++ b/src/mame/drivers/a7150.cpp
@@ -96,7 +96,7 @@ private:
uint32_t screen_update_k7072(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof(screen_device &screen, bool state);
- required_device<cpu_device> m_maincpu;
+ required_device<i8086_cpu_device> m_maincpu;
required_device<i8251_device> m_uart8251;
required_device<pit8253_device> m_pit8253;
required_device<pic8259_device> m_pic8259;
@@ -465,13 +465,14 @@ static const z80_daisy_config k7070_daisy_chain[] =
*
* (framebuffer and terminal should be slot devices.)
*/
-MACHINE_CONFIG_START(a7150_state::a7150)
- MCFG_DEVICE_ADD("maincpu", I8086, XTAL(9'832'000)/2)
- MCFG_DEVICE_PROGRAM_MAP(a7150_mem)
- MCFG_DEVICE_IO_MAP(a7150_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
- MCFG_I8086_ESC_OPCODE_HANDLER(WRITE32("i8087", i8087_device, insn_w))
- MCFG_I8086_ESC_DATA_HANDLER(WRITE32("i8087", i8087_device, addr_w))
+void a7150_state::a7150(machine_config &config)
+{
+ I8086(config, m_maincpu, XTAL(9'832'000)/2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &a7150_state::a7150_mem);
+ m_maincpu->set_addrmap(AS_IO, &a7150_state::a7150_io);
+ m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
+ m_maincpu->esc_opcode_handler().set("i8087", FUNC(i8087_device::insn_w));
+ m_maincpu->esc_data_handler().set("i8087", FUNC(i8087_device::addr_w));
i8087_device &i8087(I8087(config, "i8087", XTAL(9'832'000)/2));
i8087.set_addrmap(AS_PROGRAM, &a7150_state::a7150_mem);
@@ -555,12 +556,14 @@ MACHINE_CONFIG_START(a7150_state::a7150)
rs232_port_device &rs232b(RS232_PORT(config, RS232_B_TAG, default_rs232_devices, "loopback"));
rs232b.rxd_handler().set(Z80SIO_TAG, FUNC(z80sio_device::rxb_w));
- MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
- MCFG_SCREEN_RAW_PARAMS( XTAL(16'000'000), 737,0,640, 431,0,400 )
- MCFG_SCREEN_UPDATE_DRIVER(a7150_state, screen_update_k7072)
- MCFG_SCREEN_PALETTE("palette")
- MCFG_PALETTE_ADD_MONOCHROME("palette")
-MACHINE_CONFIG_END
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_color(rgb_t::green());
+ screen.set_raw(XTAL(16'000'000), 737,0,640, 431,0,400);
+ screen.set_screen_update(FUNC(a7150_state::screen_update_k7072));
+ screen.set_palette(m_palette);
+
+ PALETTE(config, m_palette, 2).set_init("palette", FUNC(palette_device::palette_init_monochrome));
+}
/* ROM definition */
ROM_START( a7150 )
diff --git a/src/mame/drivers/altos8600.cpp b/src/mame/drivers/altos8600.cpp
index 796ee47bc8b..e9a68e48d9a 100644
--- a/src/mame/drivers/altos8600.cpp
+++ b/src/mame/drivers/altos8600.cpp
@@ -721,23 +721,24 @@ static void altos8600_floppies(device_slot_interface &device)
device.option_add("8dd", FLOPPY_8_DSDD);
}
-MACHINE_CONFIG_START(altos8600_state::altos8600)
- MCFG_DEVICE_ADD(m_maincpu, I8086, 5_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(cpu_mem)
- MCFG_DEVICE_IO_MAP(cpu_io)
- MCFG_DEVICE_OPCODES_MAP(code_mem)
- MCFG_I8086_STACK_MAP(stack_mem)
- MCFG_I8086_CODE_MAP(code_mem)
- MCFG_I8086_EXTRA_MAP(extra_mem)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(altos8600_state, inta)
- MCFG_I8086_IF_HANDLER(WRITELINE(*this, altos8600_state, cpuif_w))
-
- MCFG_DEVICE_ADD(m_dmac, I8089, 5_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(dmac_mem)
- MCFG_DEVICE_IO_MAP(dmac_io)
- MCFG_I8089_DATA_WIDTH(16)
- MCFG_I8089_SINTR1(WRITELINE(*this, altos8600_state, sintr1_w))
- MCFG_I8089_SINTR2(WRITELINE(m_pic[1], pic8259_device, ir4_w))
+void altos8600_state::altos8600(machine_config &config)
+{
+ I8086(config, m_maincpu, 5_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &altos8600_state::cpu_mem);
+ m_maincpu->set_addrmap(AS_IO, &altos8600_state::cpu_io);
+ m_maincpu->set_addrmap(AS_OPCODES, &altos8600_state::code_mem);
+ m_maincpu->set_addrmap(i8086_cpu_device::AS_STACK, &altos8600_state::stack_mem);
+ m_maincpu->set_addrmap(i8086_cpu_device::AS_CODE, &altos8600_state::code_mem);
+ m_maincpu->set_addrmap(i8086_cpu_device::AS_EXTRA, &altos8600_state::extra_mem);
+ m_maincpu->set_irq_acknowledge_callback(FUNC(altos8600_state::inta));
+ m_maincpu->if_handler().set(FUNC(altos8600_state::cpuif_w));
+
+ I8089(config, m_dmac, 5_MHz_XTAL);
+ m_dmac->set_addrmap(AS_PROGRAM, &altos8600_state::dmac_mem);
+ m_dmac->set_addrmap(AS_IO, &altos8600_state::dmac_io);
+ m_dmac->set_data_width(16);
+ m_dmac->sintr1().set(FUNC(altos8600_state::sintr1_w));
+ m_dmac->sintr2().set(m_pic[1], FUNC(pic8259_device::ir4_w));
PIC8259(config, m_pic[0], 0);
m_pic[0]->out_int_callback().set_inputline(m_maincpu, 0);
@@ -787,18 +788,18 @@ MACHINE_CONFIG_START(altos8600_state::altos8600)
FD1797(config, m_fdc, 2000000);
m_fdc->intrq_wr_callback().set(m_pic[1], FUNC(pic8259_device::ir1_w));
m_fdc->drq_wr_callback().set(FUNC(altos8600_state::fddrq_w));
- MCFG_FLOPPY_DRIVE_ADD("fd1797:0", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD("fd1797:1", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD("fd1797:2", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD("fd1797:3", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats)
+ FLOPPY_CONNECTOR(config, "fd1797:0", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats);
+ FLOPPY_CONNECTOR(config, "fd1797:1", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats);
+ FLOPPY_CONNECTOR(config, "fd1797:2", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats);
+ FLOPPY_CONNECTOR(config, "fd1797:3", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats);
ACS8600_ICS(config, m_ics, 0);
m_ics->set_host_space(m_dmac, AS_PROGRAM); // TODO: fixme
m_ics->irq1_callback().set(m_pic[0], FUNC(pic8259_device::ir5_w));
m_ics->irq2_callback().set(m_pic[0], FUNC(pic8259_device::ir6_w));
- MCFG_HARDDISK_ADD("hdd")
-MACHINE_CONFIG_END
+ HARDDISK(config, "hdd", 0);
+}
ROM_START(altos8600)
ROM_REGION(0x2000, "bios", 0)
diff --git a/src/mame/drivers/apricot.cpp b/src/mame/drivers/apricot.cpp
index c0496c3963e..77d1e46ffc7 100644
--- a/src/mame/drivers/apricot.cpp
+++ b/src/mame/drivers/apricot.cpp
@@ -357,33 +357,36 @@ void apricot_state::apricot_io(address_map &map)
// MACHINE DRIVERS
//**************************************************************************
-MACHINE_CONFIG_START(apricot_state::apricot)
+void apricot_state::apricot(machine_config &config)
+{
// main cpu
- MCFG_DEVICE_ADD("ic91", I8086, 15_MHz_XTAL / 3)
- MCFG_DEVICE_PROGRAM_MAP(apricot_mem)
- MCFG_DEVICE_IO_MAP(apricot_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("ic31", pic8259_device, inta_cb)
- MCFG_I8086_LOCK_HANDLER(WRITELINE(*this, apricot_state, i8086_lock_w))
+ I8086(config, m_cpu, 15_MHz_XTAL / 3);
+ m_cpu->set_addrmap(AS_PROGRAM, &apricot_state::apricot_mem);
+ m_cpu->set_addrmap(AS_IO, &apricot_state::apricot_io);
+ m_cpu->set_irq_acknowledge_callback("ic31", FUNC(pic8259_device::inta_cb));
+ m_cpu->lock_handler().set(FUNC(apricot_state::i8086_lock_w));
// i/o cpu
- MCFG_DEVICE_ADD("ic71", I8089, 15_MHz_XTAL / 3)
- MCFG_DEVICE_PROGRAM_MAP(apricot_mem)
- MCFG_DEVICE_IO_MAP(apricot_io)
- MCFG_I8089_DATA_WIDTH(16)
- MCFG_I8089_SINTR1(WRITELINE(m_pic, pic8259_device, ir0_w))
- MCFG_I8089_SINTR2(WRITELINE(m_pic, pic8259_device, ir1_w))
+ I8089(config, m_iop, 15_MHz_XTAL / 3);
+ m_iop->set_addrmap(AS_PROGRAM, &apricot_state::apricot_mem);
+ m_iop->set_addrmap(AS_IO, &apricot_state::apricot_io);
+ m_iop->set_data_width(16);
+ m_iop->sintr1().set(m_pic, FUNC(pic8259_device::ir0_w));
+ m_iop->sintr2().set(m_pic, FUNC(pic8259_device::ir1_w));
// ram
RAM(config, RAM_TAG).set_default_size("256K");
// video hardware
- MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
- MCFG_SCREEN_SIZE(800, 400)
- MCFG_SCREEN_VISIBLE_AREA(0, 800-1, 0, 400-1)
- MCFG_SCREEN_REFRESH_RATE(72)
- MCFG_SCREEN_UPDATE_DRIVER(apricot_state, screen_update_apricot)
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_color(rgb_t::green());
+ screen.set_size(800, 400);
+ screen.set_visarea(0, 800-1, 0, 400-1);
+ screen.set_refresh_hz(72);
+ screen.set_screen_update(FUNC(apricot_state::screen_update_apricot));
- MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette")
+ PALETTE(config, m_palette, 3);
+ m_palette->set_init("palette", FUNC(palette_device::palette_init_monochrome_highlight));
HD6845(config, m_crtc, 15_MHz_XTAL / 10);
m_crtc->set_screen("screen");
@@ -394,8 +397,7 @@ MACHINE_CONFIG_START(apricot_state::apricot)
// sound hardware
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ic7", SN76489, 4_MHz_XTAL / 2)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ SN76489(config, "ic7", 4_MHz_XTAL / 2).add_route(ALL_OUTPUTS, "mono", 1.0);
// devices
I8255A(config, m_ppi, 0);
@@ -456,23 +458,24 @@ MACHINE_CONFIG_START(apricot_state::apricot)
//m_centronics->select_handler().set(); // schematic page 294 says this is connected to pc4, but that is an output to the printer
INPUT_BUFFER(config, "cent_data_in");
- MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+
+ output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
+ m_centronics->set_output_latch(cent_data_out);
// floppy
WD2797(config, m_fdc, 4_MHz_XTAL / 2);
m_fdc->intrq_wr_callback().set(FUNC(apricot_state::fdc_intrq_w));
m_fdc->drq_wr_callback().set(m_iop, FUNC(i8089_device::drq1_w));
- MCFG_FLOPPY_DRIVE_ADD("ic68:0", apricot_floppies, "d32w", apricot_state::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD("ic68:1", apricot_floppies, "d32w", apricot_state::floppy_formats)
+ FLOPPY_CONNECTOR(config, "ic68:0", apricot_floppies, "d32w", apricot_state::floppy_formats);
+ FLOPPY_CONNECTOR(config, "ic68:1", apricot_floppies, "d32w", apricot_state::floppy_formats);
- MCFG_SOFTWARE_LIST_ADD("flop_list", "apricot_flop")
+ SOFTWARE_LIST(config, "flop_list").set_original("apricot_flop");
// expansion bus
- MCFG_EXPANSION_ADD("exp", "ic91")
- MCFG_EXPANSION_IOP_ADD("ic71")
- MCFG_EXPANSION_SLOT_ADD("exp:1", apricot_expansion_cards, nullptr)
- MCFG_EXPANSION_SLOT_ADD("exp:2", apricot_expansion_cards, nullptr)
-MACHINE_CONFIG_END
+ APRICOT_EXPANSION_BUS(config, "exp", m_cpu, m_iop);
+ APRICOT_EXPANSION_SLOT(config, "exp:1", apricot_expansion_cards, nullptr);
+ APRICOT_EXPANSION_SLOT(config, "exp:2", apricot_expansion_cards, nullptr);
+}
void apricot_state::apricotxi(machine_config &config)
{
diff --git a/src/mame/drivers/compis.cpp b/src/mame/drivers/compis.cpp
index 577d3b57d91..a45df5d037e 100644
--- a/src/mame/drivers/compis.cpp
+++ b/src/mame/drivers/compis.cpp
@@ -782,14 +782,14 @@ MACHINE_CONFIG_START(compis_state::compis)
m_mpsc->out_rtsb_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_rts));
m_mpsc->out_int_callback().set(m_maincpu, FUNC(i80186_cpu_device::int3_w));
- MCFG_DEVICE_ADD(MM58174A_TAG, MM58274C, 32.768_kHz_XTAL)
- MCFG_MM58274C_MODE24(1) // 24 hour
- MCFG_MM58274C_DAY1(1) // monday
+ MM58274C(config, m_rtc, 32.768_kHz_XTAL);
+ m_rtc->set_mode24(1); // 24 hour
+ m_rtc->set_day1(1); // monday
- MCFG_CASSETTE_ADD(CASSETTE_TAG)
- MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
+ CASSETTE(config, m_cassette);
+ m_cassette->set_default_state((cassette_state)(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED));
- MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", compis_state, tape_tick, attotime::from_hz(44100))
+ TIMER(config, "tape").configure_periodic(FUNC(compis_state::tape_tick), attotime::from_hz(44100));
rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, nullptr));
rs232a.rxd_handler().set(m_mpsc, FUNC(z80dart_device::rxa_w));
@@ -801,24 +801,26 @@ MACHINE_CONFIG_START(compis_state::compis)
rs232b.dcd_handler().set(m_mpsc, FUNC(z80dart_device::dcdb_w));
rs232b.cts_handler().set(m_mpsc, FUNC(z80dart_device::ctsb_w));
- MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
- MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, compis_state, write_centronics_busy))
- MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, compis_state, write_centronics_select))
- MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
+ CENTRONICS(config, m_centronics, centronics_devices, "printer");
+ m_centronics->busy_handler().set(FUNC(compis_state::write_centronics_busy));
+ m_centronics->select_handler().set(FUNC(compis_state::write_centronics_select));
+
+ output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
+ m_centronics->set_output_latch(cent_data_out);
MCFG_COMPIS_GRAPHICS_SLOT_ADD(GRAPHICS_TAG, 15.36_MHz_XTAL/2, compis_graphics_cards, "hrg")
- MCFG_ISBX_SLOT_ADD(ISBX_0_TAG, 0, isbx_cards, "fdc")
- MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE(I80130_TAG, i80130_device, ir1_w))
- MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE(I80130_TAG, i80130_device, ir0_w))
- MCFG_ISBX_SLOT_MDRQT_CALLBACK(WRITELINE(I80186_TAG, i80186_cpu_device, drq0_w))
- MCFG_ISBX_SLOT_ADD(ISBX_1_TAG, 0, isbx_cards, nullptr)
- MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE(I80130_TAG, i80130_device, ir6_w))
- MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE(I80130_TAG, i80130_device, ir5_w))
- MCFG_ISBX_SLOT_MDRQT_CALLBACK(WRITELINE(I80186_TAG, i80186_cpu_device, drq1_w))
+ ISBX_SLOT(config, m_isbx0, 0, isbx_cards, "fdc");
+ m_isbx0->mintr0().set(I80130_TAG, FUNC(i80130_device::ir1_w));
+ m_isbx0->mintr1().set(I80130_TAG, FUNC(i80130_device::ir0_w));
+ m_isbx0->mdrqt().set(I80186_TAG, FUNC(i80186_cpu_device::drq0_w));
+ ISBX_SLOT(config, m_isbx1, 0, isbx_cards, nullptr);
+ m_isbx1->mintr0().set(I80130_TAG, FUNC(i80130_device::ir6_w));
+ m_isbx1->mintr1().set(I80130_TAG, FUNC(i80130_device::ir5_w));
+ m_isbx1->mdrqt().set(I80186_TAG, FUNC(i80186_cpu_device::drq1_w));
// software lists
- MCFG_SOFTWARE_LIST_ADD("flop_list", "compis")
+ SOFTWARE_LIST(config, "flop_list").set_original("compis");
// internal ram
RAM(config, m_ram).set_default_size("128K").set_extra_options("256K");
diff --git a/src/mame/drivers/fanucspmg.cpp b/src/mame/drivers/fanucspmg.cpp
index 3e14e07baf9..03640e93f63 100644
--- a/src/mame/drivers/fanucspmg.cpp
+++ b/src/mame/drivers/fanucspmg.cpp
@@ -945,14 +945,15 @@ FLOPPY_FORMATS_MEMBER( fanucspmg_state::floppy_formats )
FLOPPY_IMD_FORMAT
FLOPPY_FORMATS_END
-MACHINE_CONFIG_START(fanucspmg_state::fanucspmg)
+void fanucspmg_state::fanucspmg(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD(MAINCPU_TAG, I8086, XTAL(15'000'000)/3)
- MCFG_DEVICE_PROGRAM_MAP(maincpu_mem)
- MCFG_DEVICE_IO_MAP(maincpu_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic0", pic8259_device, inta_cb)
- MCFG_I8086_ESC_OPCODE_HANDLER(WRITE32("i8087", i8087_device, insn_w))
- MCFG_I8086_ESC_DATA_HANDLER(WRITE32("i8087", i8087_device, addr_w))
+ I8086(config, m_maincpu, XTAL(15'000'000)/3);
+ m_maincpu->set_addrmap(AS_PROGRAM, &fanucspmg_state::maincpu_mem);
+ m_maincpu->set_addrmap(AS_IO, &fanucspmg_state::maincpu_io);
+ m_maincpu->set_irq_acknowledge_callback("pic0", FUNC(pic8259_device::inta_cb));
+ m_maincpu->esc_opcode_handler().set("i8087", FUNC(i8087_device::insn_w));
+ m_maincpu->esc_data_handler().set("i8087", FUNC(i8087_device::addr_w));
i8087_device &i8087(I8087(config, "i8087", XTAL(15'000'000)/3));
i8087.set_addrmap(AS_PROGRAM, &fanucspmg_state::maincpu_mem);
@@ -960,8 +961,8 @@ MACHINE_CONFIG_START(fanucspmg_state::fanucspmg)
//i8087.irq().set_inputline("maincpu", INPUT_LINE_NMI); // TODO: presumably this is connected to the pic
i8087.busy().set_inputline("maincpu", INPUT_LINE_TEST);
- MCFG_DEVICE_ADD(SUBCPU_TAG, I8085A, XTAL(16'000'000)/2/2)
- MCFG_DEVICE_PROGRAM_MAP(subcpu_mem)
+ I8085A(config, m_subcpu, XTAL(16'000'000)/2/2);
+ m_subcpu->set_addrmap(AS_PROGRAM, &fanucspmg_state::subcpu_mem);
I8251(config, m_usart[0], 0);
I8251(config, m_usart[1], 0);
@@ -998,12 +999,12 @@ MACHINE_CONFIG_START(fanucspmg_state::fanucspmg)
UPD765A(config, m_fdc, 8'000'000, true, true);
m_fdc->intrq_wr_callback().set(m_pic[0], FUNC(pic8259_device::ir3_w));
m_fdc->drq_wr_callback().set(m_dmac, FUNC(i8257_device::dreq0_w));
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", fanuc_floppies, "525dd", fanucspmg_state::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", fanuc_floppies, "525dd", fanucspmg_state::floppy_formats)
+ FLOPPY_CONNECTOR(config, FDC_TAG":0", fanuc_floppies, "525dd", fanucspmg_state::floppy_formats);
+ FLOPPY_CONNECTOR(config, FDC_TAG":1", fanuc_floppies, "525dd", fanucspmg_state::floppy_formats);
- MCFG_SCREEN_ADD( SCREEN_TAG, RASTER)
- MCFG_SCREEN_RAW_PARAMS(XTAL(15'000'000), 640, 0, 512, 390, 0, 384 )
- MCFG_SCREEN_UPDATE_DEVICE( CRTC_TAG, mc6845_device, screen_update )
+ screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
+ screen.set_raw(XTAL(15'000'000), 640, 0, 512, 390, 0, 384);
+ screen.set_screen_update(CRTC_TAG, FUNC(mc6845_device::screen_update));
HD6845(config, m_crtc, XTAL(8'000'000)/2);
m_crtc->set_screen(SCREEN_TAG);
@@ -1011,7 +1012,7 @@ MACHINE_CONFIG_START(fanucspmg_state::fanucspmg)
m_crtc->set_char_width(8);
m_crtc->set_update_row_callback(FUNC(fanucspmg_state::crtc_update_row), this);
m_crtc->out_vsync_callback().set(FUNC(fanucspmg_state::vsync_w));
-MACHINE_CONFIG_END
+}
void fanucspmg_state::fanucspmgm(machine_config &config)
{
diff --git a/src/mame/drivers/isbc.cpp b/src/mame/drivers/isbc.cpp
index 7c243b6bf40..05deca4a0b2 100644
--- a/src/mame/drivers/isbc.cpp
+++ b/src/mame/drivers/isbc.cpp
@@ -47,6 +47,7 @@ public:
, m_statuslatch(*this, "statuslatch")
, m_bios(*this, "user1")
, m_biosram(*this, "biosram")
+ , m_sbx(*this, "sbx%u", 1U)
{ }
void isbc2861(machine_config &config);
@@ -96,6 +97,7 @@ private:
optional_device<ls259_device> m_statuslatch;
optional_memory_region m_bios;
optional_shared_ptr<u16> m_biosram;
+ optional_device_array<isbx_slot_device, 2> m_sbx;
bool m_upperen;
offs_t m_megabyte_page;
@@ -321,12 +323,13 @@ WRITE_LINE_MEMBER(isbc_state::bus_intr_out2_w)
// Multibus interrupt request (active high)
}
-MACHINE_CONFIG_START(isbc_state::isbc86)
+void isbc_state::isbc86(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD(m_maincpu, I8086, XTAL(5'000'000))
- MCFG_DEVICE_PROGRAM_MAP(isbc86_mem)
- MCFG_DEVICE_IO_MAP(isbc_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic_0", pic8259_device, inta_cb)
+ I8086(config, m_maincpu, XTAL(5'000'000));
+ m_maincpu->set_addrmap(AS_PROGRAM, &isbc_state::isbc86_mem);
+ m_maincpu->set_addrmap(AS_IO, &isbc_state::isbc_io);
+ m_maincpu->set_irq_acknowledge_callback("pic_0", FUNC(pic8259_device::inta_cb));
PIC8259(config, m_pic_0, 0);
m_pic_0->out_int_callback().set_inputline(m_maincpu, 0);
@@ -352,14 +355,15 @@ MACHINE_CONFIG_START(isbc_state::isbc86)
rs232.cts_handler().set(m_uart8251, FUNC(i8251_device::write_cts));
rs232.dsr_handler().set(m_uart8251, FUNC(i8251_device::write_dsr));
rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(isbc86_terminal));
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(isbc_state::rpc86)
+void isbc_state::rpc86(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD(m_maincpu, I8086, XTAL(5'000'000))
- MCFG_DEVICE_PROGRAM_MAP(rpc86_mem)
- MCFG_DEVICE_IO_MAP(rpc86_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic_0", pic8259_device, inta_cb)
+ I8086(config, m_maincpu, XTAL(5'000'000));
+ m_maincpu->set_addrmap(AS_PROGRAM, &isbc_state::rpc86_mem);
+ m_maincpu->set_addrmap(AS_IO, &isbc_state::rpc86_io);
+ m_maincpu->set_irq_acknowledge_callback("pic_0", FUNC(pic8259_device::inta_cb));
PIC8259(config, m_pic_0, 0);
m_pic_0->out_int_callback().set_inputline(m_maincpu, 0);
@@ -387,13 +391,13 @@ MACHINE_CONFIG_START(isbc_state::rpc86)
rs232.dsr_handler().set(m_uart8251, FUNC(i8251_device::write_dsr));
rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(isbc286_terminal));
- MCFG_ISBX_SLOT_ADD("sbx1", 0, isbx_cards, nullptr)
- //MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("pic_0", pic8259_device, ir3_w))
- //MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("pic_0", pic8259_device, ir4_w))
- MCFG_ISBX_SLOT_ADD("sbx2", 0, isbx_cards, nullptr)
- //MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("pic_0", pic8259_device, ir5_w))
- //MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("pic_0", pic8259_device, ir6_w))
-MACHINE_CONFIG_END
+ ISBX_SLOT(config, m_sbx[0], 0, isbx_cards, nullptr);
+ //m_sbx[0]->mintr0().set("pic_0", FUNC(pic8259_device::ir3_w));
+ //m_sbx[0]->mintr1().set("pic_0", FUNC(pic8259_device::ir4_w));
+ ISBX_SLOT(config, m_sbx[1], 0, isbx_cards, nullptr);
+ //m_sbx[1]->mintr0().set("pic_0", FUNC(pic8259_device::ir5_w));
+ //m_sbx[1]->mintr1().set("pic_0", FUNC(pic8259_device::ir6_w));
+}
void isbc_state::isbc8605(machine_config &config)
{
@@ -424,12 +428,13 @@ void isbc_state::isbc8630(machine_config &config)
m_statuslatch->q_out_cb<7>().set([this] (int state) { m_megabyte_enable = !state; });
}
-MACHINE_CONFIG_START(isbc_state::isbc286)
+void isbc_state::isbc286(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD(m_maincpu, I80286, XTAL(16'000'000)/2)
- MCFG_DEVICE_PROGRAM_MAP(isbc286_mem)
- MCFG_DEVICE_IO_MAP(isbc286_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic_0", pic8259_device, inta_cb)
+ I80286(config, m_maincpu, XTAL(16'000'000)/2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &isbc_state::isbc286_mem);
+ m_maincpu->set_addrmap(AS_IO, &isbc_state::isbc286_io);
+ m_maincpu->set_irq_acknowledge_callback("pic_0", FUNC(pic8259_device::inta_cb));
PIC8259(config, m_pic_0, 0);
m_pic_0->out_int_callback().set_inputline(m_maincpu, 0);
@@ -454,14 +459,15 @@ MACHINE_CONFIG_START(isbc_state::isbc286)
ppi.in_pb_callback().set(m_cent_status_in, FUNC(input_buffer_device::bus_r));
ppi.out_pc_callback().set(FUNC(isbc_state::ppi_c_w));
- MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
- MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, isbc_state, write_centronics_ack))
- MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(m_cent_status_in, input_buffer_device, write_bit7))
- MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(m_cent_status_in, input_buffer_device, write_bit6))
+ CENTRONICS(config, m_centronics, centronics_devices, "printer");
+ m_centronics->ack_handler().set(FUNC(isbc_state::write_centronics_ack));
+ m_centronics->busy_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit7));
+ m_centronics->fault_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit6));
INPUT_BUFFER(config, m_cent_status_in, 0);
- MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+ output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
+ m_centronics->set_output_latch(cent_data_out);
#if 0
I8274(config, m_uart8274, XTAL(16'000'000)/4);
@@ -507,15 +513,15 @@ MACHINE_CONFIG_START(isbc_state::isbc286)
#endif
rs232b.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(isbc286_terminal));
- MCFG_ISBX_SLOT_ADD("sbx1", 0, isbx_cards, nullptr)
- MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("pic_1", pic8259_device, ir3_w))
- MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("pic_1", pic8259_device, ir4_w))
- MCFG_ISBX_SLOT_ADD("sbx2", 0, isbx_cards, nullptr)
- MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("pic_1", pic8259_device, ir5_w))
- MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("pic_1", pic8259_device, ir6_w))
+ ISBX_SLOT(config, m_sbx[0], 0, isbx_cards, nullptr);
+ m_sbx[0]->mintr0().set("pic_1", FUNC(pic8259_device::ir3_w));
+ m_sbx[0]->mintr1().set("pic_1", FUNC(pic8259_device::ir4_w));
+ ISBX_SLOT(config, m_sbx[1], 0, isbx_cards, nullptr);
+ m_sbx[1]->mintr0().set("pic_1", FUNC(pic8259_device::ir5_w));
+ m_sbx[1]->mintr1().set("pic_1", FUNC(pic8259_device::ir6_w));
ISBC_215G(config, "isbc_215g", 0, 0x100, m_maincpu).irq_callback().set(m_pic_0, FUNC(pic8259_device::ir5_w));
-MACHINE_CONFIG_END
+}
void isbc_state::isbc2861(machine_config &config)
{
diff --git a/src/mame/drivers/rc759.cpp b/src/mame/drivers/rc759.cpp
index 89921ab5608..0aedff0da89 100644
--- a/src/mame/drivers/rc759.cpp
+++ b/src/mame/drivers/rc759.cpp
@@ -572,15 +572,13 @@ MACHINE_CONFIG_START(rc759_state::rc759)
keyb.set_keyboard_callback(FUNC(rc759_state::keyb_put));
// cassette
- MCFG_CASSETTE_ADD("cas")
- MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
+ CASSETTE(config, m_cas);
+ m_cas->set_default_state((cassette_state)(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED));
// sound
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- MCFG_DEVICE_ADD("snd", SN76489A, 20_MHz_XTAL / 10)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
+ SN76489A(config, m_snd, 20_MHz_XTAL / 10).add_route(ALL_OUTPUTS, "mono", 1.0);
// internal centronics
MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
@@ -591,10 +589,10 @@ MACHINE_CONFIG_START(rc759_state::rc759)
MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, rc759_state, centronics_select_w))
// isbx slot
- MCFG_ISBX_SLOT_ADD("isbx", 0, isbx_cards, nullptr)
- MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("maincpu", i80186_cpu_device, int1_w))
- MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("maincpu", i80186_cpu_device, int3_w))
- MCFG_ISBX_SLOT_MDRQT_CALLBACK(WRITELINE("maincpu", i80186_cpu_device, drq0_w))
+ ISBX_SLOT(config, m_isbx, 0, isbx_cards, nullptr);
+ m_isbx->mintr0().set("maincpu", FUNC(i80186_cpu_device::int1_w));
+ m_isbx->mintr1().set("maincpu", FUNC(i80186_cpu_device::int3_w));
+ m_isbx->mdrqt().set("maincpu", FUNC(i80186_cpu_device::drq0_w));
// floppy disk controller
WD2797(config, m_fdc, 1000000);
@@ -602,8 +600,8 @@ MACHINE_CONFIG_START(rc759_state::rc759)
// m_fdc->drq_wr_callback().set(m_maincpu, FUNC(i80186_cpu_device::drq1_w));
// floppy drives
- MCFG_FLOPPY_DRIVE_ADD("fdc:0", rc759_floppies, "hd", floppy_image_device::default_floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD("fdc:1", rc759_floppies, "hd", floppy_image_device::default_floppy_formats)
+ FLOPPY_CONNECTOR(config, "fdc:0", rc759_floppies, "hd", floppy_image_device::default_floppy_formats);
+ FLOPPY_CONNECTOR(config, "fdc:1", rc759_floppies, "hd", floppy_image_device::default_floppy_formats);
MACHINE_CONFIG_END
diff --git a/src/mame/machine/isbc_215g.cpp b/src/mame/machine/isbc_215g.cpp
index 05f65fea8b6..4390604a884 100644
--- a/src/mame/machine/isbc_215g.cpp
+++ b/src/mame/machine/isbc_215g.cpp
@@ -353,22 +353,23 @@ WRITE_LINE_MEMBER(isbc_215g_device::isbx_irq_11_w)
m_isbx_irq[3] = state ? true : false;
}
-MACHINE_CONFIG_START(isbc_215g_device::device_add_mconfig)
- MCFG_DEVICE_ADD("u84", I8089, XTAL(15'000'000) / 3)
- MCFG_DEVICE_PROGRAM_MAP(isbc_215g_mem)
- MCFG_DEVICE_IO_MAP(isbc_215g_io)
- MCFG_I8089_DATA_WIDTH(16)
-
- MCFG_HARDDISK_ADD("drive0")
- MCFG_HARDDISK_ADD("drive1")
-
- MCFG_ISBX_SLOT_ADD("sbx1", 0, isbx_cards, nullptr)
- MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE(*this, isbc_215g_device, isbx_irq_00_w))
- MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE(*this, isbc_215g_device, isbx_irq_01_w))
- MCFG_ISBX_SLOT_ADD("sbx2", 0, isbx_cards, "fdc_218a")
- MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE(*this, isbc_215g_device, isbx_irq_10_w))
- MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE(*this, isbc_215g_device, isbx_irq_11_w))
-MACHINE_CONFIG_END
+void isbc_215g_device::device_add_mconfig(machine_config &config)
+{
+ I8089(config, m_dmac, XTAL(15'000'000) / 3);
+ m_dmac->set_addrmap(AS_PROGRAM, &isbc_215g_device::isbc_215g_mem);
+ m_dmac->set_addrmap(AS_IO, &isbc_215g_device::isbc_215g_io);
+ m_dmac->set_data_width(16);
+
+ HARDDISK(config, "drive0", 0);
+ HARDDISK(config, "drive1", 0);
+
+ ISBX_SLOT(config, m_sbx1, 0, isbx_cards, nullptr);
+ m_sbx1->mintr0().set(FUNC(isbc_215g_device::isbx_irq_00_w));
+ m_sbx1->mintr1().set(FUNC(isbc_215g_device::isbx_irq_01_w));
+ ISBX_SLOT(config, m_sbx2, 0, isbx_cards, "fdc_218a");
+ m_sbx2->mintr0().set(FUNC(isbc_215g_device::isbx_irq_10_w));
+ m_sbx2->mintr1().set(FUNC(isbc_215g_device::isbx_irq_11_w));
+}
ROM_START( isbc_215g )