summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Jonathan Gevaryahu <Lord-Nightmare@users.noreply.github.com>2009-09-10 06:13:26 +0000
committer Jonathan Gevaryahu <Lord-Nightmare@users.noreply.github.com>2009-09-10 06:13:26 +0000
commit224c8d3f97a124872fdf2c15630004a68d97c233 (patch)
tree635629b12f3cd8361115de7f96342d10941740bb
parent9f9c029a0878de715d5e463846fb584c02d041b8 (diff)
68681/2681 duart: When a channel is in loopback mode, do not actually transmit bytes sent to that duart channel over the TX pin
-rw-r--r--src/emu/machine/68681.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/emu/machine/68681.c b/src/emu/machine/68681.c
index 8b7f6ab9d24..969c5e0a5c5 100644
--- a/src/emu/machine/68681.c
+++ b/src/emu/machine/68681.c
@@ -377,7 +377,9 @@ static TIMER_CALLBACK( tx_timer_callback )
duart68681_state *duart68681 = get_safe_token(device);
int ch = param & 1;
- if (duart68681->duart_config->tx_callback)
+ // send the byte unless we're in loopback mode;
+ // in loopback mode do NOT 'actually' send the byte: the TXn pin is held high when loopback mode is on.
+ if ((duart68681->duart_config->tx_callback) && ((duart68681->channel[ch].MR2&0xC0) != 0x80))
duart68681->duart_config->tx_callback(device, ch, duart68681->channel[ch].tx_data);
duart68681->channel[ch].tx_ready = 1;