diff options
Diffstat (limited to 'src/mame/drivers/spiders.cpp')
-rw-r--r-- | src/mame/drivers/spiders.cpp | 45 |
1 files changed, 13 insertions, 32 deletions
diff --git a/src/mame/drivers/spiders.cpp b/src/mame/drivers/spiders.cpp index 64826a32934..e95e5866281 100644 --- a/src/mame/drivers/spiders.cpp +++ b/src/mame/drivers/spiders.cpp @@ -194,8 +194,8 @@ #include "cpu/m6800/m6800.h" #include "cpu/m6809/m6809.h" -#include "machine/6821pia.h" #include "machine/74123.h" +#include "machine/input_merger.h" #include "machine/nvram.h" #include "machine/rescap.h" #include "video/mc6845.h" @@ -221,43 +221,22 @@ /************************************* * - * Interrupt generation - * - *************************************/ - -WRITE_LINE_MEMBER(spiders_state::main_cpu_irq) -{ - pia6821_device *pia1 = machine().device<pia6821_device>("pia1"); - pia6821_device *pia2 = machine().device<pia6821_device>("pia2"); - pia6821_device *pia3 = machine().device<pia6821_device>("pia3"); - int combined_state = pia1->irq_a_state() | pia1->irq_b_state() | - pia2->irq_b_state() | - pia3->irq_a_state() | pia3->irq_b_state(); - - m_maincpu->set_input_line(M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE); -} - - - -/************************************* - * * PIA1 - Main CPU * *************************************/ INTERRUPT_GEN_MEMBER(spiders_state::update_pia_1) { - pia6821_device *pia1 = machine().device<pia6821_device>("pia1"); /* update the different PIA pins from the input ports */ /* CA1 - copy of PA1 (COIN1) */ - pia1->ca1_w(ioport("IN0")->read() & 0x02); + m_pia[0]->ca1_w(ioport("IN0")->read() & 0x02); /* CA2 - copy of PA0 (SERVICE1) */ - pia1->ca2_w(ioport("IN0")->read() & 0x01); + m_pia[0]->ca2_w(ioport("IN0")->read() & 0x01); /* CB1 - (crosshatch) */ - pia1->cb1_w(ioport("XHATCH")->read()); + m_pia[0]->cb1_w(ioport("XHATCH")->read()); /* CB2 - NOT CONNECTED */ } @@ -278,8 +257,7 @@ INTERRUPT_GEN_MEMBER(spiders_state::update_pia_1) WRITE_LINE_MEMBER(spiders_state::ic60_74123_output_changed) { - pia6821_device *pia2 = machine().device<pia6821_device>("pia2"); - pia2->ca1_w(state); + m_pia[1]->ca1_w(state); } /************************************* @@ -568,21 +546,24 @@ MACHINE_CONFIG_START(spiders_state::spiders) MCFG_DEVICE_ADD("pia1", PIA6821, 0) MCFG_PIA_READPA_HANDLER(IOPORT("IN0")) MCFG_PIA_READPB_HANDLER(IOPORT("IN1")) - MCFG_PIA_IRQA_HANDLER(WRITELINE(*this, spiders_state,main_cpu_irq)) - MCFG_PIA_IRQB_HANDLER(WRITELINE(*this, spiders_state,main_cpu_irq)) + MCFG_PIA_IRQA_HANDLER(WRITELINE("mainirq", input_merger_device, in_w<0>)) + MCFG_PIA_IRQB_HANDLER(WRITELINE("mainirq", input_merger_device, in_w<1>)) MCFG_DEVICE_ADD("pia2", PIA6821, 0) MCFG_PIA_READPA_HANDLER(READ8(*this, spiders_state,gfx_rom_r)) MCFG_PIA_WRITEPB_HANDLER(WRITE8(*this, spiders_state,gfx_rom_intf_w)) MCFG_PIA_CB2_HANDLER(WRITELINE(*this, spiders_state,flipscreen_w)) MCFG_PIA_IRQA_HANDLER(INPUTLINE("maincpu", M6809_FIRQ_LINE)) - MCFG_PIA_IRQB_HANDLER(WRITELINE(*this, spiders_state,main_cpu_irq)) + MCFG_PIA_IRQB_HANDLER(WRITELINE("mainirq", input_merger_device, in_w<2>)) MCFG_DEVICE_ADD("pia3", PIA6821, 0) MCFG_PIA_WRITEPA_HANDLER(WRITE8(*this, spiders_state, spiders_audio_ctrl_w)) MCFG_PIA_WRITEPB_HANDLER(WRITE8(*this, spiders_state, spiders_audio_command_w)) - MCFG_PIA_IRQA_HANDLER(WRITELINE(*this, spiders_state,main_cpu_irq)) - MCFG_PIA_IRQB_HANDLER(WRITELINE(*this, spiders_state,main_cpu_irq)) + MCFG_PIA_IRQA_HANDLER(WRITELINE("mainirq", input_merger_device, in_w<3>)) + MCFG_PIA_IRQB_HANDLER(WRITELINE("mainirq", input_merger_device, in_w<4>)) + + MCFG_INPUT_MERGER_ANY_HIGH("mainirq") + MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", M6809_IRQ_LINE)) MCFG_DEVICE_ADD("pia4", PIA6821, 0) MCFG_PIA_WRITEPA_HANDLER(WRITE8(*this, spiders_state, spiders_audio_a_w)) |