summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
author tim lindner <tlindner@macmess.org>2020-11-12 20:53:25 -0800
committer GitHub <noreply@github.com>2020-11-13 15:53:25 +1100
commitc3264ca803b5e29ee34bacffbaae314f19c9ac37 (patch)
tree92aab555990c2073d2020f5d6cf657a8843e9a28 /src
parentfe9ac15ca9f027d0eb5e21aa5496e3d6fa674e45 (diff)
coco12.cpp, coco3.cpp, dragon.cpp: Removed IRQ trampolines from CoCo driver family. (#7393)
* Also fixed dragon 32 parallel port.
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/coco12.cpp11
-rw-r--r--src/mame/drivers/coco3.cpp19
-rw-r--r--src/mame/drivers/dragon.cpp27
-rw-r--r--src/mame/includes/coco.h16
-rw-r--r--src/mame/includes/coco3.h7
-rw-r--r--src/mame/includes/dgnalpha.h9
-rw-r--r--src/mame/includes/dragon.h2
-rw-r--r--src/mame/machine/coco.cpp98
-rw-r--r--src/mame/machine/coco3.cpp22
-rw-r--r--src/mame/machine/dgnalpha.cpp43
-rw-r--r--src/mame/machine/dragon.cpp2
11 files changed, 45 insertions, 211 deletions
diff --git a/src/mame/drivers/coco12.cpp b/src/mame/drivers/coco12.cpp
index df8a8c60d12..210e81f4e2d 100644
--- a/src/mame/drivers/coco12.cpp
+++ b/src/mame/drivers/coco12.cpp
@@ -492,13 +492,16 @@ void coco12_state::coco(machine_config &config)
m_maincpu->set_dasm_override(FUNC(coco_state::dasm_override));
// devices
+ INPUT_MERGER_ANY_HIGH(config, m_irqs).output_handler().set_inputline(m_maincpu, M6809_IRQ_LINE);
+ INPUT_MERGER_ANY_HIGH(config, m_firqs).output_handler().set_inputline(m_maincpu, M6809_FIRQ_LINE);
+
pia6821_device &pia0(PIA6821(config, PIA0_TAG, 0));
pia0.writepa_handler().set(FUNC(coco_state::pia0_pa_w));
pia0.writepb_handler().set(FUNC(coco_state::pia0_pb_w));
pia0.ca2_handler().set(FUNC(coco_state::pia0_ca2_w));
pia0.cb2_handler().set(FUNC(coco_state::pia0_cb2_w));
- pia0.irqa_handler().set(FUNC(coco_state::pia0_irq_a));
- pia0.irqb_handler().set(FUNC(coco_state::pia0_irq_b));
+ pia0.irqa_handler().set(m_irqs, FUNC(input_merger_device::in_w<0>));
+ pia0.irqb_handler().set(m_irqs, FUNC(input_merger_device::in_w<1>));
pia6821_device &pia1(PIA6821(config, PIA1_TAG, 0));
pia1.readpa_handler().set(FUNC(coco_state::pia1_pa_r));
@@ -507,8 +510,8 @@ void coco12_state::coco(machine_config &config)
pia1.writepb_handler().set(FUNC(coco_state::pia1_pb_w));
pia1.ca2_handler().set(FUNC(coco_state::pia1_ca2_w));
pia1.cb2_handler().set(FUNC(coco_state::pia1_cb2_w));
- pia1.irqa_handler().set(FUNC(coco_state::pia1_firq_a));
- pia1.irqb_handler().set(FUNC(coco_state::pia1_firq_b));
+ pia1.irqa_handler().set(m_firqs, FUNC(input_merger_device::in_w<0>));
+ pia1.irqb_handler().set(m_firqs, FUNC(input_merger_device::in_w<1>));
SAM6883(config, m_sam, XTAL(14'318'181), m_maincpu);
m_sam->set_addrmap(0, &coco12_state::coco_ram);
diff --git a/src/mame/drivers/coco3.cpp b/src/mame/drivers/coco3.cpp
index f105e8a8437..ff8fbdc74c1 100644
--- a/src/mame/drivers/coco3.cpp
+++ b/src/mame/drivers/coco3.cpp
@@ -262,13 +262,16 @@ void coco3_state::coco3(machine_config &config)
m_maincpu->set_dasm_override(FUNC(coco_state::dasm_override));
// devices
+ INPUT_MERGER_ANY_HIGH(config, m_irqs).output_handler().set_inputline(m_maincpu, M6809_IRQ_LINE);
+ INPUT_MERGER_ANY_HIGH(config, m_firqs).output_handler().set_inputline(m_maincpu, M6809_FIRQ_LINE);
+
pia6821_device &pia0(PIA6821(config, PIA0_TAG, 0));
pia0.writepa_handler().set(FUNC(coco_state::pia0_pa_w));
pia0.writepb_handler().set(FUNC(coco_state::pia0_pb_w));
pia0.ca2_handler().set(FUNC(coco_state::pia0_ca2_w));
pia0.cb2_handler().set(FUNC(coco_state::pia0_cb2_w));
- pia0.irqa_handler().set(FUNC(coco_state::pia0_irq_a));
- pia0.irqb_handler().set(FUNC(coco_state::pia0_irq_b));
+ pia0.irqa_handler().set(m_irqs, FUNC(input_merger_device::in_w<0>));
+ pia0.irqb_handler().set(m_irqs, FUNC(input_merger_device::in_w<1>));
pia6821_device &pia1(PIA6821(config, PIA1_TAG, 0));
pia1.readpa_handler().set(FUNC(coco_state::pia1_pa_r));
@@ -277,8 +280,8 @@ void coco3_state::coco3(machine_config &config)
pia1.writepb_handler().set(FUNC(coco_state::pia1_pb_w));
pia1.ca2_handler().set(FUNC(coco_state::pia1_ca2_w));
pia1.cb2_handler().set(FUNC(coco_state::pia1_cb2_w));
- pia1.irqa_handler().set(FUNC(coco_state::pia1_firq_a));
- pia1.irqb_handler().set(FUNC(coco_state::pia1_firq_b));
+ pia1.irqa_handler().set(m_firqs, FUNC(input_merger_device::in_w<0>));
+ pia1.irqb_handler().set(m_firqs, FUNC(input_merger_device::in_w<1>));
// Becker Port device
COCO_DWSOCK(config, DWSOCK_TAG, 0);
@@ -309,8 +312,8 @@ void coco3_state::coco3(machine_config &config)
m_gime->set_screen(COMPOSITE_SCREEN_TAG);
m_gime->hsync_wr_callback().set(PIA0_TAG, FUNC(pia6821_device::ca1_w));
m_gime->fsync_wr_callback().set(PIA0_TAG, FUNC(pia6821_device::cb1_w));
- m_gime->irq_wr_callback().set(FUNC(coco3_state::gime_irq_w));
- m_gime->firq_wr_callback().set(FUNC(coco3_state::gime_firq_w));
+ m_gime->irq_wr_callback().set(m_irqs, FUNC(input_merger_device::in_w<2>));
+ m_gime->firq_wr_callback().set(m_firqs, FUNC(input_merger_device::in_w<2>));
m_gime->floating_bus_rd_callback().set(FUNC(coco3_state::floating_bus_r));
// composite monitor
@@ -351,8 +354,8 @@ void coco3_state::coco3p(machine_config &config)
m_gime->set_screen(COMPOSITE_SCREEN_TAG);
m_gime->hsync_wr_callback().set(PIA0_TAG, FUNC(pia6821_device::ca1_w));
m_gime->fsync_wr_callback().set(PIA0_TAG, FUNC(pia6821_device::cb1_w));
- m_gime->irq_wr_callback().set(FUNC(coco3_state::gime_irq_w));
- m_gime->firq_wr_callback().set(FUNC(coco3_state::gime_firq_w));
+ m_gime->irq_wr_callback().set(m_irqs, FUNC(input_merger_device::in_w<2>));
+ m_gime->firq_wr_callback().set(m_firqs, FUNC(input_merger_device::in_w<2>));
m_gime->floating_bus_rd_callback().set(FUNC(coco3_state::floating_bus_r));
}
diff --git a/src/mame/drivers/dragon.cpp b/src/mame/drivers/dragon.cpp
index ad72ad2e5c4..d3c7064c42a 100644
--- a/src/mame/drivers/dragon.cpp
+++ b/src/mame/drivers/dragon.cpp
@@ -262,13 +262,16 @@ void dragon_state::dragon_base(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &dragon_state::dragon_mem);
// devices
+ INPUT_MERGER_ANY_HIGH(config, m_irqs).output_handler().set_inputline(m_maincpu, M6809_IRQ_LINE);
+ INPUT_MERGER_ANY_HIGH(config, m_firqs).output_handler().set_inputline(m_maincpu, M6809_FIRQ_LINE);
+
pia6821_device &pia0(PIA6821(config, PIA0_TAG, 0));
pia0.writepa_handler().set(FUNC(coco_state::pia0_pa_w));
pia0.writepb_handler().set(FUNC(coco_state::pia0_pb_w));
pia0.ca2_handler().set(FUNC(coco_state::pia0_ca2_w));
pia0.cb2_handler().set(FUNC(coco_state::pia0_cb2_w));
- pia0.irqa_handler().set(FUNC(coco_state::pia0_irq_a));
- pia0.irqb_handler().set(FUNC(coco_state::pia0_irq_b));
+ pia0.irqa_handler().set(m_irqs, FUNC(input_merger_device::in_w<0>));
+ pia0.irqb_handler().set(m_irqs, FUNC(input_merger_device::in_w<1>));
pia6821_device &pia1(PIA6821(config, PIA1_TAG, 0));
pia1.readpa_handler().set(FUNC(coco_state::pia1_pa_r));
@@ -277,8 +280,8 @@ void dragon_state::dragon_base(machine_config &config)
pia1.writepb_handler().set(FUNC(coco_state::pia1_pb_w));
pia1.ca2_handler().set(FUNC(coco_state::pia1_ca2_w));
pia1.cb2_handler().set(FUNC(coco_state::pia1_cb2_w));
- pia1.irqa_handler().set(FUNC(coco_state::pia1_firq_a));
- pia1.irqb_handler().set(FUNC(coco_state::pia1_firq_b));
+ pia1.irqa_handler().set(m_firqs, FUNC(input_merger_device::in_w<0>));
+ pia1.irqb_handler().set(m_firqs, FUNC(input_merger_device::in_w<1>));
SAM6883(config, m_sam, 14.218_MHz_XTAL, m_maincpu);
m_sam->set_addrmap(0, &dragon_state::coco_ram);
@@ -351,7 +354,7 @@ void dragon64_state::dragon64(machine_config &config)
// acia
mos6551_device &acia(MOS6551(config, "acia", 0));
acia.set_xtal(1.8432_MHz_XTAL);
- acia.irq_handler().set(FUNC(dragon64_state::acia_irq));
+ acia.irq_handler().set(m_irqs, FUNC(input_merger_device::in_w<2>));
acia.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr));
@@ -365,11 +368,6 @@ void dragon64_state::dragon64(machine_config &config)
SOFTWARE_LIST(config, "dragon_os9_list").set_original("dragon_os9");
}
-WRITE_LINE_MEMBER( dragon64_state::acia_irq )
-{
- m_maincpu->set_input_line(M6809_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
-}
-
void dragon64_state::dragon64h(machine_config &config)
{
dragon64(config);
@@ -418,10 +416,13 @@ void dragon_alpha_state::dgnalpha(machine_config &config)
sam().set_addrmap(4, &dragon_alpha_state::d64_io0);
sam().set_addrmap(5, &dragon_alpha_state::dgnalpha_io1);
+ // input merger
+ INPUT_MERGER_ANY_HIGH(config, m_nmis).output_handler().set_inputline(m_maincpu, INPUT_LINE_NMI);
+
// cartridge
cococart_slot_device &cartslot(COCOCART_SLOT(config, CARTRIDGE_TAG, DERIVED_CLOCK(1, 1), dragon_cart, nullptr));
cartslot.cart_callback().set([this] (int state) { cart_w(state != 0); }); // lambda because name is overloaded
- cartslot.nmi_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ cartslot.nmi_callback().set(m_nmis, FUNC(input_merger_device::in_w<0>));
cartslot.halt_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
// acia
@@ -447,8 +448,8 @@ void dragon_alpha_state::dgnalpha(machine_config &config)
// pia 2
pia6821_device &pia2(PIA6821(config, PIA2_TAG, 0));
pia2.writepa_handler().set(FUNC(dragon_alpha_state::pia2_pa_w));
- pia2.irqa_handler().set(FUNC(dragon_alpha_state::pia2_firq_a));
- pia2.irqb_handler().set(FUNC(dragon_alpha_state::pia2_firq_b));
+ pia2.irqa_handler().set(m_firqs, FUNC(input_merger_device::in_w<2>));
+ pia2.irqb_handler().set(m_firqs, FUNC(input_merger_device::in_w<3>));
// software lists
SOFTWARE_LIST(config, "dgnalpha_flop_list").set_original("dgnalpha_flop");
diff --git a/src/mame/includes/coco.h b/src/mame/includes/coco.h
index 6010e3f81d1..433c5c53121 100644
--- a/src/mame/includes/coco.h
+++ b/src/mame/includes/coco.h
@@ -24,7 +24,7 @@
#include "machine/bankdev.h"
#include "sound/dac.h"
#include "screen.h"
-
+#include "machine/input_merger.h"
//**************************************************************************
// MACROS / CONSTANTS
@@ -102,8 +102,6 @@ public:
void pia0_pb_w(uint8_t data);
DECLARE_WRITE_LINE_MEMBER( pia0_ca2_w );
DECLARE_WRITE_LINE_MEMBER( pia0_cb2_w );
- DECLARE_WRITE_LINE_MEMBER( pia0_irq_a );
- DECLARE_WRITE_LINE_MEMBER( pia0_irq_b );
// PIA1
uint8_t pia1_pa_r();
@@ -112,8 +110,6 @@ public:
void pia1_pb_w(uint8_t data);
DECLARE_WRITE_LINE_MEMBER( pia1_ca2_w );
DECLARE_WRITE_LINE_MEMBER( pia1_cb2_w );
- DECLARE_WRITE_LINE_MEMBER( pia1_firq_a );
- DECLARE_WRITE_LINE_MEMBER( pia1_firq_b );
// floating bus & "space"
uint8_t floating_bus_r() { return floating_bus_read(); }
@@ -139,12 +135,6 @@ protected:
virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
- // interrupts
- virtual bool firq_get_line(void);
- virtual bool irq_get_line(void);
- void recalculate_irq(void);
- void recalculate_firq(void);
-
// changed handlers
virtual void pia1_pa_changed(uint8_t data);
virtual void pia1_pb_changed(uint8_t data);
@@ -242,7 +232,9 @@ protected:
optional_device<coco_vhd_image_device> m_vhd_0;
optional_device<coco_vhd_image_device> m_vhd_1;
optional_device<beckerport_device> m_beckerport;
- optional_ioport m_beckerportconfig;
+ optional_ioport m_beckerportconfig;
+ required_device<input_merger_device> m_irqs;
+ required_device<input_merger_device> m_firqs;
// input ports
required_ioport_array<7> m_keyboard;
diff --git a/src/mame/includes/coco3.h b/src/mame/includes/coco3.h
index de58fc3d807..3de83a58a48 100644
--- a/src/mame/includes/coco3.h
+++ b/src/mame/includes/coco3.h
@@ -44,9 +44,6 @@ public:
virtual uint8_t ff40_read(offs_t offset) override;
virtual void ff40_write(offs_t offset, uint8_t data) override;
- DECLARE_WRITE_LINE_MEMBER(gime_firq_w) { recalculate_firq(); }
- DECLARE_WRITE_LINE_MEMBER(gime_irq_w) { recalculate_irq(); }
-
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void coco3p(machine_config &config);
@@ -57,10 +54,6 @@ public:
protected:
virtual void update_cart_base(uint8_t *cart_base) override;
- // interrupts
- virtual bool firq_get_line(void) override;
- virtual bool irq_get_line(void) override;
-
// miscellaneous
virtual void update_keyboard_input(uint8_t value) override;
virtual void cart_w(bool line) override;
diff --git a/src/mame/includes/dgnalpha.h b/src/mame/includes/dgnalpha.h
index 8cfb8bb1b88..4bcbe623073 100644
--- a/src/mame/includes/dgnalpha.h
+++ b/src/mame/includes/dgnalpha.h
@@ -44,7 +44,8 @@ public:
m_pia_2(*this, PIA2_TAG),
m_ay8912(*this, AY8912_TAG),
m_fdc(*this, WD2797_TAG),
- m_floppy(*this, WD2797_TAG ":%u", 0U)
+ m_floppy(*this, WD2797_TAG ":%u", 0U),
+ m_nmis(*this, "nmis")
{
}
@@ -55,8 +56,6 @@ private:
/* pia2 */
void pia2_pa_w(uint8_t data);
- DECLARE_WRITE_LINE_MEMBER( pia2_firq_a );
- DECLARE_WRITE_LINE_MEMBER( pia2_firq_b );
/* psg */
uint8_t psg_porta_read();
@@ -70,15 +69,13 @@ private:
virtual void device_start(void) override;
virtual void device_reset(void) override;
- /* interrupts */
- virtual bool firq_get_line(void) override;
-
void dgnalpha_io1(address_map &map);
required_device<pia6821_device> m_pia_2;
required_device<ay8912_device> m_ay8912;
required_device<wd2797_device> m_fdc;
required_device_array<floppy_connector, 4> m_floppy;
+ required_device<input_merger_device> m_nmis;
/* modem */
uint8_t modem_r(offs_t offset);
diff --git a/src/mame/includes/dragon.h b/src/mame/includes/dragon.h
index 277b3198543..fdc449ae6f8 100644
--- a/src/mame/includes/dragon.h
+++ b/src/mame/includes/dragon.h
@@ -69,7 +69,7 @@ public:
void dragon64(machine_config &config);
void tanodr64h(machine_config &config);
void dragon64h(machine_config &config);
- DECLARE_WRITE_LINE_MEMBER( acia_irq );
+
protected:
void d64_rom0(address_map &map);
void d64_rom1(address_map &map);
diff --git a/src/mame/machine/coco.cpp b/src/mame/machine/coco.cpp
index c6f5f536386..18bcfd9be21 100644
--- a/src/mame/machine/coco.cpp
+++ b/src/mame/machine/coco.cpp
@@ -98,6 +98,8 @@ coco_state::coco_state(const machine_config &mconfig, device_type type, const ch
m_vhd_1(*this, VHD1_TAG),
m_beckerport(*this, DWSOCK_TAG),
m_beckerportconfig(*this, BECKERPORT_TAG),
+ m_irqs(*this, "irqs"),
+ m_firqs(*this, "firqs"),
m_keyboard(*this, "row%u", 0),
m_joystick_type_control(*this, CTRL_SEL_TAG),
m_joystick_hires_control(*this, HIRES_INTF_TAG),
@@ -374,29 +376,6 @@ WRITE_LINE_MEMBER( coco_state::pia0_cb2_w )
}
-
-//-------------------------------------------------
-// pia0_irq_a
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( coco_state::pia0_irq_a )
-{
- recalculate_irq();
-}
-
-
-
-//-------------------------------------------------
-// pia0_irq_b
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( coco_state::pia0_irq_b )
-{
- recalculate_irq();
-}
-
-
-
/***************************************************************************
PIA1 ($FF20-$FF3F) (Chip U4)
@@ -522,29 +501,6 @@ WRITE_LINE_MEMBER( coco_state::pia1_cb2_w )
}
-
-//-------------------------------------------------
-// pia1_firq_a
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( coco_state::pia1_firq_a )
-{
- recalculate_firq();
-}
-
-
-
-//-------------------------------------------------
-// pia1_firq_b
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( coco_state::pia1_firq_b )
-{
- recalculate_firq();
-}
-
-
-
/***************************************************************************
CPU INTERRUPTS
@@ -565,56 +521,6 @@ WRITE_LINE_MEMBER( coco_state::pia1_firq_b )
***************************************************************************/
-//-------------------------------------------------
-// irq_get_line - gets the value of the FIRQ line
-// passed into the CPU
-//-------------------------------------------------
-
-bool coco_state::irq_get_line(void)
-{
- return pia_0().irq_a_state() || pia_0().irq_b_state();
-}
-
-
-
-//-------------------------------------------------
-// recalculate_irq
-//-------------------------------------------------
-
-void coco_state::recalculate_irq(void)
-{
- bool line = irq_get_line();
- if (LOG_INTERRUPTS)
- logerror("recalculate_irq(): line=%d\n", line ? 1 : 0);
- m_maincpu->set_input_line(M6809_IRQ_LINE, line ? ASSERT_LINE : CLEAR_LINE);
-}
-
-
-
-//-------------------------------------------------
-// firq_get_line - gets the value of the FIRQ line
-// passed into the CPU
-//-------------------------------------------------
-
-bool coco_state::firq_get_line(void)
-{
- return pia_1().irq_a_state() || pia_1().irq_b_state();
-}
-
-
-
-//-------------------------------------------------
-// recalculate_firq
-//-------------------------------------------------
-
-void coco_state::recalculate_firq(void)
-{
- bool line = firq_get_line();
- if (LOG_INTERRUPTS)
- logerror("recalculate_firq(): line=%d\n", line ? 1 : 0);
- m_maincpu->set_input_line(M6809_FIRQ_LINE, line ? ASSERT_LINE : CLEAR_LINE);
-}
-
/***************************************************************************
diff --git a/src/mame/machine/coco3.cpp b/src/mame/machine/coco3.cpp
index c5f11097566..b49d79ef2b0 100644
--- a/src/mame/machine/coco3.cpp
+++ b/src/mame/machine/coco3.cpp
@@ -87,28 +87,6 @@ void coco3_state::ff40_write(offs_t offset, uint8_t data)
//-------------------------------------------------
-// firq_get_line
-//-------------------------------------------------
-
-bool coco3_state::firq_get_line(void)
-{
- return coco_state::firq_get_line() || m_gime->firq_r();
-}
-
-
-
-//-------------------------------------------------
-// irq_get_line
-//-------------------------------------------------
-
-bool coco3_state::irq_get_line(void)
-{
- return coco_state::irq_get_line() || m_gime->irq_r();
-}
-
-
-
-//-------------------------------------------------
// update_keyboard_input
//-------------------------------------------------
diff --git a/src/mame/machine/dgnalpha.cpp b/src/mame/machine/dgnalpha.cpp
index 599b21501d8..72b3d1a5b95 100644
--- a/src/mame/machine/dgnalpha.cpp
+++ b/src/mame/machine/dgnalpha.cpp
@@ -91,7 +91,6 @@ void dragon_alpha_state::device_reset(void)
}
-
/***************************************************************************
MODEM
***************************************************************************/
@@ -166,44 +165,6 @@ void dragon_alpha_state::pia2_pa_w(uint8_t data)
-//-------------------------------------------------
-// pia1_firq_a
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( dragon_alpha_state::pia2_firq_a )
-{
- recalculate_firq();
-}
-
-
-
-//-------------------------------------------------
-// pia1_firq_b
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( dragon_alpha_state::pia2_firq_b )
-{
- recalculate_firq();
-}
-
-
-
-/***************************************************************************
- CPU INTERRUPTS
-***************************************************************************/
-
-//-------------------------------------------------
-// firq_get_line - gets the value of the FIRQ line
-// passed into the CPU
-//-------------------------------------------------
-
-bool dragon_alpha_state::firq_get_line(void)
-{
- return dragon_state::firq_get_line() || m_pia_2->irq_a_state() || m_pia_2->irq_b_state();
-}
-
-
-
/***************************************************************************
AY8912
***************************************************************************/
@@ -259,11 +220,11 @@ WRITE_LINE_MEMBER( dragon_alpha_state::fdc_intrq_w )
if (state)
{
if (m_pia_2->ca2_output_z())
- m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
+ m_nmis->in_w<1>(1);
}
else
{
- m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
+ m_nmis->in_w<1>(0);
}
}
diff --git a/src/mame/machine/dragon.cpp b/src/mame/machine/dragon.cpp
index d3a8abed97e..2be201ac350 100644
--- a/src/mame/machine/dragon.cpp
+++ b/src/mame/machine/dragon.cpp
@@ -57,7 +57,7 @@ void dragon_state::pia1_pa_changed(uint8_t data)
/* if strobe bit is high send data from pia0 port b to dragon parallel printer */
if (data & 0x02)
{
- uint8_t output = pia_1().b_output();
+ uint8_t output = pia_0().b_output();
m_printer->output(output);
}
}