From acbea91524a8224ae5c027f56f63b17018057dab Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Sat, 10 Nov 2018 04:34:43 -0800 Subject: [PATCH] PDP11, PDP10, VAX: Fix DMC11 device DDCMP Maintenance packet handling 1) Assure that Link line carrier is present prior to attempting to transmit maintenance packets. 2) Properly set flag bits in maintenance packets. --- PDP11/pdp11_ddcmp.h | 6 +++--- PDP11/pdp11_dmc.c | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/PDP11/pdp11_ddcmp.h b/PDP11/pdp11_ddcmp.h index c75766a5..13ece7d5 100644 --- a/PDP11/pdp11_ddcmp.h +++ b/PDP11/pdp11_ddcmp.h @@ -136,8 +136,8 @@ if (sim_deb && dptr && (reason & dptr->dctrl)) { } break; case DDCMP_DLE: /* Maintenance Message */ - sim_debug (reason, dptr, "Maintenance Message, Count: %d, Flags: %s, HDRCRC: %s, DATACRC: %s\n", (msg2 << 8)| msg[1], flag, - (0 == ddcmp_crc16 (0, msg, DDCMP_HEADER_SIZE)) ? "OK" : "BAD", (0 == ddcmp_crc16 (0, msg+DDCMP_HEADER_SIZE, 2+((msg2 << 8)| msg[1]))) ? "OK" : "BAD"); + sim_debug (reason, dptr, "Maintenance Message, Count: %d, Flags: %s, Addr: %d, HDRCRC: %s, DATACRC: %s\n", (msg2 << 8)|msg[1], flag, msg[5], + (0 == ddcmp_crc16 (0, msg, DDCMP_HEADER_SIZE)) ? "OK" : "BAD", (0 == ddcmp_crc16 (0, msg+DDCMP_HEADER_SIZE, 2+((msg2 << 8)|msg[1]))) ? "OK" : "BAD"); break; } if (DDCMP_DBG_PDAT & dptr->dctrl) { @@ -413,7 +413,7 @@ static void ddcmp_build_maintenance_packet (uint8 *buf, size_t size) { buf[0] = DDCMP_DLE; buf[1] = size & 0xFF; -buf[2] = ((size >> 8) & 0x3F) | (DDCMP_FLAG_SELECT|DDCMP_FLAG_QSYNC << 6); +buf[2] = ((size >> 8) & 0x3F) | ((DDCMP_FLAG_SELECT|DDCMP_FLAG_QSYNC) << 6); buf[3] = 0; buf[4] = 0; buf[5] = 1; diff --git a/PDP11/pdp11_dmc.c b/PDP11/pdp11_dmc.c index 0c2b9453..69d7759e 100644 --- a/PDP11/pdp11_dmc.c +++ b/PDP11/pdp11_dmc.c @@ -871,6 +871,7 @@ DDCMP_STATETABLE DDCMP_TABLE[] = { {41, Run, {ddcmp_REPMessageSent}, Run, {ddcmp_StartTimer}}, {42, Maintenance, {ddcmp_ReceiveMaintMsg}, Maintenance, {ddcmp_GiveBufferToUser}}, {43, Maintenance, {ddcmp_UserSendMessage, + ddcmp_LineConnected, ddcmp_TransmitterIdle}, Maintenance, {ddcmp_SendMaintMessage}}, {44, All} /* End of Table */ };