summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/spiders.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/spiders.cpp')
-rw-r--r--src/mame/drivers/spiders.cpp45
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))