}
#ifdef RETROPLATFORM
if (rp_ismodem()) {
- rp_writemodem(serdatshift & 0xff);
+ rp_writemodem((uae_u8)serdatshift_masked);
}
#endif
if (serempty_enabled && !serxdevice_enabled) {
uae_u16 SERDATR(void)
{
serdatr &= 0x03ff;
- if (!data_in_serdat || (ser_accurate && get_cycles() >= data_in_serdat_delay)) {
+ if (!data_in_serdat && (!ser_accurate || (ser_accurate && get_cycles() >= data_in_serdat_delay))) {
serdatr |= 0x2000; // TBE (Transmit buffer empty)
}
if (!data_in_sershift && (serdatr & 0x2000)) {
serxdevice_enabled = false;
serper_set = false;
ser_accurate = false;
+ data_in_serdat_delay = 0;
}
void serial_init(void)