* Copyright 1973 Bell Telephone Laboratories Inc
#define DENS 060000 /* 9-channel */
#define HARD 0102200 /* ILC, EOT, NXM */
while (tmtab
.d_active
|| (TMADDR
->tmcs
& CRDY
)==0)
TMADDR
->tmcs
= DENS
|com
|GO
| (unit
<<8);
p
= &t_nxrec
[bp
->b_dev
.d_minor
];
if (bp
->b_flags
&B_READ
) {
if ((bp
->b_flags
&B_READ
)==0)
tmtab
.d_actl
->av_forw
= bp
;
if ((bp
= tmtab
.d_actf
) == 0)
unit
= bp
->b_dev
.d_minor
;
if (t_openf
[unit
] < 0 || (TMADDR
->tmcs
& CRDY
)==0) {
tmtab
.d_actf
= bp
->av_forw
;
com
= (unit
<<8) | (bp
->b_flags
&B_XMEM
) | IENABLE
|DENS
;
if (blkno
!= bp
->b_blkno
) {
if (blkno
< bp
->b_blkno
) {
TMADDR
->tmbc
= blkno
- bp
->b_blkno
;
TMADDR
->tmbc
= bp
->b_blkno
- blkno
;
TMADDR
->tmbc
= bp
->b_wcount
<< 1;
TMADDR
->tmba
= bp
->b_addr
; /* core address */
TMADDR
->tmcs
= com
| ((bp
->b_flags
&B_READ
)? RCOM
|GO
:
((tmtab
.d_errcnt
)? WIRG
|GO
: WCOM
|GO
));
if ((bp
= tmtab
.d_actf
)==0)
unit
= bp
->b_dev
.d_minor
;
if (TMADDR
->tmcs
< 0) { /* error bit */
deverror(bp, TMADDR->tmer);
while(TMADDR
->tmrd
& GAPSD
) ; /* wait for gap shutdown */
if ((TMADDR
->tmer
&(HARD
|EOF
))==0 && tmtab
.d_active
==SIO
) {
if (++tmtab
.d_errcnt
< 10) {
if(bp
!= &rtmbuf
&& (TMADDR
->tmer
&EOF
)==0)
if (tmtab
.d_active
== SIO
) {
tmtab
.d_actf
= bp
->av_forw
;
bp
->b_resid
= TMADDR
->tmbc
;
t_blkno
[unit
] = bp
->b_blkno
;
physio(tmstrategy
, &rtmbuf
, dev
, B_READ
);
u
.u_count
= -rtmbuf
.b_resid
;
physio(tmstrategy
, &rtmbuf
, dev
, B_WRITE
);
a
= lshift(u
.u_offset
, -9);