PDP11, VAX780: Fix TM03 Read tape mark must set Massbus EXC
This commit is contained in:
parent
7ba70ac35b
commit
c6fb3285a5
1 changed files with 11 additions and 8 deletions
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
tu TM02/TM03 magtape
|
tu TM02/TM03 magtape
|
||||||
|
|
||||||
|
28-Dec-17 RMS Read tape mark must set Massbus EXC
|
||||||
13-Mar-17 RMS Annotated fall through in switch
|
13-Mar-17 RMS Annotated fall through in switch
|
||||||
23-Oct-13 RMS Revised for new boot setup routine
|
23-Oct-13 RMS Revised for new boot setup routine
|
||||||
18-Apr-11 MP Fixed t_addr printouts for 64b big-endian systems
|
18-Apr-11 MP Fixed t_addr printouts for 64b big-endian systems
|
||||||
|
@ -664,7 +665,7 @@ switch (fnc) { /* case on function */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} while ((tufc != 0) && !sim_tape_eot (uptr));
|
} while ((tufc != 0) && !sim_tape_eot (uptr));
|
||||||
if (tufc)
|
if (tufc != 0)
|
||||||
tu_set_er (ER_FCE);
|
tu_set_er (ER_FCE);
|
||||||
else tutc = tutc & ~TC_FCS;
|
else tutc = tutc & ~TC_FCS;
|
||||||
break;
|
break;
|
||||||
|
@ -677,7 +678,7 @@ switch (fnc) { /* case on function */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} while (tufc != 0);
|
} while (tufc != 0);
|
||||||
if (tufc)
|
if (tufc != 0)
|
||||||
tu_set_er (ER_FCE);
|
tu_set_er (ER_FCE);
|
||||||
else tutc = tutc & ~TC_FCS;
|
else tutc = tutc & ~TC_FCS;
|
||||||
break;
|
break;
|
||||||
|
@ -700,8 +701,6 @@ switch (fnc) { /* case on function */
|
||||||
if ((uptr->UDENS == TC_1600) && sim_tape_bot (uptr))
|
if ((uptr->UDENS == TC_1600) && sim_tape_bot (uptr))
|
||||||
tufs = tufs | FS_ID; /* PE BOT? ID burst */
|
tufs = tufs | FS_ID; /* PE BOT? ID burst */
|
||||||
if ((st = sim_tape_rdrecf (uptr, xbuf, &tbc, MT_MAXFR))) {/* read fwd */
|
if ((st = sim_tape_rdrecf (uptr, xbuf, &tbc, MT_MAXFR))) {/* read fwd */
|
||||||
if (st == MTSE_TMK) /* tmk also sets FCE */
|
|
||||||
tu_set_er (ER_FCE);
|
|
||||||
r = tu_map_err (drv, st, 1); /* map error */
|
r = tu_map_err (drv, st, 1); /* map error */
|
||||||
break; /* done */
|
break; /* done */
|
||||||
}
|
}
|
||||||
|
@ -764,8 +763,6 @@ switch (fnc) { /* case on function */
|
||||||
case FNC_WCHKR: /* wcheck = read */
|
case FNC_WCHKR: /* wcheck = read */
|
||||||
tufc = 0; /* clear frame count */
|
tufc = 0; /* clear frame count */
|
||||||
if ((st = sim_tape_rdrecr (uptr, xbuf + 4, &tbc, MT_MAXFR))) {/* read rev */
|
if ((st = sim_tape_rdrecr (uptr, xbuf + 4, &tbc, MT_MAXFR))) {/* read rev */
|
||||||
if (st == MTSE_TMK) /* tmk also sets FCE */
|
|
||||||
tu_set_er (ER_FCE);
|
|
||||||
r = tu_map_err (drv, st, 1); /* map error */
|
r = tu_map_err (drv, st, 1); /* map error */
|
||||||
break; /* done */
|
break; /* done */
|
||||||
}
|
}
|
||||||
|
@ -859,7 +856,9 @@ if (flg & FS_ATA)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Map tape error status */
|
/* Map tape error status
|
||||||
|
|
||||||
|
Note that tape mark on a data transfer sets FCE and Massbus EXC */
|
||||||
|
|
||||||
t_stat tu_map_err (int32 drv, t_stat st, t_bool qdt)
|
t_stat tu_map_err (int32 drv, t_stat st, t_bool qdt)
|
||||||
{
|
{
|
||||||
|
@ -873,7 +872,11 @@ switch (st) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MTSE_TMK: /* end of file */
|
case MTSE_TMK: /* end of file */
|
||||||
tufs = tufs | FS_TMK;
|
tufs = tufs | FS_TMK; /* set TMK status */
|
||||||
|
if (qdt) { /* data transfer? */
|
||||||
|
tu_set_er (ER_FCE); /* set FCE */
|
||||||
|
mba_set_exc (tu_dib.ba); /* set exception*/
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MTSE_IOERR: /* IO error */
|
case MTSE_IOERR: /* IO error */
|
||||||
|
|
Loading…
Add table
Reference in a new issue