* GP DR11C driver used for C/A/T
* This driver hasn't been tested in 4.1bsd
int ctprobe(), ctattach(), ctintr();
struct uba_device
*ctdinfo
[NCT
];
struct uba_driver ctdriver
=
{ ctprobe
, 0, ctattach
, 0, ctstd
, "ct", ctdinfo
};
#define CTUNIT(dev) (minor(dev))
register int br
, cvec
; /* value-result */
register struct ctdevice
*ctaddr
= (struct ctdevice
*)reg
;
br
= 0; cvec
= br
; br
= cvec
;
register struct uba_device
*ui
;
register struct ct_softc
*sc
;
register struct uba_device
*ui
;
register struct ctdevice
*ctaddr
;
if (CTUNIT(dev
) >= NCT
|| (ui
= ctdinfo
[CTUNIT(dev
)]) == 0 ||
ui
->ui_alive
== 0 || (sc
= &ct_softc
[CTUNIT(dev
)])->sc_openf
) {
ctaddr
->ctcsr
|= IENABLE
;
ct_softc
[CTUNIT(dev
)].sc_openf
= 0;
register struct ct_softc
*sc
= &ct_softc
[CTUNIT(dev
)];
while ((c
=cpass()) >= 0) {
while (sc
->sc_oq
.c_cc
> CATHIWAT
)
sleep((caddr_t
)&sc
->sc_oq
, PCAT
);
while (putc(c
, &sc
->sc_oq
) < 0)
sleep((caddr_t
)&lbolt
, PCAT
);
register struct ct_softc
*sc
= &ct_softc
[CTUNIT(dev
)];
register struct ctdevice
*ctaddr
=
(struct ctdevice
*)ctdinfo
[CTUNIT(dev
)]->ui_addr
;
if (ctaddr
->ctcsr
&DONE
) {
if ((c
= getc(&sc
->sc_oq
)) >= 0) {
if (sc
->sc_oq
.c_cc
==0 || sc
->sc_oq
.c_cc
==CATLOWAT
)