mirror of
https://github.com/holub/mame
synced 2025-07-04 09:28:51 +03:00
n68681: fixed trashing of the serial parameters when ACR is updated. [R. Belmont]
This commit is contained in:
parent
484e42f9f9
commit
41ce1a8f68
@ -375,8 +375,8 @@ WRITE8_MEMBER( duartn68681_device::write )
|
||||
}
|
||||
}
|
||||
|
||||
m_chanA->write_chan_reg(1, data);
|
||||
m_chanB->write_chan_reg(1, data);
|
||||
m_chanA->ACR_updated();
|
||||
m_chanB->ACR_updated();
|
||||
m_chanA->update_interrupts(); // need to add ACR checking for IP delta ints
|
||||
m_chanB->update_interrupts();
|
||||
update_interrupts();
|
||||
@ -540,7 +540,7 @@ void duart68681_channel::rcv_complete()
|
||||
{
|
||||
if ( rx_fifo_num >= MC68681_RX_FIFO_SIZE )
|
||||
{
|
||||
LOG(( "68681: FIFO overflow\n" ));
|
||||
logerror("68681: FIFO overflow\n");
|
||||
SR |= STATUS_OVERRUN_ERROR;
|
||||
return;
|
||||
}
|
||||
@ -751,7 +751,7 @@ void duart68681_channel::write_chan_reg(int reg, UINT8 data)
|
||||
CSR = data;
|
||||
tx_baud_rate = m_uart->calc_baud(m_ch, data & 0xf);
|
||||
rx_baud_rate = m_uart->calc_baud(m_ch, (data>>4) & 0xf);
|
||||
// printf("ch %d Tx baud %d Rx baud %d\n", m_ch, tx_baud_rate, rx_baud_rate);
|
||||
//printf("ch %d CSR %02x Tx baud %d Rx baud %d\n", m_ch, data, tx_baud_rate, rx_baud_rate);
|
||||
set_rcv_rate(rx_baud_rate);
|
||||
set_tra_rate(tx_baud_rate);
|
||||
break;
|
||||
@ -971,3 +971,9 @@ void duart68681_channel::write_TX(UINT8 data)
|
||||
|
||||
update_interrupts();
|
||||
};
|
||||
|
||||
void duart68681_channel::ACR_updated()
|
||||
{
|
||||
write_chan_reg(1, CSR);
|
||||
}
|
||||
|
||||
|
@ -55,6 +55,8 @@ public:
|
||||
|
||||
UINT8 read_rx_fifo();
|
||||
|
||||
void ACR_updated();
|
||||
|
||||
private:
|
||||
/* Registers */
|
||||
UINT8 CR; /* Command register */
|
||||
|
Loading…
Reference in New Issue
Block a user