diff options
author | 2012-06-10 08:25:30 +0000 | |
---|---|---|
committer | 2012-06-10 08:25:30 +0000 | |
commit | 355e4eca49fc750f5dc15a8a70858c02423551ad (patch) | |
tree | 2962911c794e9cdb0d3f3c6f91c0f73d91da8cbe /src/emu/machine | |
parent | d474a051f45bd1d94392fa0daa520c410bfd44ce (diff) |
Sync with MESS (nw)
Diffstat (limited to 'src/emu/machine')
-rw-r--r-- | src/emu/machine/am9517a.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/emu/machine/am9517a.c b/src/emu/machine/am9517a.c index 77c42689d63..4eaf6e00911 100644 --- a/src/emu/machine/am9517a.c +++ b/src/emu/machine/am9517a.c @@ -12,7 +12,6 @@ TODO: - memory-to-memory transfer - - cascade mode - external EOP */ @@ -352,6 +351,8 @@ inline void am9517a_device::end_of_process() // signal end of process set_eop(0); set_hreq(0); + + m_current_channel = -1; set_dack(); m_state = STATE_SI; @@ -504,10 +505,20 @@ void am9517a_device::execute_run() if (m_hack) { - m_state = get_state1(true); + m_state = (MODE_MASK == MODE_CASCADE) ? STATE_SC : get_state1(true); } break; + case STATE_SC: + if (!is_request_active(m_current_channel)) + { + m_current_channel = -1; + m_state = STATE_SI; + } + + set_dack(); + break; + case STATE_S1: m_state = STATE_S2; break; @@ -707,7 +718,7 @@ WRITE8_MEMBER( am9517a_device::write ) case REGISTER_COMMAND: m_command = data; - if (LOG) logerror("AM9517A '%s' Command Register: %01x\n", tag(), m_command); + if (LOG) logerror("AM9517A '%s' Command Register: %02x\n", tag(), m_command); break; case REGISTER_REQUEST: |