Re: TK50, was: Re: [TUHS] Ultrix Tape: Block Size?

2018-10-18 Thread Warner Losh via cctalk
On Thu, Oct 18, 2018 at 7:23 AM Paul Koning via cctalk <
cctalk@classiccmp.org> wrote:

>
>
> > On Oct 18, 2018, at 4:31 AM, Christian Corti via cctalk <
> cctalk@classiccmp.org> wrote:
> >
> > On Wed, 17 Oct 2018, Clem Cole wrote:
> >> As Paul W pointed out correctly, the TK50 and its children in the DLT*
> >> family all used a fixed format 512 byte *blocks on the tape*.This
> >
> > And that is wrong. The TK50 clearly uses variable block sizes. For
> example, have a look at a RSX11 or VMS tape: ...
>
> Different point.  You're talking about the host programming interface;
> Clem was talking about the physical representation of the data on the
> tape.  Clearly it's easy to accept random-length blocks from the host and
> translate them to a sequence of 512 byte blocks on the media.  SIMH is an
> example of how that is done: it stores tape images as a count field plus
> data, laid down in a disk file that internally consists of a sequence of
> fixed length (512 bytes, traditionally) sectors.
>

Although they may be on the tape in some funky way, there's a higher layer
in the protocol stack that imposes block length, and if that's not properly
honored, the tapes written for Ultrix won't work when read back. You can't
write weird block lengths and expect the applications that read it
downstream to work. I have a vague memory of lecturing one of the
hydrologists I worked for in college on this point when they were sloppy
with their reading / writing of a TK50 with their water flow data on it...
The code fix, which I wound up doing, was easier than explaining this
concept to the hydrologist who, while he knew finite difference code better
than I ever learned, had trouble understanding record boundaries  In
the end, though, we got a larger disk so we could stage / unstage multiple
runs of data at once and then used VMS' BACKUP to save them to tape... The
TK50's were a *LOT* faster when the only job on the system was BACKUP since
they could stream and none of the other OS activity could get in the way...

Warner


Re: TK50, was: Re: [TUHS] Ultrix Tape: Block Size?

2018-10-18 Thread Paul Koning via cctalk



> On Oct 18, 2018, at 4:31 AM, Christian Corti via cctalk 
>  wrote:
> 
> On Wed, 17 Oct 2018, Clem Cole wrote:
>> As Paul W pointed out correctly, the TK50 and its children in the DLT*
>> family all used a fixed format 512 byte *blocks on the tape*.This
> 
> And that is wrong. The TK50 clearly uses variable block sizes. For example, 
> have a look at a RSX11 or VMS tape: ...

Different point.  You're talking about the host programming interface; Clem was 
talking about the physical representation of the data on the tape.  Clearly 
it's easy to accept random-length blocks from the host and translate them to a 
sequence of 512 byte blocks on the media.  SIMH is an example of how that is 
done: it stores tape images as a count field plus data, laid down in a disk 
file that internally consists of a sequence of fixed length (512 bytes, 
traditionally) sectors.

paul



Re: TK50, was: Re: [TUHS] Ultrix Tape: Block Size?

2018-10-18 Thread Christian Corti via cctalk

On Wed, 17 Oct 2018, Clem Cole wrote:

As Paul W pointed out correctly, the TK50 and its children in the DLT*
family all used a fixed format 512 byte *blocks on the tape*.This


And that is wrong. The TK50 clearly uses variable block sizes. For 
example, have a look at a RSX11 or VMS tape:


# mtdump AQ-RAE30-01.tap
Processing input file AQ-RAE30-01.tap
Processing tape file 1
Obj 1, position 0, record 1, length = 80 (0x50)
Obj 2, position 88, record 2, length = 80 (0x50)
Obj 3, position 176, record 3, length = 80 (0x50)
Obj 4, position 264, record 4, length = 80 (0x50)
Obj 5, position 352, record 5, length = 80 (0x50)
Obj 6, position 440, end of tape file 1
Processing tape file 2
Obj 7, position 444, record 1, length = 2048 (0x800)
Obj 8, position 2500, record 2, length = 2048 (0x800)
Obj 9, position 4556, record 3, length = 2048 (0x800)
Obj 10, position 6612, end of tape file 2
Processing tape file 3
Obj 11, position 6616, record 1, length = 80 (0x50)
[...]
Processing tape file 5
Obj 21, position 7328, record 1, length = 9216 (0x2400)
[...]
Processing tape file 8
Obj 363, position 3061188, record 1, length = 2048 (0x800)
[...]
Processing tape file 62
Obj 2370, position 19735716, record 1, length = 32256 (0x7E00)
[...]


