* SI Model 9700 -- emulates TU45 on the UNIBUS
u_short utstd
[] = { 0172440 }; /* non-standard */
utstrategy(io
, UT_SFORW
);
#define utwait(addr) {do word=addr->utcs1; while((word&UT_RDY)==0);}
register struct utdevice
*addr
=
(struct utdevice
*)ubamem(io
->i_unit
, utstd
[0]);
dens
= (io
->i_unit
&07) | PDP11FMT
| UT_PE
;
addr
->utwc
= -((io
->i_cc
+1) >> 1);
addr
->utcs1
= UT_RCOM
| ((info
>>8) & 0x30) | UT_GO
;
} else if (func
== WRITE
) {
addr
->utcs1
= UT_WCOM
| ((info
>>8) & 0x30) | UT_GO
;
} else if (func
== UT_SREV
) {
addr
->utcs1
= UT_SREV
| UT_GO
;
addr
->utcs1
= func
| UT_GO
;
if (word
&(UTDS_EOT
|UTDS_TM
)) {
addr
->utcs1
= UT_CLEAR
| UT_GO
;
if ((word
&UTDS_ERR
) || (addr
->utcs1
&UT_TRE
)) {
printf("tj error: cs1=%b er=%b cs2=%b ds=%b",
addr
->utcs1
, UT_BITS
, addr
->uter
, UTER_BITS
,
addr
->utcs2
, UTCS2_BITS
, word
, UTDS_BITS
);
addr
->utcs2
|= UTCS2_CLR
;
addr
->utcs1
= UT_CLEAR
| UT_GO
;
addr
->utcs1
= UT_ERASE
| UT_GO
;
printf(" recovered by retry\n");
io
->i_cc
- ((-addr
->utfc
) & 0xffff) : -addr
->utwc
<< 1);
register struct utdevice
*addr
;
while ((word
&UTDS_DRY
) == 0 && (word
&UTDS_PIP
));