! SCSI interface and Thorn EMI tape streamer driving routines
! RWT January 1987
externalroutinespec scsi reset
! Call this before anything else
! Status bits
constinteger sensemask = 15,
ili = 1<<5,
eom = 1<<6,
fm = 1<<7,
fby = 1<<8,
dby = 1<<9,
ldpt = 1<<10,
eot = 1<<11,
rdy = 1<<12,
onl = 1<<13,
rwdg = 1<<14,
fptd = 1<<15,
ident = 1<<16,
hsp = 1<<17,
her = 1<<18,
cer = 1<<19,
dfm = 1<<20,
nrz = 1<<21
! Mode bits
constinteger pe3200 = 16_80000000,
pe1600 = 16_02000000,
defaultdensity = 0,
buffered = 16_00100000,
nonbuffered = 0,
fast = 16_000f0000,
slow = 0,
variableblocksize = 0,
densitymask = 16_ff000000,
buffermask = 16_00700000,
speedmask = 16_000f0000,
sizemask = 16_0000ffff
externalintegerspec tape residue, tape status { should be 0 after everything
externalroutinespec tape show sense(integer status)
externalroutinespec tape mode select(integer x)
externalintegerfnspec tape mode sense
externalroutinespec tape show mode(integer mode)
externalpredicatespec tape unit ready
externalroutinespec tape rewind and wait
externalroutinespec tape rewind off line
externalroutinespec tape unload
externalroutinespec tape erase three inches
externalroutinespec tape erase to end
! Transfer single blocks of specified size
! (must have set mode with variable size)
externalintegerfnspec tape read block(bytename b,integer bytes)
externalintegerfnspec tape reverse read block(bytename b,integer bytes)
externalintegerfnspec tape write block(bytename b,integer bytes)
! Transfer multiple fixed-size blocks until specified number of bytes done
! (must have set mode with appropriate block size)
externalintegerfnspec tape read blocks(bytename b,integer bytes)
externalintegerfnspec tape reverse read blocks(bytename b,integer bytes)
externalintegerfnspec tape write blocks(bytename b,integer bytes)
externalroutinespec tape write marks(integer n)
externalroutinespec tape space blocks(integer n)
externalroutinespec tape space marks(integer n)
externalroutinespec tape space consecutive(integer n)
! Turn buffer back-to-front in memory, e.g. after reverse-reading from tape
externalroutinespec reverse buffer(bytename b,integer bytes)