+/*
+ * Determine if there is a controller for
+ * a tm at address reg. Our goal is to make the
+ * device interrupt.
+ */
+tmprobe(reg)
+ caddr_t reg;
+{
+ register int br, cvec;
+
+#ifdef lint
+ br = 0; br = cvec; cvec = br;
+#endif
+ ((struct device *)reg)->tmcs = TM_IE;
+ /*
+ * If this is a tm11, it ought to have interrupted
+ * by now, if it isn't (ie: it is a ts04) then we just
+ * hope that it didn't interrupt, so autoconf will ignore it.
+ * Just in case, we will reference one
+ * of the more distant registers, and hope for a machine
+ * check, or similar disaster if this is a ts.
+ *
+ * Note: on an 11/780, badaddr will just generate
+ * a uba error for a ts; but our caller will notice that
+ * so we won't check for it.
+ */
+ if (badaddr(&((struct device *)reg)->tmrd, 2))
+ return (0);
+ return (1);
+}
+
+/*
+ * Due to a design flaw, we cannot ascertain if the tape
+ * exists or not unless it is on line - ie: unless a tape is
+ * mounted. This is too servere a restriction to bear,
+ * so all units are assumed to exist.
+ */
+/*ARGSUSED*/
+tmslave(ui, reg)
+ struct uba_dinfo *ui;
+ caddr_t reg;
+{
+
+ return (1);
+}
+
+/*
+ * Record attachment of the unit to the controller port.
+ */
+/*ARGSUSED*/
+tmattach(ui)
+ struct uba_dinfo *ui;
+{
+
+#ifdef notyet
+ tmip[ui->ui_ctlr][ui->ui_slave] = ui;
+#endif
+}
+
+/*
+ * Open the device. Tapes are unique open
+ * devices, so we refuse if it is already open.
+ * We also check that a tape is available, and
+ * don't block waiting here.
+ */