On Thursday, May 19, 2022 at 6:43:38 PM UTC-7, Alan Frisbie wrote:
(snip)
> Back in 1970 I had a somewhat similar problem. The tapes (from some
> sort of oil field equipment) had been written on a Kennedy incremental
> recorder and one record filled the entire 600' tape. We had two tape
> drives on our lab mini (a Varian 620/i), one 45 ips and one 75 ips. I
> wrote a program to read the gapless tape on the 45 ips drive using
> programed I/O, fill one of two buffers, then fire off a DMA write on the
> 75 ips drive. The higher speed allowed it to keep up while still
> writing inter-record gaps.
There was a story once about someone writing such a tape
on an IBM S/360 machine. The OS won't do that, but if you
write your own channel program, and use data chaining, it is
supposed to be possible. Data chaining allows multiple
channel commands to write to a single data block.
You could even make a loop of channel commands to do it.
> Totally unrelated to that, but also interesting, was a tape whose
> records had to be processed in reverse order. The program ran on
> the big corporate mainframe, an IBM 360/65. All it did was skip
> forward to EOF, then do Backspace-Backspace-Read until it got to
> BOT. It worked perfectly, but it totally freaked out the operators
> in the data center. The noise from the 2420 tape drive made them
> think it was about to fly apart! After the first run we were asked
> to please warn them, and only run it when certain operators were
> on duty. The IBM FE wanted to declare it "abuse" but the drive
> never failed.
Someone goofed. All the S/360 tape drives I know of, have the
ability to read backwards. This was mostly used by sort
programs, that would write records to a temporary tape file,
and then immediately read them back. There are external sort
algorithms specifically designed to work that way.
The way read backwards works, is that the program supplies
the address of the end of the buffer, and it is then filled up from
the end, to the beginning. So, the data comes out in the right
way, but records come off the tape, last one first.
I am not sure how many more modern drives have this ability.
It is difficult for helical scan drives like DAT and Exabyte, so
I suspect that they don't do it. I believe that the 3480 and related
drives, and the Ultrium successors can, but haven't checked lately.
Otherwise, I believe that OS/360 limits blocksize to 32767, though
channel commands have a 16 bit unsigned count. There are no
instructions for 16 bit unsigned arithmetic for S/360, though it
isn't hard to get around. In the early OS/360 days, memory was
small, and every byte counted. On a 64K byte machine, there
wasn't much need to write larger blocks.
I believe that has been changed by the time of z/OS, but I am
not so sure how it is done. Many of the old control blocks,
such as DCB, are still there with 16 bit fields.