summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2018-04-04 19:14:38 +1000
committer Vas Crabb <vas@vastheman.com>2018-04-04 19:14:38 +1000
commit49e9c460ef8f2dc9a5f76c84e1d130a3476c6166 (patch)
treec26e8e9565dd658928881670c16f50fb810d7c5c
parentf7ff916fce4e4f15b2fec7b19a1017097a741a4d (diff)
stupid HOLD_LINE (nw)
-rw-r--r--src/devices/cpu/dsp16/dsp16.cpp4
-rw-r--r--src/devices/cpu/m6800/m6801.cpp10
2 files changed, 12 insertions, 2 deletions
diff --git a/src/devices/cpu/dsp16/dsp16.cpp b/src/devices/cpu/dsp16/dsp16.cpp
index b9948495566..957dbce3a67 100644
--- a/src/devices/cpu/dsp16/dsp16.cpp
+++ b/src/devices/cpu/dsp16/dsp16.cpp
@@ -441,6 +441,8 @@ void dsp16_device_base::execute_set_input(int inputnum, int state)
}
m_ick_in = (ASSERT_LINE == state) ? 1U : 0U;
}
+ if (CLEAR_LINE != state)
+ standard_irq_callback(DSP16_ICK_LINE);
break;
case DSP16_ILD_LINE:
if (sio_ild_active())
@@ -461,6 +463,8 @@ void dsp16_device_base::execute_set_input(int inputnum, int state)
}
m_ock_in = (ASSERT_LINE == state) ? 1U : 0U;
}
+ if (CLEAR_LINE != state)
+ standard_irq_callback(DSP16_OCK_LINE);
break;
case DSP16_OLD_LINE:
if (sio_old_active())
diff --git a/src/devices/cpu/m6800/m6801.cpp b/src/devices/cpu/m6800/m6801.cpp
index b380f16417d..5d61d8421b0 100644
--- a/src/devices/cpu/m6800/m6801.cpp
+++ b/src/devices/cpu/m6800/m6801.cpp
@@ -646,9 +646,9 @@ void m6801_cpu_device::execute_set_input(int irqline, int state)
switch (irqline)
{
case M6801_SC1_LINE:
- if (!m_port3_latched && (m_p3csr & M6801_P3CSR_LE))
+ if (!m_sc1_state && (CLEAR_LINE != state))
{
- if (!m_sc1_state && (CLEAR_LINE != state))
+ if (!m_port3_latched && (m_p3csr & M6801_P3CSR_LE))
{
// latch input data to port 3
m_port3_data = (m_io->read_byte(M6801_PORT3) & (m_port3_ddr ^ 0xff)) | (m_port3_data & m_port3_ddr);
@@ -658,8 +658,14 @@ void m6801_cpu_device::execute_set_input(int irqline, int state)
// set IS3 flag bit
m_p3csr |= M6801_P3CSR_IS3_FLAG;
}
+ else
+ {
+ LOGPORT("Not latching Port 3 Data:%s%s", m_port3_latched ? " already latched" : "", (m_p3csr & M6801_P3CSR_LE) ? "" : " LE clear");
+ }
}
m_sc1_state = ASSERT_LINE == state;
+ if (CLEAR_LINE != state)
+ standard_irq_callback(M6801_SC1_LINE); // re-entrant - do it after setting m_sc1_state
break;
case M6801_TIN_LINE: