[Info-vax] Backup TK50 tapes
David Froble
davef at tsoft-inc.com
Wed Feb 27 23:52:02 EST 2013
Johnny Billquist wrote:
> On 2013-02-27 14:07, Stephen Hoffman wrote:
>> On 2013-02-27 03:10:49 +0000, David Froble said:
>>
>>> I'm going to take a guess here and state that the 32K limit was in
>>> VMS. Specifically, there is a VMS limit of 32K for string lengths.
>>> The string descriptors use 16 bits to specify the string size. I'm
>>> going to guess that string descriptors might have been used to specify
>>> buffers. 16 bit length, 32 bit address ...
>>
>> There was a limit of 32 KiB for string descriptors, and that old limit
>> is still present on OpenVMS VAX systems. The limit was lifted on the
>> 64-bit systems at OpenVMS Alpha V7.0, and on OpenVMS I64 systems. Quick
>> C example of 64-bit string descriptors:
>> <http://labs.hoffmanlabs.com/node/787>
>
> One reason for the restriction on VAX might be because string
> manipulating instructions actually have a 16-bit field for string
> lengths, meaning the maximum string length for any VAX instruction is
> 65535 bytes. Which is one less than 64K. So, a limit of 32K might not be
> totally unreasonable in software.
>
>> (Whether it was the size of the tape controller hardware registers or
>> maybe ANSI tape specs or the old 32-bit descriptors that led to the
>> transfer size limit or a general "32-bits is good enough" moment,
>> donno. Don't really care all that much about the origin of the limit,
>> either, as I'm not booting off tapes, not copying tapes, and have
>> relegated the remaining tapes to long-term archival-storage purposes,
>> for those cases where there are still tape loaders or tape libraries
>> around. I'll leave that to the retronauts and retrohistorians to
>> debate.)
>
> I assume you meant "16-bit" when you wrote "32-bit" above... :-)
>
> Johnny
>
General format of a string descriptor. One of the bytes is a string
type code. There can also be 3 Longword and maybe 4 Longword string
descriptors. Can't remember, and don't feel like reading the fine manual.
While described as a string descriptor, the descriptor can be set as a
fixed length string (to prohibit changes to the length) and used as a
pointer to a buffer, perhaps created with a "get VM" type of call. As
such, the buffer can be accessed as a string by any VMS language that
provides support for string descriptors.
If treated as an unsigned integer, the size could actually be 65535 I
guess, and I have no idea why this wasn't done.
0 31
------------------------------
| Word length | Byte | Byte |
------------------------------
| Long address of the string |
------------------------------
I do so prefer the old style documentation much better than the new
style documentation, a bit of C code ....
More information about the Info-vax
mailing list