#define P800 01700 /* 800 + pdp11 mode */
#define P1600 02300 /* 1600 + pdp11 mode */
#define HARD 064023 /* UNS|OPI|NEF|FMT|RMR|ILR|ILF */
if ((mbaact
&(1<<HTMBANUM
)) == 0)
if (unit
>= NUNIT
|| h_openf
[unit
]) {
if ((ds
&MOL
)==0 || (flag
&& (ds
&WRL
)))
if (flag
== FWRITE
|| ((flag
&FWRITE
) && (h_flags
[unit
]&H_WRITTEN
))) {
(void) hcommand(dev
, WEOF
);
(void) hcommand(dev
, WEOF
);
(void) hcommand(dev
, SREV
);
if((minor(dev
)&4) == 0) /* no 4 -> rewind */
(void) hcommand(dev
, REW
);
while(bp
->b_flags
&B_BUSY
) {
sleep((caddr_t
)bp
, PRIBIO
);
bp
->b_flags
= B_BUSY
|B_READ
;
p
= &h_nxrec
[minor(bp
->b_dev
)&03];
if(dbtofsb(bp
->b_blkno
) > *p
) {
if(dbtofsb(bp
->b_blkno
) == *p
&& bp
->b_flags
&B_READ
) {
bp
->b_resid
= bp
->b_bcount
;
if ((bp
->b_flags
&B_READ
)==0) {
*p
= dbtofsb(bp
->b_blkno
) + 1;
h_flags
[minor(bp
->b_dev
)&03] |= H_WRITTEN
;
if (httab
.b_actf
== NULL
)
httab
.b_actl
->av_forw
= bp
;
register struct device
*htp
= mbadev(HTMBA
,0);
if ((bp
= httab
.b_actf
) == NULL
)
if((htp
->httc
&03777) != den
)
bp
->b_resid
= htp
->htds
& 0xffff;
htp
->htcs1
= bp
->b_resid
|GO
;
if (h_openf
[unit
] < 0 || dbtofsb(bp
->b_blkno
) > h_nxrec
[unit
])
if (blkno
== dbtofsb(bp
->b_blkno
)) {
htp
->htfc
= -bp
->b_bcount
;
mbastart(bp
, (int *)htp
);
if (blkno
< dbtofsb(bp
->b_blkno
)) {
htp
->htfc
= blkno
- dbtofsb(bp
->b_blkno
);
htp
->htfc
= dbtofsb(bp
->b_blkno
) - blkno
;
httab
.b_actf
= bp
->av_forw
;
register int unit
, state
;
register struct device
*htp
= mbadev(HTMBA
,0);
if ((bp
= httab
.b_actf
)==NULL
)
unit
= minor(bp
->b_dev
) & 03;
if (htp
->htds
&(ERR
|EOT
|TM
) || mbastat
& MBAEBITS
) {
err
= htp
->hter
& 0xffff;
if ((mbastat
& MBAEBITS
) || (err
&HARD
))
if ((bp
->b_flags
&B_READ
) && (htp
->htds
&PES
))
if(htp
->htds
&EOT
|| (htp
->htds
&MOL
)==0) {
h_nxrec
[unit
] = dbtofsb(bp
->b_blkno
);
else if(state
&& err
== 0)
deverror(bp
, htp
->hter
, mbastat
);
if (state
==SIO
&& ++httab
.b_errcnt
< 10) {
} else if (htp
->htcs1
< 0) { /* SC */
httab
.b_actf
= bp
->av_forw
;
bp
->b_resid
= - (htp
->htfc
& 0xffff);
if (bp
->b_flags
& B_READ
)
bp
->b_resid
+= bp
->b_bcount
;
if((bp
->b_flags
&B_READ
)==0) {
#define blk dbtofsb(bp->b_blkno)
h_nxrec
[unit
] = blk
- (htp
->htfc
&0xffff);
h_blkno
[unit
] = h_nxrec
[unit
];
h_nxrec
[unit
] = blk
+ (htp
->htfc
&0xffff) - 1;
h_blkno
[unit
] = blk
+ (htp
->htfc
& 0xffff);
physio(htstrategy
, &rhtbuf
, dev
, B_READ
, minphys
);
physio(htstrategy
, &rhtbuf
, dev
, B_WRITE
, minphys
);
h_blkno
[unit
] = dbtofsb(a
);
h_nxrec
[unit
] = dbtofsb(a
)+1;