+
+#ifdef MTLERRM
+mtintfail(sc)
+ register struct mu_softc *sc;
+{
+ switch (sc->sc_erreg & MTER_INTCODE) {
+
+ /* unexpected BOT detected */
+
+ case MTER_BOT:
+ sc->sc_mesg = "unexpected BOT";
+ switch ((sc->sc_erreg & MTER_FAILCODE) >> 10) {
+ case 01:
+ sc->sc_fmesg = "tape was at BOT";
+ break;
+ case 02:
+ sc->sc_fmesg = "BOT seen after tape started";
+ break;
+ case 03:
+ sc->sc_fmesg = "ARA ID detected";
+ break;
+ default:
+ sc->sc_fmesg = "unclassified failure code";
+ }
+ break;
+
+ /* unexpected LEOT detected */
+
+ case MTER_LEOT:
+ sc->sc_mesg = "unexpected LEOT";
+ sc->sc_fmesg = "";
+ break;
+
+ /* rewinding */
+
+ case MTER_RWDING:
+ sc->sc_mesg = "tape rewinding";
+ sc->sc_fmesg = "";
+ break;
+
+ /* not ready */
+
+ case MTER_NOTRDY:
+ sc->sc_mesg = "drive not ready";
+ switch ((sc->sc_erreg & MTER_FAILCODE) >> 10) {
+ case 01:
+ sc->sc_fmesg = "TU on-line but not ready";
+ break;
+ case 02:
+ sc->sc_fmesg = "fatal error has occurred";
+ break;
+ case 03:
+ sc->sc_fmesg = "access allowed but not really";
+ break;
+ default:
+ sc->sc_fmesg = "unclassified failure code";
+ }
+ break;
+
+ /* not available */
+
+ case MTER_NOTAVL:
+ sc->sc_mesg = "drive not available";
+ sc->sc_fmesg = "";
+ break;
+
+ /* unit does not exist */
+
+ case MTER_NONEX:
+ sc->sc_mesg = "unit does not exist";
+ sc->sc_fmesg = "";
+ break;
+
+ /* not capable */
+
+ case MTER_NOTCAP:
+ sc->sc_mesg = "not capable";
+ switch ((sc->sc_erreg & MTER_FAILCODE) >> 10) {
+ case 01:
+ sc->sc_fmesg = "no record found within 25 feet";
+ break;
+ case 02:
+ sc->sc_fmesg = "ID burst neither PE nor GCR";
+ break;
+ case 03:
+ sc->sc_fmesg = "ARA ID not found";
+ break;
+ case 04:
+ sc->sc_fmesg = "no gap found after ID burst";
+ break;
+ default:
+ sc->sc_fmesg = "unclassified failure code";
+ }
+ break;
+
+ /* long tape record */
+
+ case MTER_LONGREC:
+ sc->sc_mesg = "long record";
+ switch ((sc->sc_erreg & MTER_FAILCODE) >> 10) {
+ case 00:
+ sc->sc_fmesg = "extended sense data not found";
+ break;
+ case 01:
+ sc->sc_fmesg = "extended sense data updated";
+ break;
+ default:
+ sc->sc_fmesg = "unclassified failure code";
+ }
+ break;
+
+ /* unreadable */
+
+ case MTER_UNREAD:
+ sc->sc_mesg = "unreadable record";
+ goto code22;
+
+ /* error */
+
+ case MTER_ERROR:
+ sc->sc_mesg = "error";
+ goto code22;
+
+ /* EOT error */
+
+ case MTER_EOTERR:
+ sc->sc_mesg = "EOT error";
+ goto code22;
+
+ /* tape position lost */
+
+ case MTER_BADTAPE:
+ sc->sc_mesg = "bad tape";
+ code22:
+ switch ((sc->sc_erreg & MTER_FAILCODE) >> 10) {
+ case 01:
+ sc->sc_fmesg = "GCR write error";
+ break;
+ case 02:
+ sc->sc_fmesg = "GCR read error";
+ break;
+ case 03:
+ sc->sc_fmesg = "PE read error";
+ break;
+ case 04:
+ sc->sc_fmesg = "PE write error";
+ break;
+ case 05:
+ sc->sc_fmesg = "at least 1 bit set in ECCSTA";
+ break;
+ case 06:
+ sc->sc_fmesg = "PE write error";
+ break;
+ case 07:
+ sc->sc_fmesg = "GCR write error";
+ break;
+ case 010:
+ sc->sc_fmesg = "RSTAT contains bad code";
+ break;
+ case 011:
+ sc->sc_fmesg = "PE write error";
+ break;
+ case 012:
+ sc->sc_fmesg = "MASSBUS parity error";
+ break;
+ case 013:
+ sc->sc_fmesg = "invalid data transferred";
+ break;
+ default:
+ sc->sc_fmesg = "unclassified failure code";
+ }
+ break;
+
+ /* TM fault A */
+
+ case MTER_TMFLTA:
+ sc->sc_mesg = "TM fault A";
+ switch ((sc->sc_erreg & MTER_FAILCODE) >> 10) {
+ case 01:
+ sc->sc_fmesg = "illegal command code";
+ break;
+ case 02:
+ sc->sc_fmesg = "DT command issued when NDT command active";
+ break;
+ case 03:
+ sc->sc_fmesg = "WMC error";
+ break;
+ case 04:
+ sc->sc_fmesg = "RUN not received from MASSBUS controller";
+ break;
+ case 05:
+ sc->sc_fmesg = "mismatch in command read - function routine";
+ break;
+ case 06:
+ sc->sc_fmesg = "ECC ROM parity error";
+ break;
+ case 07:
+ sc->sc_fmesg = "XMC ROM parity error";
+ break;
+ case 010:
+ sc->sc_fmesg = "mismatch in command read - ID burst command";
+ break;
+ case 011:
+ sc->sc_fmesg = "mismatch in command read - verify ARA burst command";
+ break;
+ case 012:
+ sc->sc_fmesg = "mismatch in command read - verify ARA ID command";
+ break;
+ case 013:
+ sc->sc_fmesg = "mismatch in command read - verify gap command";
+ break;
+ case 014:
+ sc->sc_fmesg = "mismatch in command read - read id burst command";
+ break;
+ case 015:
+ sc->sc_fmesg = "mismatch in command read - verify ARA ID command";
+ break;
+ case 016:
+ sc->sc_fmesg = "mismatch in command read - verify gap command";
+ break;
+ case 017:
+ sc->sc_fmesg = "mismatch in command read - find gap command";
+ break;
+ case 020:
+ sc->sc_fmesg = "WMC LEFT failed to set";
+ break;
+ case 021:
+ sc->sc_fmesg = "XL PE set in INTSTA register";
+ break;
+ case 022:
+ sc->sc_fmesg = "XMC DONE did not set";
+ break;
+ case 023:
+ sc->sc_fmesg = "WMC ROM PE or RD PE set in WMCERR register";
+ break;
+ default:
+ sc->sc_fmesg = "unclassified failure code";
+ }
+ break;
+
+ /* TU fault A */
+
+ case MTER_TUFLTA:
+ sc->sc_mesg = "TU fault A";
+ switch ((sc->sc_erreg & MTER_FAILCODE) >> 10) {
+ case 01:
+ sc->sc_fmesg = "TU status parity error";
+ break;
+ case 02:
+ sc->sc_fmesg = "TU command parity error";
+ break;
+ case 03:
+ sc->sc_fmesg = "rewinding tape went offline";
+ break;
+ case 04:
+ sc->sc_fmesg = "tape went not ready during DSE";
+ break;
+ case 05:
+ sc->sc_fmesg = "TU CMD status changed during DSE";
+ break;
+ case 06:
+ sc->sc_fmesg = "TU never came up to speed";
+ break;
+ case 07:
+ sc->sc_fmesg = "TU velocity changed";
+ break;
+ case 010:
+ sc->sc_fmesg = "TU CMD did not load correctly to start tape motion";
+ break;
+ case 011:
+ sc->sc_fmesg = "TU CMD did not load correctly to set drive density";
+ break;
+ case 012:
+ sc->sc_fmesg = "TU CMD did not load correctly to start tape motion to write BOT ID";
+ break;
+ case 013:
+ sc->sc_fmesg = "TU CMD did not load correctly to backup tape to BOT after failing to write BOT ID";
+ break;
+ case 014:
+ sc->sc_fmesg = "failed to write density ID burst";
+ break;
+ case 015:
+ sc->sc_fmesg = "failed to write ARA burst";
+ break;
+ case 016:
+ sc->sc_fmesg = "failed to write ARA ID";
+ break;
+ case 017:
+ sc->sc_fmesg = "ARA error bit set in MTA status B register";
+ break;
+ case 021:
+ sc->sc_fmesg = "could not find a gap after ID code was written correctly";
+ break;
+ case 022:
+ sc->sc_fmesg = "TU CMD did not load correctly to start tape motion to read ID burst";
+ break;
+ case 023:
+ sc->sc_fmesg = "timeout looking for BOT after detecting ARA ID burst";
+ break;
+ case 024:
+ sc->sc_fmesg = "failed to write tape mark";
+ break;
+ case 025:
+ sc->sc_fmesg = "tape never came up to speed while trying to reposition for retry of writing tape mark";
+ break;
+ case 026:
+ sc->sc_fmesg = "TU CMD did not load correctly to start tape motion in erase gap routine";
+ break;
+ case 027:
+ sc->sc_fmesg = "could not detect a gap in in erase gap routine";
+ break;
+ case 030:
+ sc->sc_fmesg = "could not detect a gap after writing record";
+ break;
+ case 031:
+ sc->sc_fmesg = "read path terminated before entire record was written";
+ break;
+ case 032:
+ sc->sc_fmesg = "could not find a gap after writing record and read path terminated early";
+ break;
+ case 033:
+ sc->sc_fmesg = "TU CMD did not load correctly to backup for retry of write tape mark";
+ break;
+ case 034:
+ sc->sc_fmesg = "TU velocity changed after up to speed while trying to reposition for retry of writing tape mark";
+ break;
+ case 035:
+ sc->sc_fmesg = "TU CMD did not load correctly to backup to retry a load of BOT ID";
+ break;
+ case 036:
+ sc->sc_fmesg = "timeout looking for BOT after failing to write BOT ID";
+ break;
+ case 037:
+ sc->sc_fmesg = "TU velocity changed while writing PE gap before starting to write record";
+ break;
+ case 040:
+ sc->sc_fmesg = "TU CMD did not load correctly to set PE tape density at start of write BOT ID burst";
+ break;
+ case 041:
+ sc->sc_fmesg = "TU CMD did not load correctly to set GCR tape density after writing Density ID";
+ break;
+ case 042:
+ sc->sc_fmesg = "TU CMD did not load correctly to set PE tape density at start of read from BOT";
+ break;
+ case 043:
+ sc->sc_fmesg = "TU CMD did not load correctly to set GCR tape density after reading a GCR Density ID burst";
+ break;
+ default:
+ sc->sc_fmesg = "unclassified failure code";
+ }
+ break;
+
+ /* TM fault B */
+
+ case MTER_TMFLTB:
+ sc->sc_mesg = "TM fault B";
+ switch ((sc->sc_erreg & MTER_FAILCODE) >> 10) {
+ case 00:
+ sc->sc_fmesg = "RST0 interrupt occurred with TM RDY set";
+ break;
+ case 01:
+ sc->sc_fmesg = "power failed to interrupt";
+ break;
+ case 02:
+ sc->sc_fmesg = "unknown interrupt on channel 5.5";
+ break;
+ case 03:
+ sc->sc_fmesg = "unknown interrupt on channel 6.5";
+ break;
+ case 04:
+ sc->sc_fmesg = "unknown interrupt on channel 7";
+ break;
+ case 05:
+ sc->sc_fmesg = "unknown interrupt on channel 7.5";
+ break;
+ case 06:
+ sc->sc_fmesg = "CAS contention retry count expired";
+ break;
+ case 07:
+ sc->sc_fmesg = "CAS contention error not retryable";
+ break;
+ case 010:
+ sc->sc_fmesg = "queue error, could not find queue entry";
+ break;
+ case 011:
+ sc->sc_fmesg = "queue entry already full";
+ break;
+ case 012:
+ sc->sc_fmesg = "8085 ROM parity error";
+ break;
+ case 013:
+ case 014:
+ case 015:
+ case 016:
+ case 017:
+ case 020:
+ case 021:
+ case 022:
+ case 023:
+ case 024:
+ case 025:
+ case 026:
+ case 027:
+ case 030:
+ case 031:
+ case 032:
+ case 033:
+ case 034:
+ case 035:
+ case 036:
+ case 037:
+ case 040:
+ case 041:
+ case 042:
+ case 043:
+ case 044:
+ case 045:
+ case 046:
+ case 047:
+ case 050:
+ case 051:
+ case 052:
+ case 053:
+ case 054:
+ case 055:
+ case 056:
+ case 057:
+ sc->sc_fmesg = "inline test failed";
+ break;
+ default:
+ sc->sc_fmesg = "unclassified failure code";
+ }
+ break;
+
+ /* MASSBUS fault */
+
+ case MTER_MBFLT:
+ sc->sc_mesg = "MB fault";
+ switch ((sc->sc_erreg & MTER_FAILCODE) >> 10) {
+ case 01:
+ sc->sc_fmesg = "control bus parity error";
+ break;
+ case 02:
+ sc->sc_fmesg = "illegal register referenced";
+ break;
+ default:
+ sc->sc_fmesg = "unclassified failure code";
+ }
+ break;
+
+ /* keypad entry error */
+
+ case MTER_KEYFAIL:
+ sc->sc_mesg = "keypad entry error";
+ sc->sc_fmesg = "";
+ break;
+ default:
+ sc->sc_mesg = "unclassified error";
+ sc->sc_fmesg = "";
+ break;
+ }
+}
+#endif MTLERRM