diff options
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 |
commit | b7d9bd0f71d61507110a89a5acdf08fdd73ea775 (patch) | |
tree | f598254086d672f842e468c12029e1121a60f94f | |
parent | 3165d460a7739c1af91a6fbe596dbf439625329a (diff) |
cgenie floppy: simplify interrupt logic
-rw-r--r-- | src/emu/bus/cgenie/expansion/floppy.c | 25 | ||||
-rw-r--r-- | src/emu/bus/cgenie/expansion/floppy.h | 2 |
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; }; |