diff options
author | 2017-10-25 16:22:40 +0200 | |
---|---|---|
committer | 2017-10-25 16:22:40 +0200 | |
commit | a6b76aab2f65744c0367a9908c96f3f674803c42 (patch) | |
tree | dc1d489bf18040f0ad28ce2b26dfa69220b6b46e | |
parent | 65d697d94d4b3beab0547a40243c5f546c548b7b (diff) |
hp9895: 2 bugs fixed: NMI handling & secondary addressing in PHI chip
-rw-r--r-- | src/devices/bus/ieee488/hp9895.cpp | 4 | ||||
-rw-r--r-- | src/devices/machine/phi.cpp | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/devices/bus/ieee488/hp9895.cpp b/src/devices/bus/ieee488/hp9895.cpp index a3a52535f23..2d2d623aadf 100644 --- a/src/devices/bus/ieee488/hp9895.cpp +++ b/src/devices/bus/ieee488/hp9895.cpp @@ -484,6 +484,10 @@ WRITE8_MEMBER(hp9895_device::phi_dio_w) WRITE_LINE_MEMBER(hp9895_device::phi_int_w) { m_cpu->set_input_line(INPUT_LINE_NMI , state); + if (state) { + // Ensure the event queue is emptied before executing any other instruction + m_cpu->yield(); + } } READ8_MEMBER(hp9895_device::phi_reg_r) diff --git a/src/devices/machine/phi.cpp b/src/devices/machine/phi.cpp index 42cede7e6d8..e86a7bb72ce 100644 --- a/src/devices/machine/phi.cpp +++ b/src/devices/machine/phi.cpp @@ -1246,7 +1246,7 @@ bool phi_device::if_cmd_received(uint8_t byte) } } else { // command is a secondary address - if (m_t_state == PHI_T_ID1 && my_addr) { + if (m_t_state == PHI_T_ID1 && (m_l_state == PHI_L_LADS) == !!lon_msg() && my_addr) { // Start IDENTIFY sequence m_t_state = PHI_T_ID2; } else if (m_t_state >= PHI_T_ID2 && m_t_state <= PHI_T_ID6 && !my_addr) { |