switch (reg) {
case 0:
tmp = (c->pra & c->dra) | (c->dra ^ 0xff);
-#ifdef SERIAL_PORT
- tmp |= serial_readstatus(tmp, c->dra);
-#endif
#ifdef PARALLEL_PORT
if (isprinter() > 0) {
tmp &= ~3; // clear BUSY and PAPEROUT
}
tmp = handle_parport_joystick(1, tmp);
}
+#endif
+#ifdef SERIAL_PORT
+ tmp = serial_readstatus(tmp, c->dra);
#endif
tmp = dongle_cia_read(1, reg, c->pra, tmp);
#if DONGLE_DEBUG > 0
if (!isprinter()) {
// SEL == RI
- v |= 4;
serbits |= 0x04;
} else {
serbits &= ~0x04;
serbits |= v & 0x04;
}
- if (status & TIOCM_RI) {
- if (serbits & 0x04) {
- serbits &= ~0x04;
-#if SERIALHSDEBUG > 0
- write_log("SERIAL: RI on\n");
-#endif
- }
+ if (!(status & TIOCM_RI)) {
+ serbits &= ~0x04;
}
serbits &= 0x04 | 0x08 | 0x10 | 0x20;
serial_status_debug (_T("read"));
- return (v & (0x80 | 0x40 | 0x02 | 0x01)) | serbits;
+ v = (v & (0x80 | 0x40 | 0x02 | 0x01)) | serbits;
+ return v;
}
uae_u8 serial_writestatus (uae_u8 newstate, uae_u8 dir)
if (rp_ismodem()) {
if ((oldserbits & (0x80 | 0x40)) != (newstate & (0x80 | 0x40))) {
rp_writemodemstatus(
- (newstate & 0x40) != 0, (oldserbits & 0x40) != (newstate & 0x40),
- (newstate & 0x80) != 0, (oldserbits & 0x80) != (newstate & 0x80));
+ (newstate & 0x40) == 0, (oldserbits & 0x40) != (newstate & 0x40),
+ (newstate & 0x80) == 0, (oldserbits & 0x80) != (newstate & 0x80));
}
}