u_short rkstd
[] = { 0777440 };
short rk_off
[] = { 0, 241, 0, -1, -1, -1, 393, -1 };
if (rk_off
[io
->i_boff
] == -1 ||
io
->i_boff
< 0 || io
->i_boff
> 7)
io
->i_boff
= rk_off
[io
->i_boff
] * NRKSECT
*NRKTRK
;
register struct rkdevice
*rkaddr
= (struct rkdevice
*)ubamem(io
->i_unit
, rkstd
[0]);
ubinfo
= ubasetup(io
, 1);
cn
= bn
/(NRKSECT
*NRKTRK
);
tn
= (bn
/ NRKSECT
) % NRKTRK
;
rkaddr
->rkcs1
= RK_CDT
|RK_PACK
|RK_GO
;
rkaddr
->rkda
= sn
| (tn
<< 8);
rkaddr
->rkwc
= -(io
->i_cc
>> 1);
com
= RK_CDT
|((ubinfo
>>16)&0x30)|RK_GO
;
while ((rkaddr
->rkds
& RK_SVAL
) == 0)
if (rkaddr
->rkcs1
& RK_CERR
) {
printf("rk error: cyl %d trk %d sec %d cs1 %o cs2 %o err %o\n",
cn
, tn
, sn
, rkaddr
->rkcs1
, rkaddr
->rkcs2
, rkaddr
->rker
);
rkaddr
->rkcs1
= RK_DCLR
|RK_GO
;
register struct rkdevice
*rkaddr
;
while ((rkaddr
->rkcs1
& RK_CRDY
) == 0)