From c70e5f7f7edb48e7a3171c52729eb2a0ecf49943 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 31 Oct 2018 22:19:17 +0100 Subject: machine/pic8259.h: removed MCFG macros (nw) --- src/devices/bus/dmv/k230.cpp | 55 +++++++++++++++-------------- src/devices/bus/dmv/k230.h | 9 +++-- src/devices/bus/s100/wunderbus.cpp | 17 ++++----- src/devices/machine/cs4031.h | 9 ----- src/devices/machine/pic8259.cpp | 5 ++- src/devices/machine/pic8259.h | 20 ----------- src/mame/drivers/a7150.cpp | 6 ++-- src/mame/drivers/alphatpx.cpp | 21 +++++------ src/mame/drivers/altos8600.cpp | 72 ++++++++++++++++++-------------------- src/mame/drivers/amusco.cpp | 20 +++++------ src/mame/drivers/apricot.cpp | 6 ++-- src/mame/drivers/apricotp.cpp | 2 +- src/mame/drivers/b2m.cpp | 4 +-- src/mame/drivers/cbm2.cpp | 14 ++++---- src/mame/drivers/dvk_ksm.cpp | 8 ++--- src/mame/drivers/fanucspmg.cpp | 16 ++++----- src/mame/drivers/fastinvaders.cpp | 8 ++--- src/mame/drivers/fmtowns.cpp | 16 ++++----- src/mame/drivers/ibm6580.cpp | 14 ++++---- src/mame/drivers/ibmpcjr.cpp | 12 +++---- src/mame/drivers/if800.cpp | 2 +- src/mame/drivers/iq151.cpp | 64 ++++++++++++++++----------------- src/mame/drivers/irisha.cpp | 6 ++-- src/mame/drivers/isbc.cpp | 2 +- src/mame/drivers/m107.cpp | 6 ++-- src/mame/drivers/m20.cpp | 4 +-- src/mame/drivers/m72.cpp | 20 +++++------ src/mame/drivers/m92.cpp | 6 ++-- src/mame/drivers/mbc55x.cpp | 14 ++++---- src/mame/drivers/mc1502.cpp | 28 +++++++-------- src/mame/drivers/miniframe.cpp | 17 ++++----- src/mame/drivers/mrflea.cpp | 6 ++-- src/mame/drivers/multi16.cpp | 12 +++---- src/mame/drivers/myb3k.cpp | 20 +++++------ src/mame/drivers/notetaker.cpp | 33 +++++++++-------- src/mame/drivers/olyboss.cpp | 4 +-- src/mame/drivers/pc100.cpp | 20 +++++------ src/mame/drivers/pcd.cpp | 10 +++--- src/mame/drivers/peoplepc.cpp | 24 ++++++------- src/mame/drivers/pg685.cpp | 18 +++++----- src/mame/drivers/pk8020.cpp | 8 ++--- src/mame/drivers/poisk1.cpp | 22 ++++++------ src/mame/drivers/rc759.cpp | 8 ++--- src/mame/drivers/sage2.cpp | 10 +++--- src/mame/drivers/sm7238.cpp | 6 ++-- src/mame/drivers/tandy2k.cpp | 8 ++--- src/mame/drivers/tsispch.cpp | 12 +++---- src/mame/drivers/z100.cpp | 24 ++++++------- src/mame/machine/xbox.cpp | 16 ++++----- src/mame/video/fmtowns.cpp | 12 +++---- src/mame/video/m107.cpp | 4 +-- 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 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 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 devcb_base &set_ior_callback(Obj &&ior) { return m_read_ior.set_callback(std::forward(ior)); } - template devcb_base &set_iow_callback(Obj &&iow) { return m_write_iow.set_callback(std::forward(iow)); } - template devcb_base &set_tc_callback(Obj &&tc) { return m_write_tc.set_callback(std::forward(tc)); } - template devcb_base &set_hold_callback(Obj &&hold) { return m_write_hold.set_callback(std::forward(hold)); } - template devcb_base &set_cpureset_callback(Obj &&cpureset) { return m_write_cpureset.set_callback(std::forward(cpureset)); } - template devcb_base &set_nmi_callback(Obj &&nmi) { return m_write_nmi.set_callback(std::forward(nmi)); } - template devcb_base &set_intr_callback(Obj &&intr) { return m_write_intr.set_callback(std::forward(intr)); } - template devcb_base &set_a20m_callback(Obj &&a20m) { return m_write_a20m.set_callback(std::forward(a20m)); } - template devcb_base &set_spkr_callback(Obj &&spkr) { return m_write_spkr.set_callback(std::forward(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(*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(*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(*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 devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_func.set_callback(std::forward(cb)); } - template devcb_base &set_in_sp_callback(Object &&cb) { return m_in_sp_func.set_callback(std::forward(cb)); } - template devcb_base &set_read_slave_ack_callback(Object &&cb) { return m_read_slave_ack_func.set_callback(std::forward(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 m_maincpu; required_device m_dmac; - required_device m_pic1; - required_device m_pic2; - required_device m_pic3; + required_device_array m_pic; required_device m_uart8274; required_device m_fdc; required_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, ¬etaker_state::iop_mem); + m_iop_cpu->set_addrmap(AS_IO, ¬etaker_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, ¬etaker_state::ep_mem); + m_ep_cpu->set_addrmap(AS_IO, ¬etaker_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(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]; -- cgit v1.2.3