diff --git a/src/emu/devcb2.h b/src/emu/devcb2.h index db5d33b0eff..b0e531db80c 100644 --- a/src/emu/devcb2.h +++ b/src/emu/devcb2.h @@ -58,6 +58,8 @@ #define DEVCB2_CONSTANT(_value) devcb2_base::constant_desc(_value) #define DEVCB2_LOGGER(_string, _value) devcb2_base::logger_desc(_string, _value) #define DEVCB2_INPUTLINE(_tag, _line) devcb2_base::inputline_desc(_tag, _line) +#define DEVCB2_VCC DEVCB2_CONSTANT(1) +#define DEVCB2_GND DEVCB2_CONSTANT(0) // wrappers for read callbacks into the owner device #define DEVCB2_READLINE(_class, _func) read_line_delegate(&_class::_func, #_class "::" #_func, DEVICE_SELF, (_class *)0) diff --git a/src/emu/machine/pic8259.c b/src/emu/machine/pic8259.c index 90d908f327b..b9a3977361e 100644 --- a/src/emu/machine/pic8259.c +++ b/src/emu/machine/pic8259.c @@ -377,14 +377,10 @@ WRITE8_MEMBER( pic8259_device::write ) void pic8259_device::device_start() { - const struct pic8259_interface *intf = (const struct pic8259_interface *)this->static_config(); - - assert(intf != NULL); - /* resolve callbacks */ - m_out_int_func.resolve(intf->out_int_func, *this); - m_sp_en_func.resolve(intf->sp_en_func, *this); - m_read_slave_ack_func.resolve(intf->read_slave_ack_func, *this); + m_out_int_func.resolve(); + m_sp_en_func.resolve(); + m_read_slave_ack_func.resolve(); } @@ -422,16 +418,9 @@ const device_type PIC8259 = &device_creator; pic8259_device::pic8259_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, PIC8259, "Intel PIC8259", tag, owner, clock) -{ -} - -//------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void pic8259_device::device_config_complete() + , m_out_int_func(*this) + , m_sp_en_func(*this) + , m_read_slave_ack_func(*this) { } diff --git a/src/emu/machine/pic8259.h b/src/emu/machine/pic8259.h index 7821b720d68..1f7533de78b 100644 --- a/src/emu/machine/pic8259.h +++ b/src/emu/machine/pic8259.h @@ -25,14 +25,29 @@ #ifndef __PIC8259_H__ #define __PIC8259_H__ -#include "devlegcy.h" #include "devcb.h" + +/*************************************************************************** + DEVICE CONFIGURATION MACROS +***************************************************************************/ + +#define MCFG_PIC8259_ADD(_tag, _out_int, _sp_en, _read_slave_ack) \ + MCFG_DEVICE_ADD(_tag, PIC8259, 0) \ + devcb = &pic8259_device::static_set_out_int_callback( *device, DEVCB2_##_out_int ); \ + devcb = &pic8259_device::static_set_sp_en_callback( *device, DEVCB2_##_sp_en ); \ + devcb = &pic8259_device::static_set_read_slave_ack_callback( *device, DEVCB2_##_read_slave_ack ); + + class pic8259_device : public device_t { public: pic8259_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + template static devcb2_base &static_set_out_int_callback(device_t &device, _Object object) { return downcast(device).m_out_int_func.set_callback(object); } + template static devcb2_base &static_set_sp_en_callback(device_t &device, _Object object) { return downcast(device).m_sp_en_func.set_callback(object); } + template static devcb2_base &static_set_read_slave_ack_callback(device_t &device, _Object object) { return downcast(device).m_read_slave_ack_func.set_callback(object); } + DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); UINT32 acknowledge(); @@ -50,7 +65,6 @@ public: protected: // device-level overrides - virtual void device_config_complete(); virtual void device_start(); virtual void device_reset(); virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); @@ -71,9 +85,9 @@ private: STATE_READY }; - devcb_resolved_write_line m_out_int_func; - devcb_resolved_read_line m_sp_en_func; - devcb_resolved_read8 m_read_slave_ack_func; + devcb2_write_line m_out_int_func; + devcb2_read_line m_sp_en_func; + devcb2_read8 m_read_slave_ack_func; pic8259_state_t m_state; @@ -109,29 +123,4 @@ private: extern const device_type PIC8259; - -/*************************************************************************** - TYPE DEFINITIONS -***************************************************************************/ - -struct pic8259_interface -{ - /* Called when int line changes */ - devcb_write_line out_int_func; - /* 1 - when master, 0 - when slave */ - devcb_read_line sp_en_func; - /* Called when on master slave irq is trigered*/ - devcb_read8 read_slave_ack_func; -}; - - -/*************************************************************************** - DEVICE CONFIGURATION MACROS -***************************************************************************/ - -#define MCFG_PIC8259_ADD(_tag, _intrf) \ - MCFG_DEVICE_ADD(_tag, PIC8259, 0) \ - MCFG_DEVICE_CONFIG(_intrf) - - #endif /* __PIC8259_H__ */ diff --git a/src/mame/drivers/calchase.c b/src/mame/drivers/calchase.c index 4cbc05f7b1b..8319216a119 100644 --- a/src/mame/drivers/calchase.c +++ b/src/mame/drivers/calchase.c @@ -842,22 +842,6 @@ READ8_MEMBER(calchase_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface calchase_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(calchase_state,calchase_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(calchase_state,get_slave_ack) -}; - -static const struct pic8259_interface calchase_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - - - /************************************************************* * @@ -916,8 +900,8 @@ static MACHINE_CONFIG_START( calchase, calchase_state ) MCFG_PIT8254_ADD( "pit8254", calchase_pit8254_config ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_1", calchase_pic8259_1_config ) - MCFG_PIC8259_ADD( "pic8259_2", calchase_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(calchase_state,calchase_pic8259_1_set_int_line), VCC, READ8(calchase_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_IDE_CONTROLLER_ADD("ide", ide_devices, "hdd", NULL, true) MCFG_IDE_CONTROLLER_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir6_w)) diff --git a/src/mame/drivers/chihiro.c b/src/mame/drivers/chihiro.c index b3af3ff2c23..b006d9cc6ac 100644 --- a/src/mame/drivers/chihiro.c +++ b/src/mame/drivers/chihiro.c @@ -2789,20 +2789,6 @@ READ8_MEMBER(chihiro_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface chihiro_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(chihiro_state, chihiro_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(chihiro_state,get_slave_ack) -}; - -static const struct pic8259_interface chihiro_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - IRQ_CALLBACK_MEMBER(chihiro_state::irq_callback) { int r = 0; @@ -3062,8 +3048,8 @@ static MACHINE_CONFIG_START( chihiro_base, chihiro_state ) MCFG_PCI_BUS_LEGACY_ADD("agpbus", 1) MCFG_PCI_BUS_LEGACY_SIBLING("pcibus") MCFG_PCI_BUS_LEGACY_DEVICE(0, "NV2A GeForce 3MX Integrated GPU/Northbridge", geforce_pci_r, geforce_pci_w) - MCFG_PIC8259_ADD( "pic8259_1", chihiro_pic8259_1_config ) - MCFG_PIC8259_ADD( "pic8259_2", chihiro_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(chihiro_state, chihiro_pic8259_1_set_int_line), VCC, READ8(chihiro_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_PIT8254_ADD( "pit8254", chihiro_pit8254_config ) MCFG_IDE_CONTROLLER_ADD( "ide", ide_baseboard, NULL, "bb", true) MCFG_IDE_CONTROLLER_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir6_w)) diff --git a/src/mame/drivers/fruitpc.c b/src/mame/drivers/fruitpc.c index 77a9b80b680..1b7af721c23 100644 --- a/src/mame/drivers/fruitpc.c +++ b/src/mame/drivers/fruitpc.c @@ -476,22 +476,6 @@ READ8_MEMBER(fruitpc_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface fruitpc_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(fruitpc_state,fruitpc_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(fruitpc_state,get_slave_ack) -}; - -static const struct pic8259_interface fruitpc_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - - - /************************************************************* * @@ -547,8 +531,8 @@ static MACHINE_CONFIG_START( fruitpc, fruitpc_state ) MCFG_PIT8254_ADD( "pit8254", fruitpc_pit8254_config ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_1", fruitpc_pic8259_1_config ) - MCFG_PIC8259_ADD( "pic8259_2", fruitpc_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(fruitpc_state,fruitpc_pic8259_1_set_int_line), VCC, READ8(fruitpc_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_IDE_CONTROLLER_ADD("ide", ide_devices, "hdd", NULL, true) MCFG_IDE_CONTROLLER_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir6_w)) diff --git a/src/mame/drivers/funkball.c b/src/mame/drivers/funkball.c index a6249c62ff2..4d5d190a33c 100644 --- a/src/mame/drivers/funkball.c +++ b/src/mame/drivers/funkball.c @@ -1045,20 +1045,6 @@ READ8_MEMBER( funkball_state::get_slave_ack ) return 0x00; } -static const struct pic8259_interface funkball_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(funkball_state,funkball_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(funkball_state,get_slave_ack) -}; - -static const struct pic8259_interface funkball_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - READ8_MEMBER(funkball_state::get_out2) { return pit8253_get_output( m_pit8254, 2 ); @@ -1131,8 +1117,8 @@ static MACHINE_CONFIG_START( funkball, funkball_state ) MCFG_PIT8254_ADD( "pit8254", funkball_pit8254_config ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_1", funkball_pic8259_1_config ) - MCFG_PIC8259_ADD( "pic8259_2", funkball_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(funkball_state,funkball_pic8259_1_set_int_line), VCC, READ8(funkball_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_MC146818_ADD( "rtc", MC146818_STANDARD ) diff --git a/src/mame/drivers/gamecstl.c b/src/mame/drivers/gamecstl.c index ac0f8781da4..86b81a9e2b4 100644 --- a/src/mame/drivers/gamecstl.c +++ b/src/mame/drivers/gamecstl.c @@ -645,20 +645,6 @@ READ8_MEMBER(gamecstl_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface gamecstl_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(gamecstl_state,gamecstl_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(gamecstl_state,get_slave_ack) -}; - -static const struct pic8259_interface gamecstl_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - /************************************************************* * @@ -720,9 +706,9 @@ static MACHINE_CONFIG_START( gamecstl, gamecstl_state ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_1", gamecstl_pic8259_1_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(gamecstl_state,gamecstl_pic8259_1_set_int_line), VCC, READ8(gamecstl_state,get_slave_ack) ) - MCFG_PIC8259_ADD( "pic8259_2", gamecstl_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_IDE_CONTROLLER_ADD("ide", ide_devices, "hdd", NULL, true) MCFG_IDE_CONTROLLER_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir6_w)) diff --git a/src/mame/drivers/gammagic.c b/src/mame/drivers/gammagic.c index 954d858793a..5a5d364b265 100644 --- a/src/mame/drivers/gammagic.c +++ b/src/mame/drivers/gammagic.c @@ -708,20 +708,6 @@ READ8_MEMBER(gammagic_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface gammagic_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(gammagic_state,gammagic_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(gammagic_state,get_slave_ack) -}; - -static const struct pic8259_interface gammagic_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - /************************************************************* * * pit8254 configuration @@ -771,8 +757,8 @@ static MACHINE_CONFIG_START( gammagic, gammagic_state ) MCFG_PIT8254_ADD( "pit8254", gammagic_pit8254_config ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_1", gammagic_pic8259_1_config ) - MCFG_PIC8259_ADD( "pic8259_2", gammagic_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(gammagic_state,gammagic_pic8259_1_set_int_line), VCC, READ8(gammagic_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_MC146818_ADD( "rtc", MC146818_STANDARD ) // MCFG_I82371SB_ADD("i82371sb") // MCFG_I82439TX_ADD("i82439tx", "maincpu", "user") diff --git a/src/mame/drivers/mediagx.c b/src/mame/drivers/mediagx.c index fa8b4c5fbb8..28d3118c0bd 100644 --- a/src/mame/drivers/mediagx.c +++ b/src/mame/drivers/mediagx.c @@ -1107,20 +1107,6 @@ READ8_MEMBER(mediagx_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface mediagx_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(mediagx_state,mediagx_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(mediagx_state,get_slave_ack) -}; - -static const struct pic8259_interface mediagx_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - /************************************************************* * @@ -1190,9 +1176,9 @@ static MACHINE_CONFIG_START( mediagx, mediagx_state ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_master", mediagx_pic8259_1_config ) + MCFG_PIC8259_ADD( "pic8259_master", WRITELINE(mediagx_state,mediagx_pic8259_1_set_int_line), VCC, READ8(mediagx_state,get_slave_ack) ) - MCFG_PIC8259_ADD( "pic8259_slave", mediagx_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir2_w), GND, NULL ) MCFG_IDE_CONTROLLER_ADD("ide", ide_devices, "hdd", NULL, true) MCFG_IDE_CONTROLLER_IRQ_HANDLER(DEVWRITELINE("pic8259_slave", pic8259_device, ir6_w)) diff --git a/src/mame/drivers/midqslvr.c b/src/mame/drivers/midqslvr.c index e944f719388..6492fc477a0 100644 --- a/src/mame/drivers/midqslvr.c +++ b/src/mame/drivers/midqslvr.c @@ -598,20 +598,6 @@ READ8_MEMBER( midqslvr_state::get_slave_ack ) return 0x00; } -static const struct pic8259_interface midqslvr_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(midqslvr_state,midqslvr_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(midqslvr_state,get_slave_ack) -}; - -static const struct pic8259_interface midqslvr_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - READ8_MEMBER(midqslvr_state::get_out2) { return pit8253_get_output( m_pit8254, 2 ); @@ -669,8 +655,8 @@ static MACHINE_CONFIG_START( midqslvr, midqslvr_state ) MCFG_PIT8254_ADD( "pit8254", midqslvr_pit8254_config ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_1", midqslvr_pic8259_1_config ) - MCFG_PIC8259_ADD( "pic8259_2", midqslvr_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(midqslvr_state,midqslvr_pic8259_1_set_int_line), VCC, READ8(midqslvr_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_MC146818_ADD( "rtc", MC146818_STANDARD ) diff --git a/src/mame/drivers/pcxt.c b/src/mame/drivers/pcxt.c index 74d9677a8b5..2ecbda01164 100644 --- a/src/mame/drivers/pcxt.c +++ b/src/mame/drivers/pcxt.c @@ -530,20 +530,6 @@ READ8_MEMBER(pcxt_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(pcxt_state,pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(pcxt_state,get_slave_ack) -}; - -static const struct pic8259_interface pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - IRQ_CALLBACK_MEMBER(pcxt_state::irq_callback) { return m_pic8259_1->acknowledge(); @@ -738,9 +724,9 @@ static MACHINE_CONFIG_START( filetto, pcxt_state ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config ) - MCFG_PIC8259_ADD( "pic8259_1", pic8259_1_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(pcxt_state,pic8259_1_set_int_line), VCC, READ8(pcxt_state,get_slave_ack) ) - MCFG_PIC8259_ADD( "pic8259_2", pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_MC146818_ADD( "rtc", MC146818_STANDARD ) diff --git a/src/mame/drivers/photoply.c b/src/mame/drivers/photoply.c index 799d8b65f22..5cb4779fb68 100644 --- a/src/mame/drivers/photoply.c +++ b/src/mame/drivers/photoply.c @@ -215,20 +215,6 @@ READ8_MEMBER(photoply_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(photoply_state,pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(photoply_state,get_slave_ack) -}; - -static const struct pic8259_interface pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - IRQ_CALLBACK_MEMBER(photoply_state::irq_callback) { return m_pic8259_1->acknowledge(); @@ -388,8 +374,8 @@ static MACHINE_CONFIG_START( photoply, photoply_state ) MCFG_MC146818_ADD( "rtc", MC146818_STANDARD ) // MCFG_FRAGMENT_ADD( at_kbdc8042 ) - MCFG_PIC8259_ADD( "pic8259_1", pic8259_1_config ) - MCFG_PIC8259_ADD( "pic8259_2", pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(photoply_state,pic8259_1_set_int_line), VCC, READ8(photoply_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) MCFG_PIT8254_ADD( "pit8254", at_pit8254_config ) diff --git a/src/mame/drivers/pinball2k.c b/src/mame/drivers/pinball2k.c index 88933e4a213..0abded5fc1e 100644 --- a/src/mame/drivers/pinball2k.c +++ b/src/mame/drivers/pinball2k.c @@ -809,20 +809,6 @@ READ8_MEMBER(pinball2k_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface mediagx_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(pinball2k_state,mediagx_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(pinball2k_state,get_slave_ack) -}; - -static const struct pic8259_interface mediagx_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - /************************************************************* * @@ -892,9 +878,9 @@ static MACHINE_CONFIG_START( mediagx, pinball2k_state ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_master", mediagx_pic8259_1_config ) + MCFG_PIC8259_ADD( "pic8259_master", WRITELINE(pinball2k_state,mediagx_pic8259_1_set_int_line), VCC, READ8(pinball2k_state,get_slave_ack) ) - MCFG_PIC8259_ADD( "pic8259_slave", mediagx_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir2_w), GND, NULL ) MCFG_IDE_CONTROLLER_ADD("ide", ide_devices, "hdd", NULL, true) MCFG_IDE_CONTROLLER_IRQ_HANDLER(DEVWRITELINE("pic8259_slave", pic8259_device, ir6_w)) diff --git a/src/mame/drivers/quakeat.c b/src/mame/drivers/quakeat.c index 1e66077af99..12ec7b465c3 100644 --- a/src/mame/drivers/quakeat.c +++ b/src/mame/drivers/quakeat.c @@ -134,20 +134,6 @@ READ8_MEMBER(quakeat_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface quakeat_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(quakeat_state,quakeat_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(quakeat_state,get_slave_ack) -}; - -static const struct pic8259_interface quakeat_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - /*************************************************************/ static INPUT_PORTS_START( quake ) @@ -176,8 +162,8 @@ static MACHINE_CONFIG_START( quake, quakeat_state ) MCFG_CPU_IO_MAP(quake_io) - MCFG_PIC8259_ADD( "pic8259_1", quakeat_pic8259_1_config ) - MCFG_PIC8259_ADD( "pic8259_2", quakeat_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(quakeat_state,quakeat_pic8259_1_set_int_line), VCC, READ8(quakeat_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/queen.c b/src/mame/drivers/queen.c index f83df8f8b22..cced7b36d47 100644 --- a/src/mame/drivers/queen.c +++ b/src/mame/drivers/queen.c @@ -462,20 +462,6 @@ READ8_MEMBER( queen_state::get_slave_ack ) return 0x00; } -static const struct pic8259_interface queen_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(queen_state,queen_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(queen_state,get_slave_ack) -}; - -static const struct pic8259_interface queen_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - READ8_MEMBER(queen_state::get_out2) { return pit8253_get_output( m_pit8254, 2 ); @@ -524,8 +510,8 @@ static MACHINE_CONFIG_START( queen, queen_state ) MCFG_PIT8254_ADD( "pit8254", queen_pit8254_config ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_1", queen_pic8259_1_config ) - MCFG_PIC8259_ADD( "pic8259_2", queen_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(queen_state,queen_pic8259_1_set_int_line), VCC, READ8(queen_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_MC146818_ADD( "rtc", MC146818_STANDARD ) diff --git a/src/mame/drivers/savquest.c b/src/mame/drivers/savquest.c index f4723c67981..266498f4236 100644 --- a/src/mame/drivers/savquest.c +++ b/src/mame/drivers/savquest.c @@ -561,20 +561,6 @@ READ8_MEMBER( savquest_state::get_slave_ack ) return 0x00; } -static const struct pic8259_interface savquest_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(savquest_state,savquest_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(savquest_state,get_slave_ack) -}; - -static const struct pic8259_interface savquest_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - READ8_MEMBER(savquest_state::get_out2) { return pit8253_get_output( m_pit8254, 2 ); @@ -627,8 +613,8 @@ static MACHINE_CONFIG_START( savquest, savquest_state ) MCFG_PIT8254_ADD( "pit8254", savquest_pit8254_config ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_1", savquest_pic8259_1_config ) - MCFG_PIC8259_ADD( "pic8259_2", savquest_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(savquest_state,savquest_pic8259_1_set_int_line), VCC, READ8(savquest_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_MC146818_ADD( "rtc", MC146818_STANDARD ) diff --git a/src/mame/drivers/su2000.c b/src/mame/drivers/su2000.c index 94db6239eb3..c420156b73f 100644 --- a/src/mame/drivers/su2000.c +++ b/src/mame/drivers/su2000.c @@ -150,19 +150,19 @@ READ8_MEMBER(su2000_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface su2000_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(su2000_state,su2000_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(su2000_state,get_slave_ack) -}; - -static const struct pic8259_interface su2000_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; +//static const struct pic8259_interface su2000_pic8259_1_config = +//{ +// DEVCB_DRIVER_LINE_MEMBER(su2000_state,su2000_pic8259_1_set_int_line), +// DEVCB_LINE_VCC, +// DEVCB_DRIVER_MEMBER(su2000_state,get_slave_ack) +//}; +// +//static const struct pic8259_interface su2000_pic8259_2_config = +//{ +// DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), +// DEVCB_LINE_GND, +// DEVCB_NULL +//}; /************************************************************* diff --git a/src/mame/drivers/taitowlf.c b/src/mame/drivers/taitowlf.c index 07bfe37628c..e98d946ff7f 100644 --- a/src/mame/drivers/taitowlf.c +++ b/src/mame/drivers/taitowlf.c @@ -582,20 +582,6 @@ READ8_MEMBER(taitowlf_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface taitowlf_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(taitowlf_state,taitowlf_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(taitowlf_state,get_slave_ack) -}; - -static const struct pic8259_interface taitowlf_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - /************************************************************* * @@ -666,8 +652,8 @@ static MACHINE_CONFIG_START( taitowlf, taitowlf_state ) MCFG_PIT8254_ADD( "pit8254", taitowlf_pit8254_config ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_1", taitowlf_pic8259_1_config ) - MCFG_PIC8259_ADD( "pic8259_2", taitowlf_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(taitowlf_state,taitowlf_pic8259_1_set_int_line), VCC, READ8(taitowlf_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_IDE_CONTROLLER_ADD("ide", ide_devices, "hdd", NULL, true) MCFG_IDE_CONTROLLER_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir6_w)) MCFG_MC146818_ADD( "rtc", MC146818_STANDARD ) diff --git a/src/mame/drivers/voyager.c b/src/mame/drivers/voyager.c index ae8ee8bb727..4b24f23bd17 100644 --- a/src/mame/drivers/voyager.c +++ b/src/mame/drivers/voyager.c @@ -678,22 +678,6 @@ READ8_MEMBER(voyager_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface voyager_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(voyager_state,voyager_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(voyager_state,get_slave_ack) -}; - -static const struct pic8259_interface voyager_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - - - /************************************************************* * @@ -752,8 +736,8 @@ static MACHINE_CONFIG_START( voyager, voyager_state ) MCFG_PIT8254_ADD( "pit8254", voyager_pit8254_config ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_1", voyager_pic8259_1_config ) - MCFG_PIC8259_ADD( "pic8259_2", voyager_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(voyager_state,voyager_pic8259_1_set_int_line), VCC, READ8(voyager_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_IDE_CONTROLLER_ADD("ide", ide_devices, "hdd", NULL, true) MCFG_IDE_CONTROLLER_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir6_w)) diff --git a/src/mame/drivers/xtom3d.c b/src/mame/drivers/xtom3d.c index 6ee6a54990a..e74432d9dd6 100644 --- a/src/mame/drivers/xtom3d.c +++ b/src/mame/drivers/xtom3d.c @@ -590,20 +590,6 @@ READ8_MEMBER( xtom3d_state::get_slave_ack ) return 0x00; } -static const struct pic8259_interface xtom3d_pic8259_1_config = -{ - DEVCB_DRIVER_LINE_MEMBER(xtom3d_state,xtom3d_pic8259_1_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(xtom3d_state,get_slave_ack) -}; - -static const struct pic8259_interface xtom3d_pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - READ8_MEMBER(xtom3d_state::get_out2) { return pit8253_get_output( m_pit8254, 2 ); @@ -660,8 +646,8 @@ static MACHINE_CONFIG_START( xtom3d, xtom3d_state ) MCFG_PIT8254_ADD( "pit8254", xtom3d_pit8254_config ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_1", xtom3d_pic8259_1_config ) - MCFG_PIC8259_ADD( "pic8259_2", xtom3d_pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_1", WRITELINE(xtom3d_state,xtom3d_pic8259_1_set_int_line), VCC, READ8(xtom3d_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_MC146818_ADD( "rtc", MC146818_STANDARD ) diff --git a/src/mame/machine/pcshare.c b/src/mame/machine/pcshare.c index f5d05ed3c15..b58905d553a 100644 --- a/src/mame/machine/pcshare.c +++ b/src/mame/machine/pcshare.c @@ -151,20 +151,6 @@ READ8_MEMBER( pcat_base_state::get_slave_ack ) return 0x00; } -static const struct pic8259_interface pic8259_1_config = -{ - DEVCB_CPU_INPUT_LINE("maincpu", 0), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(pcat_base_state, get_slave_ack) -}; - -static const struct pic8259_interface pic8259_2_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_1", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - IRQ_CALLBACK_MEMBER(pcat_base_state::irq_callback) { return m_pic8259_1->acknowledge(); @@ -240,8 +226,8 @@ ADDRESS_MAP_START( pcat32_io_common, AS_IO, 32, pcat_base_state ) ADDRESS_MAP_END MACHINE_CONFIG_FRAGMENT(pcat_common) - MCFG_PIC8259_ADD( "pic8259_1", pic8259_1_config ) - MCFG_PIC8259_ADD( "pic8259_2", pic8259_2_config ) + MCFG_PIC8259_ADD( "pic8259_1", INPUTLINE("maincpu", 0), VCC, READ8(pcat_base_state, get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, dma8237_2_config ) MCFG_PIT8254_ADD( "pit8254", at_pit8254_config ) diff --git a/src/mess/drivers/amstr_pc.c b/src/mess/drivers/amstr_pc.c index ec9c1b62ae5..d2d7d715829 100644 --- a/src/mess/drivers/amstr_pc.c +++ b/src/mess/drivers/amstr_pc.c @@ -268,7 +268,7 @@ static MACHINE_CONFIG_START( pc200, amstrad_pc_state ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", pc_ppi8255_interface ) @@ -341,7 +341,7 @@ static MACHINE_CONFIG_START( ppc512, amstrad_pc_state ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", pc_ppi8255_interface ) diff --git a/src/mess/drivers/apc.c b/src/mess/drivers/apc.c index 38dd582a613..3fb2962eb96 100644 --- a/src/mess/drivers/apc.c +++ b/src/mess/drivers/apc.c @@ -898,20 +898,6 @@ READ8_MEMBER(apc_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface pic8259_master_config = -{ - DEVCB_DRIVER_LINE_MEMBER(apc_state, apc_master_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(apc_state,get_slave_ack) -}; - -static const struct pic8259_interface pic8259_slave_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w), //TODO: check me - DEVCB_LINE_GND, - DEVCB_NULL -}; - /**************************************** * * I8237 DMA interface @@ -1030,8 +1016,8 @@ static MACHINE_CONFIG_START( apc, apc_state ) MCFG_CPU_IO_MAP(apc_io) MCFG_PIT8253_ADD( "pit8253", pit8253_config ) - MCFG_PIC8259_ADD( "pic8259_master", pic8259_master_config ) - MCFG_PIC8259_ADD( "pic8259_slave", pic8259_slave_config ) + MCFG_PIC8259_ADD( "pic8259_master", WRITELINE(apc_state, apc_master_set_int_line), VCC, READ8(apc_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir7_w), GND, NULL ) // TODO: check ir7_w MCFG_I8237_ADD("i8237", MAIN_CLOCK, dmac_intf) MCFG_NVRAM_ADD_1FILL("cmos") diff --git a/src/mess/drivers/apricot.c b/src/mess/drivers/apricot.c index e47ce97727e..941b518b1ba 100644 --- a/src/mess/drivers/apricot.c +++ b/src/mess/drivers/apricot.c @@ -148,14 +148,6 @@ IRQ_CALLBACK_MEMBER(apricot_state::apricot_irq_ack) return m_pic->inta_r(); } -static const struct pic8259_interface apricot_pic8259_intf = -{ - DEVCB_CPU_INPUT_LINE("maincpu", 0), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - - /*************************************************************************** FLOPPY ***************************************************************************/ @@ -394,7 +386,7 @@ static MACHINE_CONFIG_START( apricot, apricot_state ) /* Devices */ MCFG_MC6845_ADD("ic30", MC6845, XTAL_15MHz / 10, apricot_mc6845_intf) MCFG_I8255A_ADD("ic17", apricot_i8255a_intf) - MCFG_PIC8259_ADD("ic31", apricot_pic8259_intf) + MCFG_PIC8259_ADD("ic31", INPUTLINE("maincpu",0), VCC, NULL) MCFG_PIT8253_ADD("ic16", apricot_pit8253_intf) MCFG_Z80SIO_ADD("ic15", 0, apricot_z80sio_intf) diff --git a/src/mess/drivers/apricotp.c b/src/mess/drivers/apricotp.c index 24ba566c19e..cf531706608 100644 --- a/src/mess/drivers/apricotp.c +++ b/src/mess/drivers/apricotp.c @@ -434,14 +434,6 @@ static APRICOT_KEYBOARD_INTERFACE( kb_intf ) */ -static const struct pic8259_interface pic_intf = -{ - DEVCB_CPU_INPUT_LINE(I8086_TAG, INPUT_LINE_IRQ0), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - - //------------------------------------------------- // pit8253_config pit_intf //------------------------------------------------- @@ -660,7 +652,7 @@ static MACHINE_CONFIG_START( fp, fp_state ) /* Devices */ MCFG_APRICOT_KEYBOARD_ADD(kb_intf) MCFG_I8237_ADD(I8237_TAG, 250000, dmac_intf) - MCFG_PIC8259_ADD(I8259A_TAG, pic_intf) + MCFG_PIC8259_ADD(I8259A_TAG, INPUTLINE(I8086_TAG, INPUT_LINE_IRQ0), VCC, NULL) MCFG_PIT8253_ADD(I8253A5_TAG, pit_intf) MCFG_Z80DART_ADD(Z80SIO0_TAG, 2500000, sio_intf) MCFG_WD2797x_ADD(WD2797_TAG, 2000000) diff --git a/src/mess/drivers/at.c b/src/mess/drivers/at.c index f6aa4a845b8..725ecf82789 100644 --- a/src/mess/drivers/at.c +++ b/src/mess/drivers/at.c @@ -380,8 +380,8 @@ static MACHINE_CONFIG_FRAGMENT( at_motherboard ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, at_dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, at_dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_master", at_pic8259_master_config ) - MCFG_PIC8259_ADD( "pic8259_slave", at_pic8259_slave_config ) + MCFG_PIC8259_ADD( "pic8259_master", INPUTLINE("maincpu", 0), VCC, READ8(at_state, get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir2_w), GND, NULL ) MCFG_AT_KEYBOARD_CONTROLLER_ADD("keybc", XTAL_12MHz, keyboard_controller_intf) MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf) diff --git a/src/mess/drivers/b2m.c b/src/mess/drivers/b2m.c index 1a814f25c94..64782fcaf60 100644 --- a/src/mess/drivers/b2m.c +++ b/src/mess/drivers/b2m.c @@ -207,8 +207,7 @@ static MACHINE_CONFIG_START( b2m, b2m_state ) MCFG_I8255_ADD( "ppi8255_3", b2m_ppi8255_interface_3 ) - MCFG_PIC8259_ADD( "pic8259", b2m_pic8259_config ) - + MCFG_PIC8259_ADD( "pic8259", WRITELINE(b2m_state,b2m_pic_set_int_line), VCC, NULL ) /* sound */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mess/drivers/bebox.c b/src/mess/drivers/bebox.c index fa6783431de..9d57db2f1ed 100644 --- a/src/mess/drivers/bebox.c +++ b/src/mess/drivers/bebox.c @@ -197,9 +197,9 @@ static MACHINE_CONFIG_START( bebox, bebox_state ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, bebox_dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_master", bebox_pic8259_master_config ) + MCFG_PIC8259_ADD( "pic8259_master", WRITELINE(bebox_state,bebox_pic8259_master_set_int_line), VCC, READ8(bebox_state,get_slave_ack) ) - MCFG_PIC8259_ADD( "pic8259_slave", bebox_pic8259_slave_config ) + MCFG_PIC8259_ADD( "pic8259_slave", WRITELINE(bebox_state,bebox_pic8259_slave_set_int_line), GND, NULL ) MCFG_NS16550_ADD( "ns16550_0", bebox_uart_inteface_0, 0 ) /* TODO: Verify model */ MCFG_NS16550_ADD( "ns16550_1", bebox_uart_inteface_1, 0 ) /* TODO: Verify model */ diff --git a/src/mess/drivers/cbm2.c b/src/mess/drivers/cbm2.c index 9acd5c1f9d7..03c2a919a23 100644 --- a/src/mess/drivers/cbm2.c +++ b/src/mess/drivers/cbm2.c @@ -1688,13 +1688,6 @@ IRQ_CALLBACK_MEMBER(cbm2_state::pic_irq_callback) return m_ext_pic->inta_r(); } -static pic8259_interface ext_pic_intf = -{ - DEVCB_CPU_INPUT_LINE(EXT_I8088_TAG, INPUT_LINE_IRQ0), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - //------------------------------------------------- // tpi6525_interface ext_tpi_intf @@ -2431,7 +2424,7 @@ static MACHINE_CONFIG_DERIVED( bx256hp, b256hp ) MCFG_CPU_PROGRAM_MAP(ext_mem) MCFG_CPU_IO_MAP(ext_io) - MCFG_PIC8259_ADD(EXT_I8259A_TAG, ext_pic_intf) + MCFG_PIC8259_ADD(EXT_I8259A_TAG, INPUTLINE(EXT_I8088_TAG, INPUT_LINE_IRQ0), VCC, NULL) MCFG_TPI6525_ADD(EXT_MOS6525_TAG, ext_tpi_intf) MCFG_MOS6526_ADD(EXT_MOS6526_TAG, XTAL_18MHz/9, 60, DEVWRITELINE(DEVICE_SELF, cbm2_state, ext_cia_irq_w)) MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, cnt_w), DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, sp_w)) @@ -2490,7 +2483,7 @@ static MACHINE_CONFIG_DERIVED( cbm730, cbm720 ) MCFG_CPU_PROGRAM_MAP(ext_mem) MCFG_CPU_IO_MAP(ext_io) - MCFG_PIC8259_ADD(EXT_I8259A_TAG, ext_pic_intf) + MCFG_PIC8259_ADD(EXT_I8259A_TAG, INPUTLINE(EXT_I8088_TAG, INPUT_LINE_IRQ0), VCC, NULL) MCFG_TPI6525_ADD(EXT_MOS6525_TAG, ext_tpi_intf) MCFG_MOS6526_ADD(EXT_MOS6526_TAG, XTAL_18MHz/9, 50, DEVWRITELINE(DEVICE_SELF, cbm2_state, ext_cia_irq_w)) MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, cnt_w), DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, sp_w)) diff --git a/src/mess/drivers/compis.c b/src/mess/drivers/compis.c index 0d09e5e000d..d12ee458424 100644 --- a/src/mess/drivers/compis.c +++ b/src/mess/drivers/compis.c @@ -373,8 +373,8 @@ static MACHINE_CONFIG_START( compis, compis_state ) /* Devices */ MCFG_PIT8253_ADD( "pit8253", compis_pit8253_config ) MCFG_PIT8254_ADD( "pit8254", compis_pit8254_config ) - MCFG_PIC8259_ADD( "pic8259_master", compis_pic8259_master_config ) - MCFG_PIC8259_ADD( "pic8259_slave", compis_pic8259_slave_config ) + MCFG_PIC8259_ADD( "pic8259_master", WRITELINE(compis_state, compis_pic8259_master_set_int_line), VCC, READ8(compis_state, get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_slave", WRITELINE(compis_state, compis_pic8259_slave_set_int_line), GND, NULL ) MCFG_I8255_ADD( "ppi8255", compis_ppi_interface ) MCFG_UPD7220_ADD("upd7220", XTAL_4_433619MHz/2, hgdc_intf, upd7220_map) //unknown clock MCFG_CENTRONICS_PRINTER_ADD("centronics", standard_centronics) @@ -413,8 +413,8 @@ static MACHINE_CONFIG_START( compis2, compis_state ) /* Devices */ MCFG_PIT8253_ADD( "pit8253", compis_pit8253_config ) MCFG_PIT8254_ADD( "pit8254", compis_pit8254_config ) - MCFG_PIC8259_ADD( "pic8259_master", compis_pic8259_master_config ) - MCFG_PIC8259_ADD( "pic8259_slave", compis_pic8259_slave_config ) + MCFG_PIC8259_ADD( "pic8259_master", WRITELINE(compis_state, compis_pic8259_master_set_int_line), VCC, READ8(compis_state, get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_slave", WRITELINE(compis_state, compis_pic8259_slave_set_int_line), GND, NULL ) MCFG_I8255_ADD( "ppi8255", compis_ppi_interface ) MCFG_UPD7220_ADD("upd7220", XTAL_4_433619MHz/2, hgdc_intf, upd7220_map) //unknown clock MCFG_CENTRONICS_PRINTER_ADD("centronics", standard_centronics) diff --git a/src/mess/drivers/fmtowns.c b/src/mess/drivers/fmtowns.c index ebd17b3841c..8e3006ca89f 100644 --- a/src/mess/drivers/fmtowns.c +++ b/src/mess/drivers/fmtowns.c @@ -2691,20 +2691,6 @@ READ8_MEMBER(towns_state::get_slave_ack) } return 0x00; } -static const struct pic8259_interface towns_pic8259_master_config = -{ - DEVCB_DRIVER_LINE_MEMBER(towns_state,towns_pic_irq), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(towns_state,get_slave_ack) -}; - - -static const struct pic8259_interface towns_pic8259_slave_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; static const wd17xx_interface towns_mb8877a_interface = { @@ -2820,9 +2806,9 @@ static MACHINE_CONFIG_FRAGMENT( towns_base ) MCFG_PIT8253_ADD("pit",towns_pit8253_config) MCFG_PIT8253_ADD("pit2",towns_pit8253_config_2) - MCFG_PIC8259_ADD( "pic8259_master", towns_pic8259_master_config ) + MCFG_PIC8259_ADD( "pic8259_master", WRITELINE(towns_state,towns_pic_irq), VCC, READ8(towns_state,get_slave_ack)) - MCFG_PIC8259_ADD( "pic8259_slave", towns_pic8259_slave_config ) + MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir7_w), GND, NULL) MCFG_MB8877_ADD("fdc",towns_mb8877a_interface) MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(towns_floppy_interface) diff --git a/src/mess/drivers/iq151.c b/src/mess/drivers/iq151.c index a2756e2558e..1465c908d30 100644 --- a/src/mess/drivers/iq151.c +++ b/src/mess/drivers/iq151.c @@ -374,14 +374,6 @@ UINT32 iq151_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c return 0; } - -const struct pic8259_interface iq151_pic8259_config = -{ - DEVCB_DRIVER_LINE_MEMBER(iq151_state, pic_set_int_line), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - static I8255_INTERFACE( iq151_ppi8255_intf ) { DEVCB_DRIVER_MEMBER(iq151_state, keyboard_row_r), @@ -448,7 +440,7 @@ static MACHINE_CONFIG_START( iq151, iq151_state ) MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_PIC8259_ADD("pic8259", iq151_pic8259_config) + MCFG_PIC8259_ADD("pic8259", WRITELINE(iq151_state, pic_set_int_line), VCC, NULL) MCFG_I8255_ADD("ppi8255", iq151_ppi8255_intf) diff --git a/src/mess/drivers/irisha.c b/src/mess/drivers/irisha.c index 449932cc037..5b014d6f90f 100644 --- a/src/mess/drivers/irisha.c +++ b/src/mess/drivers/irisha.c @@ -157,7 +157,7 @@ static MACHINE_CONFIG_START( irisha, irisha_state ) MCFG_PIT8253_ADD( "pit8253", irisha_pit8253_intf ) - MCFG_PIC8259_ADD( "pic8259", irisha_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", WRITELINE(irisha_state,irisha_pic_set_int_line), VCC, NULL ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/m20.c b/src/mess/drivers/m20.c index 23fd1092be1..d59a4376198 100644 --- a/src/mess/drivers/m20.c +++ b/src/mess/drivers/m20.c @@ -950,13 +950,6 @@ const struct pit8253_config pit8253_intf = } }; -const struct pic8259_interface pic_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(m20_state, pic_irq_line_w), - DEVCB_LINE_VCC, // we're the only 8259, so we're the master - DEVCB_NULL -}; - static SLOT_INTERFACE_START( m20_floppies ) SLOT_INTERFACE( "5dd", FLOPPY_525_DD ) SLOT_INTERFACE_END @@ -1003,7 +996,7 @@ static MACHINE_CONFIG_START( m20, m20_state ) MCFG_I8251_ADD("i8251_1", kbd_i8251_intf) MCFG_I8251_ADD("i8251_2", tty_i8251_intf) MCFG_PIT8253_ADD("pit8253", pit8253_intf) - MCFG_PIC8259_ADD("i8259", pic_intf) + MCFG_PIC8259_ADD("i8259", WRITELINE(m20_state, pic_irq_line_w), VCC, NULL) MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf) diff --git a/src/mess/drivers/mbc55x.c b/src/mess/drivers/mbc55x.c index e5ff6487663..4e72f8a8e97 100644 --- a/src/mess/drivers/mbc55x.c +++ b/src/mess/drivers/mbc55x.c @@ -259,7 +259,7 @@ static MACHINE_CONFIG_START( mbc55x, mbc55x_state ) /* Devices */ MCFG_I8251_ADD(I8251A_KB_TAG,mbc55x_i8251a_interface) MCFG_PIT8253_ADD( PIT8253_TAG, mbc55x_pit8253_config ) - MCFG_PIC8259_ADD( PIC8259_TAG, mbc55x_pic8259_config ) + MCFG_PIC8259_ADD( PIC8259_TAG, INPUTLINE(MAINCPU_TAG, INPUT_LINE_IRQ0), VCC, NULL ) MCFG_I8255_ADD( PPI8255_TAG, mbc55x_ppi8255_interface ) MCFG_MC6845_ADD(VID_MC6845_NAME, MC6845, XTAL_14_31818MHz/8, mb55x_mc6845_intf) diff --git a/src/mess/drivers/multi16.c b/src/mess/drivers/multi16.c index 94728f32d58..f1204faaf38 100644 --- a/src/mess/drivers/multi16.c +++ b/src/mess/drivers/multi16.c @@ -128,13 +128,6 @@ WRITE_LINE_MEMBER( multi16_state::multi16_set_int_line ) m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } -static const struct pic8259_interface multi16_pic8259_config = -{ - DEVCB_DRIVER_LINE_MEMBER(multi16_state, multi16_set_int_line), - DEVCB_LINE_GND, - DEVCB_NULL -}; - void multi16_state::machine_start() { m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(multi16_state::multi16_irq_callback),this)); @@ -179,7 +172,7 @@ static MACHINE_CONFIG_START( multi16, multi16_state ) /* Devices */ MCFG_MC6845_ADD("crtc", H46505, 16000000/5, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_PIC8259_ADD( "pic8259", multi16_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", WRITELINE(multi16_state, multi16_set_int_line), GND, NULL ) MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mess/drivers/paso1600.c b/src/mess/drivers/paso1600.c index 74ecacc07b1..480e715f015 100644 --- a/src/mess/drivers/paso1600.c +++ b/src/mess/drivers/paso1600.c @@ -286,12 +286,6 @@ WRITE_LINE_MEMBER( paso1600_state::paso1600_set_int_line ) m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } -static const struct pic8259_interface paso1600_pic8259_config = -{ - DEVCB_DRIVER_LINE_MEMBER(paso1600_state, paso1600_set_int_line), - DEVCB_LINE_GND, - DEVCB_NULL -}; void paso1600_state::machine_start() { @@ -352,7 +346,7 @@ static MACHINE_CONFIG_START( paso1600, paso1600_state ) /* Devices */ MCFG_MC6845_ADD("crtc", H46505, 16000000/4, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_PIC8259_ADD( "pic8259", paso1600_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", WRITELINE(paso1600_state, paso1600_set_int_line), GND, NULL ) MCFG_I8237_ADD("8237dma", 16000000/4, paso1600_dma8237_interface) MACHINE_CONFIG_END diff --git a/src/mess/drivers/pasogo.c b/src/mess/drivers/pasogo.c index 0c3e70a054b..d44f93f9c0c 100644 --- a/src/mess/drivers/pasogo.c +++ b/src/mess/drivers/pasogo.c @@ -495,13 +495,6 @@ WRITE_LINE_MEMBER(pasogo_state::pasogo_pic8259_set_int_line) m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } -static const pic8259_interface pasogo_pic8259_config = -{ - DEVCB_DRIVER_LINE_MEMBER(pasogo_state, pasogo_pic8259_set_int_line), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - static MACHINE_CONFIG_START( pasogo, pasogo_state ) @@ -513,7 +506,7 @@ static MACHINE_CONFIG_START( pasogo, pasogo_state ) MCFG_PIT8254_ADD( "pit8254", pc_pit8254_config ) - MCFG_PIC8259_ADD( "pic8259", pasogo_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", WRITELINE(pasogo_state, pasogo_pic8259_set_int_line), VCC, NULL ) MCFG_SCREEN_ADD("screen", LCD) MCFG_SCREEN_REFRESH_RATE(60) diff --git a/src/mess/drivers/pc.c b/src/mess/drivers/pc.c index 1d937385f93..0a78a125b04 100644 --- a/src/mess/drivers/pc.c +++ b/src/mess/drivers/pc.c @@ -995,7 +995,7 @@ static MACHINE_CONFIG_START( pccga, pc_state ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface ) @@ -1079,7 +1079,7 @@ static MACHINE_CONFIG_START( europc, europc_pc_state ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", pc_ppi8255_interface ) @@ -1131,7 +1131,7 @@ static MACHINE_CONFIG_START( t1000hx, tandy_pc_state ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", pc_ppi8255_interface ) @@ -1185,7 +1185,7 @@ static MACHINE_CONFIG_START( t1000_16, tandy_pc_state ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", pc_ppi8255_interface ) @@ -1234,7 +1234,7 @@ static MACHINE_CONFIG_START( t1000_286, tandy_pc_state ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", pc_ppi8255_interface ) @@ -1303,7 +1303,7 @@ static MACHINE_CONFIG_START( ibmpcjr, tandy_pc_state ) MCFG_PIT8253_ADD( "pit8253", pcjr_pit8253_config ) - MCFG_PIC8259_ADD( "pic8259", pcjr_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", WRITELINE(pc_state,pcjr_pic8259_set_int_line), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", pcjr_ppi8255_interface ) @@ -1392,7 +1392,7 @@ static MACHINE_CONFIG_START( mc1502, pc_state ) MCFG_PIT8253_ADD( "pit8253", mc1502_pit8253_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", mc1502_ppi8255_interface ) /* not complete */ MCFG_I8255_ADD( "ppi8255n2", mc1502_ppi8255_interface_2 ) /* not complete */ @@ -1442,7 +1442,7 @@ static MACHINE_CONFIG_START( ec1841, pc_state ) // maybe XTAL_12_288MHz MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface ) @@ -1492,7 +1492,7 @@ static MACHINE_CONFIG_START( iskr1031, pc_state ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface ) @@ -1565,7 +1565,7 @@ static MACHINE_CONFIG_START( iskr3104, pc_state ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface ) @@ -1620,7 +1620,7 @@ static MACHINE_CONFIG_START( poisk2, pc_state ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface ) @@ -1675,7 +1675,7 @@ static MACHINE_CONFIG_START( zenith, pc_state ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface ) @@ -1730,7 +1730,7 @@ static MACHINE_CONFIG_START( olivetti, pc_state ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface ) @@ -1785,7 +1785,7 @@ static MACHINE_CONFIG_START( ibm5550, pc_state ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, ibm5150_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", ibm5150_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface ) diff --git a/src/mess/drivers/pc100.c b/src/mess/drivers/pc100.c index 9637e091a14..5ce33ddc752 100644 --- a/src/mess/drivers/pc100.c +++ b/src/mess/drivers/pc100.c @@ -414,13 +414,6 @@ WRITE_LINE_MEMBER( pc100_state::pc100_set_int_line ) m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } -static const struct pic8259_interface pc100_pic8259_config = -{ - DEVCB_DRIVER_LINE_MEMBER(pc100_state, pc100_set_int_line), - DEVCB_LINE_GND, - DEVCB_NULL -}; - void pc100_state::machine_start() { m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc100_state::pc100_irq_callback),this)); @@ -500,7 +493,7 @@ static MACHINE_CONFIG_START( pc100, pc100_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("10hz", pc100_state, pc100_10hz_irq, attotime::from_hz(MASTER_CLOCK/10)) MCFG_I8255_ADD( "ppi8255_1", pc100_ppi8255_interface_1 ) MCFG_I8255_ADD( "ppi8255_2", pc100_ppi8255_interface_2 ) - MCFG_PIC8259_ADD( "pic8259", pc100_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", WRITELINE(pc100_state, pc100_set_int_line), GND, NULL ) MCFG_UPD765A_ADD("upd765", true, true) MCFG_MSM58321_ADD("rtc", XTAL_32_768kHz, rtc_intf) diff --git a/src/mess/drivers/pc1512.c b/src/mess/drivers/pc1512.c index c4c3ac15519..4f64f6241e2 100644 --- a/src/mess/drivers/pc1512.c +++ b/src/mess/drivers/pc1512.c @@ -916,13 +916,6 @@ IRQ_CALLBACK_MEMBER(pc1512_state::pc1512_irq_callback) return m_pic->inta_r(); } -static const struct pic8259_interface pic_intf = -{ - DEVCB_CPU_INPUT_LINE(I8086_TAG, INPUT_LINE_IRQ0), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - //------------------------------------------------- // pit8253_config pit_intf @@ -1244,7 +1237,7 @@ static MACHINE_CONFIG_START( pc1512, pc1512_state ) // devices MCFG_PC1512_KEYBOARD_ADD(kb_intf) MCFG_I8237_ADD(I8237A5_TAG, XTAL_24MHz/6, dmac_intf) - MCFG_PIC8259_ADD(I8259A2_TAG, pic_intf) + MCFG_PIC8259_ADD(I8259A2_TAG, INPUTLINE(I8086_TAG, INPUT_LINE_IRQ0), VCC, NULL) MCFG_PIT8253_ADD(I8253_TAG, pit_intf) MCFG_MC146818_IRQ_ADD(MC146818_TAG, MC146818_STANDARD, rtc_intf) MCFG_PC_FDC_XT_ADD(PC_FDC_XT_TAG) @@ -1289,7 +1282,7 @@ static MACHINE_CONFIG_START( pc1640, pc1640_state ) // devices MCFG_PC1512_KEYBOARD_ADD(kb_intf) MCFG_I8237_ADD(I8237A5_TAG, XTAL_24MHz/6, dmac_intf) - MCFG_PIC8259_ADD(I8259A2_TAG, pic_intf) + MCFG_PIC8259_ADD(I8259A2_TAG, INPUTLINE(I8086_TAG, INPUT_LINE_IRQ0), VCC, NULL) MCFG_PIT8253_ADD(I8253_TAG, pit_intf) MCFG_MC146818_IRQ_ADD(MC146818_TAG, MC146818_STANDARD, rtc_intf) MCFG_PC_FDC_XT_ADD(PC_FDC_XT_TAG) diff --git a/src/mess/drivers/pc88va.c b/src/mess/drivers/pc88va.c index 789b3fde8f2..107c224396f 100644 --- a/src/mess/drivers/pc88va.c +++ b/src/mess/drivers/pc88va.c @@ -1637,20 +1637,6 @@ READ8_MEMBER(pc88va_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface pc88va_pic8259_master_config = -{ - DEVCB_DRIVER_LINE_MEMBER(pc88va_state, pc88va_pic_irq), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(pc88va_state,get_slave_ack) -}; - -static const struct pic8259_interface pc88va_pic8259_slave_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - void pc88va_state::machine_start() { m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(pc88va_state::pc88va_irq_callback),this)); @@ -1856,8 +1842,9 @@ static MACHINE_CONFIG_START( pc88va, pc88va_state ) MCFG_I8255_ADD( "d8255_2s", slave_fdd_intf ) - MCFG_PIC8259_ADD( "pic8259_master", pc88va_pic8259_master_config ) - MCFG_PIC8259_ADD( "pic8259_slave", pc88va_pic8259_slave_config ) + MCFG_PIC8259_ADD( "pic8259_master", WRITELINE(pc88va_state, pc88va_pic_irq), VCC, READ8(pc88va_state,get_slave_ack) ) + + MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir7_w), GND, NULL ) MCFG_UPD71071_ADD("dmac",pc88va_dma_config) diff --git a/src/mess/drivers/pc9801.c b/src/mess/drivers/pc9801.c index edbd00ef28b..74fa309c389 100644 --- a/src/mess/drivers/pc9801.c +++ b/src/mess/drivers/pc9801.c @@ -2930,20 +2930,6 @@ READ8_MEMBER(pc9801_state::get_slave_ack) return 0x00; } -static const struct pic8259_interface pic8259_master_config = -{ - DEVCB_DRIVER_LINE_MEMBER(pc9801_state, pc9801_master_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(pc9801_state,get_slave_ack) -}; - -static const struct pic8259_interface pic8259_slave_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w), //TODO: check me - DEVCB_LINE_GND, - DEVCB_NULL -}; - /**************************************** * * I8253 PIT interface @@ -3571,8 +3557,8 @@ static MACHINE_CONFIG_START( pc9801, pc9801_state ) MCFG_PIT8253_ADD( "pit8253", pc9801_pit8253_config ) MCFG_I8237_ADD("i8237", 5000000, dmac_intf) // unknown clock - MCFG_PIC8259_ADD( "pic8259_master", pic8259_master_config ) - MCFG_PIC8259_ADD( "pic8259_slave", pic8259_slave_config ) + MCFG_PIC8259_ADD( "pic8259_master", WRITELINE(pc9801_state, pc9801_master_set_int_line), VCC, READ8(pc9801_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir7_w), GND, NULL ) // TODO: Check ir7_w MCFG_I8255_ADD( "ppi8255_sys", ppi_system_intf ) MCFG_I8255_ADD( "ppi8255_prn", ppi_printer_intf ) MCFG_I8255_ADD( "ppi8255_fdd", ppi_fdd_intf ) @@ -3640,8 +3626,8 @@ static MACHINE_CONFIG_START( pc9801rs, pc9801_state ) MCFG_PIT8253_ADD( "pit8253", pc9801_pit8253_config ) MCFG_I8237_ADD("i8237", MAIN_CLOCK_X1*8, pc9801rs_dmac_intf) // unknown clock - MCFG_PIC8259_ADD( "pic8259_master", pic8259_master_config ) - MCFG_PIC8259_ADD( "pic8259_slave", pic8259_slave_config ) + MCFG_PIC8259_ADD( "pic8259_master", WRITELINE(pc9801_state, pc9801_master_set_int_line), VCC, READ8(pc9801_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir7_w), GND, NULL ) // TODO: Check ir7_w MCFG_I8255_ADD( "ppi8255_sys", ppi_system_intf ) MCFG_I8255_ADD( "ppi8255_prn", ppi_printer_intf ) MCFG_I8255_ADD( "ppi8255_fdd", ppi_fdd_intf ) @@ -3706,8 +3692,8 @@ static MACHINE_CONFIG_START( pc9821, pc9801_state ) MCFG_PIT8253_ADD( "pit8253", pc9821_pit8253_config ) MCFG_I8237_ADD("i8237", 16000000, pc9801rs_dmac_intf) // unknown clock - MCFG_PIC8259_ADD( "pic8259_master", pic8259_master_config ) - MCFG_PIC8259_ADD( "pic8259_slave", pic8259_slave_config ) + MCFG_PIC8259_ADD( "pic8259_master", WRITELINE(pc9801_state, pc9801_master_set_int_line), VCC, READ8(pc9801_state,get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir7_w), GND, NULL ) // TODO: Check ir7_w MCFG_I8255_ADD( "ppi8255_sys", ppi_system_intf ) MCFG_I8255_ADD( "ppi8255_prn", ppi_printer_intf ) MCFG_I8255_ADD( "ppi8255_fdd", ppi_fdd_intf ) diff --git a/src/mess/drivers/pk8020.c b/src/mess/drivers/pk8020.c index 0a014115a4b..f7d06771e9b 100644 --- a/src/mess/drivers/pk8020.c +++ b/src/mess/drivers/pk8020.c @@ -224,7 +224,7 @@ static MACHINE_CONFIG_START( pk8020, pk8020_state ) MCFG_I8255_ADD( "ppi8255_2", pk8020_ppi8255_interface_2 ) MCFG_I8255_ADD( "ppi8255_3", pk8020_ppi8255_interface_3 ) MCFG_PIT8253_ADD( "pit8253", pk8020_pit8253_intf ) - MCFG_PIC8259_ADD( "pic8259", pk8020_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", WRITELINE(pk8020_state,pk8020_pic_set_int_line), VCC, NULL ) MCFG_I8251_ADD( "rs232", default_i8251_interface) MCFG_I8251_ADD( "lan", default_i8251_interface) diff --git a/src/mess/drivers/qx10.c b/src/mess/drivers/qx10.c index 444b0c6d3f7..894ffcbe852 100644 --- a/src/mess/drivers/qx10.c +++ b/src/mess/drivers/qx10.c @@ -564,12 +564,6 @@ READ8_MEMBER( qx10_state::get_slave_ack ) return 0x00; } -static const struct pic8259_interface qx10_pic8259_master_config = -{ - DEVCB_DRIVER_LINE_MEMBER(qx10_state, qx10_pic8259_master_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(qx10_state, get_slave_ack) -}; /* Slave PIC8259 @@ -584,13 +578,6 @@ static const struct pic8259_interface qx10_pic8259_master_config = */ -static const struct pic8259_interface qx10_pic8259_slave_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - IRQ_CALLBACK_MEMBER(qx10_state::irq_callback) { return m_pic_m->acknowledge(); @@ -1048,8 +1035,8 @@ static MACHINE_CONFIG_START( qx10, qx10_state ) /* Devices */ MCFG_PIT8253_ADD("pit8253_1", qx10_pit8253_1_config) MCFG_PIT8253_ADD("pit8253_2", qx10_pit8253_2_config) - MCFG_PIC8259_ADD("pic8259_master", qx10_pic8259_master_config) - MCFG_PIC8259_ADD("pic8259_slave", qx10_pic8259_slave_config) + MCFG_PIC8259_ADD("pic8259_master", WRITELINE(qx10_state, qx10_pic8259_master_set_int_line), VCC, READ8(qx10_state, get_slave_ack)) + MCFG_PIC8259_ADD("pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir7_w), GND, NULL) MCFG_UPD7201_ADD("upd7201", MAIN_CLK/4, qx10_upd7201_interface) MCFG_I8255_ADD("i8255", qx10_i8255_interface) MCFG_I8237_ADD("8237dma_1", MAIN_CLK/4, qx10_dma8237_1_interface) diff --git a/src/mess/drivers/sage2.c b/src/mess/drivers/sage2.c index ae7ad55cc04..204e5025daf 100644 --- a/src/mess/drivers/sage2.c +++ b/src/mess/drivers/sage2.c @@ -206,13 +206,6 @@ INPUT_PORTS_END */ -static const struct pic8259_interface pic_intf = -{ - DEVCB_CPU_INPUT_LINE(M68000_TAG, M68K_IRQ_1), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - //------------------------------------------------- // I8255A_INTERFACE( ppi0_intf ) @@ -568,7 +561,7 @@ static MACHINE_CONFIG_START( sage2, sage2_state ) MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf) // devices - MCFG_PIC8259_ADD(I8259_TAG, pic_intf) + MCFG_PIC8259_ADD(I8259_TAG, INPUTLINE(M68000_TAG, M68K_IRQ_1), VCC, NULL) MCFG_I8255A_ADD(I8255A_0_TAG, ppi0_intf) MCFG_I8255A_ADD(I8255A_1_TAG, ppi1_intf) MCFG_PIT8253_ADD(I8253_0_TAG, pit0_intf) diff --git a/src/mess/drivers/tandy2k.c b/src/mess/drivers/tandy2k.c index 864d6b44728..e6901e83fdf 100644 --- a/src/mess/drivers/tandy2k.c +++ b/src/mess/drivers/tandy2k.c @@ -568,13 +568,6 @@ static I8255A_INTERFACE( ppi_intf ) */ -static const struct pic8259_interface pic0_intf = -{ - DEVCB_CPU_INPUT_LINE(I80186_TAG, INPUT_LINE_INT0), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - /* IR0 KBDINT10 @@ -588,13 +581,6 @@ static const struct pic8259_interface pic0_intf = */ -static const struct pic8259_interface pic1_intf = -{ - DEVCB_CPU_INPUT_LINE(I80186_TAG, INPUT_LINE_INT1), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - // Intel 8272 Interface void tandy2k_state::fdc_irq(bool state) @@ -715,8 +701,8 @@ static MACHINE_CONFIG_START( tandy2k, tandy2k_state ) MCFG_I8255A_ADD(I8255A_TAG, ppi_intf) MCFG_I8251_ADD(I8251A_TAG, usart_intf) MCFG_PIT8253_ADD(I8253_TAG, pit_intf) - MCFG_PIC8259_ADD(I8259A_0_TAG, pic0_intf) - MCFG_PIC8259_ADD(I8259A_1_TAG, pic1_intf) + MCFG_PIC8259_ADD(I8259A_0_TAG, INPUTLINE(I80186_TAG, INPUT_LINE_INT0), VCC, NULL) + MCFG_PIC8259_ADD(I8259A_1_TAG, INPUTLINE(I80186_TAG, INPUT_LINE_INT1), VCC, NULL) MCFG_I8272A_ADD(I8272A_TAG, true) MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":0", tandy2k_floppies, "525qd", 0, floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":1", tandy2k_floppies, "525qd", 0, floppy_image_device::default_floppy_formats) diff --git a/src/mess/drivers/tdv2324.c b/src/mess/drivers/tdv2324.c index 1ae9b1f3d29..7b7d63821f3 100644 --- a/src/mess/drivers/tdv2324.c +++ b/src/mess/drivers/tdv2324.c @@ -267,18 +267,6 @@ static I8085_CONFIG( i8085_sub_intf ) }; -//------------------------------------------------- -// pic8259_interface pic_intf -//------------------------------------------------- - -static const struct pic8259_interface pic_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- // pit8253_config pit0_intf //------------------------------------------------- @@ -411,7 +399,7 @@ static MACHINE_CONFIG_START( tdv2324, tdv2324_state ) MCFG_TMS9927_ADD(TMS9937NL_TAG, XTAL_25_39836MHz, vtac_intf) // devices - MCFG_PIC8259_ADD(P8259A_TAG, pic_intf) + MCFG_PIC8259_ADD(P8259A_TAG, NULL, NULL, NULL) MCFG_PIT8253_ADD(P8253_5_0_TAG, pit0_intf) MCFG_PIT8253_ADD(P8253_5_1_TAG, pit1_intf) MCFG_Z80SIO2_ADD(MK3887N4_TAG, 8000000/2, sio_intf) diff --git a/src/mess/drivers/trs80m2.c b/src/mess/drivers/trs80m2.c index aa528c2bad7..f9f3fd895cd 100644 --- a/src/mess/drivers/trs80m2.c +++ b/src/mess/drivers/trs80m2.c @@ -737,13 +737,6 @@ IRQ_CALLBACK_MEMBER(trs80m16_state::trs80m16_irq_callback) return m_pic->inta_r(); } -static const struct pic8259_interface pic_intf = -{ - DEVCB_CPU_INPUT_LINE(M68000_TAG, M68K_IRQ_5), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - //************************************************************************** @@ -901,7 +894,7 @@ static MACHINE_CONFIG_START( trs80m16, trs80m16_state ) MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":1", trs80m2_floppies, NULL, NULL, floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":2", trs80m2_floppies, NULL, NULL, floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":3", trs80m2_floppies, NULL, NULL, floppy_image_device::default_floppy_formats) - MCFG_PIC8259_ADD(AM9519A_TAG, pic_intf) + MCFG_PIC8259_ADD(AM9519A_TAG, INPUTLINE(M68000_TAG, M68K_IRQ_5), VCC, NULL ) MCFG_TRS80M2_KEYBOARD_ADD(kb_intf) // internal RAM diff --git a/src/mess/drivers/tsispch.c b/src/mess/drivers/tsispch.c index 9e9406780f6..63019515e44 100644 --- a/src/mess/drivers/tsispch.c +++ b/src/mess/drivers/tsispch.c @@ -173,13 +173,6 @@ WRITE_LINE_MEMBER(tsispch_state::pic8259_set_int_line) m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } -static const struct pic8259_interface pic8259_config = -{ - DEVCB_DRIVER_LINE_MEMBER(tsispch_state,pic8259_set_int_line), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - IRQ_CALLBACK_MEMBER(tsispch_state::irq_callback) { return machine().device("pic8259")->acknowledge(); @@ -418,7 +411,7 @@ static MACHINE_CONFIG_START( prose2k, tsispch_state ) MCFG_CPU_CONFIG(upd7720_config) /* PIC 8259 */ - MCFG_PIC8259_ADD("pic8259", pic8259_config) + MCFG_PIC8259_ADD("pic8259", WRITELINE(tsispch_state,pic8259_set_int_line), VCC, NULL) /* uarts */ MCFG_I8251_ADD("i8251a_u15", i8251_config) diff --git a/src/mess/drivers/victor9k.c b/src/mess/drivers/victor9k.c index b753975ac33..d3eaa0eccd8 100644 --- a/src/mess/drivers/victor9k.c +++ b/src/mess/drivers/victor9k.c @@ -169,13 +169,6 @@ static const struct pit8253_config pit_intf = */ -static const struct pic8259_interface pic_intf = -{ - DEVCB_CPU_INPUT_LINE(I8088_TAG, INPUT_LINE_IRQ0), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - // NEC uPD7201 Interface static UPD7201_INTERFACE( mpsc_intf ) @@ -937,7 +930,7 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state ) MCFG_IEEE488_BUS_ADD() MCFG_IEEE488_NRFD_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_ca1)) MCFG_IEEE488_NDAC_CALLBACK(DEVWRITELINE(M6522_1_TAG, via6522_device, write_ca2)) - MCFG_PIC8259_ADD(I8259A_TAG, pic_intf) + MCFG_PIC8259_ADD(I8259A_TAG, INPUTLINE(I8088_TAG, INPUT_LINE_IRQ0), VCC, NULL) MCFG_PIT8253_ADD(I8253_TAG, pit_intf) MCFG_UPD7201_ADD(UPD7201_TAG, XTAL_30MHz/30, mpsc_intf) MCFG_MC6852_ADD(MC6852_TAG, XTAL_30MHz/30, ssda_intf) diff --git a/src/mess/drivers/wangpc.c b/src/mess/drivers/wangpc.c index 81617ec3c1c..3027b3618ed 100644 --- a/src/mess/drivers/wangpc.c +++ b/src/mess/drivers/wangpc.c @@ -748,13 +748,6 @@ IRQ_CALLBACK_MEMBER( wangpc_state::wangpc_irq_callback ) return m_pic->inta_r(); } -static const struct pic8259_interface pic_intf = -{ - DEVCB_CPU_INPUT_LINE(I8086_TAG, INPUT_LINE_IRQ0), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - //------------------------------------------------- // I8255A_INTERFACE( ppi_intf ) @@ -1203,7 +1196,7 @@ static MACHINE_CONFIG_START( wangpc, wangpc_state ) // devices MCFG_AM9517A_ADD(AM9517A_TAG, 4000000, dmac_intf) - MCFG_PIC8259_ADD(I8259A_TAG, pic_intf) + MCFG_PIC8259_ADD(I8259A_TAG, INPUTLINE(I8086_TAG, INPUT_LINE_IRQ0), VCC, NULL) MCFG_I8255A_ADD(I8255A_TAG, ppi_intf) MCFG_PIT8253_ADD(I8253_TAG, pit_intf) MCFG_IM6402_ADD(IM6402_TAG, uart_intf) diff --git a/src/mess/drivers/z100.c b/src/mess/drivers/z100.c index ef60c95f337..b324bca9023 100644 --- a/src/mess/drivers/z100.c +++ b/src/mess/drivers/z100.c @@ -614,21 +614,6 @@ READ8_MEMBER( z100_state::get_slave_ack ) return 0; } -static const struct pic8259_interface z100_pic8259_master_config = -{ - DEVCB_DRIVER_LINE_MEMBER(z100_state, z100_pic_irq), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(z100_state, get_slave_ack) -}; - -static const struct pic8259_interface z100_pic8259_slave_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir3_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - - static MC6845_INTERFACE( mc6845_intf ) { "screen", /* screen we are acting on */ @@ -791,8 +776,8 @@ static MACHINE_CONFIG_START( z100, z100_state ) /* Devices */ MCFG_MC6845_ADD("crtc", MC6845, XTAL_14_31818MHz/8, mc6845_intf) /* unknown clock, hand tuned to get ~50/~60 fps */ - MCFG_PIC8259_ADD( "pic8259_master", z100_pic8259_master_config ) - MCFG_PIC8259_ADD( "pic8259_slave", z100_pic8259_slave_config ) + MCFG_PIC8259_ADD( "pic8259_master", WRITELINE(z100_state, z100_pic_irq), VCC, READ8(z100_state, get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir3_w), GND, NULL ) MCFG_PIA6821_ADD("pia0", pia0_intf) MCFG_PIA6821_ADD("pia1", pia1_intf) diff --git a/src/mess/includes/apollo.h b/src/mess/includes/apollo.h index a2c63505fcf..3d7c446243f 100644 --- a/src/mess/includes/apollo.h +++ b/src/mess/includes/apollo.h @@ -207,6 +207,8 @@ public: DECLARE_WRITE_LINE_MEMBER( apollo_dma8237_out_eop ); DECLARE_WRITE_LINE_MEMBER( apollo_dma_1_hrq_changed ); DECLARE_WRITE_LINE_MEMBER( apollo_dma_2_hrq_changed ); + DECLARE_WRITE_LINE_MEMBER( apollo_pic8259_master_set_int_line ); + DECLARE_WRITE_LINE_MEMBER( apollo_pic8259_slave_set_int_line ); }; MACHINE_CONFIG_EXTERN( apollo ); diff --git a/src/mess/includes/at.h b/src/mess/includes/at.h index 6441dd1d094..97ad74ae9bd 100644 --- a/src/mess/includes/at.h +++ b/src/mess/includes/at.h @@ -191,8 +191,6 @@ public: /*----------- defined in machine/at.c -----------*/ -extern const struct pic8259_interface at_pic8259_master_config; -extern const struct pic8259_interface at_pic8259_slave_config; extern const struct pit8253_config at_pit8254_config; extern const am9517a_interface at_dma8237_1_config; extern const am9517a_interface at_dma8237_2_config; diff --git a/src/mess/includes/b2m.h b/src/mess/includes/b2m.h index dea7f18e233..ec4ac26feb9 100644 --- a/src/mess/includes/b2m.h +++ b/src/mess/includes/b2m.h @@ -77,7 +77,6 @@ public: /*----------- defined in machine/b2m.c -----------*/ extern const struct pit8253_config b2m_pit8253_intf; -extern const struct pic8259_interface b2m_pic8259_config; extern const i8255_interface b2m_ppi8255_interface_1; extern const i8255_interface b2m_ppi8255_interface_2; diff --git a/src/mess/includes/bebox.h b/src/mess/includes/bebox.h index 62c0a2b836a..c57984221c1 100644 --- a/src/mess/includes/bebox.h +++ b/src/mess/includes/bebox.h @@ -108,8 +108,6 @@ public: extern const struct pit8253_config bebox_pit8254_config; extern const i8237_interface bebox_dma8237_1_config; extern const i8237_interface bebox_dma8237_2_config; -extern const struct pic8259_interface bebox_pic8259_master_config; -extern const struct pic8259_interface bebox_pic8259_slave_config; extern const ins8250_interface bebox_uart_inteface_0; extern const ins8250_interface bebox_uart_inteface_1; extern const ins8250_interface bebox_uart_inteface_2; diff --git a/src/mess/includes/compis.h b/src/mess/includes/compis.h index fcb9b4c2b75..3f275d5e694 100644 --- a/src/mess/includes/compis.h +++ b/src/mess/includes/compis.h @@ -203,8 +203,6 @@ public: extern const i8255_interface compis_ppi_interface; extern const struct pit8253_config compis_pit8253_config; extern const struct pit8253_config compis_pit8254_config; -extern const struct pic8259_interface compis_pic8259_master_config; -extern const struct pic8259_interface compis_pic8259_slave_config; extern const i8251_interface compis_usart_interface; #endif /* COMPIS_H_ */ diff --git a/src/mess/includes/irisha.h b/src/mess/includes/irisha.h index 275cde7764d..47780c20388 100644 --- a/src/mess/includes/irisha.h +++ b/src/mess/includes/irisha.h @@ -59,6 +59,5 @@ public: extern const i8255_interface irisha_ppi8255_interface; extern const struct pit8253_config irisha_pit8253_intf; -extern const struct pic8259_interface irisha_pic8259_config; #endif /* IRISHA_H_ */ diff --git a/src/mess/includes/mbc55x.h b/src/mess/includes/mbc55x.h index 152645f6a10..a2bfee3984e 100644 --- a/src/mess/includes/mbc55x.h +++ b/src/mess/includes/mbc55x.h @@ -172,7 +172,6 @@ extern const unsigned char mbc55x_palette[SCREEN_NO_COLOURS][3]; /*----------- defined in machine/mbc55x.c -----------*/ extern const struct pit8253_config mbc55x_pit8253_config; -extern const struct pic8259_interface mbc55x_pic8259_config; extern const i8255_interface mbc55x_ppi8255_interface; extern const i8251_interface mbc55x_i8251a_interface; extern const i8251_interface mbc55x_i8251b_interface; diff --git a/src/mess/includes/pc.h b/src/mess/includes/pc.h index a43fd1c7326..1ff3445bf96 100644 --- a/src/mess/includes/pc.h +++ b/src/mess/includes/pc.h @@ -192,8 +192,6 @@ extern const struct am9517a_interface ibm5150_dma8237_config; extern const struct pit8253_config ibm5150_pit8253_config; extern const struct pit8253_config pcjr_pit8253_config; extern const struct pit8253_config mc1502_pit8253_config; -extern const struct pic8259_interface ibm5150_pic8259_config; -extern const struct pic8259_interface pcjr_pic8259_config; extern const ins8250_interface ibm5150_com_interface[4]; extern const rs232_port_interface ibm5150_serport_config[4]; extern const i8255_interface ibm5160_ppi8255_interface; diff --git a/src/mess/includes/pk8020.h b/src/mess/includes/pk8020.h index bc3dffa1fed..c6c750237d3 100644 --- a/src/mess/includes/pk8020.h +++ b/src/mess/includes/pk8020.h @@ -97,6 +97,5 @@ extern const i8255_interface pk8020_ppi8255_interface_1; extern const i8255_interface pk8020_ppi8255_interface_2; extern const i8255_interface pk8020_ppi8255_interface_3; extern const struct pit8253_config pk8020_pit8253_intf; -extern const struct pic8259_interface pk8020_pic8259_config; #endif /* pk8020_H_ */ diff --git a/src/mess/machine/apollo.c b/src/mess/machine/apollo.c index 668d339c7e9..704be74a5c7 100644 --- a/src/mess/machine/apollo.c +++ b/src/mess/machine/apollo.c @@ -689,9 +689,10 @@ IRQ_CALLBACK_MEMBER(apollo_state::apollo_pic_acknowledge) * pic8259 configuration *************************************************************/ -static WRITE_LINE_DEVICE_HANDLER( apollo_pic8259_master_set_int_line ) { +WRITE_LINE_MEMBER( apollo_state::apollo_pic8259_master_set_int_line ) { static int interrupt_line = -1; if (state != interrupt_line) { + device_t *device = pic8259_master; DLOG1(("apollo_pic8259_master_set_int_line: %x", state)); } interrupt_line = state; @@ -704,23 +705,19 @@ static WRITE_LINE_DEVICE_HANDLER( apollo_pic8259_master_set_int_line ) { apollo_set_cache_status_register(0x10, state ? 0x10 : 0x00); } - device->machine().device(MAINCPU)->execute().set_input_line_and_vector(M68K_IRQ_6,state ? ASSERT_LINE : CLEAR_LINE, M68K_INT_ACK_AUTOVECTOR); + machine().device(MAINCPU)->execute().set_input_line_and_vector(M68K_IRQ_6,state ? ASSERT_LINE : CLEAR_LINE, M68K_INT_ACK_AUTOVECTOR); } -static WRITE_LINE_DEVICE_HANDLER( apollo_pic8259_slave_set_int_line ) { +WRITE_LINE_MEMBER( apollo_state::apollo_pic8259_slave_set_int_line ) { static int interrupt_line = -1; if (state != interrupt_line) { + device_t *device = pic8259_slave; DLOG1(("apollo_pic8259_slave_set_int_line: %x", state)); interrupt_line = state; apollo_pic_set_irq_line(device, 3, state); } } -static const struct pic8259_interface apollo_pic8259_master_config = { - DEVCB_LINE(apollo_pic8259_master_set_int_line) }; - -static const struct pic8259_interface apollo_pic8259_slave_config = { - DEVCB_LINE(apollo_pic8259_slave_set_int_line) }; //########################################################################## // machine/apollo_ptm.c - APOLLO DS3500 Programmable Timer 6840 @@ -1370,8 +1367,8 @@ MACHINE_CONFIG_FRAGMENT( apollo ) MCFG_I8237_ADD( APOLLO_DMA1_TAG, XTAL_14_31818MHz/3, apollo_dma8237_1_config ) MCFG_I8237_ADD( APOLLO_DMA2_TAG, XTAL_14_31818MHz/3, apollo_dma8237_2_config ) - MCFG_PIC8259_ADD( APOLLO_PIC1_TAG, apollo_pic8259_master_config ) - MCFG_PIC8259_ADD( APOLLO_PIC2_TAG, apollo_pic8259_slave_config ) + MCFG_PIC8259_ADD( APOLLO_PIC1_TAG, WRITELINE(apollo_state,apollo_pic8259_master_set_int_line), NULL, NULL ) // TODO: Doublecheck config + MCFG_PIC8259_ADD( APOLLO_PIC2_TAG, WRITELINE(apollo_state,apollo_pic8259_slave_set_int_line), NULL, NULL ) // TODO: Doublecheck config MCFG_PTM6840_ADD(APOLLO_PTM_TAG, apollo_ptm_config) MCFG_MC146818_ADD( APOLLO_RTC_TAG, MC146818_UTC ) MCFG_DUART68681_ADD( APOLLO_SIO_TAG, XTAL_3_6864MHz, apollo_sio_config ) diff --git a/src/mess/machine/at.c b/src/mess/machine/at.c index b2305d4d7a0..32b05596ad9 100644 --- a/src/mess/machine/at.c +++ b/src/mess/machine/at.c @@ -21,22 +21,6 @@ READ8_MEMBER( at_state::get_slave_ack ) return 0x00; } -const struct pic8259_interface at_pic8259_master_config = -{ - DEVCB_CPU_INPUT_LINE("maincpu", 0), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(at_state, get_slave_ack) -}; - -const struct pic8259_interface at_pic8259_slave_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; - - - /************************************************************************* * * PC Speaker related diff --git a/src/mess/machine/b2m.c b/src/mess/machine/b2m.c index 420261e7f3e..a960ba20d86 100644 --- a/src/mess/machine/b2m.c +++ b/src/mess/machine/b2m.c @@ -350,13 +350,6 @@ IRQ_CALLBACK_MEMBER(b2m_state::b2m_irq_callback) return m_pic->acknowledge(); } -const struct pic8259_interface b2m_pic8259_config = -{ - DEVCB_DRIVER_LINE_MEMBER(b2m_state,b2m_pic_set_int_line), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - INTERRUPT_GEN_MEMBER(b2m_state::b2m_vblank_interrupt) { m_vblank_state++; diff --git a/src/mess/machine/bebox.c b/src/mess/machine/bebox.c index 65dca06ee89..d49f5c911ff 100644 --- a/src/mess/machine/bebox.c +++ b/src/mess/machine/bebox.c @@ -506,20 +506,6 @@ READ8_MEMBER(bebox_state::get_slave_ack) return 0x00; } -const struct pic8259_interface bebox_pic8259_master_config = -{ - DEVCB_DRIVER_LINE_MEMBER(bebox_state,bebox_pic8259_master_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(bebox_state,get_slave_ack) -}; - -const struct pic8259_interface bebox_pic8259_slave_config = -{ - DEVCB_DRIVER_LINE_MEMBER(bebox_state,bebox_pic8259_slave_set_int_line), - DEVCB_LINE_GND, - DEVCB_NULL -}; - /************************************* * diff --git a/src/mess/machine/compis.c b/src/mess/machine/compis.c index c5e6d705b79..60c519f4fbf 100644 --- a/src/mess/machine/compis.c +++ b/src/mess/machine/compis.c @@ -1274,20 +1274,6 @@ READ8_MEMBER( compis_state::get_slave_ack ) return 0; } -const struct pic8259_interface compis_pic8259_master_config = -{ - DEVCB_DRIVER_LINE_MEMBER(compis_state, compis_pic8259_master_set_int_line), - DEVCB_LINE_VCC, - DEVCB_DRIVER_MEMBER(compis_state, get_slave_ack) -}; - -const struct pic8259_interface compis_pic8259_slave_config = -{ - DEVCB_DRIVER_LINE_MEMBER(compis_state, compis_pic8259_slave_set_int_line), - DEVCB_LINE_GND, - DEVCB_NULL -}; - IRQ_CALLBACK_MEMBER(compis_state::compis_irq_callback) { diff --git a/src/mess/machine/genpc.c b/src/mess/machine/genpc.c index 529e6545ffe..f64545e45ac 100644 --- a/src/mess/machine/genpc.c +++ b/src/mess/machine/genpc.c @@ -191,14 +191,6 @@ WRITE_LINE_MEMBER(ibm5160_mb_device::pc_cpu_line) m_maincpu->set_input_line(INPUT_LINE_IRQ0, state); } -const struct pic8259_interface pc_pic8259_config = -{ - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_cpu_line), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - - WRITE_LINE_MEMBER(ibm5160_mb_device::pc_speaker_set_spkrdata) { m_pc_spkrdata = state ? 1 : 0; @@ -481,7 +473,7 @@ static MACHINE_CONFIG_FRAGMENT( ibm5160_mb_config ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, pc_dma8237_config ) - MCFG_PIC8259_ADD( "pic8259", pc_pic8259_config ) + MCFG_PIC8259_ADD( "pic8259", DEVWRITELINE(DEVICE_SELF_OWNER, ibm5160_mb_device, pc_cpu_line), VCC, NULL ) MCFG_I8255A_ADD( "ppi8255", pc_ppi8255_interface ) diff --git a/src/mess/machine/irisha.c b/src/mess/machine/irisha.c index b690638ac27..d2b5341e14f 100644 --- a/src/mess/machine/irisha.c +++ b/src/mess/machine/irisha.c @@ -127,13 +127,6 @@ WRITE_LINE_MEMBER(irisha_state::irisha_pic_set_int_line) m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } -const struct pic8259_interface irisha_pic8259_config = -{ - DEVCB_DRIVER_LINE_MEMBER(irisha_state,irisha_pic_set_int_line), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - const struct pit8253_config irisha_pit8253_intf = { { diff --git a/src/mess/machine/mbc55x.c b/src/mess/machine/mbc55x.c index 08cbd0730c7..3afcc6c5009 100644 --- a/src/mess/machine/mbc55x.c +++ b/src/mess/machine/mbc55x.c @@ -109,13 +109,6 @@ WRITE8_MEMBER( mbc55x_state::mbc55x_usart_w ) /* PIC 8259 Configuration */ -const struct pic8259_interface mbc55x_pic8259_config = -{ - DEVCB_CPU_INPUT_LINE(MAINCPU_TAG, INPUT_LINE_IRQ0), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - READ8_MEMBER(mbc55x_state::mbcpic8259_r) { return m_pic->read(space, offset>>1); diff --git a/src/mess/machine/pc.c b/src/mess/machine/pc.c index cc318fd6524..cbbe5891bec 100644 --- a/src/mess/machine/pc.c +++ b/src/mess/machine/pc.c @@ -277,20 +277,6 @@ I8237_INTERFACE( ibm5150_dma8237_config ) }; -/************************************************************* - * - * pic8259 configuration - * - *************************************************************/ - -const struct pic8259_interface ibm5150_pic8259_config = -{ - DEVCB_CPU_INPUT_LINE("maincpu", 0), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - - /************************************************************* * * PCJR pic8259 configuration @@ -325,14 +311,6 @@ WRITE_LINE_MEMBER(pc_state::pcjr_pic8259_set_int_line) } } -const struct pic8259_interface pcjr_pic8259_config = -{ - DEVCB_DRIVER_LINE_MEMBER(pc_state,pcjr_pic8259_set_int_line), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - - /************************************************************************* * * PC Speaker related diff --git a/src/mess/machine/pk8020.c b/src/mess/machine/pk8020.c index fc99e312a26..17aee1160f4 100644 --- a/src/mess/machine/pk8020.c +++ b/src/mess/machine/pk8020.c @@ -946,13 +946,6 @@ WRITE_LINE_MEMBER(pk8020_state::pk8020_pic_set_int_line) m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); } -const struct pic8259_interface pk8020_pic8259_config = -{ - DEVCB_DRIVER_LINE_MEMBER(pk8020_state,pk8020_pic_set_int_line), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - IRQ_CALLBACK_MEMBER(pk8020_state::pk8020_irq_callback) { return m_pic8259->acknowledge(); diff --git a/src/mess/machine/s100_wunderbus.c b/src/mess/machine/s100_wunderbus.c index 5e989ae4c9d..b2768ca69e1 100644 --- a/src/mess/machine/s100_wunderbus.c +++ b/src/mess/machine/s100_wunderbus.c @@ -54,13 +54,6 @@ WRITE_LINE_MEMBER( s100_wunderbus_device::pic_int_w ) m_bus->int_w(state); } -static struct pic8259_interface pic_intf = -{ - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, s100_wunderbus_device, pic_int_w), - DEVCB_LINE_VCC, - DEVCB_NULL -}; - //------------------------------------------------- // ins8250_interface ace1_intf @@ -148,7 +141,7 @@ static UPD1990A_INTERFACE( rtc_intf ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( s100_wunderbus ) - MCFG_PIC8259_ADD(I8259A_TAG, pic_intf) + MCFG_PIC8259_ADD(I8259A_TAG, DEVWRITELINE(DEVICE_SELF_OWNER, s100_wunderbus_device, pic_int_w), VCC, NULL) MCFG_INS8250_ADD(INS8250_1_TAG, ace1_intf, XTAL_18_432MHz/10) MCFG_INS8250_ADD(INS8250_2_TAG, ace2_intf, XTAL_18_432MHz/10) MCFG_INS8250_ADD(INS8250_3_TAG, ace3_intf, XTAL_18_432MHz/10) diff --git a/src/mess/machine/southbridge.c b/src/mess/machine/southbridge.c index e700b5f6e95..e7fab3ef3fe 100644 --- a/src/mess/machine/southbridge.c +++ b/src/mess/machine/southbridge.c @@ -9,19 +9,6 @@ #include "machine/southbridge.h" #include "machine/pc_keyboards.h" -const struct pic8259_interface at_pic8259_master_config = -{ - DEVCB_CPU_INPUT_LINE(":maincpu", 0), - DEVCB_LINE_VCC, - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, southbridge_device, get_slave_ack) -}; - -const struct pic8259_interface at_pic8259_slave_config = -{ - DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir2_w), - DEVCB_LINE_GND, - DEVCB_NULL -}; const struct pit8253_config at_pit8254_config = { @@ -127,8 +114,8 @@ static MACHINE_CONFIG_FRAGMENT( southbridge ) MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, at_dma8237_1_config ) MCFG_I8237_ADD( "dma8237_2", XTAL_14_31818MHz/3, at_dma8237_2_config ) - MCFG_PIC8259_ADD( "pic8259_master", at_pic8259_master_config ) - MCFG_PIC8259_ADD( "pic8259_slave", at_pic8259_slave_config ) + MCFG_PIC8259_ADD( "pic8259_master", INPUTLINE(":maincpu", 0), VCC, DEVREAD8(DEVICE_SELF_OWNER, southbridge_device, get_slave_ack) ) + MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir2_w), GND, NULL ) MCFG_AT_KEYBOARD_CONTROLLER_ADD("keybc", XTAL_12MHz, keyboard_controller_intf) MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)