;
TAPEREW.MAR routine to rewind a MOUNTED tape
;Wolfgang J. Moeller, GWDG, D-3400 Goettingen, F.R.Germany
.title taperew rewind mounted magtape
;
; INTEGER FUNCTION taperew(devnam) = status
; CHARACTER*(*) devnam
;
; rewinds mounted tape device "devnam"
; assuming no file is currently accessed.
;
; bugs:
; USES EVENT FLAG 0
;*****
$iodef
$fibdef
;*****
rew_v: $qiow chan=0-0,-
func=io$_acpcontrol,-
iosb=iosb,-
p1=fib_descr ; address of file info blk descr
iosb: .blkw 4
fib: .blkb fib$c_length
fib_descr: .long fib$c_length
.address fib
;*****
.entry TAPEREW,^m
$assign_s devnam=@4(ap),-
chan=rew_v+qiow$_chan
blbc r0,99$
movc5 #0,(sp),#0,#fib$c_length,fib ; clear fib
movw #fib$c_rewindvol,fib+fib$w_cntrlfunc
$qiow_g rew_v
blbc r0,21$
movzwl iosb,r0
21$: pushl r0
$dassgn_s chan=rew_v+qiow$_chan
blbs r0,30$
blbs (sp),99$
; ; both qio and deassign failed
bicb3 #^c7,r0,r1
bicb3 #^c7,(sp),r2
cmpb r1,r2
blssu 99$ ; return qio status if it has
; the same or higher severity
30$:
movl (sp)+,r0
99$: ret
.end