- /* should have interrupted by now */
-
- if (cvec == 0 || cvec == 0x200) /* no interrupt */
- ubarelse(numuba, &a);
-
- return (sizeof (struct tsdevice));
+ /*
+ * The controller should have interrupted by now, but some do not,
+ * even if the delays above are extended to many seconds. If the
+ * vector is still unknown, we assume the drive is present at
+ * the usual vector.
+ */
+ if (cvec == 0 || cvec == 0x200) {
+ cvec = (int)reg & 7 ? 0260 : 0224;
+ br = 0x15;
+ }
+ return (sizeof(struct tsdevice));