diff options
Diffstat (limited to 'src/devices/cpu/m6502/m5074x.cpp')
| -rw-r--r-- | src/devices/cpu/m6502/m5074x.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/devices/cpu/m6502/m5074x.cpp b/src/devices/cpu/m6502/m5074x.cpp index 3295f2d28a9..d61ed050a93 100644 --- a/src/devices/cpu/m6502/m5074x.cpp +++ b/src/devices/cpu/m6502/m5074x.cpp @@ -167,11 +167,14 @@ void m5074x_device::execute_set_input(int inputnum, int state) switch (inputnum) { case M5074X_INT1_LINE: - // FIXME: edge-triggered - if (state == ASSERT_LINE) + if ((state == ASSERT_LINE) && !(m_intctrl & IRQ_INTREQ)) { m_intctrl |= IRQ_INTREQ; } + else if ((state == CLEAR_LINE) && (m_intctrl & IRQ_INTREQ)) + { + m_intctrl &= ~IRQ_INTREQ; + } break; } @@ -600,19 +603,25 @@ void m50753_device::execute_set_input(int inputnum, int state) switch (inputnum) { case M50753_INT1_LINE: - // FIXME: edge-triggered - if (state == ASSERT_LINE) + if ((state == ASSERT_LINE) && !(m_intctrl & IRQ_50753_INT1REQ)) { m_intctrl |= IRQ_50753_INT1REQ; } + else if ((state == CLEAR_LINE) && (m_intctrl & IRQ_50753_INT1REQ)) + { + m_intctrl &= ~IRQ_50753_INT1REQ; + } break; case M50753_INT2_LINE: - // FIXME: edge-triggered - if (state == ASSERT_LINE) + if ((state == ASSERT_LINE) && !(m_intctrl & IRQ_50753_INT2REQ)) { m_intctrl |= IRQ_50753_INT2REQ; } + else if ((state == CLEAR_LINE) && (m_intctrl & IRQ_50753_INT2REQ)) + { + m_intctrl &= ~IRQ_50753_INT2REQ; + } break; } |
