t_stat mt_reset (DEVICE *dptr) { int32 i; chan_disc (mt_dib.chan); /* disconnect */ mt_eof = 0; /* clear state */ mt_gap = 0; mt_skip = 0; mt_inst = 0; mt_bptr = mt_blnt = 0; xfr_req = xfr_req & ~XFR_MT0; /* clr xfr flag */ for (i = 0; i < MT_NUMDR; i++) { /* deactivate */ sim_cancel (&mt_unit[i]); sim_tape_reset (&mt_unit[i]); mt_unit[i].eotf = 0; } return SCPE_OK; }
t_stat mt_reset (DEVICE *dptr) { uint32 u; UNIT *uptr; mt_bptr = mt_blnt = 0; /* clr buf */ mt_sta = STA_BSY; /* clr flags */ mt_xfr = 0; /* clr controls */ for (u = 0; u < MT_NUMDR; u++) { /* loop thru units */ CLR_INT (v_MT + u); /* clear int */ CLR_ENB (v_MT + u); /* disable int */ mt_arm[u] = 0; /* disarm int */ uptr = mt_dev.units + u; sim_tape_reset (uptr); /* clear pos flag */ sim_cancel (uptr); /* cancel activity */ uptr->UST = (uptr->UST & STA_UFLGS) | STA_NMTN; /* init status */ uptr->UCMD = 0; /* init cmd */ } return SCPE_OK; }
t_stat mt_reset (DEVICE *dptr) { hp_enbdis_pair (dptr, /* make pair cons */ (dptr == &mtd_dev) ? &mtc_dev : &mtd_dev); if (dptr == &mtc_dev) /* command channel reset? */ mtcio (mtc_dib.devno, ioPOPIO, 0); /* send POPIO signal to command channel */ else /* data channel reset */ mtdio (mtd_dib.devno, ioPOPIO, 0); /* send POPIO signal to data channel */ mtc_fnc = 0; mtc_1st = mtc_dtf = 0; sim_cancel (&mtc_unit); /* cancel activity */ sim_tape_reset (&mtc_unit); if (mtc_unit.flags & UNIT_ATT) mtc_sta = (sim_tape_bot (&mtc_unit)? STA_BOT: 0) | (sim_tape_wrp (&mtc_unit)? STA_WLK: 0); else mtc_sta = STA_LOCAL | STA_BUSY; return SCPE_OK; }