mcs51: add rxb8 to uart reset

This commit is contained in:
hap 2023-06-03 12:02:00 +02:00
parent c072c4c674
commit 2e0cacd3ad
2 changed files with 5 additions and 4 deletions

View File

@ -1015,7 +1015,7 @@ void mcs51_cpu_device::do_sub_flags(uint8_t a, uint8_t data, uint8_t c)
SET_OV((result1 < -128 || result1 > 127)); SET_OV((result1 < -128 || result1 > 127));
} }
void mcs51_cpu_device::transmit(bool state) void mcs51_cpu_device::transmit(int state)
{ {
if (BIT(SFR_A(ADDR_P3), 1) != state) if (BIT(SFR_A(ADDR_P3), 1) != state)
{ {
@ -1143,7 +1143,7 @@ void mcs51_cpu_device::transmit_receive(int source)
if (GET_REN) if (GET_REN)
{ {
// directly read RXD input // directly read RXD input
bool const data = BIT(m_port_in_cb[3](), 0); int const data = BIT(m_port_in_cb[3](), 0);
switch (m_uart.rxbit) switch (m_uart.rxbit)
{ {
@ -2464,6 +2464,7 @@ void mcs51_cpu_device::device_reset()
m_uart.tx_clk = 0; m_uart.tx_clk = 0;
m_uart.txbit = SIO_IDLE; m_uart.txbit = SIO_IDLE;
m_uart.rxbit = SIO_IDLE; m_uart.rxbit = SIO_IDLE;
m_uart.rxb8 = 0;
m_uart.smod_div = 0; m_uart.smod_div = 0;
m_recalc_parity = 0; m_recalc_parity = 0;

View File

@ -132,7 +132,7 @@ protected:
uint8_t data_in; uint8_t data_in;
uint8_t txbit; uint8_t txbit;
uint8_t rxbit; uint8_t rxbit;
bool rxb8; uint8_t rxb8;
int smod_div; /* signal divided by 2^SMOD */ int smod_div; /* signal divided by 2^SMOD */
int rx_clk; /* rx clock */ int rx_clk; /* rx clock */
@ -147,7 +147,7 @@ protected:
virtual void sfr_write(size_t offset, uint8_t data); virtual void sfr_write(size_t offset, uint8_t data);
virtual uint8_t sfr_read(size_t offset); virtual uint8_t sfr_read(size_t offset);
void transmit(bool state); void transmit(int state);
/* Memory spaces */ /* Memory spaces */
memory_access<16, 0, 0, ENDIANNESS_LITTLE>::cache m_program; memory_access<16, 0, 0, ENDIANNESS_LITTLE>::cache m_program;