summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2020-08-23 20:36:33 -0400
committer AJR <ajrhacker@users.noreply.github.com>2020-08-23 20:37:07 -0400
commitdeb674f74309b64f2a06d72841075c5ab9ff40eb (patch)
treecfcaf6753b3454a8886bd6c11f92f07a71dcd9f0
parent73759930bf08c063c57d611b65999a245355bfbe (diff)
z8: Add optional logging for SIO
-rw-r--r--src/devices/cpu/z8/z8.cpp32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/devices/cpu/z8/z8.cpp b/src/devices/cpu/z8/z8.cpp
index f0660d19b03..c0855782adb 100644
--- a/src/devices/cpu/z8/z8.cpp
+++ b/src/devices/cpu/z8/z8.cpp
@@ -27,6 +27,13 @@
#include "z8dasm.h"
#include "debugger.h"
+#define LOG_TIMER (1 << 1U)
+#define LOG_RECEIVE (1 << 2U)
+#define LOG_TRANSMIT (1 << 3U)
+
+#define VERBOSE 0
+#include "logmacro.h"
+
/***************************************************************************
CONSTANTS
***************************************************************************/
@@ -502,6 +509,7 @@ void z8_device::sio_receive()
// start bit validated
m_receive_sr |= 1 << 9;
m_receive_parity = false;
+ LOGMASKED(LOG_RECEIVE, "Start bit validated\n");
}
else
{
@@ -524,6 +532,7 @@ void z8_device::sio_receive()
request_interrupt(3);
m_receive_started = false;
m_receive_count = 0;
+ LOGMASKED(LOG_RECEIVE, "Character received: %02X\n", m_receive_buffer);
}
else
{
@@ -533,11 +542,14 @@ void z8_device::sio_receive()
// parity replaces received bit 7 if selected
if (BIT(m_receive_sr, 1) && (m_p3m & Z8_P3M_PARITY) != 0)
{
+ LOGMASKED(LOG_RECEIVE, "%d parity bit shifted in\n", BIT(m_receive_sr, 9));
if (m_receive_parity)
m_receive_sr |= 1 << 9;
else
m_receive_sr &= ~(1 << 9);
}
+ else
+ LOGMASKED(LOG_RECEIVE, "%d data bit shifted in\n", BIT(m_receive_sr, 9));
}
}
}
@@ -550,6 +562,7 @@ void z8_device::sio_receive()
m_receive_sr |= 1 << 9;
else if (BIT(m_receive_sr, 8))
{
+ LOGMASKED(LOG_RECEIVE, "Start bit noticed\n");
m_receive_started = true;
m_receive_sr = 0;
m_receive_count = 0;
@@ -567,7 +580,10 @@ void z8_device::sio_transmit()
{
m_transmit_sr >>= 1;
if (m_transmit_sr == 0)
+ {
+ LOGMASKED(LOG_TRANSMIT, "Transmit register empty\n");
request_interrupt(4);
+ }
else
{
// parity replaces received bit 7 if selected
@@ -577,9 +593,15 @@ void z8_device::sio_transmit()
m_transmit_sr |= 1;
else
m_transmit_sr &= ~1;
+ LOGMASKED(LOG_TRANSMIT, "%d parity bit shifted out\n", BIT(m_transmit_sr, 0));
+ }
+ else
+ {
+ LOGMASKED(LOG_TRANSMIT, "%d %s bit shifted out\n", BIT(m_transmit_sr, 0),
+ BIT(m_transmit_sr, 10) ? "start" : m_transmit_sr > 3 ? "data" : "stop");
+ if (BIT(m_transmit_sr, 0))
+ m_transmit_parity = !m_transmit_parity;
}
- else if (BIT(m_transmit_sr, 0))
- m_transmit_parity = !m_transmit_parity;
// serial output
p3_update_output();
@@ -594,6 +616,8 @@ uint8_t z8_device::sio_read()
void z8_device::sio_write(uint8_t data)
{
+ LOGMASKED(LOG_TRANSMIT, "(%04X): Character to transmit: %02X\n", m_ppc, data);
+
// overwrite shift register with data + 1 start bit + 2 stop bits
m_transmit_sr = (m_transmit_sr & 1) | (uint16_t(data) << 2) | (3 << 10);
m_transmit_parity = false;
@@ -727,7 +751,7 @@ void z8_device::tmr_write(uint8_t data)
{
unsigned prescaler = (m_pre[0] >> 2) ? (m_pre[0] >> 2) : 64;
unsigned count = (m_t[0] ? m_t[0] : 256) * prescaler;
- logerror("(%04X): Load T0 at %.2f Hz\n", m_ppc, clock() / 8.0 / count);
+ LOGMASKED(LOG_TIMER, "(%04X): Load T0 at %.2f Hz\n", m_ppc, clock() / 8.0 / count);
}
if ((data & Z8_TMR_TOUT_MASK) == Z8_TMR_TOUT_T0)
@@ -751,7 +775,7 @@ void z8_device::tmr_write(uint8_t data)
{
unsigned prescaler = (m_pre[1] >> 2) ? (m_pre[1] >> 2) : 64;
unsigned count = (m_t[1] ? m_t[1] : 256) * prescaler;
- logerror("(%04X): Load T1 at %.2f Hz\n", m_ppc, clock() / 8.0 / count);
+ LOGMASKED(LOG_TIMER, "(%04X): Load T1 at %.2f Hz\n", m_ppc, clock() / 8.0 / count);
}
if ((data & Z8_TMR_TOUT_MASK) == Z8_TMR_TOUT_T1)