Christian


Re: TK50, was: Re: [TUHS] Ultrix Tape: Block Size?

2018-10-17 Thread Clem Cole via cctalk
I took most of this off line, but I'll try to close down the discussion, so
we can get back to TUHS history.

Please be careful of your wording as it is easy to get confused
particularly if you never used the original 1/2" tape system you might not
understand the actual terms.  The term for reading Read and Write I/O Sizes in
a user program are different than tape block sizes (or as they were
originally referred LRECL - Logical Record Length).

As I said to Paul K, I sadly know way more about the minutia of tapes that
I really should admit [I broke in during the 60s using 7-track tapes on the
IBM Mainframes which really date me and I remember the 5-track tapes on one
of the systems, but I never personally used it].


On Wed, Oct 17, 2018 at 2:14 AM emanuel stiebler  wrote:

>  Longer blocks, too (2k or so) which would make any buffering issues more
> severe.
>


*Your user program read/wrote with 2K or more using DMA reads or writes but
it wrote 512 byte 'blocks.'*

As Paul W pointed out correctly, the TK50 and its children in the DLT*
family all used a fixed format 512 byte *blocks on the tape*.This
cannot be changed.   The tape format is handled by the tape controller
microcode and all of the blocks on all the streamers (DLT, 1/4, 1/2", 4mm
and 8mm) that I know about were fixed at 512 byte, although the OS could
write multiple (N) blocks at a time to the tape controller which will will
write as N blocks on the tape.

This was different from 1/2" parallel 7 and 9-track tape which was actually
had variable size 'blocks' in the writes and the tape format.  Since the
terminalogy was defined (by IBM) for 5/7/9 track drives, we still use that
terminology.

The trick is that streamer** format write* (which is bit seral):
 <512 bytes of serial data
[blk1]><512 bytes of serial
data[blk2]>.<512 bytes
of serial data>[blkn]

The key is that there are no inter-record gaps (IRG) between the  and < frames when recording on
a streamer.   BTW: they usually use a serpitine scheme - starting with the
center of the tape and moving outwards in a circular pattern - IIRC down on
tape end and up on tape start -- but that's fuzzy in my memory and I'm at
work so I can not look in any of the controller books  have at home.  If
you lose the bit stream on input (data under run), the tape controller
backs up the tape and when it starts to write again, it goes over the last
block trailer and start its new write at the end of it.   For instance the
original 1/4" QIC format wrote 4 passes, then later when the recording head
got better, it wrote 9 passes and then even more, but in the newer formats
(and withe better media) the head was smaller.

Also remember that EOT is handled different in the streamer formats from
1/2" 7/9 track and IIRC EOT can even differ between the different streamer
formats.

If you look at 1/2" parallel 7/9-track (which is where the terms and basic
concepts originate) 9-track has a 'inter-record gap' between the last
block's trailer and the next block's header.  When IBM originally defined
that 7 and 9 track formats (whch ANSI later codified), these gaps are
defined so that the there is time to start and stop the motors (somewhere,
I have a very old IBM document from the late 60s that describes this very
well using IBM terms like LRECL and DASD - direct access storage device ;-)

The key difference from a streamer tape is that the IBM LRECL or logicial
record size, could (and did) vary ***.  But to try to keep the amount of
wasted space (*i.e.* least amount of inter-record gaps), different programs
use different 'block size' and some formats (like ANSI labeled tapes) the
block size (LRECL) can vary within the tape itself.

