From 6f96730116b20c60f9fe04eb7c5b9ff8baca4922 Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Mon, 13 Nov 2023 08:42:09 +0100 Subject: [PATCH] KA10: Poll quicker for Chaosnet packet when there's traffic. --- PDP10/ka10_ch10.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/PDP10/ka10_ch10.c b/PDP10/ka10_ch10.c index 3c764e6..c09a288 100644 --- a/PDP10/ka10_ch10.c +++ b/PDP10/ka10_ch10.c @@ -256,7 +256,7 @@ t_stat ch10_transmit () return SCPE_OK; } -void ch10_receive (void) +int ch10_receive (void) { size_t count; const uint8 *p; @@ -265,16 +265,16 @@ void ch10_receive (void) tmxr_poll_rx (&ch10_tmxr); if (tmxr_get_packet_ln (&ch10_lines[0], &p, &count) != SCPE_OK) { sim_debug (DBG_ERR, &ch10_dev, "TMXR error receiving packet\n"); - return; + return 0; } if (p == NULL) - return; + return 0; dest = ((p[4+CHUDP_HEADER] & 0xff) << 8) + (p[5+CHUDP_HEADER] & 0xff); sim_debug (DBG_PKT, &ch10_dev, "Received UDP packet, %d bytes for: %o\n", (int)count, dest); /* Check if packet for us. */ if (dest != address && dest != 0 && (ch10_status & SPY) == 0) - return; + return 1; if ((RXD & ch10_status) == 0) { count = (count + 1) & 01776; @@ -292,6 +292,7 @@ void ch10_receive (void) if ((ch10_status & LOST) < LOST) ch10_status += 01000; } + return 1; } void ch10_clear (void) @@ -411,11 +412,15 @@ t_stat ch10_devio(uint32 dev, uint64 *data) t_stat ch10_svc(UNIT *uptr) { - sim_clock_coschedule (uptr, 1000); - (void)tmxr_poll_conn (&ch10_tmxr); if (ch10_lines[0].conn) { - ch10_receive (); + if (ch10_receive ()) { + sim_activate_after (uptr, 300); + return SCPE_OK; + } + } else { + (void)tmxr_poll_conn (&ch10_tmxr); } + sim_clock_coschedule (uptr, 1000); return SCPE_OK; }