summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2012-06-10 08:25:30 +0000
committer Miodrag Milanovic <mmicko@gmail.com>2012-06-10 08:25:30 +0000
commit355e4eca49fc750f5dc15a8a70858c02423551ad (patch)
tree2962911c794e9cdb0d3f3c6f91c0f73d91da8cbe /src/emu/machine
parentd474a051f45bd1d94392fa0daa520c410bfd44ce (diff)
Sync with MESS (nw)
Diffstat (limited to 'src/emu/machine')
-rw-r--r--src/emu/machine/am9517a.c17
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: