summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2020-05-02 17:43:41 -0400
committer AJR <ajrhacker@users.noreply.github.com>2020-05-02 17:49:30 -0400
commite9fe64ecdb7c4da51da9e595de75dfaa1db394a2 (patch)
tree014ee30ec807984df7f0072de61677d908b44ea6
parente0a5fca0d59c6f021d0325d5c9ae4732ac913b7b (diff)
i86, i186, i286: Don't automatically clear IRQ state upon acknowledgment
i86, i386, v20, v30 & related CPUs: Add exception hook for debugger gex command
-rw-r--r--src/devices/cpu/i86/i86.cpp6
-rw-r--r--src/devices/cpu/nec/nec.cpp3
-rw-r--r--src/devices/cpu/nec/v25.cpp2
3 files changed, 5 insertions, 6 deletions
diff --git a/src/devices/cpu/i86/i86.cpp b/src/devices/cpu/i86/i86.cpp
index b5af615377a..0233d66ece2 100644
--- a/src/devices/cpu/i86/i86.cpp
+++ b/src/devices/cpu/i86/i86.cpp
@@ -577,12 +577,8 @@ void i8086_common_cpu_device::interrupt(int int_num, int trap)
m_TF = m_IF = 0;
if (int_num == -1)
- {
int_num = standard_irq_callback(0);
-
- m_irq_state = CLEAR_LINE;
- m_pending_irq &= ~INT_IRQ;
- }
+ debugger_exception_hook(int_num);
m_easeg = CS;
uint16_t dest_off = read_word(int_num * 4 + 0);
diff --git a/src/devices/cpu/nec/nec.cpp b/src/devices/cpu/nec/nec.cpp
index e72b5fa4603..e0363f54d40 100644
--- a/src/devices/cpu/nec/nec.cpp
+++ b/src/devices/cpu/nec/nec.cpp
@@ -323,7 +323,8 @@ void nec_common_device::nec_interrupt(unsigned int_num, int/*INTSOURCES*/ source
m_MF = 1;
if (source == INT_IRQ) /* get vector */
- int_num = (standard_irq_callback)(0);
+ int_num = standard_irq_callback(0);
+ debugger_exception_hook(int_num);
dest_off = read_mem_word(int_num*4);
dest_seg = read_mem_word(int_num*4+2);
diff --git a/src/devices/cpu/nec/v25.cpp b/src/devices/cpu/nec/v25.cpp
index e6d948dc5ee..e5f18733719 100644
--- a/src/devices/cpu/nec/v25.cpp
+++ b/src/devices/cpu/nec/v25.cpp
@@ -263,6 +263,8 @@ void v25_common_device::nec_interrupt(unsigned int_num, int /*INTSOURCES*/ sourc
break;
}
+ debugger_exception_hook(int_num);
+
dest_off = read_mem_word(int_num*4);
dest_seg = read_mem_word(int_num*4+2);