summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2018-10-31 22:19:17 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2018-10-31 22:19:17 +0100
commitc70e5f7f7edb48e7a3171c52729eb2a0ecf49943 (patch)
tree5e2b7d81dc867fc1e92cad39489b2b9d8c92a6b7
parente7edb3d174ebc0ac5f17b674bebf496b9ac0eab2 (diff)
machine/pic8259.h: removed MCFG macros (nw)
-rw-r--r--src/devices/bus/dmv/k230.cpp55
-rw-r--r--src/devices/bus/dmv/k230.h9
-rw-r--r--src/devices/bus/s100/wunderbus.cpp17
-rw-r--r--src/devices/machine/cs4031.h9
-rw-r--r--src/devices/machine/pic8259.cpp5
-rw-r--r--src/devices/machine/pic8259.h20
-rw-r--r--src/mame/drivers/a7150.cpp6
-rw-r--r--src/mame/drivers/alphatpx.cpp21
-rw-r--r--src/mame/drivers/altos8600.cpp72
-rw-r--r--src/mame/drivers/amusco.cpp20
-rw-r--r--src/mame/drivers/apricot.cpp6
-rw-r--r--src/mame/drivers/apricotp.cpp2
-rw-r--r--src/mame/drivers/b2m.cpp4
-rw-r--r--src/mame/drivers/cbm2.cpp14
-rw-r--r--src/mame/drivers/dvk_ksm.cpp8
-rw-r--r--src/mame/drivers/fanucspmg.cpp16
-rw-r--r--src/mame/drivers/fastinvaders.cpp8
-rw-r--r--src/mame/drivers/fmtowns.cpp16
-rw-r--r--src/mame/drivers/ibm6580.cpp14
-rw-r--r--src/mame/drivers/ibmpcjr.cpp12
-rw-r--r--src/mame/drivers/if800.cpp2
-rw-r--r--src/mame/drivers/iq151.cpp64
-rw-r--r--src/mame/drivers/irisha.cpp6
-rw-r--r--src/mame/drivers/isbc.cpp2
-rw-r--r--src/mame/drivers/m107.cpp6
-rw-r--r--src/mame/drivers/m20.cpp4
-rw-r--r--src/mame/drivers/m72.cpp20
-rw-r--r--src/mame/drivers/m92.cpp6
-rw-r--r--src/mame/drivers/mbc55x.cpp14
-rw-r--r--src/mame/drivers/mc1502.cpp28
-rw-r--r--src/mame/drivers/miniframe.cpp17
-rw-r--r--src/mame/drivers/mrflea.cpp6
-rw-r--r--src/mame/drivers/multi16.cpp12
-rw-r--r--src/mame/drivers/myb3k.cpp20
-rw-r--r--src/mame/drivers/notetaker.cpp33
-rw-r--r--src/mame/drivers/olyboss.cpp4
-rw-r--r--src/mame/drivers/pc100.cpp20
-rw-r--r--src/mame/drivers/pcd.cpp10
-rw-r--r--src/mame/drivers/peoplepc.cpp24
-rw-r--r--src/mame/drivers/pg685.cpp18
-rw-r--r--src/mame/drivers/pk8020.cpp8
-rw-r--r--src/mame/drivers/poisk1.cpp22
-rw-r--r--src/mame/drivers/rc759.cpp8
-rw-r--r--src/mame/drivers/sage2.cpp10
-rw-r--r--src/mame/drivers/sm7238.cpp6
-rw-r--r--src/mame/drivers/tandy2k.cpp8
-rw-r--r--src/mame/drivers/tsispch.cpp12
-rw-r--r--src/mame/drivers/z100.cpp24
-rw-r--r--src/mame/machine/xbox.cpp16
-rw-r--r--src/mame/video/fmtowns.cpp12
-rw-r--r--src/mame/video/m107.cpp4
51 files changed, 373 insertions, 407 deletions
diff --git a/src/devices/bus/dmv/k230.cpp b/src/devices/bus/dmv/k230.cpp
index 82c2e548012..9104abe2f7b 100644
--- a/src/devices/bus/dmv/k230.cpp
+++ b/src/devices/bus/dmv/k230.cpp
@@ -46,19 +46,19 @@ void dmv_k230_device::k230_io(address_map &map)
map(0x00, 0xff).rw(FUNC(dmv_k230_device::io_r), FUNC(dmv_k230_device::io_w));
}
-void dmv_k230_device::k234_mem(address_map &map)
+void dmv_k234_device::k234_mem(address_map &map)
{
map.unmap_value_high();
- map(0x00000, 0x7ffff).rw(FUNC(dmv_k230_device::program_r), FUNC(dmv_k230_device::program_w));
- map(0xfff00, 0xfffff).rw(FUNC(dmv_k230_device::io_r), FUNC(dmv_k230_device::io_w));
+ map(0x00000, 0x7ffff).rw(FUNC(dmv_k234_device::program_r), FUNC(dmv_k234_device::program_w));
+ map(0xfff00, 0xfffff).rw(FUNC(dmv_k234_device::io_r), FUNC(dmv_k234_device::io_w));
}
-void dmv_k230_device::k235_io(address_map &map)
+void dmv_k235_device::k235_io(address_map &map)
{
map.unmap_value_high();
map.global_mask(0xff);
- map(0x00, 0xff).rw(FUNC(dmv_k230_device::io_r), FUNC(dmv_k230_device::io_w));
- map(0x90, 0x91).rw("pic8259", FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x00, 0xff).rw(FUNC(dmv_k235_device::io_r), FUNC(dmv_k235_device::io_w));
+ map(0x90, 0x91).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
}
static INPUT_PORTS_START( dmv_k235 )
@@ -166,26 +166,29 @@ void dmv_k234_device::device_reset()
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(dmv_k230_device::device_add_mconfig)
- MCFG_DEVICE_ADD("maincpu", I8088, XTAL(15'000'000) / 3)
- MCFG_DEVICE_PROGRAM_MAP(k230_mem)
- MCFG_DEVICE_IO_MAP(k230_io)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(dmv_k234_device::device_add_mconfig)
- MCFG_DEVICE_ADD("maincpu", M68008, XTAL(16'000'000) / 2)
- MCFG_DEVICE_PROGRAM_MAP(k234_mem)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(dmv_k235_device::device_add_mconfig)
- MCFG_DEVICE_ADD("maincpu", V20, XTAL(15'000'000) / 3)
- MCFG_DEVICE_PROGRAM_MAP(k230_mem)
- MCFG_DEVICE_IO_MAP(k235_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
-
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
-MACHINE_CONFIG_END
+void dmv_k230_device::device_add_mconfig(machine_config &config)
+{
+ I8088(config, m_maincpu, XTAL(15'000'000) / 3);
+ m_maincpu->set_addrmap(AS_PROGRAM, &dmv_k230_device::k230_mem);
+ m_maincpu->set_addrmap(AS_IO, &dmv_k230_device::k230_io);
+}
+
+void dmv_k234_device::device_add_mconfig(machine_config &config)
+{
+ M68008(config, m_maincpu, XTAL(16'000'000) / 2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &dmv_k234_device::k234_mem);
+}
+
+void dmv_k235_device::device_add_mconfig(machine_config &config)
+{
+ V20(config, m_maincpu, XTAL(15'000'000) / 3);
+ m_maincpu->set_addrmap(AS_PROGRAM, &dmv_k235_device::k230_mem);
+ m_maincpu->set_addrmap(AS_IO, &dmv_k235_device::k235_io);
+ m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
+
+ PIC8259(config, m_pic, 0);
+ m_pic->out_int_callback().set_inputline(m_maincpu, 0);
+}
//-------------------------------------------------
// device_rom_region
diff --git a/src/devices/bus/dmv/k230.h b/src/devices/bus/dmv/k230.h
index 0e7bd6b19f5..7021a4a8987 100644
--- a/src/devices/bus/dmv/k230.h
+++ b/src/devices/bus/dmv/k230.h
@@ -48,8 +48,6 @@ protected:
void k230_io(address_map &map);
void k230_mem(address_map &map);
- void k234_mem(address_map &map);
- void k235_io(address_map &map);
required_device<cpu_device> m_maincpu;
optional_memory_region m_rom;
@@ -58,11 +56,12 @@ protected:
int m_switch16;
int m_hold;
-private:
DECLARE_READ8_MEMBER(io_r);
DECLARE_READ8_MEMBER(program_r);
DECLARE_WRITE8_MEMBER(io_w);
DECLARE_WRITE8_MEMBER(program_w);
+
+private:
DECLARE_READ8_MEMBER(rom_r);
};
@@ -108,6 +107,8 @@ private:
DECLARE_READ8_MEMBER(snr_r);
DECLARE_WRITE8_MEMBER(snr_w);
+
+ void k234_mem(address_map &map);
};
@@ -140,6 +141,8 @@ protected:
private:
required_device<pic8259_device> m_pic;
required_ioport m_dsw;
+
+ void k235_io(address_map &map);
};
// device type definition
diff --git a/src/devices/bus/s100/wunderbus.cpp b/src/devices/bus/s100/wunderbus.cpp
index 7606ea447e5..43b7be095a3 100644
--- a/src/devices/bus/s100/wunderbus.cpp
+++ b/src/devices/bus/s100/wunderbus.cpp
@@ -87,28 +87,29 @@ WRITE_LINE_MEMBER( s100_wunderbus_device::rtc_tp_w )
//-------------------------------------------------
-MACHINE_CONFIG_START(s100_wunderbus_device::device_add_mconfig)
- MCFG_DEVICE_ADD(I8259A_TAG, PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, s100_wunderbus_device, pic_int_w))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
+void s100_wunderbus_device::device_add_mconfig(machine_config &config)
+{
+ PIC8259(config, m_pic, 0);
+ m_pic->out_int_callback().set(FUNC(s100_wunderbus_device::pic_int_w));
+ m_pic->in_sp_callback().set_constant(1);
INS8250(config, m_ace1, XTAL(18'432'000)/10);
m_ace1->out_tx_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd));
m_ace1->out_dtr_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_dtr));
m_ace1->out_rts_callback().set(RS232_A_TAG, FUNC(rs232_port_device::write_rts));
- m_ace1->out_int_callback().set(I8259A_TAG, FUNC(pic8259_device::ir3_w));
+ m_ace1->out_int_callback().set(m_pic, FUNC(pic8259_device::ir3_w));
INS8250(config, m_ace2, XTAL(18'432'000)/10);
m_ace2->out_tx_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd));
m_ace2->out_dtr_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_dtr));
m_ace2->out_rts_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_rts));
- m_ace2->out_int_callback().set(I8259A_TAG, FUNC(pic8259_device::ir4_w));
+ m_ace2->out_int_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
INS8250(config, m_ace3, XTAL(18'432'000)/10);
m_ace3->out_tx_callback().set(RS232_C_TAG, FUNC(rs232_port_device::write_txd));
m_ace3->out_dtr_callback().set(RS232_C_TAG, FUNC(rs232_port_device::write_dtr));
m_ace3->out_rts_callback().set(RS232_C_TAG, FUNC(rs232_port_device::write_rts));
- m_ace3->out_int_callback().set(I8259A_TAG, FUNC(pic8259_device::ir5_w));
+ m_ace3->out_int_callback().set(m_pic, FUNC(pic8259_device::ir5_w));
rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, "terminal"));
rs232a.rxd_handler().set(m_ace1, FUNC(ins8250_uart_device::rx_w));
@@ -134,7 +135,7 @@ MACHINE_CONFIG_START(s100_wunderbus_device::device_add_mconfig)
UPD1990A(config, m_rtc);
m_rtc->tp_callback().set(FUNC(s100_wunderbus_device::rtc_tp_w));
-MACHINE_CONFIG_END
+}
//-------------------------------------------------
diff --git a/src/devices/machine/cs4031.h b/src/devices/machine/cs4031.h
index 4ea5829e3aa..e8b6e314f93 100644
--- a/src/devices/machine/cs4031.h
+++ b/src/devices/machine/cs4031.h
@@ -48,15 +48,6 @@ public:
cs4031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- template <class Obj> devcb_base &set_ior_callback(Obj &&ior) { return m_read_ior.set_callback(std::forward<Obj>(ior)); }
- template <class Obj> devcb_base &set_iow_callback(Obj &&iow) { return m_write_iow.set_callback(std::forward<Obj>(iow)); }
- template <class Obj> devcb_base &set_tc_callback(Obj &&tc) { return m_write_tc.set_callback(std::forward<Obj>(tc)); }
- template <class Obj> devcb_base &set_hold_callback(Obj &&hold) { return m_write_hold.set_callback(std::forward<Obj>(hold)); }
- template <class Obj> devcb_base &set_cpureset_callback(Obj &&cpureset) { return m_write_cpureset.set_callback(std::forward<Obj>(cpureset)); }
- template <class Obj> devcb_base &set_nmi_callback(Obj &&nmi) { return m_write_nmi.set_callback(std::forward<Obj>(nmi)); }
- template <class Obj> devcb_base &set_intr_callback(Obj &&intr) { return m_write_intr.set_callback(std::forward<Obj>(intr)); }
- template <class Obj> devcb_base &set_a20m_callback(Obj &&a20m) { return m_write_a20m.set_callback(std::forward<Obj>(a20m)); }
- template <class Obj> devcb_base &set_spkr_callback(Obj &&spkr) { return m_write_spkr.set_callback(std::forward<Obj>(spkr)); }
auto ior() { return m_read_ior.bind(); }
auto iow() { return m_write_iow.bind(); }
auto tc() { return m_write_tc.bind(); }
diff --git a/src/devices/machine/pic8259.cpp b/src/devices/machine/pic8259.cpp
index c3871e98278..40653cdf254 100644
--- a/src/devices/machine/pic8259.cpp
+++ b/src/devices/machine/pic8259.cpp
@@ -57,7 +57,6 @@ void pic8259_device::device_timer(emu_timer &timer, device_timer_id id, int para
m_out_int_func(0);
}
-
void pic8259_device::set_irq_line(int irq, int state)
{
uint8_t mask = (1 << irq);
@@ -65,7 +64,7 @@ void pic8259_device::set_irq_line(int irq, int state)
if (state)
{
/* setting IRQ line */
- LOG("pic8259_set_irq_line(): PIC set IRQ line #%d\n", irq);
+ LOG("set_irq_line(): PIC set IRQ line #%d\n", irq);
if(m_level_trig_mode || (!m_level_trig_mode && !(m_irq_lines & mask)))
{
@@ -76,7 +75,7 @@ void pic8259_device::set_irq_line(int irq, int state)
else
{
/* clearing IRQ line */
- LOG("pic8259_device::set_irq_line(): PIC cleared IRQ line #%d\n", irq);
+ LOG("set_irq_line(): PIC cleared IRQ line #%d\n", irq);
m_irq_lines &= ~mask;
m_irr &= ~mask;
diff --git a/src/devices/machine/pic8259.h b/src/devices/machine/pic8259.h
index 7921f454617..73a13e9d757 100644
--- a/src/devices/machine/pic8259.h
+++ b/src/devices/machine/pic8259.h
@@ -28,31 +28,11 @@
#define MAME_MACHINE_PIC8259_H
-/***************************************************************************
- DEVICE CONFIGURATION MACROS
-***************************************************************************/
-
-// Interrupt request output to CPU or master 8259 (active high)
-#define MCFG_PIC8259_OUT_INT_CB(_devcb) \
- downcast<pic8259_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
-
-// Slave program select (VCC = master; GND = slave; pin becomes EN output in buffered mode)
-#define MCFG_PIC8259_IN_SP_CB(_devcb) \
- downcast<pic8259_device &>(*device).set_in_sp_callback(DEVCB_##_devcb);
-
-// Cascaded interrupt acknowledge request for slave 8259 to place vector on data bus
-#define MCFG_PIC8259_CASCADE_ACK_CB(_devcb) \
- downcast<pic8259_device &>(*device).set_read_slave_ack_callback(DEVCB_##_devcb);
-
-
class pic8259_device : public device_t
{
public:
pic8259_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_in_sp_callback(Object &&cb) { return m_in_sp_func.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_read_slave_ack_callback(Object &&cb) { return m_read_slave_ack_func.set_callback(std::forward<Object>(cb)); }
auto out_int_callback() { return m_out_int_func.bind(); }
auto in_sp_callback() { return m_in_sp_func.bind(); }
auto read_slave_ack_callback() { return m_read_slave_ack_func.bind(); }
diff --git a/src/mame/drivers/a7150.cpp b/src/mame/drivers/a7150.cpp
index dc139a21d32..8deb48f8adb 100644
--- a/src/mame/drivers/a7150.cpp
+++ b/src/mame/drivers/a7150.cpp
@@ -477,11 +477,11 @@ MACHINE_CONFIG_START(a7150_state::a7150)
i8087_device &i8087(I8087(config, "i8087", XTAL(9'832'000)/2));
i8087.set_addrmap(AS_PROGRAM, &a7150_state::a7150_mem);
i8087.set_data_width(16);
- i8087.irq().set("pic8259", FUNC(pic8259_device::ir0_w));
+ i8087.irq().set(m_pic8259, FUNC(pic8259_device::ir0_w));
i8087.busy().set_inputline("maincpu", INPUT_LINE_TEST);
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_pic8259, 0);
+ m_pic8259->out_int_callback().set_inputline(m_maincpu, 0);
// IFSP port on processor card
i8255_device &ppi(I8255(config, "ppi8255"));
diff --git a/src/mame/drivers/alphatpx.cpp b/src/mame/drivers/alphatpx.cpp
index 51ea7690b0e..34bbcde86de 100644
--- a/src/mame/drivers/alphatpx.cpp
+++ b/src/mame/drivers/alphatpx.cpp
@@ -1325,24 +1325,25 @@ MACHINE_CONFIG_START(alphatp_34_state::alphatp3)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", alphatp3_floppies, "525qd", floppy_image_device::default_floppy_formats)
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(alphatp_34_state::alphatp30)
+void alphatp_34_state::alphatp30(machine_config &config)
+{
alphatp3(config);
- MCFG_DEVICE_ADD("i8088", I8088, 6000000) // unknown clock
- MCFG_DEVICE_PROGRAM_MAP(alphatp30_8088_map)
- MCFG_DEVICE_IO_MAP(alphatp30_8088_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
- MCFG_DEVICE_DISABLE()
+ I8088(config, m_i8088, 6000000); // unknown clock
+ m_i8088->set_addrmap(AS_PROGRAM, &alphatp_34_state::alphatp30_8088_map);
+ m_i8088->set_addrmap(AS_IO, &alphatp_34_state::alphatp30_8088_io);
+ m_i8088->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
+ m_i8088->set_disable();
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("i8088", 0))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(0))
+ PIC8259(config, m_pic, 0);
+ m_pic->out_int_callback().set_inputline(m_i8088, 0);
+ m_pic->in_sp_callback().set_constant(0);
pit8253_device &pit(PIT8253(config, "pit", 0));
pit.set_clk<0>(100000); // 15Mhz osc with unknown divisor
pit.set_clk<1>(100000);
pit.set_clk<2>(100000);
pit.out_handler<0>().set(m_pic, FUNC(pic8259_device::ir0_w));
-MACHINE_CONFIG_END
+}
//**************************************************************************
// ROM DEFINITIONS
diff --git a/src/mame/drivers/altos8600.cpp b/src/mame/drivers/altos8600.cpp
index 2aab3feb743..c72cb58c2de 100644
--- a/src/mame/drivers/altos8600.cpp
+++ b/src/mame/drivers/altos8600.cpp
@@ -22,9 +22,7 @@ public:
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_dmac(*this, "dmac"),
- m_pic1(*this, "pic8259_1"),
- m_pic2(*this, "pic8259_2"),
- m_pic3(*this, "pic8259_3"),
+ m_pic(*this, "pic8259%u", 1U),
m_uart8274(*this, "uart8274"),
m_fdc(*this, "fd1797"),
m_ram(*this, RAM_TAG),
@@ -91,9 +89,7 @@ private:
void format_sector();
required_device<i8086_cpu_device> m_maincpu;
required_device<i8089_device> m_dmac;
- required_device<pic8259_device> m_pic1;
- required_device<pic8259_device> m_pic2;
- required_device<pic8259_device> m_pic3;
+ required_device_array<pic8259_device, 3> m_pic;
required_device<i8274_new_device> m_uart8274;
required_device<fd1797_device> m_fdc;
required_device<ram_device> m_ram;
@@ -205,7 +201,7 @@ u8 altos8600_state::read_sector()
if(secoff >= 511)
{
m_dmac->drq1_w(CLEAR_LINE);
- m_pic2->ir0_w(ASSERT_LINE);
+ m_pic[1]->ir0_w(ASSERT_LINE);
m_stat &= ~1;
m_stat |= 2;
}
@@ -225,7 +221,7 @@ bool altos8600_state::write_sector(u8 data)
m_stat |= 2;
hard_disk_write(m_hdd->get_hard_disk_file(), m_lba, m_sector);
m_dmac->drq1_w(CLEAR_LINE);
- m_pic2->ir0_w(ASSERT_LINE);
+ m_pic[1]->ir0_w(ASSERT_LINE);
return true;
}
return false;
@@ -240,7 +236,7 @@ READ8_MEMBER(altos8600_state::hd_r)
return read_sector();
break;
case 3:
- m_pic2->ir0_w(CLEAR_LINE);
+ m_pic[1]->ir0_w(CLEAR_LINE);
return m_stat;
}
return 0;
@@ -332,7 +328,7 @@ WRITE8_MEMBER(altos8600_state::hd_w)
m_dmac->drq1_w(ASSERT_LINE);
break;
}
- m_pic2->ir0_w(ASSERT_LINE);
+ m_pic[1]->ir0_w(ASSERT_LINE);
break;
}
}
@@ -360,13 +356,13 @@ WRITE_LINE_MEMBER(altos8600_state::sintr1_w)
if(state)
{
m_dmac->drq1_w(CLEAR_LINE);
- m_pic2->ir0_w(ASSERT_LINE);
- m_pic2->ir3_w(ASSERT_LINE);
+ m_pic[1]->ir0_w(ASSERT_LINE);
+ m_pic[1]->ir3_w(ASSERT_LINE);
m_stat &= ~1;
m_stat |= 2;
}
else
- m_pic2->ir3_w(CLEAR_LINE);
+ m_pic[1]->ir3_w(CLEAR_LINE);
}
READ16_MEMBER(altos8600_state::fault_r)
@@ -480,7 +476,7 @@ WRITE8_MEMBER(altos8600_state::romport_w)
WRITE8_MEMBER(altos8600_state::clrsys_w)
{
- m_pic1->ir0_w(CLEAR_LINE);
+ m_pic[0]->ir0_w(CLEAR_LINE);
}
WRITE8_MEMBER(altos8600_state::ics_attn_w)
@@ -502,9 +498,9 @@ WRITE16_MEMBER(altos8600_state::mode_w)
READ8_MEMBER(altos8600_state::get_slave_ack)
{
if(offset == 2)
- return m_pic2->acknowledge();
+ return m_pic[1]->acknowledge();
else if(offset == 3)
- return m_pic3->acknowledge();
+ return m_pic[2]->acknowledge();
return 0x00;
}
@@ -605,7 +601,7 @@ READ16_MEMBER(altos8600_state::cpuio_r)
{
if(m_user && !machine().side_effects_disabled())
{
- m_pic1->ir0_w(ASSERT_LINE);
+ m_pic[0]->ir0_w(ASSERT_LINE);
return 0;
}
return m_dmac->space(AS_IO).read_word_unaligned(offset << 1, mem_mask);
@@ -615,7 +611,7 @@ WRITE16_MEMBER(altos8600_state::cpuio_w)
{
if(m_user && !machine().side_effects_disabled())
{
- m_pic1->ir0_w(ASSERT_LINE);
+ m_pic[0]->ir0_w(ASSERT_LINE);
return;
}
m_dmac->space(AS_IO).write_word_unaligned(offset << 1, data, mem_mask);
@@ -661,7 +657,7 @@ IRQ_CALLBACK_MEMBER(altos8600_state::inta)
{
m_user = false;
m_mode &= ~1;
- return m_pic1->acknowledge();
+ return m_pic[0]->acknowledge();
}
void altos8600_state::cpu_mem(address_map &map)
@@ -709,10 +705,10 @@ void altos8600_state::dmac_io(address_map &map)
map(0x0048, 0x004f).rw(m_uart8274, FUNC(i8274_new_device::cd_ba_r), FUNC(i8274_new_device::cd_ba_w)).umask16(0x00ff);
map(0x0048, 0x004f).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0xff00);
map(0x0050, 0x0057).rw(FUNC(altos8600_state::romport_r), FUNC(altos8600_state::romport_w));
- map(0x0058, 0x005f).rw(m_pic1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0058, 0x005f).rw(m_pic[0], FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
map(0x0058, 0x005f).w(FUNC(altos8600_state::clrsys_w)).umask16(0xff00);
- map(0x0060, 0x0067).rw(m_pic2, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
- map(0x0068, 0x006f).rw(m_pic3, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0060, 0x0067).rw(m_pic[1], FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0068, 0x006f).rw(m_pic[2], FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
map(0x0070, 0x0077).noprw();
map(0x0078, 0x0079).w(FUNC(altos8600_state::ics_attn_w));
map(0x0200, 0x03ff).rw(FUNC(altos8600_state::mmuflags_r), FUNC(altos8600_state::mmuflags_w));
@@ -740,20 +736,20 @@ MACHINE_CONFIG_START(altos8600_state::altos8600)
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_pic2, pic8259_device, ir4_w))
+ MCFG_I8089_SINTR2(WRITELINE(m_pic[1], pic8259_device, ir4_w))
- PIC8259(config, m_pic1, 0);
- m_pic1->out_int_callback().set_inputline(m_maincpu, 0);
- m_pic1->in_sp_callback().set_constant(1);
- m_pic1->read_slave_ack_callback().set(FUNC(altos8600_state::get_slave_ack));
+ PIC8259(config, m_pic[0], 0);
+ m_pic[0]->out_int_callback().set_inputline(m_maincpu, 0);
+ m_pic[0]->in_sp_callback().set_constant(1);
+ m_pic[0]->read_slave_ack_callback().set(FUNC(altos8600_state::get_slave_ack));
- PIC8259(config, m_pic2, 0);
- m_pic2->out_int_callback().set(m_pic1, FUNC(pic8259_device::ir2_w));
- m_pic2->in_sp_callback().set_constant(0);
+ PIC8259(config, m_pic[1], 0);
+ m_pic[1]->out_int_callback().set(m_pic[0], FUNC(pic8259_device::ir2_w));
+ m_pic[1]->in_sp_callback().set_constant(0);
- PIC8259(config, m_pic3, 0);
- m_pic3->out_int_callback().set(m_pic1, FUNC(pic8259_device::ir3_w));
- m_pic3->in_sp_callback().set_constant(0);
+ PIC8259(config, m_pic[2], 0);
+ m_pic[2]->out_int_callback().set(m_pic[0], FUNC(pic8259_device::ir3_w));
+ m_pic[2]->in_sp_callback().set_constant(0);
RAM(config, RAM_TAG).set_default_size("1M");//.set_extra_options("512K");
@@ -764,7 +760,7 @@ MACHINE_CONFIG_START(altos8600_state::altos8600)
m_uart8274->out_txdb_callback().set("rs232b", FUNC(rs232_port_device::write_txd));
m_uart8274->out_dtrb_callback().set("rs232b", FUNC(rs232_port_device::write_dtr));
m_uart8274->out_rtsb_callback().set("rs232b", FUNC(rs232_port_device::write_rts));
- m_uart8274->out_int_callback().set("pic8259_1", FUNC(pic8259_device::ir7_w));
+ m_uart8274->out_int_callback().set(m_pic[0], FUNC(pic8259_device::ir7_w));
rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, nullptr));
rs232a.rxd_handler().set(m_uart8274, FUNC(i8274_new_device::rxa_w));
@@ -785,10 +781,10 @@ MACHINE_CONFIG_START(altos8600_state::altos8600)
pit.set_clk<1>(1228800);
pit.out_handler<1>().set(m_uart8274, FUNC(i8274_new_device::rxtxcb_w));
pit.set_clk<2>(1228800);
- pit.out_handler<1>().set(m_pic1, FUNC(pic8259_device::ir1_w));
+ pit.out_handler<1>().set(m_pic[0], FUNC(pic8259_device::ir1_w));
FD1797(config, m_fdc, 2000000);
- m_fdc->intrq_wr_callback().set(m_pic2, FUNC(pic8259_device::ir1_w));
+ 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)
@@ -797,8 +793,8 @@ MACHINE_CONFIG_START(altos8600_state::altos8600)
ACS8600_ICS(config, m_ics, 0);
m_ics->set_host_space(m_dmac, AS_PROGRAM); // TODO: fixme
- m_ics->irq1_callback().set(m_pic1, FUNC(pic8259_device::ir5_w));
- m_ics->irq2_callback().set(m_pic1, FUNC(pic8259_device::ir6_w));
+ 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
diff --git a/src/mame/drivers/amusco.cpp b/src/mame/drivers/amusco.cpp
index ff4e5a2d3fa..34a529fca09 100644
--- a/src/mame/drivers/amusco.cpp
+++ b/src/mame/drivers/amusco.cpp
@@ -534,13 +534,13 @@ PALETTE_INIT_MEMBER(amusco_state,amusco)
MACHINE_CONFIG_START(amusco_state::amusco)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I8088, CPU_CLOCK) // 5 MHz ?
- MCFG_DEVICE_PROGRAM_MAP(amusco_mem_map)
- MCFG_DEVICE_IO_MAP(amusco_io_map)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
+ I8088(config, m_maincpu, CPU_CLOCK); // 5 MHz ?
+ m_maincpu->set_addrmap(AS_PROGRAM, &amusco_state::amusco_mem_map);
+ m_maincpu->set_addrmap(AS_IO, &amusco_state::amusco_io_map);
+ m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_pic, 0);
+ m_pic->out_int_callback().set_inputline(m_maincpu, 0);
PIT8253(config, m_pit, 0);
m_pit->set_clk<0>(PIT_CLOCK0);
@@ -563,12 +563,12 @@ MACHINE_CONFIG_START(amusco_state::amusco)
i8155a.in_pb_callback().set(FUNC(amusco_state::lpt_status_r));
// Port C uses ALT 3 mode, which MAME does not currently emulate
- MCFG_DEVICE_ADD("rtc", MSM5832, 32.768_kHz_XTAL)
+ MSM5832(config, m_rtc, 32.768_kHz_XTAL);
i8155_device &i8155b(I8155(config, "rtc_interface", 0));
i8155b.out_pa_callback().set(FUNC(amusco_state::rtc_control_w));
- i8155b.in_pc_callback().set("rtc", FUNC(msm5832_device::data_r));
- i8155b.out_pc_callback().set("rtc", FUNC(msm5832_device::data_w));
+ i8155b.in_pc_callback().set(m_rtc, FUNC(msm5832_device::data_r));
+ i8155b.out_pc_callback().set(m_rtc, FUNC(msm5832_device::data_w));
MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(30), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
@@ -589,7 +589,7 @@ MACHINE_CONFIG_START(amusco_state::amusco)
MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8)
MCFG_MC6845_ADDR_CHANGED_CB(amusco_state, crtc_addr)
- MCFG_MC6845_OUT_DE_CB(WRITELINE("pic8259", pic8259_device, ir1_w)) // IRQ1 sets 0x918 bit 3
+ MCFG_MC6845_OUT_DE_CB(WRITELINE(m_pic, pic8259_device, ir1_w)) // IRQ1 sets 0x918 bit 3
MCFG_MC6845_UPDATE_ROW_CB(amusco_state, update_row)
/* sound hardware */
diff --git a/src/mame/drivers/apricot.cpp b/src/mame/drivers/apricot.cpp
index 4578a5f35cc..32627f0b1dc 100644
--- a/src/mame/drivers/apricot.cpp
+++ b/src/mame/drivers/apricot.cpp
@@ -370,8 +370,8 @@ MACHINE_CONFIG_START(apricot_state::apricot)
MCFG_DEVICE_PROGRAM_MAP(apricot_mem)
MCFG_DEVICE_IO_MAP(apricot_io)
MCFG_I8089_DATA_WIDTH(16)
- MCFG_I8089_SINTR1(WRITELINE("ic31", pic8259_device, ir0_w))
- MCFG_I8089_SINTR2(WRITELINE("ic31", pic8259_device, ir1_w))
+ MCFG_I8089_SINTR1(WRITELINE(m_pic, pic8259_device, ir0_w))
+ MCFG_I8089_SINTR2(WRITELINE(m_pic, pic8259_device, ir1_w))
// ram
RAM(config, RAM_TAG).set_default_size("256K");
@@ -409,7 +409,7 @@ MACHINE_CONFIG_START(apricot_state::apricot)
PIT8253(config, m_pit, 0);
m_pit->set_clk<0>(4_MHz_XTAL / 16);
- m_pit->out_handler<0>().set("ic31", FUNC(pic8259_device::ir6_w));
+ m_pit->out_handler<0>().set(m_pic, FUNC(pic8259_device::ir6_w));
m_pit->set_clk<1>(4_MHz_XTAL / 2);
m_pit->out_handler<1>().set("ic14", FUNC(ttl153_device::i0a_w));
m_pit->set_clk<2>(4_MHz_XTAL / 2);
diff --git a/src/mame/drivers/apricotp.cpp b/src/mame/drivers/apricotp.cpp
index 99f76374459..d61eeac5b0b 100644
--- a/src/mame/drivers/apricotp.cpp
+++ b/src/mame/drivers/apricotp.cpp
@@ -608,7 +608,7 @@ MACHINE_CONFIG_START(fp_state::fp)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* Devices */
- MCFG_DEVICE_ADD(APRICOT_KEYBOARD_TAG, APRICOT_KEYBOARD, 0)
+ APRICOT_KEYBOARD(config, APRICOT_KEYBOARD_TAG, 0);
AM9517A(config, m_dmac, 250000);
m_dmac->out_eop_callback().set(m_pic, FUNC(pic8259_device::ir7_w));
diff --git a/src/mame/drivers/b2m.cpp b/src/mame/drivers/b2m.cpp
index 7773a138845..bc22a8bfefd 100644
--- a/src/mame/drivers/b2m.cpp
+++ b/src/mame/drivers/b2m.cpp
@@ -229,8 +229,8 @@ MACHINE_CONFIG_START(b2m_state::b2m)
ppi3.out_pb_callback().set(FUNC(b2m_state::b2m_romdisk_portb_w));
ppi3.out_pc_callback().set(FUNC(b2m_state::b2m_romdisk_portc_w));
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_pic, 0);
+ m_pic->out_int_callback().set_inputline(m_maincpu, 0);
/* sound */
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/cbm2.cpp b/src/mame/drivers/cbm2.cpp
index d79d7bffc87..3afa0298410 100644
--- a/src/mame/drivers/cbm2.cpp
+++ b/src/mame/drivers/cbm2.cpp
@@ -1169,7 +1169,7 @@ void cbm2_state::ext_mem(address_map &map)
void cbm2_state::ext_io(address_map &map)
{
map.global_mask(0xff);
- map(0x0000, 0x0001).mirror(0x1e).rw(EXT_I8259A_TAG, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x0000, 0x0001).mirror(0x1e).rw(m_ext_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
map(0x0020, 0x0027).mirror(0x18).rw(EXT_MOS6525_TAG, FUNC(tpi6525_device::read), FUNC(tpi6525_device::write));
}
@@ -2715,13 +2715,13 @@ MACHINE_CONFIG_START(cbm2hp_state::bx256hp)
b256hp(config);
MCFG_MACHINE_START_OVERRIDE(cbm2_state, cbm2x_ntsc)
- MCFG_DEVICE_ADD(EXT_I8088_TAG, I8088, XTAL(12'000'000))
+ MCFG_DEVICE_ADD(m_ext_cpu, I8088, XTAL(12'000'000))
MCFG_DEVICE_PROGRAM_MAP(ext_mem)
MCFG_DEVICE_IO_MAP(ext_io)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(EXT_I8259A_TAG, pic8259_device, inta_cb)
- MCFG_DEVICE_ADD(EXT_I8259A_TAG, PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE(EXT_I8088_TAG, INPUT_LINE_IRQ0))
+ PIC8259(config, m_ext_pic, 0);
+ m_ext_pic->out_int_callback().set_inputline(m_ext_cpu, INPUT_LINE_IRQ0);
TPI6525(config, m_ext_tpi, 0);
m_ext_tpi->in_pa_cb().set(EXT_MOS6526_TAG, FUNC(mos6526_device::pa_r));
@@ -2784,13 +2784,13 @@ MACHINE_CONFIG_START(cbm2hp_state::cbm730)
cbm720(config);
MCFG_MACHINE_START_OVERRIDE(cbm2_state, cbm2x_pal)
- MCFG_DEVICE_ADD(EXT_I8088_TAG, I8088, XTAL(12'000'000))
+ MCFG_DEVICE_ADD(m_ext_cpu, I8088, XTAL(12'000'000))
MCFG_DEVICE_PROGRAM_MAP(ext_mem)
MCFG_DEVICE_IO_MAP(ext_io)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(EXT_I8259A_TAG, pic8259_device, inta_cb)
- MCFG_DEVICE_ADD(EXT_I8259A_TAG, PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE(EXT_I8088_TAG, INPUT_LINE_IRQ0))
+ PIC8259(config, m_ext_pic, 0);
+ m_ext_pic->out_int_callback().set_inputline(m_ext_cpu, INPUT_LINE_IRQ0);
TPI6525(config, m_ext_tpi, 0);
m_ext_tpi->in_pa_cb().set(EXT_MOS6526_TAG, FUNC(mos6526_device::pa_r));
diff --git a/src/mame/drivers/dvk_ksm.cpp b/src/mame/drivers/dvk_ksm.cpp
index ca204512c90..762b9662565 100644
--- a/src/mame/drivers/dvk_ksm.cpp
+++ b/src/mame/drivers/dvk_ksm.cpp
@@ -435,8 +435,8 @@ MACHINE_CONFIG_START(ksm_state::ksm)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ksm)
MCFG_PALETTE_ADD_MONOCHROME("palette")
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_pic8259, 0);
+ m_pic8259->out_int_callback().set_inputline(m_maincpu, 0);
// D30
i8255_device &ppi(I8255(config, "ppi8255"));
@@ -448,7 +448,7 @@ MACHINE_CONFIG_START(ksm_state::ksm)
// D42 - serial connection to host
I8251(config, m_i8251line, 0);
m_i8251line->txd_handler().set(m_rs232, FUNC(rs232_port_device::write_txd));
- m_i8251line->rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir3_w));
+ m_i8251line->rxrdy_handler().set(m_pic8259, FUNC(pic8259_device::ir3_w));
RS232_PORT(config, m_rs232, default_rs232_devices, "null_modem");
m_rs232->rxd_handler().set(m_i8251line, FUNC(i8251_device::write_rxd));
@@ -457,7 +457,7 @@ MACHINE_CONFIG_START(ksm_state::ksm)
// D41 - serial connection to MS7004 keyboard
I8251(config, m_i8251kbd, 0);
- m_i8251kbd->rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir1_w));
+ m_i8251kbd->rxrdy_handler().set(m_pic8259, FUNC(pic8259_device::ir1_w));
m_i8251kbd->rts_handler().set(FUNC(ksm_state::write_brga));
m_i8251kbd->dtr_handler().set(FUNC(ksm_state::write_brgb));
diff --git a/src/mame/drivers/fanucspmg.cpp b/src/mame/drivers/fanucspmg.cpp
index 0f49a3f5ca5..d651d1d2a8d 100644
--- a/src/mame/drivers/fanucspmg.cpp
+++ b/src/mame/drivers/fanucspmg.cpp
@@ -985,14 +985,14 @@ MACHINE_CONFIG_START(fanucspmg_state::fanucspmg)
m_dmac->in_ior_cb<0>().set(FUNC(fanucspmg_state::fdcdma_r));
m_dmac->out_iow_cb<0>().set(FUNC(fanucspmg_state::fdcdma_w));
- MCFG_DEVICE_ADD(m_pic[0], PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
- MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, fanucspmg_state, get_slave_ack))
-
- MCFG_DEVICE_ADD(m_pic[1], PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE(m_pic[0], pic8259_device, ir7_w))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(0))
+ PIC8259(config, m_pic[0], 0);
+ m_pic[0]->out_int_callback().set_inputline(m_maincpu, 0);
+ m_pic[0]->in_sp_callback().set_constant(1);
+ m_pic[0]->read_slave_ack_callback().set(FUNC(fanucspmg_state::get_slave_ack));
+
+ PIC8259(config, m_pic[1], 0);
+ m_pic[1]->out_int_callback().set(m_pic[0], FUNC(pic8259_device::ir7_w));
+ m_pic[1]->in_sp_callback().set_constant(0);
UPD765A(config, m_fdc, true, true);
m_fdc->intrq_wr_callback().set(m_pic[0], FUNC(pic8259_device::ir3_w));
diff --git a/src/mame/drivers/fastinvaders.cpp b/src/mame/drivers/fastinvaders.cpp
index 0bb623a7a43..be7a1c7abc1 100644
--- a/src/mame/drivers/fastinvaders.cpp
+++ b/src/mame/drivers/fastinvaders.cpp
@@ -649,11 +649,11 @@ MACHINE_CONFIG_START(fastinvaders_state::fastinvaders)
// MCFG_DEVICE_IO_MAP(fastinvaders_io_map)
// MCFG_DEVICE_VBLANK_INT_DRIVER("screen", fastinvaders_state, irq0_line_hold)
MCFG_I8085A_SID(READLINE(*this, fastinvaders_state, sid_read))
-MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
-MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", fastinvaders_state, scanline_timer, "screen", 0, 1)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", fastinvaders_state, scanline_timer, "screen", 0, 1)
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_pic8259, 0);
+ m_pic8259->out_int_callback().set_inputline(m_maincpu, 0);
I8257(config, m_dma8257, 6144100);
m_dma8257->in_memr_cb().set(FUNC(fastinvaders_state::memory_read_byte));
diff --git a/src/mame/drivers/fmtowns.cpp b/src/mame/drivers/fmtowns.cpp
index 270f5679c49..118dedd4ce7 100644
--- a/src/mame/drivers/fmtowns.cpp
+++ b/src/mame/drivers/fmtowns.cpp
@@ -776,8 +776,6 @@ READ8_MEMBER(towns_state::towns_port60_r)
WRITE8_MEMBER(towns_state::towns_port60_w)
{
- //device_t* dev = m_pic_master;
-
if(data & 0x80)
{
//towns_pic_irq(dev,0);
@@ -2807,14 +2805,14 @@ MACHINE_CONFIG_START(towns_state::towns_base)
pit2.out_handler<1>().set(FUNC(towns_state::pit2_out1_changed));
pit2.set_clk<2>(307200); // reserved
- MCFG_DEVICE_ADD("pic8259_master", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
- MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, towns_state, get_slave_ack))
+ PIC8259(config, m_pic_master, 0);
+ m_pic_master->out_int_callback().set_inputline(m_maincpu, 0);
+ m_pic_master->in_sp_callback().set_constant(1);
+ m_pic_master->read_slave_ack_callback().set(FUNC(towns_state::get_slave_ack));
- MCFG_DEVICE_ADD("pic8259_slave", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic8259_master", pic8259_device, ir7_w))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(0))
+ PIC8259(config, m_pic_slave, 0);
+ m_pic_slave->out_int_callback().set(m_pic_master, FUNC(pic8259_device::ir7_w));
+ m_pic_slave->in_sp_callback().set_constant(0);
MB8877(config, m_fdc, 8'000'000 / 4); // clock unknown
m_fdc->intrq_wr_callback().set(FUNC(towns_state::mb8877a_irq_w));
diff --git a/src/mame/drivers/ibm6580.cpp b/src/mame/drivers/ibm6580.cpp
index 747218fc43e..6bad9e72d5b 100644
--- a/src/mame/drivers/ibm6580.cpp
+++ b/src/mame/drivers/ibm6580.cpp
@@ -899,8 +899,8 @@ MACHINE_CONFIG_START(ibm6580_state::ibm6580)
MCFG_PALETTE_ADD("palette", 3)
MCFG_PALETTE_INIT_OWNER(ibm6580_state, ibm6580)
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_pic8259, 0);
+ m_pic8259->out_int_callback().set_inputline(m_maincpu, 0);
i8255_device &ppi(I8255(config, "ppi8255"));
ppi.in_pa_callback().set(FUNC(ibm6580_state::ppi_a_r));
@@ -926,7 +926,7 @@ MACHINE_CONFIG_START(ibm6580_state::ibm6580)
UPD765A(config, m_fdc, false, false);
m_fdc->intrq_wr_callback().set(FUNC(ibm6580_state::floppy_intrq));
-// m_fdc->intrq_wr_callback().append("pic8259", FUNC(pic8259_device::ir4_w));
+// m_fdc->intrq_wr_callback().append(m_pic8259, FUNC(pic8259_device::ir4_w));
m_fdc->drq_wr_callback().set(m_dma8257, FUNC(i8257_device::dreq0_w));
MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats)
@@ -935,8 +935,8 @@ MACHINE_CONFIG_START(ibm6580_state::ibm6580)
upd8251a.txd_handler().set("rs232a", FUNC(rs232_port_device::write_txd));
upd8251a.dtr_handler().set("rs232a", FUNC(rs232_port_device::write_dtr));
upd8251a.rts_handler().set("rs232a", FUNC(rs232_port_device::write_rts));
- upd8251a.rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir2_w));
- upd8251a.txrdy_handler().set("pic8259", FUNC(pic8259_device::ir2_w));
+ upd8251a.rxrdy_handler().set(m_pic8259, FUNC(pic8259_device::ir2_w));
+ upd8251a.txrdy_handler().set(m_pic8259, FUNC(pic8259_device::ir2_w));
rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, nullptr));
rs232a.rxd_handler().set("upd8251a", FUNC(i8251_device::write_rxd));
@@ -947,8 +947,8 @@ MACHINE_CONFIG_START(ibm6580_state::ibm6580)
upd8251b.txd_handler().set("rs232b", FUNC(rs232_port_device::write_txd));
upd8251b.dtr_handler().set("rs232b", FUNC(rs232_port_device::write_dtr));
upd8251b.rts_handler().set("rs232b", FUNC(rs232_port_device::write_rts));
- upd8251b.rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir2_w));
- upd8251b.txrdy_handler().set("pic8259", FUNC(pic8259_device::ir2_w));
+ upd8251b.rxrdy_handler().set(m_pic8259, FUNC(pic8259_device::ir2_w));
+ upd8251b.txrdy_handler().set(m_pic8259, FUNC(pic8259_device::ir2_w));
rs232_port_device &rs232b(RS232_PORT(config, "rs232b", default_rs232_devices, nullptr));
rs232b.rxd_handler().set("upd8251b", FUNC(i8251_device::write_rxd));
diff --git a/src/mame/drivers/ibmpcjr.cpp b/src/mame/drivers/ibmpcjr.cpp
index 65f3af17206..8829ed707c6 100644
--- a/src/mame/drivers/ibmpcjr.cpp
+++ b/src/mame/drivers/ibmpcjr.cpp
@@ -599,10 +599,10 @@ void pcjr_state::ibmpcjx_io(address_map &map)
MACHINE_CONFIG_START(pcjr_state::ibmpcjr)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I8088, 4900000)
- MCFG_DEVICE_PROGRAM_MAP(ibmpcjr_map)
- MCFG_DEVICE_IO_MAP(ibmpcjr_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
+ I8088(config, m_maincpu, 4900000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &pcjr_state::ibmpcjr_map);
+ m_maincpu->set_addrmap(AS_IO, &pcjr_state::ibmpcjr_io);
+ m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
/*
On the PC Jr the input for clock 1 seems to be selectable
@@ -616,8 +616,8 @@ MACHINE_CONFIG_START(pcjr_state::ibmpcjr)
m_pit8253->set_clk<2>(XTAL(14'318'181)/12);
m_pit8253->out_handler<2>().set(FUNC(pcjr_state::out2_changed));
- MCFG_DEVICE_ADD(m_pic8259, PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, pcjr_state, pic8259_set_int_line))
+ PIC8259(config, m_pic8259, 0);
+ m_pic8259->out_int_callback().set(FUNC(pcjr_state::pic8259_set_int_line));
i8255_device &ppi(I8255(config, "ppi8255"));
ppi.in_pa_callback().set_constant(0xff);
diff --git a/src/mame/drivers/if800.cpp b/src/mame/drivers/if800.cpp
index 5ca27f8f116..e218ec31a65 100644
--- a/src/mame/drivers/if800.cpp
+++ b/src/mame/drivers/if800.cpp
@@ -97,7 +97,7 @@ MACHINE_CONFIG_START(if800_state::if800)
MCFG_DEVICE_IO_MAP(if800_io)
-// MCFG_PIC8259_ADD( "pic8259", if800_pic8259_config )
+// PIC8259(config, "pic8259", 0);
MCFG_DEVICE_ADD("upd7220", UPD7220, 8000000/4)
MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map)
MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(if800_state, hgdc_display_pixels)
diff --git a/src/mame/drivers/iq151.cpp b/src/mame/drivers/iq151.cpp
index 0c2f60197c7..72277e40d77 100644
--- a/src/mame/drivers/iq151.cpp
+++ b/src/mame/drivers/iq151.cpp
@@ -390,11 +390,11 @@ static void iq151_cart(device_slot_interface &device)
MACHINE_CONFIG_START(iq151_state::iq151)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu",I8080, XTAL(2'000'000))
- MCFG_DEVICE_PROGRAM_MAP(iq151_mem)
- MCFG_DEVICE_IO_MAP(iq151_io)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", iq151_state, iq151_vblank_interrupt)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
+ I8080(config, m_maincpu, XTAL(2'000'000));
+ m_maincpu->set_addrmap(AS_PROGRAM, &iq151_state::iq151_mem);
+ m_maincpu->set_addrmap(AS_IO, &iq151_state::iq151_io);
+ m_maincpu->set_vblank_int("screen", FUNC(iq151_state::iq151_vblank_interrupt));
+ m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
/* video hardware */
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
@@ -412,8 +412,8 @@ MACHINE_CONFIG_START(iq151_state::iq151)
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_pic, 0);
+ m_pic->out_int_callback().set_inputline(m_maincpu, 0);
i8255_device &ppi(I8255(config, "ppi8255"));
ppi.in_pa_callback().set(FUNC(iq151_state::keyboard_row_r));
@@ -431,43 +431,43 @@ MACHINE_CONFIG_START(iq151_state::iq151)
MCFG_DEVICE_ADD("slot1", IQ151CART_SLOT, 0)
MCFG_DEVICE_SLOT_INTERFACE(iq151_cart, nullptr, false)
MCFG_IQ151CART_SLOT_SCREEN_TAG("screen")
- MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE("pic8259", pic8259_device, ir0_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE("pic8259", pic8259_device, ir1_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE("pic8259", pic8259_device, ir2_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE("pic8259", pic8259_device, ir3_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE("pic8259", pic8259_device, ir4_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE(m_pic, pic8259_device, ir0_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE(m_pic, pic8259_device, ir1_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE(m_pic, pic8259_device, ir2_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE(m_pic, pic8259_device, ir3_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE(m_pic, pic8259_device, ir4_w))
MCFG_DEVICE_ADD("slot2", IQ151CART_SLOT, 0)
MCFG_DEVICE_SLOT_INTERFACE(iq151_cart, nullptr, false)
MCFG_IQ151CART_SLOT_SCREEN_TAG("screen")
- MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE("pic8259", pic8259_device, ir0_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE("pic8259", pic8259_device, ir1_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE("pic8259", pic8259_device, ir2_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE("pic8259", pic8259_device, ir3_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE("pic8259", pic8259_device, ir4_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE(m_pic, pic8259_device, ir0_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE(m_pic, pic8259_device, ir1_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE(m_pic, pic8259_device, ir2_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE(m_pic, pic8259_device, ir3_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE(m_pic, pic8259_device, ir4_w))
MCFG_DEVICE_ADD("slot3", IQ151CART_SLOT, 0)
MCFG_DEVICE_SLOT_INTERFACE(iq151_cart, nullptr, false)
MCFG_IQ151CART_SLOT_SCREEN_TAG("screen")
- MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE("pic8259", pic8259_device, ir0_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE("pic8259", pic8259_device, ir1_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE("pic8259", pic8259_device, ir2_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE("pic8259", pic8259_device, ir3_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE("pic8259", pic8259_device, ir4_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE(m_pic, pic8259_device, ir0_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE(m_pic, pic8259_device, ir1_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE(m_pic, pic8259_device, ir2_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE(m_pic, pic8259_device, ir3_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE(m_pic, pic8259_device, ir4_w))
MCFG_DEVICE_ADD("slot4", IQ151CART_SLOT, 0)
MCFG_DEVICE_SLOT_INTERFACE(iq151_cart, nullptr, false)
MCFG_IQ151CART_SLOT_SCREEN_TAG("screen")
- MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE("pic8259", pic8259_device, ir0_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE("pic8259", pic8259_device, ir1_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE("pic8259", pic8259_device, ir2_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE("pic8259", pic8259_device, ir3_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE("pic8259", pic8259_device, ir4_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE(m_pic, pic8259_device, ir0_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE(m_pic, pic8259_device, ir1_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE(m_pic, pic8259_device, ir2_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE(m_pic, pic8259_device, ir3_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE(m_pic, pic8259_device, ir4_w))
MCFG_DEVICE_ADD("slot5", IQ151CART_SLOT, 0)
MCFG_DEVICE_SLOT_INTERFACE(iq151_cart, "video32", false)
MCFG_IQ151CART_SLOT_SCREEN_TAG("screen")
- MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE("pic8259", pic8259_device, ir0_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE("pic8259", pic8259_device, ir1_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE("pic8259", pic8259_device, ir2_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE("pic8259", pic8259_device, ir3_w))
- MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE("pic8259", pic8259_device, ir4_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ0_CB(WRITELINE(m_pic, pic8259_device, ir0_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ1_CB(WRITELINE(m_pic, pic8259_device, ir1_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ2_CB(WRITELINE(m_pic, pic8259_device, ir2_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ3_CB(WRITELINE(m_pic, pic8259_device, ir3_w))
+ MCFG_IQ151CART_SLOT_OUT_IRQ4_CB(WRITELINE(m_pic, pic8259_device, ir4_w))
/* Software lists */
MCFG_SOFTWARE_LIST_ADD("cart_list", "iq151_cart")
diff --git a/src/mame/drivers/irisha.cpp b/src/mame/drivers/irisha.cpp
index ed792c68df7..545be9f4d6f 100644
--- a/src/mame/drivers/irisha.cpp
+++ b/src/mame/drivers/irisha.cpp
@@ -388,7 +388,7 @@ MACHINE_CONFIG_START(irisha_state::irisha)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
- MCFG_DEVICE_ADD("uart", I8251, 0)
+ I8251(config, "uart", 0);
PIT8253(config, m_pit, 0);
m_pit->set_clk<0>(16_MHz_XTAL / 9);
@@ -406,8 +406,8 @@ MACHINE_CONFIG_START(irisha_state::irisha)
ppi.in_pc_callback().set(FUNC(irisha_state::irisha_8255_portc_r));
ppi.out_pc_callback().set(FUNC(irisha_state::irisha_8255_portc_w));
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ pic8259_device &pic8259(PIC8259(config, "pic8259", 0));
+ pic8259.out_int_callback().set_inputline(m_maincpu, 0);
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/isbc.cpp b/src/mame/drivers/isbc.cpp
index 0e4394a1862..7c243b6bf40 100644
--- a/src/mame/drivers/isbc.cpp
+++ b/src/mame/drivers/isbc.cpp
@@ -481,7 +481,7 @@ MACHINE_CONFIG_START(isbc_state::isbc286)
m_uart8274->out_dtrb_callback().set("rs232b", FUNC(rs232_port_device::write_dtr));
m_uart8274->out_rtsb_callback().set("rs232b", FUNC(rs232_port_device::write_rts));
// m_uart8274->out_int_callback().set(FUNC(isbc_state::isbc_uart8274_irq));
- m_uart8274->out_int_callback().set("pic_0", FUNC(pic8259_device::ir6_w));
+ m_uart8274->out_int_callback().set(m_pic_0, FUNC(pic8259_device::ir6_w));
#endif
rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, nullptr));
diff --git a/src/mame/drivers/m107.cpp b/src/mame/drivers/m107.cpp
index 4b831afd528..9eab26207e9 100644
--- a/src/mame/drivers/m107.cpp
+++ b/src/mame/drivers/m107.cpp
@@ -742,8 +742,8 @@ MACHINE_CONFIG_START(m107_state::firebarr)
MCFG_DEVICE_PROGRAM_MAP(sound_map)
MCFG_V25_CONFIG(rtypeleo_decryption_table)
- MCFG_DEVICE_ADD("upd71059c", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_upd71059c, 0);
+ m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0);
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", m107_state, scanline_interrupt, "screen", 0, 1)
@@ -772,7 +772,7 @@ MACHINE_CONFIG_START(m107_state::firebarr)
MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true)
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
- MCFG_GENERIC_LATCH_DATA_PENDING_CB(WRITELINE("upd71059c", pic8259_device, ir3_w))
+ MCFG_GENERIC_LATCH_DATA_PENDING_CB(WRITELINE(m_upd71059c, pic8259_device, ir3_w))
MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181)/4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", NEC_INPUT_LINE_INTP0))
diff --git a/src/mame/drivers/m20.cpp b/src/mame/drivers/m20.cpp
index 7dd7c26b95e..df3c6befd40 100644
--- a/src/mame/drivers/m20.cpp
+++ b/src/mame/drivers/m20.cpp
@@ -838,8 +838,8 @@ MACHINE_CONFIG_START(m20_state::m20)
pit8253.set_clk<2>(1230782);
pit8253.out_handler<2>().set(FUNC(m20_state::timer_tick_w));
- MCFG_DEVICE_ADD(m_i8259, PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, m20_state, int_w))
+ PIC8259(config, m_i8259, 0);
+ m_i8259->out_int_callback().set(FUNC(m20_state::int_w));
rs232_port_device &kbd(RS232_PORT(config, "kbd", keyboard, "m20"));
kbd.rxd_handler().set(m_kbdi8251, FUNC(i8251_device::write_rxd));
diff --git a/src/mame/drivers/m72.cpp b/src/mame/drivers/m72.cpp
index ef60eed7877..bdd3c946c47 100644
--- a/src/mame/drivers/m72.cpp
+++ b/src/mame/drivers/m72.cpp
@@ -1847,8 +1847,8 @@ MACHINE_CONFIG_START(m72_state::m72_base)
MCFG_DEVICE_PROGRAM_MAP(sound_ram_map)
MCFG_DEVICE_IO_MAP(sound_portmap)
- MCFG_DEVICE_ADD("upd71059c", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_upd71059c, 0);
+ m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0);
/* video hardware */
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_m72)
@@ -1878,7 +1878,7 @@ MACHINE_CONFIG_START(m72_state::m72_8751)
MCFG_DEVICE_IO_MAP(m72_protected_portmap)
MB8421_MB8431_16BIT(config, m_dpram);
- //m_dpram->intl_callback().set("upd71059c", FUNC(pic8259_device::ir3_w)); // not actually used?
+ //m_dpram->intl_callback().set(m_upd71059c, FUNC(pic8259_device::ir3_w)); // not actually used?
m_dpram->intr_callback().set_inputline("mcu", MCS51_INT0_LINE);
MCFG_GENERIC_LATCH_8_ADD("mculatch")
@@ -1983,8 +1983,8 @@ MACHINE_CONFIG_START(m72_state::rtype2)
MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
/* IRQs are generated by main Z80 and YM2151 */
- MCFG_DEVICE_ADD("upd71059c", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_upd71059c, 0);
+ m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0);
/* video hardware */
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rtype2)
@@ -2029,7 +2029,7 @@ MACHINE_CONFIG_START(m72_state::cosmccop)
MCFG_MACHINE_START_OVERRIDE(m72_state,kengo)
MCFG_MACHINE_RESET_OVERRIDE(m72_state,kengo)
- // upd71059c isn't needed beacuse the V35 has its own IRQ controller
+ // upd71059c isn't needed because the V35 has its own IRQ controller
/* video hardware */
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rtype2)
@@ -2073,8 +2073,8 @@ MACHINE_CONFIG_START(m72_state::m82)
MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
/* IRQs are generated by main Z80 and YM2151 */
- MCFG_DEVICE_ADD("upd71059c", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_upd71059c, 0);
+ m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0);
/* video hardware */
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_majtitle)
@@ -2108,8 +2108,8 @@ MACHINE_CONFIG_START(m72_state::poundfor)
MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, fake_nmi, 128*55) /* clocked by V1? (Vigilante) */
/* IRQs are generated by main Z80 and YM2151 */
- MCFG_DEVICE_ADD("upd71059c", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_upd71059c, 0);
+ m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0);
UPD4701A(config, m_upd4701[0]);
m_upd4701[0]->set_portx_tag("TRACK0_X");
diff --git a/src/mame/drivers/m92.cpp b/src/mame/drivers/m92.cpp
index 7045b7bc98a..293470ccb66 100644
--- a/src/mame/drivers/m92.cpp
+++ b/src/mame/drivers/m92.cpp
@@ -925,8 +925,8 @@ MACHINE_CONFIG_START(m92_state::m92)
MCFG_DEVICE_ADD("soundcpu" ,V35, XTAL(14'318'181))
MCFG_DEVICE_PROGRAM_MAP(sound_map)
- MCFG_DEVICE_ADD("upd71059c", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_upd71059c, 0);
+ m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0);
MCFG_MACHINE_RESET_OVERRIDE(m92_state,m92)
@@ -957,7 +957,7 @@ MACHINE_CONFIG_START(m92_state::m92)
MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true)
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
- MCFG_GENERIC_LATCH_DATA_PENDING_CB(WRITELINE("upd71059c", pic8259_device, ir3_w))
+ MCFG_GENERIC_LATCH_DATA_PENDING_CB(WRITELINE(m_upd71059c, pic8259_device, ir3_w))
MCFG_DEVICE_ADD("ymsnd", YM2151, XTAL(14'318'181)/4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", NEC_INPUT_LINE_INTP0))
diff --git a/src/mame/drivers/mbc55x.cpp b/src/mame/drivers/mbc55x.cpp
index b2445aa59d7..704b5155bfa 100644
--- a/src/mame/drivers/mbc55x.cpp
+++ b/src/mame/drivers/mbc55x.cpp
@@ -243,10 +243,10 @@ static void mbc55x_floppies(device_slot_interface &device)
MACHINE_CONFIG_START(mbc55x_state::mbc55x)
/* basic machine hardware */
- MCFG_DEVICE_ADD(MAINCPU_TAG, I8088, 3600000)
- MCFG_DEVICE_PROGRAM_MAP(mbc55x_mem)
- MCFG_DEVICE_IO_MAP(mbc55x_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(PIC8259_TAG, pic8259_device, inta_cb)
+ I8088(config, m_maincpu, 3600000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &mbc55x_state::mbc55x_mem);
+ m_maincpu->set_addrmap(AS_IO, &mbc55x_state::mbc55x_io);
+ m_maincpu->set_irq_acknowledge_callback(PIC8259_TAG, FUNC(pic8259_device::inta_cb));
/* video hardware */
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
@@ -267,7 +267,7 @@ MACHINE_CONFIG_START(mbc55x_state::mbc55x)
/* Devices */
I8251(config, m_kb_uart, 0);
- m_kb_uart->rxrdy_handler().set(PIC8259_TAG, FUNC(pic8259_device::ir3_w));
+ m_kb_uart->rxrdy_handler().set(m_pic, FUNC(pic8259_device::ir3_w));
PIT8253(config, m_pit, 0);
m_pit->set_clk<0>(PIT_C0_CLOCK);
@@ -277,8 +277,8 @@ MACHINE_CONFIG_START(mbc55x_state::mbc55x)
m_pit->set_clk<2>(PIT_C2_CLOCK);
m_pit->out_handler<2>().set(FUNC(mbc55x_state::pit8253_t2));
- MCFG_DEVICE_ADD(PIC8259_TAG, PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE(MAINCPU_TAG, INPUT_LINE_IRQ0))
+ PIC8259(config, m_pic, 0);
+ m_pic->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
I8255(config, m_ppi);
m_ppi->in_pa_callback().set(FUNC(mbc55x_state::mbc55x_ppi_porta_r));
diff --git a/src/mame/drivers/mc1502.cpp b/src/mame/drivers/mc1502.cpp
index 094aeb1e590..9a209483353 100644
--- a/src/mame/drivers/mc1502.cpp
+++ b/src/mame/drivers/mc1502.cpp
@@ -230,10 +230,10 @@ static INPUT_PORTS_START( mc1502 )
INPUT_PORTS_END
MACHINE_CONFIG_START(mc1502_state::mc1502)
- MCFG_DEVICE_ADD("maincpu", I8088, XTAL(16'000'000)/3)
- MCFG_DEVICE_PROGRAM_MAP(mc1502_map)
- MCFG_DEVICE_IO_MAP(mc1502_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
+ I8088(config, m_maincpu, XTAL(16'000'000)/3);
+ m_maincpu->set_addrmap(AS_PROGRAM, &mc1502_state::mc1502_map);
+ m_maincpu->set_addrmap(AS_IO, &mc1502_state::mc1502_io);
+ m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
MCFG_MACHINE_START_OVERRIDE( mc1502_state, mc1502 )
MCFG_MACHINE_RESET_OVERRIDE( mc1502_state, mc1502 )
@@ -246,8 +246,8 @@ MACHINE_CONFIG_START(mc1502_state::mc1502)
m_pit8253->set_clk<2>(XTAL(16'000'000)/12); /* pio port c pin 4, and speaker polling enough */
m_pit8253->out_handler<2>().set(FUNC(mc1502_state::mc1502_pit8253_out2_changed));
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_pic8259, 0);
+ m_pic8259->out_int_callback().set_inputline(m_maincpu, 0);
I8255(config, m_ppi8255n1);
m_ppi8255n1->out_pa_callback().set("cent_data_out", FUNC(output_latch_device::bus_w));
@@ -266,8 +266,8 @@ MACHINE_CONFIG_START(mc1502_state::mc1502)
m_upd8251->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr));
m_upd8251->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts));
/* XXX RxD data are accessible via PPI port C, bit 7 */
- m_upd8251->rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir7_w)); /* default handler does nothing */
- m_upd8251->txrdy_handler().set("pic8259", FUNC(pic8259_device::ir7_w));
+ m_upd8251->rxrdy_handler().set(m_pic8259, FUNC(pic8259_device::ir7_w)); /* default handler does nothing */
+ m_upd8251->txrdy_handler().set(m_pic8259, FUNC(pic8259_device::ir7_w));
m_upd8251->syndet_handler().set(FUNC(mc1502_state::mc1502_i8251_syndet));
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
@@ -277,12 +277,12 @@ MACHINE_CONFIG_START(mc1502_state::mc1502)
MCFG_DEVICE_ADD("isa", ISA8, 0)
MCFG_ISA8_CPU("maincpu")
- MCFG_ISA_OUT_IRQ2_CB(WRITELINE("pic8259", pic8259_device, ir2_w))
- MCFG_ISA_OUT_IRQ3_CB(WRITELINE("pic8259", pic8259_device, ir3_w))
- MCFG_ISA_OUT_IRQ4_CB(WRITELINE("pic8259", pic8259_device, ir4_w))
- MCFG_ISA_OUT_IRQ5_CB(WRITELINE("pic8259", pic8259_device, ir5_w))
- MCFG_ISA_OUT_IRQ6_CB(WRITELINE("pic8259", pic8259_device, ir6_w))
- MCFG_ISA_OUT_IRQ7_CB(WRITELINE("pic8259", pic8259_device, ir7_w))
+ MCFG_ISA_OUT_IRQ2_CB(WRITELINE(m_pic8259, pic8259_device, ir2_w))
+ MCFG_ISA_OUT_IRQ3_CB(WRITELINE(m_pic8259, pic8259_device, ir3_w))
+ MCFG_ISA_OUT_IRQ4_CB(WRITELINE(m_pic8259, pic8259_device, ir4_w))
+ MCFG_ISA_OUT_IRQ5_CB(WRITELINE(m_pic8259, pic8259_device, ir5_w))
+ MCFG_ISA_OUT_IRQ6_CB(WRITELINE(m_pic8259, pic8259_device, ir6_w))
+ MCFG_ISA_OUT_IRQ7_CB(WRITELINE(m_pic8259, pic8259_device, ir7_w))
MCFG_DEVICE_ADD("board0", ISA8_SLOT, 0, "isa", mc1502_isa8_cards, "cga_mc1502", true) // FIXME: determine ISA bus clock
MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "isa", mc1502_isa8_cards, "fdc", false)
diff --git a/src/mame/drivers/miniframe.cpp b/src/mame/drivers/miniframe.cpp
index 0397f233673..92e76c4bd30 100644
--- a/src/mame/drivers/miniframe.cpp
+++ b/src/mame/drivers/miniframe.cpp
@@ -224,10 +224,11 @@ static void miniframe_floppies(device_slot_interface &device)
device.option_add("525dd", FLOPPY_525_DD);
}
-MACHINE_CONFIG_START(miniframe_state::miniframe)
+void miniframe_state::miniframe(machine_config &config)
+{
// basic machine hardware
- MCFG_DEVICE_ADD("maincpu", M68010, XTAL(10'000'000))
- MCFG_DEVICE_PROGRAM_MAP(miniframe_mem)
+ M68010(config, m_maincpu, XTAL(10'000'000));
+ m_maincpu->set_addrmap(AS_PROGRAM, &miniframe_state::miniframe_mem);
// internal ram
RAM(config, RAM_TAG).set_default_size("1M").set_extra_options("2M");
@@ -239,7 +240,7 @@ MACHINE_CONFIG_START(miniframe_state::miniframe)
WD2797(config, m_wd2797, 1000000);
// m_wd2797->intrq_wr_callback().set(FUNC(miniframe_state::wd2797_intrq_w));
// m_wd2797->drq_wr_callback().set(FUNC(miniframe_state::wd2797_drq_w));
- MCFG_FLOPPY_DRIVE_ADD("wd2797:0", miniframe_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ FLOPPY_CONNECTOR(config, "wd2797:0", miniframe_floppies, "525dd", floppy_image_device::default_floppy_formats);
// 8263s
pit8253_device &pit8253(PIT8253(config, "pit8253", 0));
@@ -257,10 +258,10 @@ MACHINE_CONFIG_START(miniframe_state::miniframe)
baudgen.set_clk<2>(1228800);
// PIC8259s
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", M68K_IRQ_4))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
-MACHINE_CONFIG_END
+ pic8259_device &pic8259(PIC8259(config, "pic8259", 0));
+ pic8259.out_int_callback().set_inputline(m_maincpu, M68K_IRQ_4);
+ pic8259.in_sp_callback().set_constant(1);
+}
/***************************************************************************
diff --git a/src/mame/drivers/mrflea.cpp b/src/mame/drivers/mrflea.cpp
index 5678a2bc898..dbc3ba46330 100644
--- a/src/mame/drivers/mrflea.cpp
+++ b/src/mame/drivers/mrflea.cpp
@@ -278,11 +278,11 @@ MACHINE_CONFIG_START(mrflea_state::mrflea)
i8255_device &subppi(I8255(config, "subppi", 0));
subppi.in_pa_callback().set("mainppi", FUNC(i8255_device::pa_r));
subppi.out_pc_callback().set("mainppi", FUNC(i8255_device::pc6_w)).bit(5); // IBFA -> ACKA
- subppi.out_pc_callback().append("pic", FUNC(pic8259_device::ir0_w)).bit(3); // INTRA
+ subppi.out_pc_callback().append(m_pic, FUNC(pic8259_device::ir0_w)).bit(3); // INTRA
subppi.out_pc_callback().append("mainppi", FUNC(i8255_device::pc2_w)).bit(1); // OBFB -> STBB
- MCFG_DEVICE_ADD("pic", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("subcpu", 0))
+ PIC8259(config, m_pic, 0);
+ m_pic->out_int_callback().set_inputline(m_subcpu, 0);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/multi16.cpp b/src/mame/drivers/multi16.cpp
index c066134da29..0bfa6f56bc1 100644
--- a/src/mame/drivers/multi16.cpp
+++ b/src/mame/drivers/multi16.cpp
@@ -140,10 +140,10 @@ void multi16_state::machine_reset()
MACHINE_CONFIG_START(multi16_state::multi16)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I8086, 8000000)
- MCFG_DEVICE_PROGRAM_MAP(multi16_map)
- MCFG_DEVICE_IO_MAP(multi16_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
+ I8086(config, m_maincpu, 8000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &multi16_state::multi16_map);
+ m_maincpu->set_addrmap(AS_IO, &multi16_state::multi16_io);
+ m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -161,8 +161,8 @@ MACHINE_CONFIG_START(multi16_state::multi16)
MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8)
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_pic, 0);
+ m_pic->out_int_callback().set_inputline(m_maincpu, 0);
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/myb3k.cpp b/src/mame/drivers/myb3k.cpp
index 863f6d9a7da..bd8b566db3b 100644
--- a/src/mame/drivers/myb3k.cpp
+++ b/src/mame/drivers/myb3k.cpp
@@ -932,17 +932,17 @@ static void stepone_isa_cards(device_slot_interface &device)
MACHINE_CONFIG_START(myb3k_state::myb3k)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I8088, XTAL(14'318'181) / 3) /* 14.3182 main crystal divided by three through a 8284A */
- MCFG_DEVICE_PROGRAM_MAP(myb3k_map)
- MCFG_DEVICE_IO_MAP(myb3k_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic", pic8259_device, inta_cb)
+ I8088(config, m_maincpu, XTAL(14'318'181) / 3); /* 14.3182 main crystal divided by three through a 8284A */
+ m_maincpu->set_addrmap(AS_PROGRAM, &myb3k_state::myb3k_map);
+ m_maincpu->set_addrmap(AS_IO, &myb3k_state::myb3k_io);
+ m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
/* RAM options */
RAM(config, RAM_TAG).set_default_size("256K").set_extra_options("128K, 256K");
/* Interrupt controller */
- MCFG_DEVICE_ADD("pic", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, myb3k_state, pic_int_w))
+ PIC8259(config, m_pic8259, 0);
+ m_pic8259->out_int_callback().set(FUNC(myb3k_state::pic_int_w));
/* Parallel port */
I8255A(config, m_ppi8255);
@@ -987,11 +987,11 @@ MACHINE_CONFIG_START(myb3k_state::myb3k)
/* ISA8+ Expansion bus */
MCFG_DEVICE_ADD("isa", ISA8, 0)
MCFG_ISA8_CPU("maincpu")
- MCFG_ISA_OUT_IRQ2_CB(WRITELINE("pic", pic8259_device, ir2_w))
- MCFG_ISA_OUT_IRQ3_CB(WRITELINE("pic", pic8259_device, ir3_w))
- MCFG_ISA_OUT_IRQ4_CB(WRITELINE("pic", pic8259_device, ir4_w))
+ MCFG_ISA_OUT_IRQ2_CB(WRITELINE(m_pic8259, pic8259_device, ir2_w))
+ MCFG_ISA_OUT_IRQ3_CB(WRITELINE(m_pic8259, pic8259_device, ir3_w))
+ MCFG_ISA_OUT_IRQ4_CB(WRITELINE(m_pic8259, pic8259_device, ir4_w))
MCFG_ISA_OUT_IRQ5_CB(WRITELINE(*this, myb3k_state, isa_irq5_w)) // Jumper J4 selectable
- MCFG_ISA_OUT_IRQ6_CB(WRITELINE("pic", pic8259_device, ir6_w))
+ MCFG_ISA_OUT_IRQ6_CB(WRITELINE(m_pic8259, pic8259_device, ir6_w))
MCFG_ISA_OUT_IRQ7_CB(WRITELINE(*this, myb3k_state, isa_irq7_w)) // Jumper J5 selectable
//MCFG_ISA_OUT_DRQ0_CB(WRITELINE("dma", i8257_device, dreq0_w)) // Part of ISA16 but not ISA8 standard but implemented on ISA8 B8 (SRDY) on this motherboard
MCFG_ISA_OUT_DRQ1_CB(WRITELINE("dma", i8257_device, dreq1_w))
diff --git a/src/mame/drivers/notetaker.cpp b/src/mame/drivers/notetaker.cpp
index c4e8177361f..b35cad7af75 100644
--- a/src/mame/drivers/notetaker.cpp
+++ b/src/mame/drivers/notetaker.cpp
@@ -800,24 +800,23 @@ INPUT_PORTS_END
MACHINE_CONFIG_START(notetaker_state::notetakr)
/* basic machine hardware */
/* IO CPU: 8086@8MHz */
- MCFG_DEVICE_ADD("iop_cpu", I8086, 24_MHz_XTAL / 3) /* iD8086-2 @ E4A; 24Mhz crystal divided down to 8Mhz by i8284 clock generator */
- MCFG_DEVICE_PROGRAM_MAP(iop_mem)
- MCFG_DEVICE_IO_MAP(iop_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("iop_pic8259", pic8259_device, inta_cb)
+ I8086(config, m_iop_cpu, 24_MHz_XTAL / 3); /* iD8086-2 @ E4A; 24Mhz crystal divided down to 8Mhz by i8284 clock generator */
+ m_iop_cpu->set_addrmap(AS_PROGRAM, &notetaker_state::iop_mem);
+ m_iop_cpu->set_addrmap(AS_IO, &notetaker_state::iop_io);
+ m_iop_cpu->set_irq_acknowledge_callback("iop_pic8259", FUNC(pic8259_device::inta_cb));
- MCFG_DEVICE_ADD("iop_pic8259", PIC8259, 0) // iP8259A-2 @ E6
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("iop_cpu", 0))
+ PIC8259(config, m_iop_pic, 0); // iP8259A-2 @ E6
+ m_iop_pic->out_int_callback().set_inputline(m_iop_cpu, 0);
/* Emulator CPU: 8086@5MHz */
- MCFG_DEVICE_ADD("ep_cpu", I8086, 15_MHz_XTAL / 3)
- MCFG_DEVICE_DISABLE() // TODO: implement the cpu control bits so this doesn't execute garbage/zeroes before its firmware gets loaded
- MCFG_DEVICE_PROGRAM_MAP(ep_mem)
- MCFG_DEVICE_IO_MAP(ep_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("ep_pic8259", pic8259_device, inta_cb)
-
- MCFG_DEVICE_ADD("ep_pic8259", PIC8259, 0) // iP8259A-2 @ E6
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("ep_cpu", 0))
+ I8086(config, m_ep_cpu, 15_MHz_XTAL / 3);
+ m_ep_cpu->set_disable(); // TODO: implement the cpu control bits so this doesn't execute garbage/zeroes before its firmware gets loaded
+ m_ep_cpu->set_addrmap(AS_PROGRAM, &notetaker_state::ep_mem);
+ m_ep_cpu->set_addrmap(AS_IO, &notetaker_state::ep_io);
+ m_ep_cpu->set_irq_acknowledge_callback("ep_pic8259", FUNC(pic8259_device::inta_cb));
+ PIC8259(config, m_ep_pic, 0); // iP8259A-2 @ E6
+ m_ep_pic->out_int_callback().set_inputline(m_ep_cpu, 0);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -843,18 +842,18 @@ MACHINE_CONFIG_START(notetaker_state::notetakr)
// TODO: for now, we just hack it to the latter setting from start; this should be handled correctly in iop_reset();
m_crtc->set_char_width(8); //(8 pixels per column/halfword, 16 pixels per fullword)
// TODO: below is HACKED to trigger the odd/even int ir4 instead of vblank int ir7 since ir4 is required for anything to be drawn to screen! hence with the hack this interrupt triggers twice as often as it should
- m_crtc->vsyn_callback().set("iop_pic8259", FUNC(pic8259_device::ir4_w)); // note this triggers interrupts on both the iop (ir7) and emulatorcpu (ir4)
+ m_crtc->vsyn_callback().set(m_iop_pic, FUNC(pic8259_device::ir4_w)); // note this triggers interrupts on both the iop (ir7) and emulatorcpu (ir4)
m_crtc->set_screen("screen");
AY31015(config, m_kbduart); // HD6402, == AY-3-1015D
m_kbduart->set_rx_clock(960_kHz_XTAL); // hard-wired to 960KHz xtal #f11 (60000 baud, 16 clocks per baud)
m_kbduart->set_tx_clock(960_kHz_XTAL); // hard-wired to 960KHz xtal #f11 (60000 baud, 16 clocks per baud)
- m_kbduart->write_dav_callback().set("iop_pic8259", FUNC(pic8259_device::ir6_w)); // DataRecvd = KbdInt
+ m_kbduart->write_dav_callback().set(m_iop_pic, FUNC(pic8259_device::ir6_w)); // DataRecvd = KbdInt
AY31015(config, m_eiauart); // HD6402, == AY-3-1015D
m_eiauart->set_rx_clock(((960_kHz_XTAL/10)/4)/5); // hard-wired through an mc14568b divider set to divide by 4, the result set to divide by 5; this resulting 4800hz signal being 300 baud (16 clocks per baud)
m_eiauart->set_tx_clock(((960_kHz_XTAL/10)/4)/5); // hard-wired through an mc14568b divider set to divide by 4, the result set to divide by 5; this resulting 4800hz signal being 300 baud (16 clocks per baud)
- m_eiauart->write_dav_callback().set("iop_pic8259", FUNC(pic8259_device::ir3_w)); // EIADataReady = EIAInt
+ m_eiauart->write_dav_callback().set(m_iop_pic, FUNC(pic8259_device::ir3_w)); // EIADataReady = EIAInt
/* Floppy */
FD1791(config, m_fdc, (((24_MHz_XTAL/3)/2)/2)); // 2mhz, from 24mhz ip clock divided by 6 via 8284, an additional 2 by LS161 at #e1 on display/floppy board
diff --git a/src/mame/drivers/olyboss.cpp b/src/mame/drivers/olyboss.cpp
index f1bdbc88b33..f164741811d 100644
--- a/src/mame/drivers/olyboss.cpp
+++ b/src/mame/drivers/olyboss.cpp
@@ -511,8 +511,8 @@ MACHINE_CONFIG_START( olyboss_state::bossb85 )
/* devices */
- MCFG_DEVICE_ADD("pic", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_pic, 0);
+ m_pic->out_int_callback().set_inputline(m_maincpu, 0);
UPD765A(config, m_fdc, true, true);
m_fdc->intrq_wr_callback().set_inputline(m_maincpu, I8085_RST65_LINE);
diff --git a/src/mame/drivers/pc100.cpp b/src/mame/drivers/pc100.cpp
index 24cf154d520..485ec9b3913 100644
--- a/src/mame/drivers/pc100.cpp
+++ b/src/mame/drivers/pc100.cpp
@@ -339,7 +339,7 @@ WRITE8_MEMBER( pc100_state::pc100_crtc_data_w )
void pc100_state::pc100_io(address_map &map)
{
map.global_mask(0xff);
- map(0x00, 0x03).rw("pic8259", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); // i8259
+ map(0x00, 0x03).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); // i8259
// AM_RANGE(0x04, 0x07) i8237?
map(0x08, 0x0b).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff); // upd765
map(0x10, 0x17).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); // i8255 #1
@@ -636,11 +636,11 @@ static void pc100_floppies(device_slot_interface &device)
MACHINE_CONFIG_START(pc100_state::pc100)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I8086, MASTER_CLOCK)
- MCFG_DEVICE_PROGRAM_MAP(pc100_map)
- MCFG_DEVICE_IO_MAP(pc100_io)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pc100_state, pc100_vblank_irq)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
+ I8086(config, m_maincpu, MASTER_CLOCK);
+ m_maincpu->set_addrmap(AS_PROGRAM, &pc100_state::pc100_map);
+ m_maincpu->set_addrmap(AS_IO, &pc100_state::pc100_io);
+ m_maincpu->set_vblank_int("screen", FUNC(pc100_state::pc100_vblank_irq));
+ m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
MCFG_TIMER_DRIVER_ADD_PERIODIC("600hz", pc100_state, pc100_600hz_irq, attotime::from_hz(MASTER_CLOCK/600))
MCFG_TIMER_DRIVER_ADD_PERIODIC("100hz", pc100_state, pc100_100hz_irq, attotime::from_hz(MASTER_CLOCK/100))
@@ -657,15 +657,15 @@ MACHINE_CONFIG_START(pc100_state::pc100)
ppi2.out_pb_callback().set(FUNC(pc100_state::upper_mask_w));
ppi2.out_pc_callback().set(FUNC(pc100_state::crtc_bank_w));
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(0)) // ???
+ PIC8259(config, m_pic, 0);
+ m_pic->out_int_callback().set_inputline(m_maincpu, 0);
+ m_pic->in_sp_callback().set_constant(0); // ???
i8251_device &i8251(I8251(config, "uart8251", 0));
//i8251.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
//i8251.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr));
//i8251.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts));
- i8251.rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir1_w));
+ i8251.rxrdy_handler().set(m_pic, FUNC(pic8259_device::ir1_w));
UPD765A(config, m_fdc, true, true);
m_fdc->intrq_wr_callback().set(FUNC(pc100_state::irqnmi_w));
diff --git a/src/mame/drivers/pcd.cpp b/src/mame/drivers/pcd.cpp
index 9bc1ef95030..3c9104d2504 100644
--- a/src/mame/drivers/pcd.cpp
+++ b/src/mame/drivers/pcd.cpp
@@ -508,13 +508,13 @@ MACHINE_CONFIG_START(pcd_state::pcd)
MCFG_TIMER_DRIVER_ADD_PERIODIC("timer0_tick", pcd_state, timer0_tick, attotime::from_hz(16_MHz_XTAL / 24)) // adjusted to pass post
- MCFG_DEVICE_ADD(m_pic1, PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE("maincpu", i80186_cpu_device, int0_w))
+ PIC8259(config, m_pic1, 0);
+ m_pic1->out_int_callback().set(m_maincpu, FUNC(i80186_cpu_device::int0_w));
- MCFG_DEVICE_ADD(m_pic2, PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE("maincpu", i80186_cpu_device, int1_w))
+ PIC8259(config, m_pic2, 0);
+ m_pic2->out_int_callback().set(m_maincpu, FUNC(i80186_cpu_device::int1_w));
- MCFG_DEVICE_ADD("video", PCD_VIDEO, 0)
+ PCD_VIDEO(config, "video", 0);
RAM(config, RAM_TAG).set_default_size("1M");
diff --git a/src/mame/drivers/peoplepc.cpp b/src/mame/drivers/peoplepc.cpp
index f3734d2523f..d869d2add7d 100644
--- a/src/mame/drivers/peoplepc.cpp
+++ b/src/mame/drivers/peoplepc.cpp
@@ -244,10 +244,10 @@ DEVICE_INPUT_DEFAULTS_END
MACHINE_CONFIG_START(peoplepc_state::olypeopl)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I8086, XTAL(14'745'600)/3)
- MCFG_DEVICE_PROGRAM_MAP(peoplepc_map)
- MCFG_DEVICE_IO_MAP(peoplepc_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_0", pic8259_device, inta_cb)
+ I8086(config, m_maincpu, XTAL(14'745'600)/3);
+ m_maincpu->set_addrmap(AS_PROGRAM, &peoplepc_state::peoplepc_map);
+ m_maincpu->set_addrmap(AS_IO, &peoplepc_state::peoplepc_io);
+ m_maincpu->set_irq_acknowledge_callback("pic8259_0", FUNC(pic8259_device::inta_cb));
pit8253_device &pit8253(PIT8253(config, "pit8253", 0));
pit8253.set_clk<0>(XTAL(14'745'600)/6);
@@ -257,16 +257,16 @@ MACHINE_CONFIG_START(peoplepc_state::olypeopl)
pit8253.set_clk<2>(XTAL(14'745'600)/6);
pit8253.out_handler<2>().set("pic8259_0", FUNC(pic8259_device::ir0_w));
- MCFG_DEVICE_ADD("pic8259_0", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
- MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, peoplepc_state, get_slave_ack))
+ pic8259_device &pic8259_0(PIC8259(config, "pic8259_0", 0));
+ pic8259_0.out_int_callback().set_inputline(m_maincpu, 0);
+ pic8259_0.in_sp_callback().set_constant(1);
+ pic8259_0.read_slave_ack_callback().set(FUNC(peoplepc_state::get_slave_ack));
- MCFG_DEVICE_ADD("pic8259_1", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic8259_0", pic8259_device, ir7_w))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(0))
+ PIC8259(config, m_pic_1, 0);
+ m_pic_1->out_int_callback().set("pic8259_0", FUNC(pic8259_device::ir7_w));
+ m_pic_1->in_sp_callback().set_constant(0);
- MCFG_DEVICE_ADD("ppi8255", I8255, 0)
+ I8255(config, "ppi8255");
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
MCFG_SCREEN_RAW_PARAMS(XTAL(22'000'000),640,0,640,475,0,475)
diff --git a/src/mame/drivers/pg685.cpp b/src/mame/drivers/pg685.cpp
index e2e847b740f..ce2c1294daa 100644
--- a/src/mame/drivers/pg685.cpp
+++ b/src/mame/drivers/pg685.cpp
@@ -427,9 +427,9 @@ MACHINE_CONFIG_START(pg685_state::pg675)
MCFG_DEVICE_PROGRAM_MAP(pg675_mem)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mainpic", pic8259_device, inta_cb)
- MCFG_DEVICE_ADD("mainpic", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
+ pic8259_device &mainpic(PIC8259(config, "mainpic", 0));
+ mainpic.out_int_callback().set_inputline(m_maincpu, 0);
+ mainpic.in_sp_callback().set_constant(1);
// i/o cpu
@@ -476,9 +476,9 @@ MACHINE_CONFIG_START(pg685_state::pg685)
MCFG_DEVICE_PROGRAM_MAP(pg685_mem)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mainpic", pic8259_device, inta_cb)
- MCFG_DEVICE_ADD("mainpic", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
+ pic8259_device &mainpic(PIC8259(config, "mainpic", 0));
+ mainpic.out_int_callback().set_inputline(m_maincpu, 0);
+ mainpic.in_sp_callback().set_constant(1);
// i/o cpu
@@ -527,9 +527,9 @@ MACHINE_CONFIG_START(pg685_state::pg685oua12)
MCFG_DEVICE_PROGRAM_MAP(pg685oua12_mem)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mainpic", pic8259_device, inta_cb)
- MCFG_DEVICE_ADD("mainpic", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
+ pic8259_device &mainpic(PIC8259(config, "mainpic", 0));
+ mainpic.out_int_callback().set_inputline(m_maincpu, 0);
+ mainpic.in_sp_callback().set_constant(1);
// i/o cpu
diff --git a/src/mame/drivers/pk8020.cpp b/src/mame/drivers/pk8020.cpp
index 06de7275dcf..4e36c2ba67b 100644
--- a/src/mame/drivers/pk8020.cpp
+++ b/src/mame/drivers/pk8020.cpp
@@ -230,13 +230,13 @@ MACHINE_CONFIG_START(pk8020_state::pk8020)
m_pit8253->set_clk<2>((20_MHz_XTAL / 8) / 164);
m_pit8253->out_handler<2>().set(m_pic8259, FUNC(pic8259_device::ir5_w));
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_pic8259, 0);
+ m_pic8259->out_int_callback().set_inputline(m_maincpu, 0);
I8251(config, m_rs232, 0);
m_rs232->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
- m_rs232->rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir1_w));
- m_rs232->txrdy_handler().set("pic8259", FUNC(pic8259_device::ir2_w));
+ m_rs232->rxrdy_handler().set(m_pic8259, FUNC(pic8259_device::ir1_w));
+ m_rs232->txrdy_handler().set(m_pic8259, FUNC(pic8259_device::ir2_w));
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
rs232.rxd_handler().set(m_rs232, FUNC(i8251_device::write_rxd));
diff --git a/src/mame/drivers/poisk1.cpp b/src/mame/drivers/poisk1.cpp
index 82c135a88fc..41d0b79c702 100644
--- a/src/mame/drivers/poisk1.cpp
+++ b/src/mame/drivers/poisk1.cpp
@@ -647,10 +647,10 @@ INPUT_PORTS_END
MACHINE_CONFIG_START(p1_state::poisk1)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I8088, 5000000)
- MCFG_DEVICE_PROGRAM_MAP(poisk1_map)
- MCFG_DEVICE_IO_MAP(poisk1_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
+ I8088(config, m_maincpu, 5000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &p1_state::poisk1_map);
+ m_maincpu->set_addrmap(AS_IO, &p1_state::poisk1_io);
+ m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
MCFG_MACHINE_START_OVERRIDE( p1_state, poisk1 )
MCFG_MACHINE_RESET_OVERRIDE( p1_state, poisk1 )
@@ -663,8 +663,8 @@ MACHINE_CONFIG_START(p1_state::poisk1)
m_pit8253->set_clk<2>(XTAL(15'000'000)/12); /* pio port c pin 4, and speaker polling enough */
m_pit8253->out_handler<2>().set(FUNC(p1_state::p1_pit8253_out2_changed));
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_pic8259, 0);
+ m_pic8259->out_int_callback().set_inputline(m_maincpu, 0);
I8255A(config, m_ppi8255n1);
m_ppi8255n1->in_pa_callback().set(FUNC(p1_state::p1_ppi_porta_r)); /*60H*/
@@ -680,11 +680,11 @@ MACHINE_CONFIG_START(p1_state::poisk1)
MCFG_DEVICE_ADD("isa", ISA8, 0)
MCFG_ISA8_CPU("maincpu")
- MCFG_ISA_OUT_IRQ2_CB(WRITELINE("pic8259", pic8259_device, ir2_w))
- MCFG_ISA_OUT_IRQ3_CB(WRITELINE("pic8259", pic8259_device, ir3_w))
- MCFG_ISA_OUT_IRQ4_CB(WRITELINE("pic8259", pic8259_device, ir4_w))
- MCFG_ISA_OUT_IRQ5_CB(WRITELINE("pic8259", pic8259_device, ir5_w))
- MCFG_ISA_OUT_IRQ7_CB(WRITELINE("pic8259", pic8259_device, ir7_w))
+ MCFG_ISA_OUT_IRQ2_CB(WRITELINE(m_pic8259, pic8259_device, ir2_w))
+ MCFG_ISA_OUT_IRQ3_CB(WRITELINE(m_pic8259, pic8259_device, ir3_w))
+ MCFG_ISA_OUT_IRQ4_CB(WRITELINE(m_pic8259, pic8259_device, ir4_w))
+ MCFG_ISA_OUT_IRQ5_CB(WRITELINE(m_pic8259, pic8259_device, ir5_w))
+ MCFG_ISA_OUT_IRQ7_CB(WRITELINE(m_pic8259, pic8259_device, ir7_w))
MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "isa", p1_isa8_cards, "fdc", false) // FIXME: determine ISA bus clock
MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "isa", p1_isa8_cards, nullptr, false)
MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "isa", p1_isa8_cards, nullptr, false)
diff --git a/src/mame/drivers/rc759.cpp b/src/mame/drivers/rc759.cpp
index 33a1c85d5a1..d188eb3fd24 100644
--- a/src/mame/drivers/rc759.cpp
+++ b/src/mame/drivers/rc759.cpp
@@ -540,8 +540,8 @@ MACHINE_CONFIG_START(rc759_state::rc759)
MCFG_80186_TMROUT1_HANDLER(WRITELINE(*this, rc759_state, i186_timer1_w))
// interrupt controller
- MCFG_DEVICE_ADD("pic", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE("maincpu", i80186_cpu_device, int0_w))
+ PIC8259(config, m_pic, 0);
+ m_pic->out_int_callback().set(m_maincpu, FUNC(i80186_cpu_device::int0_w));
// nvram
NVRAM(config, "nvram").set_custom_handler(FUNC(rc759_state::nvram_init));
@@ -554,7 +554,7 @@ MACHINE_CONFIG_START(rc759_state::rc759)
// rtc
MCFG_DEVICE_ADD("rtc", MM58167, 32.768_kHz_XTAL)
- MCFG_MM58167_IRQ_CALLBACK(WRITELINE("pic", pic8259_device, ir3_w))
+ MCFG_MM58167_IRQ_CALLBACK(WRITELINE(m_pic, pic8259_device, ir3_w))
// video
MCFG_SCREEN_ADD("screen", RASTER)
@@ -564,7 +564,7 @@ MACHINE_CONFIG_START(rc759_state::rc759)
MCFG_I82730_ADD("txt", "maincpu", 1250000)
MCFG_VIDEO_SET_SCREEN("screen")
MCFG_I82730_UPDATE_ROW_CB(rc759_state, txt_update_row)
- MCFG_I82730_SINT_HANDLER(WRITELINE("pic", pic8259_device, ir4_w))
+ MCFG_I82730_SINT_HANDLER(WRITELINE(m_pic, pic8259_device, ir4_w))
// keyboard
MCFG_DEVICE_ADD("keyb", GENERIC_KEYBOARD, 0)
diff --git a/src/mame/drivers/sage2.cpp b/src/mame/drivers/sage2.cpp
index 120d9012f14..5e425f0f941 100644
--- a/src/mame/drivers/sage2.cpp
+++ b/src/mame/drivers/sage2.cpp
@@ -414,8 +414,8 @@ MACHINE_CONFIG_START(sage2_state::sage2)
MCFG_DEVICE_PROGRAM_MAP(sage2_mem)
// devices
- MCFG_DEVICE_ADD(I8259_TAG, PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE(M68000_TAG, M68K_IRQ_1))
+ PIC8259(config, m_pic, 0);
+ m_pic->out_int_callback().set_inputline(m_maincpu, M68K_IRQ_1);
i8255_device &ppi0(I8255A(config, I8255A_0_TAG));
ppi0.in_pa_callback().set_ioport("J7");
@@ -448,7 +448,7 @@ MACHINE_CONFIG_START(sage2_state::sage2)
m_usart0->dtr_handler().set(RS232_A_TAG, FUNC(rs232_port_device::write_dtr));
m_usart0->rts_handler().set(RS232_A_TAG, FUNC(rs232_port_device::write_rts));
m_usart0->rxrdy_handler().set_inputline(M68000_TAG, M68K_IRQ_5);
- m_usart0->txrdy_handler().set(I8259_TAG, FUNC(pic8259_device::ir2_w));
+ m_usart0->txrdy_handler().set(m_pic, FUNC(pic8259_device::ir2_w));
rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, "terminal"));
rs232a.rxd_handler().set(m_usart0, FUNC(i8251_device::write_rxd));
@@ -460,8 +460,8 @@ MACHINE_CONFIG_START(sage2_state::sage2)
m_usart1->txd_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd));
m_usart1->dtr_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_dtr));
m_usart1->rts_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_rts));
- m_usart1->rxrdy_handler().set(I8259_TAG, FUNC(pic8259_device::ir1_w));
- m_usart1->txrdy_handler().set(I8259_TAG, FUNC(pic8259_device::ir3_w));
+ m_usart1->rxrdy_handler().set(m_pic, FUNC(pic8259_device::ir1_w));
+ m_usart1->txrdy_handler().set(m_pic, FUNC(pic8259_device::ir3_w));
rs232_port_device &rs232b(RS232_PORT(config, RS232_B_TAG, default_rs232_devices, nullptr));
rs232b.rxd_handler().set(m_usart1, FUNC(i8251_device::write_rxd));
diff --git a/src/mame/drivers/sm7238.cpp b/src/mame/drivers/sm7238.cpp
index 69509997570..f7add03ba11 100644
--- a/src/mame/drivers/sm7238.cpp
+++ b/src/mame/drivers/sm7238.cpp
@@ -373,15 +373,15 @@ MACHINE_CONFIG_START(sm7238_state::sm7238)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(20.625_MHz_XTAL, KSM_TOTAL_HORZ, 0, KSM_DISP_HORZ, KSM_TOTAL_VERT, 0, KSM_DISP_VERT);
MCFG_SCREEN_UPDATE_DRIVER(sm7238_state, screen_update)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("pic8259", pic8259_device, ir2_w))
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(m_pic8259, pic8259_device, ir2_w))
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 3)
MCFG_PALETTE_INIT_OWNER(sm7238_state, sm7238)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sm7238)
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_pic8259, 0);
+ m_pic8259->out_int_callback().set_inputline(m_maincpu, 0);
PIT8253(config, m_t_hblank, 0);
m_t_hblank->set_clk<1>(16.384_MHz_XTAL/9); // XXX workaround -- keyboard is slower and doesn't sync otherwise
diff --git a/src/mame/drivers/tandy2k.cpp b/src/mame/drivers/tandy2k.cpp
index 926ccc43370..8ff8ebd00f3 100644
--- a/src/mame/drivers/tandy2k.cpp
+++ b/src/mame/drivers/tandy2k.cpp
@@ -845,11 +845,11 @@ MACHINE_CONFIG_START(tandy2k_state::tandy2k)
//m_pit->set_clk<2>(16_MHz_XTAL / 8);
//m_pit->out_handler<2>().set(FUNC(tandy2k_state::rfrqpulse_w));
- MCFG_DEVICE_ADD(I8259A_0_TAG, PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE(I80186_TAG, i80186_cpu_device, int0_w))
+ PIC8259(config, m_pic0, 0);
+ m_pic0->out_int_callback().set(m_maincpu, FUNC(i80186_cpu_device::int0_w));
- MCFG_DEVICE_ADD(I8259A_1_TAG, PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE(I80186_TAG, i80186_cpu_device, int1_w))
+ PIC8259(config, m_pic1, 0);
+ m_pic1->out_int_callback().set(m_maincpu, FUNC(i80186_cpu_device::int1_w));
I8272A(config, m_fdc, true);
m_fdc->set_select_lines_connected(true);
diff --git a/src/mame/drivers/tsispch.cpp b/src/mame/drivers/tsispch.cpp
index a6fe540acc3..468b4971d8f 100644
--- a/src/mame/drivers/tsispch.cpp
+++ b/src/mame/drivers/tsispch.cpp
@@ -372,10 +372,10 @@ INPUT_PORTS_END
MACHINE_CONFIG_START(tsispch_state::prose2k)
/* basic machine hardware */
/* There are two crystals on the board: a 24MHz xtal at Y2 and a 16MHz xtal at Y1 */
- MCFG_DEVICE_ADD("maincpu", I8086, 8000000) /* VERIFIED clock, unknown divider */
- MCFG_DEVICE_PROGRAM_MAP(i8086_mem)
- MCFG_DEVICE_IO_MAP(i8086_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
+ I8086(config, m_maincpu, 8000000); /* VERIFIED clock, unknown divider */
+ m_maincpu->set_addrmap(AS_PROGRAM, &tsispch_state::i8086_mem);
+ m_maincpu->set_addrmap(AS_IO, &tsispch_state::i8086_io);
+ m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
/* TODO: the UPD7720 has a 10KHz clock to its INT pin */
/* TODO: the UPD7720 has a 2MHz clock to its SCK pin */
@@ -387,8 +387,8 @@ MACHINE_CONFIG_START(tsispch_state::prose2k)
MCFG_NECDSP_OUT_P1_CB(WRITELINE(*this, tsispch_state, dsp_to_8086_p1_w))
/* PIC 8259 */
- MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
+ PIC8259(config, m_pic, 0);
+ m_pic->out_int_callback().set_inputline(m_maincpu, 0);
/* uarts */
i8251_device &u15(I8251(config, "i8251a_u15", 0));
diff --git a/src/mame/drivers/z100.cpp b/src/mame/drivers/z100.cpp
index f502eb087b6..c3c0a558449 100644
--- a/src/mame/drivers/z100.cpp
+++ b/src/mame/drivers/z100.cpp
@@ -438,7 +438,7 @@ INPUT_CHANGED_MEMBER(z100_state::key_stroke)
{
/* TODO: table */
m_keyb_press = (uint8_t)(uintptr_t)(param) & 0xff;
- //pic8259_ir6_w(m_picm, 1);
+ //m_picm->ir6_w(1);
m_keyb_status = 1;
}
@@ -676,10 +676,10 @@ static void z100_floppies(device_slot_interface &device)
MACHINE_CONFIG_START(z100_state::z100)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I8088, 14.318181_MHz_XTAL / 3)
- MCFG_DEVICE_PROGRAM_MAP(z100_mem)
- MCFG_DEVICE_IO_MAP(z100_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_master", pic8259_device, inta_cb)
+ I8088(config, m_maincpu, 14.318181_MHz_XTAL / 3);
+ m_maincpu->set_addrmap(AS_PROGRAM, &z100_state::z100_mem);
+ m_maincpu->set_addrmap(AS_IO, &z100_state::z100_io);
+ m_maincpu->set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -697,14 +697,14 @@ MACHINE_CONFIG_START(z100_state::z100)
MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(8)
- MCFG_DEVICE_ADD("pic8259_master", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
- MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, z100_state, get_slave_ack))
+ PIC8259(config, m_picm, 0);
+ m_picm->out_int_callback().set_inputline(m_maincpu, 0);
+ m_picm->in_sp_callback().set_constant(1);
+ m_picm->read_slave_ack_callback().set(FUNC(z100_state::get_slave_ack));
- MCFG_DEVICE_ADD("pic8259_slave", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic8259_master", pic8259_device, ir3_w))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(0))
+ PIC8259(config, m_pics, 0);
+ m_pics->out_int_callback().set(m_picm, FUNC(pic8259_device::ir3_w));
+ m_pics->in_sp_callback().set_constant(0);
PIA6821(config, m_pia0, 0);
m_pia0->writepa_handler().set(FUNC(z100_state::video_pia_A_w));
diff --git a/src/mame/machine/xbox.cpp b/src/mame/machine/xbox.cpp
index 98dd0b323c0..6a8a55807da 100644
--- a/src/mame/machine/xbox.cpp
+++ b/src/mame/machine/xbox.cpp
@@ -941,14 +941,14 @@ MACHINE_CONFIG_START(xbox_base_state::xbox_base)
MCFG_MCPX_NV2A_GPU_CPU(m_maincpu)
MCFG_MCPX_NV2A_GPU_INTERRUPT_HANDLER(WRITELINE(*this, xbox_base_state, xbox_nv2a_interrupt_changed))
- MCFG_DEVICE_ADD("pic8259_1", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, xbox_base_state, xbox_pic8259_1_set_int_line))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(1))
- MCFG_PIC8259_CASCADE_ACK_CB(READ8(*this, xbox_base_state, get_slave_ack))
-
- MCFG_DEVICE_ADD("pic8259_2", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(WRITELINE("pic8259_1", pic8259_device, ir2_w))
- MCFG_PIC8259_IN_SP_CB(CONSTANT(0))
+ pic8259_device &pic8259_1(PIC8259(config, "pic8259_1", 0));
+ pic8259_1.out_int_callback().set(FUNC(xbox_base_state::xbox_pic8259_1_set_int_line));
+ pic8259_1.in_sp_callback().set_constant(1);
+ pic8259_1.read_slave_ack_callback().set(FUNC(xbox_base_state::get_slave_ack));
+
+ pic8259_device &pic8259_2(PIC8259(config, "pic8259_2", 0));
+ pic8259_2.out_int_callback().set("pic8259_1", FUNC(pic8259_device::ir2_w));
+ pic8259_2.in_sp_callback().set_constant(0);
pit8254_device &pit8254(PIT8254(config, "pit8254", 0));
pit8254.set_clk<0>(1125000); /* heartbeat IRQ */
diff --git a/src/mame/video/fmtowns.cpp b/src/mame/video/fmtowns.cpp
index 65a3e33f664..f73fa87d23a 100644
--- a/src/mame/video/fmtowns.cpp
+++ b/src/mame/video/fmtowns.cpp
@@ -511,12 +511,10 @@ READ8_MEMBER(towns_state::towns_video_5c8_r)
WRITE8_MEMBER(towns_state::towns_video_5c8_w)
{
- pic8259_device* dev = m_pic_slave;
-
switch(offset)
{
case 0x02: // 0x5ca - VSync clear?
- dev->ir3_w(0);
+ m_pic_slave->ir3_w(0);
if(IRQ_LOG) logerror("PIC: IRQ11 (VSync) set low\n");
//towns_vblank_flag = 0;
break;
@@ -1488,19 +1486,17 @@ TIMER_CALLBACK_MEMBER(towns_state::towns_sprite_done)
TIMER_CALLBACK_MEMBER(towns_state::towns_vblank_end)
{
// here we'll clear the vsync signal, I presume it goes low on it's own eventually
- device_t* dev = (device_t*)ptr;
- downcast<pic8259_device *>(dev)->ir3_w(0); // IRQ11 = VSync
+ m_pic_slave->ir3_w(0); // IRQ11 = VSync
if(IRQ_LOG) logerror("PIC: IRQ11 (VSync) set low\n");
m_video.towns_vblank_flag = 0;
}
INTERRUPT_GEN_MEMBER(towns_state::towns_vsync_irq)
{
- pic8259_device* dev = m_pic_slave;
- dev->ir3_w(1); // IRQ11 = VSync
+ m_pic_slave->ir3_w(1); // IRQ11 = VSync
if(IRQ_LOG) logerror("PIC: IRQ11 (VSync) set high\n");
m_video.towns_vblank_flag = 1;
- machine().scheduler().timer_set(m_screen->time_until_vblank_end(), timer_expired_delegate(FUNC(towns_state::towns_vblank_end),this), 0, (void*)dev);
+ machine().scheduler().timer_set(m_screen->time_until_vblank_end(), timer_expired_delegate(FUNC(towns_state::towns_vblank_end),this), 0, (void*)m_pic_slave);
if(m_video.towns_tvram_enable)
draw_text_layer();
if(m_video.towns_sprite_reg[1] & 0x80)
diff --git a/src/mame/video/m107.cpp b/src/mame/video/m107.cpp
index 2e99e03ba38..3be0b00a65b 100644
--- a/src/mame/video/m107.cpp
+++ b/src/mame/video/m107.cpp
@@ -122,9 +122,7 @@ WRITE16_MEMBER(m107_state::control_w)
void m107_state::video_start()
{
- int laynum;
-
- for (laynum = 0; laynum < 4; laynum++)
+ for (int laynum = 0; laynum < 4; laynum++)
{
pf_layer_info *layer = &m_pf_layer[laynum];