diff --git a/I7000/i7090_chan.c b/I7000/i7090_chan.c index 0228393..3daf25e 100644 --- a/I7000/i7090_chan.c +++ b/I7000/i7090_chan.c @@ -583,15 +583,15 @@ chan_proc() "chan %d -Sel< %o\n", chan, cmd[chan] & 070); continue; /* Handle new command next time */ case IOCD: - chan_flags[chan] &= ~(STA_START|STA_ACTIVE/*|STA_WAIT*/); + chan_flags[chan] &= ~(STA_START|STA_ACTIVE); if (chan_dev.dctrl & cmask) sim_debug(DEBUG_DETAIL, &chan_dev, "chan %d -Sel< %o\n", chan, cmd[chan] & 070); - continue; /* Handle new command next time */ + continue; case IOCT: case IORT: case IOST: - chan_flags[chan] &= ~(STA_ACTIVE/*|STA_WAIT*/); + chan_flags[chan] &= ~(STA_ACTIVE); chan_flags[chan] |= STA_TWAIT; if (chan_dev.dctrl & cmask) sim_debug(DEBUG_DETAIL, &chan_dev, @@ -1371,6 +1371,7 @@ chan_load(int chan, uint16 addr) that has not been started or is not in select state */ if ((chan_flags[chan] & (DEV_SEL | STA_START)) != (DEV_SEL|STA_START)) return SCPE_IOERR; + /* If channel active, or waiting EOR, should hold CPU */ if (chan_flags[chan] & (STA_ACTIVE | STA_WAIT)) { chan_flags[chan] |= STA_PEND; diff --git a/I7000/i7090_lpr.c b/I7000/i7090_lpr.c index 6a98585..28969c7 100644 --- a/I7000/i7090_lpr.c +++ b/I7000/i7090_lpr.c @@ -374,7 +374,7 @@ t_stat lpr_srv(UNIT * uptr) /* Channel has disconnected, abort current line. */ if (uptr->u5 & URCSTA_CMD && chan_stat(chan, DEV_DISCO)) { print_line(uptr, chan, u); - uptr->u5 &= ~(URCSTA_WRITE | URCSTA_READ | URCSTA_CMD | LPRSTA_EOR); + uptr->u5 &= ~(URCSTA_WRITE | URCSTA_READ | URCSTA_CMD | LPRSTA_EOR | LPRSTA_CHANGE); uptr->u6 = 0; chan_clear(chan, DEV_WEOR | DEV_SEL); sim_debug(DEBUG_CHAN, &lpr_dev, "unit=%d disconnect\n", u);