summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Dirk Best <mail@dirk-best.de>2015-05-25 13:22:24 +0200
committer Dirk Best <mail@dirk-best.de>2015-05-25 13:22:47 +0200
commitb7d9bd0f71d61507110a89a5acdf08fdd73ea775 (patch)
treef598254086d672f842e468c12029e1121a60f94f
parent3165d460a7739c1af91a6fbe596dbf439625329a (diff)
cgenie floppy: simplify interrupt logic
-rw-r--r--src/emu/bus/cgenie/expansion/floppy.c25
-rw-r--r--src/emu/bus/cgenie/expansion/floppy.h2
2 files changed, 7 insertions, 20 deletions
diff --git a/src/emu/bus/cgenie/expansion/floppy.c b/src/emu/bus/cgenie/expansion/floppy.c
index 6773afa895c..4101ae22040 100644
--- a/src/emu/bus/cgenie/expansion/floppy.c
+++ b/src/emu/bus/cgenie/expansion/floppy.c
@@ -110,7 +110,6 @@ cgenie_fdc_device::cgenie_fdc_device(const machine_config &mconfig, const char *
m_floppy3(*this, "fd1793:3"),
m_socket(*this, "socket"),
m_floppy(NULL),
- m_timer_irq_off(NULL),
m_irq_status(0)
{
}
@@ -121,7 +120,6 @@ cgenie_fdc_device::cgenie_fdc_device(const machine_config &mconfig, const char *
void cgenie_fdc_device::device_start()
{
- m_timer_irq_off = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cgenie_fdc_device::irq_off_callback), this));
}
//-------------------------------------------------
@@ -153,27 +151,18 @@ void cgenie_fdc_device::device_reset()
READ8_MEMBER( cgenie_fdc_device::irq_r )
{
- return m_irq_status;
-}
+ UINT8 data = m_irq_status;
-void cgenie_fdc_device::update_irq()
-{
- m_slot->int_w(m_irq_status ? 1 : 0);
+ m_irq_status &= ~IRQ_TIMER;
+ m_slot->int_w(m_irq_status ? ASSERT_LINE : CLEAR_LINE);
+
+ return data;
}
TIMER_DEVICE_CALLBACK_MEMBER( cgenie_fdc_device::timer_callback )
{
m_irq_status |= IRQ_TIMER;
- update_irq();
-
- // timer to turn it off again
- m_timer_irq_off->adjust(attotime::from_usec(250));
-}
-
-TIMER_CALLBACK_MEMBER( cgenie_fdc_device::irq_off_callback )
-{
- m_irq_status &= ~IRQ_TIMER;
- update_irq();
+ m_slot->int_w(ASSERT_LINE);
}
DEVICE_IMAGE_LOAD_MEMBER( cgenie_fdc_device, socket_load )
@@ -202,7 +191,7 @@ WRITE_LINE_MEMBER( cgenie_fdc_device::intrq_w )
else
m_irq_status &= ~IRQ_WDC;
- update_irq();
+ m_slot->int_w(m_irq_status ? ASSERT_LINE : CLEAR_LINE);
}
WRITE8_MEMBER( cgenie_fdc_device::select_w )
diff --git a/src/emu/bus/cgenie/expansion/floppy.h b/src/emu/bus/cgenie/expansion/floppy.h
index 254b4c54d71..ed51dd22efe 100644
--- a/src/emu/bus/cgenie/expansion/floppy.h
+++ b/src/emu/bus/cgenie/expansion/floppy.h
@@ -30,7 +30,6 @@ public:
cgenie_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
TIMER_DEVICE_CALLBACK_MEMBER(timer_callback);
- TIMER_CALLBACK_MEMBER( irq_off_callback );
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(socket_load);
@@ -65,7 +64,6 @@ private:
floppy_image_device *m_floppy;
- emu_timer *m_timer_irq_off;
UINT8 m_irq_status;
};