Also, I don't think I ever knew why, but for some reason IBM's tape
utilites tended to like LRECL 10240 and 20480.   Since many of us UNIX
folks came from IBM and Multics, we also used the same sizes (*i.e.* 20b or
10240 8 bit bytes) - it was reasonably efficent (we got 150M per
traditional 2400" 1/2 tape at 6250 BPI - you could get 1/3 more space when
3M created a 3600" that fit in the original 1/2" reel) .

Thus the on-tape format of 1/2" (which is parallel encoding and one pass
over the tape):
   ..
[if the last last 'file' on the tape a second]
Note:   LRECL BYTES of BLK1 did not have to be the same as  much less 

Thus concept (and term) of 'tape blocks' was born.  Also note be careful
the term 'file' has specific meaning to a tape.  DEC started to use the
term 'save set' to disamiguated it BTW.   A tape 'file' N tape blocks,
followed by an a EOT mark.Thus, two adjacent tape marks actually
delinated end of recorded data in the tape. Thus in 7/9 track formats when
a new file is written the last  is backed up over and data
frame writing starts over writing the second  after the last


So ...   what this all means is that from the OS side, you start a DMA on X
blocks and then let the tape controller read or write it.  No matter the
number of 

Re: TK50, was: Re: [TUHS] Ultrix Tape: Block Size?

2018-10-17 Thread Paul Koning via cctalk



> On Oct 17, 2018, at 10:50 AM, Ethan Dicks via cctalk  
> wrote:
> 
> On Wed, Oct 17, 2018 at 8:15 AM emanuel stiebler via cctalk
>  wrote:
>> there were
>> TK50Z as an external drive, on "SCSI"
> 
> I have one - for a MicroVAX 2000.  I rarely used it.
> 
>> TK50 on QBUS with an TQK50 controller which really didn't stream to often
> 
> We had one in the 1980s.  You are right.  It didn't.

I wonder if that was a VAX-specific issue.  It streamed fine on J-11 based 
PDP11 systems running RSTS.  While most VAXen have faster CPUs than PDP-11s, 
that doesn't necessarily carry over to I/O.  

paul



Re: TK50, was: Re: [TUHS] Ultrix Tape: Block Size?

2018-10-17 Thread Ethan Dicks via cctalk
On Wed, Oct 17, 2018 at 8:15 AM emanuel stiebler via cctalk
 wrote:
> there were
> TK50Z as an external drive, on "SCSI"

I have one - for a MicroVAX 2000.  I rarely used it.

> TK50 on QBUS with an TQK50 controller which really didn't stream to often

We had one in the 1980s.  You are right.  It didn't.

> TK50 on QBUS with an TQK70 controller, which doubled the memory of the
> TQK50, which was capable of streaming ...

Ooh!  That works?  I might have to nab a TQK70 for that MicroVAX II I
have (the one we had at work in the 1980s.  I got it when the company
folded).

Mostly, really just need to image any tapes I have more than write new
tapes, presuming the media hasn't degraded too much in the past 30
years.

-ethan


TK50, was: Re: [TUHS] Ultrix Tape: Block Size?

2018-10-17 Thread emanuel stiebler via cctalk
On 2018-10-16 20:37, Paul Koning via cctalk wrote:
> 
> 
>> On Oct 16, 2018, at 1:23 PM, William Pechter via cctalk 
>>  wrote:
>>
>> DEC Tape II was the serial driven TU58.
>> The TK50 was CompacTape or something like that.  It was the predecessor of a 
>> number of square tapes...
>>
>> See DLT on Wikipedia https://en.m.wikipedia.org/wiki/Digital_Linear_Tape
>>
>> Bill

> I used DLT on RSTS systems, with a Qbus interface.  Those were modest speed 
> hosts and buses, but I never remember data late or overrun issues, and we 
> drove those tapes quite hard in full time streaming mode for backup and 
> software distribution.  Longer blocks, too (2k or so) which would make any 
> buffering issues more severe.

Just few words here, as I'm not sure anymore we are talking about the
same thing ...

there were
TK50Z as an external drive, on "SCSI"
TZ30 internal drive, on "SCSI", using TK50 tapes
TK50 on QBUS with an TQK50 controller which really didn't stream to often
TK50 on QBUS with an TQK70 controller, which doubled the memory of the
TQK50, which was capable of streaming ...