summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m6502/m5074x.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/m6502/m5074x.cpp')
-rw-r--r--src/devices/cpu/m6502/m5074x.cpp21
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;
}