mirror of
https://github.com/holub/mame
synced 2025-04-18 22:49:58 +03:00
z8: Add optional logging for SIO
This commit is contained in:
parent
73759930bf
commit
deb674f743
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user