From b935a173e5a3a59f89044dc686d26f84d8e47cd1 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Thu, 5 Jan 2017 09:36:17 -0800 Subject: [PATCH] PDP11, All VAX: Fix TU58 device (TDC) failure when not ATTACHED --- PDP11/pdp11_td.c | 10 +++++++--- PDP11/pdp11_td.h | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/PDP11/pdp11_td.c b/PDP11/pdp11_td.c index 13a445ba..194c4411 100644 --- a/PDP11/pdp11_td.c +++ b/PDP11/pdp11_td.c @@ -921,7 +921,7 @@ switch (opcode) { case TD_OPDAT: if (ctlr->p_state != TD_WRITE1) { /* expecting data? */ - sim_printf("TU58 protocol error 1\n"); + sim_debug (TDDEB_ERR, ctlr->dptr, "td_process_packet() Opcode=%s(%d) - TU58 protocol error 1 - Not Expecting Data\n", opcode_name, opcode); return; } if (ctlr->ibptr < 2) { /* whole packet read? */ @@ -934,7 +934,7 @@ switch (opcode) { case TD_OPCMD: if (ctlr->p_state != TD_IDLE) { /* expecting command? */ - sim_printf("TU58 protocol error 2\n"); + sim_debug (TDDEB_ERR, ctlr->dptr, "td_process_packet() Opcode=%s(%d) - TU58 protocol error 2 - Not Expecting Command\n", opcode_name, opcode); return; } if (ctlr->ibptr < 2) { /* whole packet read? */ @@ -1021,6 +1021,10 @@ switch (opcode) { sim_debug (TDDEB_TRC, ctlr->dptr, "td_process_packet(OPBOO) Unit=%d\n", ctlr->ibuf[4]); ctlr->unitno = ctlr->ibuf[1]; fbuf = (int8 *)ctlr->uptr[ctlr->unitno].filebuf; + if (fbuf == NULL) { /* attached? */ + sim_debug (TDDEB_ERR, ctlr->dptr, "td_process_packet(OPBOO) Unit=%d - NOT ATTACHED\n", ctlr->ibuf[4]); + break; + } ctlr->block = 0; ctlr->txsize = 0; ctlr->p_state = TD_BOOTSTRAP; @@ -1043,7 +1047,7 @@ switch (opcode) { break; default: - //sim_printf("TU58: Unknown opcode %d\n", opcode); + sim_debug (TDDEB_TRC, ctlr->dptr, "td_process_packet(%s) Unit=%d Unknown Opcode: %d\n", opcode_name, ctlr->ibuf[4], opcode); break; } } diff --git a/PDP11/pdp11_td.h b/PDP11/pdp11_td.h index f6450c59..cc0053c5 100644 --- a/PDP11/pdp11_td.h +++ b/PDP11/pdp11_td.h @@ -68,6 +68,7 @@ t_stat td_wr_o_buf (CTLR *ctlr, int32 data); #define TDDEB_INT 00100 /* interrupts */ #define TDDEB_PKT 00200 /* packet */ #define TDDEB_DAT 00400 /* data */ +#define TDDEB_ERR 01000 /* errors */ static DEBTAB td_deb[] = { { "OPS", TDDEB_OPS, "transactions" }, @@ -81,6 +82,7 @@ static DEBTAB td_deb[] = { { "INT", TDDEB_INT, "interrupts" }, { "TRC", TDDEB_TRC, "trace" }, { "DAT", TDDEB_DAT, "data" }, + { "ERR", TDDEB_ERR, "errors" }, { NULL, 0 } };