From e36bad6f40b404331bd6edf4f0c4d72e4fb035e4 Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Sat, 15 Dec 2018 18:23:57 +0100 Subject: -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] --- src/devices/bus/apricot/expansion/expansion.cpp | 14 ++--- src/devices/bus/apricot/expansion/expansion.h | 71 ++++++++--------------- src/devices/bus/isbx/isbx.h | 43 +++++--------- src/devices/cpu/i8089/i8089.cpp | 11 ++-- src/devices/cpu/i8089/i8089.h | 18 +----- src/devices/cpu/i8089/i8089_channel.cpp | 2 +- src/devices/cpu/i8089/i8089_channel.h | 15 +---- src/devices/cpu/i8089/i8089_ops.cpp | 2 +- src/devices/cpu/i86/i86.h | 26 +-------- src/mame/drivers/a7150.cpp | 31 +++++----- src/mame/drivers/altos8600.cpp | 47 +++++++-------- src/mame/drivers/apricot.cpp | 61 ++++++++++---------- src/mame/drivers/compis.cpp | 40 ++++++------- src/mame/drivers/fanucspmg.cpp | 31 +++++----- src/mame/drivers/isbc.cpp | 76 +++++++++++++------------ src/mame/drivers/rc759.cpp | 22 ++++--- src/mame/machine/isbc_215g.cpp | 33 +++++------ 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(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(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(*device).set_cpu_tag(this, _cpu_tag); - -#define MCFG_EXPANSION_IOP_ADD(_tag) \ - downcast(*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(*device).set_dma1_handler(DEVCB_##_devcb); - -#define MCFG_EXPANSION_DMA2_HANDLER(_devcb) \ - downcast(*device).set_dma2_handler(DEVCB_##_devcb); - -#define MCFG_EXPANSION_EXT1_HANDLER(_devcb) \ - downcast(*device).set_ext1_handler(DEVCB_##_devcb); - -#define MCFG_EXPANSION_EXT2_HANDLER(_devcb) \ - downcast(*device).set_ext2_handler(DEVCB_##_devcb); - -#define MCFG_EXPANSION_INT2_HANDLER(_devcb) \ - downcast(*device).set_int2_handler(DEVCB_##_devcb); - -#define MCFG_EXPANSION_INT3_HANDLER(_devcb) \ - downcast(*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 + 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 + 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(cpu_tag)); + m_iop.set_tag(std::forward(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 devcb_base &set_dma1_handler(Object &&cb) { return m_dma1_handler.set_callback(std::forward(cb)); } - template devcb_base &set_dma2_handler(Object &&cb) { return m_dma2_handler.set_callback(std::forward(cb)); } - template devcb_base &set_ext1_handler(Object &&cb) { return m_ext1_handler.set_callback(std::forward(cb)); } - template devcb_base &set_ext2_handler(Object &&cb) { return m_ext2_handler.set_callback(std::forward(cb)); } - template devcb_base &set_int2_handler(Object &&cb) { return m_int2_handler.set_callback(std::forward(cb)); } - template devcb_base &set_int3_handler(Object &&cb) { return m_int3_handler.set_callback(std::forward(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 m_cpu; + required_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(device)->set_mintr0_callback(DEVCB_##_mintr0); - -#define MCFG_ISBX_SLOT_MINTR1_CALLBACK(_mintr1) \ - downcast(device)->set_mintr1_callback(DEVCB_##_mintr1); - -#define MCFG_ISBX_SLOT_MDRQT_CALLBACK(_mdrqt) \ - downcast(device)->set_mdrqt_callback(DEVCB_##_mdrqt); - -#define MCFG_ISBX_SLOT_MWAIT_CALLBACK(_mwait) \ - downcast(device)->set_mwait_callback(DEVCB_##_mwait); - - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -101,12 +75,21 @@ class isbx_slot_device : public device_t, { public: // construction/destruction + template + 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 void set_mintr0_callback(Object &&cb) { m_write_mintr0.set_callback(std::forward(cb)); } - template void set_mintr1_callback(Object &&cb) { m_write_mintr1.set_callback(std::forward(cb)); } - template void set_mdrqt_callback(Object &&cb) { m_write_mdrqt.set_callback(std::forward(cb)); } - template void set_mwait_callback(Object &&cb) { m_write_mwait.set_callback(std::forward(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 @@ -18,20 +18,6 @@ #endif -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_I8089_DATA_WIDTH(_data_width) \ - downcast(*device).set_data_width(_data_width); - -#define MCFG_I8089_SINTR1(_sintr1) \ - downcast(device)->set_sintr1_callback(DEVCB_##_sintr1); - -#define MCFG_I8089_SINTR2(_sintr2) \ - downcast(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 devcb_base &set_sintr1_callback(Object &&sintr1) { return m_write_sintr1.set_callback(std::forward(sintr1)); } - template devcb_base &set_sintr2_callback(Object &&sintr2) { return m_write_sintr2.set_callback(std::forward(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 @@ -14,17 +14,6 @@ #pragma once -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_I8089_CHANNEL_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, I8089_CHANNEL, 0) - -#define MCFG_I8089_CHANNEL_SINTR(_sintr) \ - downcast(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 void set_sintr_callback(Object &&sintr) { m_write_sintr.set_callback(std::forward(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(*device).set_lock_handler(DEVCB_##_write); - -#define MCFG_I8086_IF_HANDLER(_write) \ - downcast(*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(*device).set_esc_opcode_handler(DEVCB_##_write); - -#define MCFG_I8086_ESC_DATA_HANDLER(_write) \ - downcast(*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 devcb_base &set_lock_handler(Object &&cb) { return m_lock_handler.set_callback(std::forward(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 devcb_base &set_if_handler(Object &&cb) { return m_out_if_func.set_callback(std::forward(cb)); } - template devcb_base &set_esc_opcode_handler(Object &&cb) { return m_esc_opcode_handler.set_callback(std::forward(cb)); } - template devcb_base &set_esc_data_handler(Object &&cb) { return m_esc_data_handler.set_callback(std::forward(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 m_maincpu; + required_device m_maincpu; required_device m_uart8251; required_device m_pit8253; required_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 ¢_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 ¢_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 m_statuslatch; optional_memory_region m_bios; optional_shared_ptr m_biosram; + optional_device_array 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 ¢_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 ) -- cgit v1.2.3