summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine
diff options
context:
space:
mode:
author Michael Zapf <Michael.Zapf@mizapf.de>2015-08-24 13:14:13 +0200
committer Michael Zapf <Michael.Zapf@mizapf.de>2015-08-24 13:15:16 +0200
commit626820313a09826b8c23e5d834a0584f3dc39849 (patch)
tree19635dd167e1fcee02c268093c7e5fb3dcb1876f /src/emu/machine
parentf4f2ec71cadfc8d6f1d35ddbde3392932edd3228 (diff)
Guarding against inappropriate use
Diffstat (limited to 'src/emu/machine')
-rw-r--r--src/emu/machine/hdc92x4.c36
1 files changed, 21 insertions, 15 deletions
diff --git a/src/emu/machine/hdc92x4.c b/src/emu/machine/hdc92x4.c
index b9be2b36f6c..f887c9a7bbb 100644
--- a/src/emu/machine/hdc92x4.c
+++ b/src/emu/machine/hdc92x4.c
@@ -23,6 +23,7 @@
#include "formats/imageutl.h"
// Per-command debugging
+#define TRACE_COMMAND 0
#define TRACE_SELECT 0
#define TRACE_STEP 0
#define TRACE_RESTORE 0
@@ -787,7 +788,7 @@ void hdc92x4_device::read_id(int& cont, bool implied_seek, bool wait_seek_comple
break;
default:
- logerror("%s: unknown substate %02x in read_id\n", tag(), m_substate);
+ logerror("%s: BUG: Unknown substate %02x in read_id, aborting command\n", tag(), m_substate);
cont = ERROR;
}
}
@@ -899,7 +900,7 @@ void hdc92x4_device::verify(int& cont)
break;
default:
- logerror("%s: unknown substate %02x in verify\n", tag(), m_substate);
+ logerror("%s: BUG: Unknown substate %02x in verify, aborting command\n", tag(), m_substate);
cont = ERROR;
}
}
@@ -1071,7 +1072,7 @@ void hdc92x4_device::data_transfer(int& cont)
break;
default:
- logerror("%s: unknown substate %02x in data_transfer\n", tag(), m_substate);
+ logerror("%s: BUG: Unknown substate %02x in data_transfer, aborting command\n", tag(), m_substate);
cont = ERROR;
}
}
@@ -1522,7 +1523,8 @@ void hdc92x4_device::seek_read_id()
cont = SUCCESS;
break;
default:
- logerror("%s: unknown substate %02x in seek_read_id\n", tag(), m_substate);
+ logerror("%s: BUG: Unknown substate %02x in seek_read_id, aborting command\n", tag(), m_substate);
+ set_command_done(TC_DATAERR);
cont = ERROR;
}
}
@@ -1584,7 +1586,8 @@ void hdc92x4_device::read_sectors()
data_transfer(cont);
break;
default:
- logerror("%s: unknown substate %02x in read_sectors\n", tag(), m_substate);
+ logerror("%s: BUG: Unknown substate %02x in read_sectors, aborting command\n", tag(), m_substate);
+ set_command_done(TC_DATAERR);
cont = ERROR;
}
}
@@ -1866,7 +1869,8 @@ void hdc92x4_device::write_sectors()
data_transfer(cont);
break;
default:
- logerror("%s: unknown substate %02x in write_sectors\n", tag(), m_substate);
+ logerror("%s: BUG: Unknown substate %02x in write_sectors, aborting command\n", tag(), m_substate);
+ set_command_done(TC_DATAERR);
cont = ERROR;
}
}
@@ -3898,12 +3902,11 @@ UINT16 hdc92x4_device::encode_a1_hd()
READ8_MEMBER( hdc92x4_device::read )
{
UINT8 reply = 0;
-
if ((offset & 1) == 0)
{
// Data register
reply = m_register_r[m_register_pointer];
- if (TRACE_READREG) logerror("%s: read register[%d] -> %02x\n", tag(), m_register_pointer, reply);
+ if (TRACE_READREG) logerror("%s: Read register[%d] -> %02x\n", tag(), m_register_pointer, reply);
// Autoincrement until DATA is reached.
if (m_register_pointer < DATA) m_register_pointer++;
@@ -3915,7 +3918,7 @@ READ8_MEMBER( hdc92x4_device::read )
// "The interrupt pin is reset to its inactive state
// when the UDC interrupt status register is read." [1] (p.3)
- if (TRACE_READREG) logerror("%s: read interrupt status register -> %02x\n", tag(), reply);
+ if (TRACE_READREG) logerror("%s: Read interrupt status register -> %02x\n", tag(), reply);
set_interrupt(CLEAR_LINE);
// Clear the bits due to interrupt status register read.
@@ -3935,15 +3938,18 @@ WRITE8_MEMBER( hdc92x4_device::write )
{
if ((offset & 1) == 0)
{
- m_regvalue = data & 0xff;
- wait_time(m_cmd_timer, attotime::from_nsec(REGISTER_COMMIT), REGISTER_ACCESS);
+ if (TRACE_COMMAND) logerror("%s: New register write access %02x\n", tag(), data & 0xff);
+ if (m_executing) logerror("%s: Error - previous command %02x not completed; register access ignored\n", tag(), current_command());
+ else
+ {
+ m_regvalue = data & 0xff;
+ wait_time(m_cmd_timer, attotime::from_nsec(REGISTER_COMMIT), REGISTER_ACCESS);
+ }
}
else
{
- if (m_executing)
- {
- logerror("%s: [%s] Error - previous command %02x not completed; new command %02x ignored\n", tag(), ttsn().c_str(), current_command(), data);
- }
+ if (TRACE_COMMAND) logerror("%s: New incoming command %02x\n", tag(), data);
+ if (m_executing) logerror("%s: Error - previous command %02x not completed; new command %02x ignored\n", tag(), current_command(), data);
else
{
m_register_w[COMMAND] = data;