[TUHS] early unix rand

ron minnich rminnich at gmail.com
Thu Mar 14 03:17:45 AEST 2024


Got the name wrong: Computer Engineering: A DEC View of Hardware Systems
Design

On Wed, Mar 13, 2024 at 9:41 AM ron minnich <rminnich at gmail.com> wrote:

> by the way, I realize that random number urban legend sounds ridiculous,
> in light of how hardware design is done today, but those of you who did
> hardware design in those days (guilty!), and had access to -11
> schematics and boards, might wonder if it's not possible. There was a
> habit, in those days,  for performance reasons, of subbing transparent
> latches for flip-flops to gain a little time. An engineer I knew at Amdahl
> said that was a pretty hot topic there. Certainly, the technique of design
> for testability was not really in wide use in the -11 days. Gordon Bell's
> book "Computer Design" is particularly instructive.
>
> E.g., how did you verify the floating point on your new machine? Put an
> older machine next to a new machine, do lots of computation, see if there
> is disagreement, you've found a bug in the new machine, right? Maybe.
> Sometimes,  you discover the older machine had a bug the newer one did not
> ... happened more than once, including on the 360 to 370 transition.
>
> On Tue, Mar 12, 2024 at 6:09 PM ron minnich <rminnich at gmail.com> wrote:
>
>> There used to be an urban legend about multiply overflow and the PDP 11.
>>
>> This would’ve been circa 1976. Someone from DEC told us that on a
>> multiply overflow, the contents of the destination register would be “kind
>> of” random. I was never able to verify that claim. But that might explain
>> this code.
>>
>> On Tue, Mar 12, 2024 at 16:05 Jonathan Gray <jsg at jsg.id.au> wrote:
>>
>>> On Tue, Mar 12, 2024 at 08:55:02AM -0400, Russ Cox wrote:
>>> > Hi all (and TUHS),
>>> >
>>> > The Third Edition rand(III) page [1] ends with
>>> >
>>> > WARNING  The author of this routine has been writing
>>> >     random-number generators for many years and has
>>> >     never been known to write one that worked.
>>> >
>>> > My understanding is that Ken wrote the rand implementation.
>>> > But I'm curious about the origin of this warning.
>>> > I had assumed that Ken wrote it as a combination warning+joke,
>>> > but Rob suggested that to him it didn't sound like Ken and
>>> > perhaps Doug or Dennis had written it. Does anyone remember?
>>> >
>>> > Separately, I am trying to find out what the very first
>>> > Unix rand implementation was. In the TUHS archives,
>>> > the incomplete V2 sources contain a reference to srand
>>> > in cmd/bas0.s [2], but there is no definition in the tree.
>>> > The V3 man pages list it, but as far as I can tell full
>>> > library sources do not appear in the TUHS archives
>>> > until the V6 snapshot. The V6 rand [3] is:
>>> >
>>> > rand:
>>> >     mov r1,-(sp)
>>> >     mov ranx,r1
>>> >     mpy $13077.,r1
>>> >     add $6925.,r1
>>> >     mov r1,r0
>>> >     mov r0,ranx
>>> >     bic $100000,r0
>>> >     mov (sp)+,r1
>>> >     rts pc
>>>
>>> matches V5:
>>> https://www.tuhs.org/cgi-bin/utree.pl?file=V5/usr/source/s3/rand.s
>>> Distributions/Research/Dennis_v5/v5root.tar.gz
>>> <https://www.tuhs.org/cgi-bin/utree.pl?file=V5/usr/source/s3/rand.sDistributions/Research/Dennis_v5/v5root.tar.gz>
>>>
>>> >
>>> > Perhaps this is the original rand as well? It is hard to imagine
>>> > a much simpler one, other than perhaps removing the addition,
>>> > but doing so would create a sequence of only odd numbers.
>>> > >From the man page description it sounds like this has to be the
>>> > original generator, perhaps with different constants.
>>> >
>>> > Thanks!
>>> >
>>> > Best,
>>> > Russ
>>> >
>>> > [1]
>>> >
>>> https://github.com/dspinellis/unix-history-repo/blob/Research-V3/man/man3/rand.3
>>> > [2]
>>> >
>>> https://github.com/dspinellis/unix-history-repo/blob/Research-V2/cmd/bas0.s
>>> > [3]
>>> >
>>> https://github.com/dspinellis/unix-history-repo/blob/Research-V6/usr/source/s3/rand.s
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.tuhs.org/pipermail/tuhs/attachments/20240313/df352b28/attachment-0001.htm>


More information about the TUHS mailing list