From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FROM,HTML_FONT_LOW_CONTRAST, HTML_MESSAGE,MAILING_LIST_MULTI autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 19959 invoked from network); 25 Oct 2022 20:07:04 -0000 Received: from minnie.tuhs.org (50.116.15.146) by inbox.vuxu.org with ESMTPUTF8; 25 Oct 2022 20:07:04 -0000 Received: from minnie.tuhs.org (localhost [IPv6:::1]) by minnie.tuhs.org (Postfix) with ESMTP id 78D3140F26; Wed, 26 Oct 2022 06:06:57 +1000 (AEST) Received: from mail-oi1-f181.google.com (mail-oi1-f181.google.com [209.85.167.181]) by minnie.tuhs.org (Postfix) with ESMTPS id 3873840154 for ; Wed, 26 Oct 2022 06:06:53 +1000 (AEST) Received: by mail-oi1-f181.google.com with SMTP id o64so15749926oib.12 for ; Tue, 25 Oct 2022 13:06:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=nMOgCx7PurORXiP8gftK8JnZUAAro40IHgs5dzWdoGY=; b=UwmI8tyqNhZALlKuaK/blJINdw4XkZTd6ccPvFy+yR5W3NUt6iyiFm/zE8veLtn6Vz hADt1I1q2QKFaAWaZ0pV1y3pZ/jOPII7fimr+WJhx+IMwXjDoNPBqVVCYKNao2MljlTy uhn5pZUK/34YaqKdfgY8hKl/v3yqFYlE+wKE3s8kuLT6fZ6Dh7ohTdSqKxqhF5sc66+X G9l/V4Q/Hom8ls/54Ih/mR5XFaYC2YrnNE0Yd8KzdMNQvH31v8xYieP3RIj8aVR8AraJ f+aQNVHwUQ5ZTM2xExp10Bcne7Lpk9AjM3bkEC3uyW2yzG0xewYgD8AUYrAHleVz/Ucc Mu/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=nMOgCx7PurORXiP8gftK8JnZUAAro40IHgs5dzWdoGY=; b=LIO5l+iSSBiZsAobVSFe5BQ9sLKyxWwlg5xV3RUoPDHMRl6TzFIKzocgllU0/ML0fC tLV8JGj/Qe59D0BsRAxaNG63/iTh8aBF9TzinvzHsC2kgtUm4/CWNwvNMN3twpO1g1hm q8qVSIxCqFXmAI08Ag7Urw6QRFGUFduBL1nW8ut2DBqeJHPHzgTVtjXYkzpYUCQPjMlF IE4tPhJQIaI3zuTDU7hm6Bgk6YER9DHziT5kFISmpEuBT/lqLm4YY4YqdF8z1E5MgDN9 cWXLzXuvdsHTDY2qiaBu/nbEGKpDTlCq5/YHegylyz1Lqh5Di1Iyrbueg2ZeDGczT1Mo ptsA== X-Gm-Message-State: ACrzQf03PVhsHYJ72VTWw8gbGe+4gRo2oQLbzozsFlj2WsGZnZTrZ0ee VLnGvIwllc6LKCasR4f3w6niyRguNR9oM1o3t5eS1ibGkAo= X-Google-Smtp-Source: AMsMyM5R+JSReNxFAYs/KFZDVYT610zZSehg4nv8YGUo6Bilz1WDTMA5H1VOA8EO/3OJjDsYF3OHHC71ukLZEQO+Aos= X-Received: by 2002:aca:aa0a:0:b0:355:39e1:ee16 with SMTP id t10-20020acaaa0a000000b0035539e1ee16mr19703359oie.175.1666728352361; Tue, 25 Oct 2022 13:05:52 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Marc Donner Date: Tue, 25 Oct 2022 16:05:41 -0400 Message-ID: To: Clem Cole Content-Type: multipart/alternative; boundary="0000000000006133fb05ebe16f25" Message-ID-Hash: VA5RXT2ZXZ4KGZX7ZQDUIRLAAHXNL2T7 X-Message-ID-Hash: VA5RXT2ZXZ4KGZX7ZQDUIRLAAHXNL2T7 X-MailFrom: marc.donner@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-tuhs.tuhs.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: The Eunuchs Hysterical Society X-Mailman-Version: 3.3.6b1 Precedence: list Subject: [TUHS] Re: who invented the link register List-Id: The Unix Heritage Society mailing list Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --0000000000006133fb05ebe16f25 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable There was a guy at IBM research who had a patent framed on his wall that he claimed was for indirect addressing. Sadly, I don't remember his name. I'll ask Peter Capek if he remembers who it was. On the other hand, I'm now reading a book called "Turing's Cathedral" that goes into considerable length talking about what is essentially indirect addressing in the context of the evolution of the Von Neumann model and its limitations. =3D=3D=3D=3D=3D nygeek.net mindthegapdialogs.com/home On Tue, Oct 25, 2022 at 2:27 PM Clem Cole wrote: > I agree that sounds pretty conclusive. I knew Wheeler had used his JUMP > with EDSAC, I had been wondering if Wilkes had something in his machine > (EDSAC II) - sounds like it was proposed. But I would not be surprised if > the idea was Wilkes, but Whirlwind implemented it. They all talked to > each other. > > With apologies to Tom Lehrer ... > > *"And then I write* > *By morning, night,* > *And afternoon,* > *And pretty soon* > *My name in Dnepropetrovsk is cursed, When he finds out I publish first."= * > > =E1=90=A7 > > On Tue, Oct 25, 2022 at 1:01 PM Lawrence Stewart > wrote: > >> I=E2=80=99ve just spent a fun hour looking at the old Whirlwind document= s. I >> think I agree with Angelo. >> >> The 1947 block diagrams and time-pulse charts show that the original =E2= =80=9CSP=E2=80=9D >> (subprogram) instruction transferred the low 11 bits of the instruction >> directly to the program counter. They do not show the old program count= er >> being saved in the AR register, nor is there yet the =E2=80=9CTA=E2=80= =9D (transfer >> address) instruction to save the AR register to memory. >> >> Evidently both these new features, which together provide a branch and >> link function were likely described in memo M-647, which is not scanned >> anywhere I can find. It is called =E2=80=9CSome new orders for WWI" >> >> There was already logic for the program counter to drive the bus, and >> logic to capture the bus into the AR register, so the modification to SP= to >> save the old program counter was likely pretty easy: drive the bus from = the >> program counter, and capture it in AR, just by adding some new diodes to >> the sequencer. >> >> Adding the Transfer Address instruction was likely also pretty easy, >> since there was a way for the AR register to drive the bus. >> >> With the new SP and TA, one would use SP to call a subroutine, and the >> first instruction of any subroutine would be TA to save the return addre= ss >> into the final location of the subroutine. (TA only modified the low 11 >> bits of the 16 bit location) >> >> Before these instructions, a subroutine call would require one additiona= l >> memory location, to hold the return address for each point of call, and = one >> additional instruction, one to load the return address into the accumula= tor >> and one to store it into the code at the end of the subroutine. (The lat= ter >> could be the first instruction of the subroutine.) >> >> Originally I thought that maybe David Wheeler invented the Link register= , >> since he=E2=80=99s often credited with inventing the subroutine, but it = looks like >> the particular thing he did was the idea of the =E2=80=9CWheeler Jump=E2= =80=9D where code >> explicitly stores the return address into the instruction at the end of = the >> subroutine. That idea was used in Whirlwind as well. EDSAC I did not h= ave >> link, but it was proposed for EDSAC II. Whirlwind was likely first to >> implement. >> >> > On 2022, Oct 25, at 4:35 AM, Angelo Papenhoff wrote: >> > >> > On 25/10/22, Angelo Papenhoff wrote: >> >> Might be earlier than this, I just happen to know the Whirlwind >> somewhat >> >> well. It's late 40s machine, so you probably won't find anything *muc= h* >> >> older. >> > >> > Addendum: the original report from 1947 does not describe this behavio= ur >> > yet. The change came in oct. 1948. M-668 mentions it and refers to >> M-647, >> > which however is not available online. >> > So the concept of saving the resturn address in another register is at >> > least as old as oct. 1948, but again I wouldn't be surprised if some >> > even slightly earlier computer had it too. >> > >> > aap >> >> --0000000000006133fb05ebe16f25 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
There was a guy at IBM research who had a paten= t framed on his wall that he claimed was for indirect addressing.=C2=A0 Sad= ly, I don't remember his name.=C2=A0 I'll ask Peter Capek if he rem= embers who it was.

On the other hand, = I'm now reading a book called "Turing's Cathedral" that g= oes into considerable length talking about what is essentially indirect add= ressing in the context of the evolution of the Von Neumann model and its li= mitations.


On Tue, Oct 25, 2022 at 2:27 PM= Clem Cole <clemc@ccc.com> wrote= :
I agree that sounds pretty conclusive. I knew Wheeler had used his JU= MP with EDSAC, I had been wondering if Wilkes had something in his machine = (EDSAC II) - sounds like it was proposed. But I would not be surprised if t= he idea was Wilkes, but Whirlwind implemented it.=C2=A0 =C2=A0They all talk= ed to each other.

With apologies to Tom Lehrer ...
= "And then I write
By morning, night,
And afternoon,
A= nd pretty soon
My name in Dne= propetrovsk is cursed, When he finds out I publish first."<= /div>

3D""=E1=90=A7

<= div class=3D"gmail_quote">
On Tue, Oct= 25, 2022 at 1:01 PM Lawrence Stewart <stewart@serissa.com> wrote:
I=E2=80=99ve just spent a fun ho= ur looking at the old Whirlwind documents.=C2=A0 I think I agree with Angel= o.

The 1947 block diagrams and time-pulse charts show that the original =E2=80= =9CSP=E2=80=9D (subprogram) instruction transferred the low 11 bits of the = instruction directly to the program counter.=C2=A0 They do not show the old= program counter being saved in the AR register, nor is there yet the =E2= =80=9CTA=E2=80=9D (transfer address) instruction to save the AR register to= memory.

Evidently both these new features, which together provide a branch and link= function were likely described in memo M-647, which is not scanned anywher= e I can find.=C2=A0 It is called =E2=80=9CSome new orders for WWI"

There was already logic for the program counter to drive the bus, and logic= to capture the bus into the AR register, so the modification to SP to save= the old program counter was likely pretty easy: drive the bus from the pro= gram counter, and capture it in AR, just by adding some new diodes to the s= equencer.

Adding the Transfer Address instruction was likely also pretty easy, since = there was a way for the AR register to drive the bus.

With the new SP and TA, one would use SP to call a subroutine, and the firs= t instruction of any subroutine would be TA to save the return address into= the final location of the subroutine.=C2=A0 (TA only modified the low 11 b= its of the 16 bit location)

Before these instructions, a subroutine call would require one additional m= emory location, to hold the return address for each point of call, and one = additional instruction, one to load the return address into the accumulator= and one to store it into the code at the end of the subroutine. (The latte= r could be the first instruction of the subroutine.)

Originally I thought that maybe David Wheeler invented the Link register, s= ince he=E2=80=99s often credited with inventing the subroutine, but it look= s like the particular thing he did was the idea of the =E2=80=9CWheeler Jum= p=E2=80=9D where code explicitly stores the return address into the instruc= tion at the end of the subroutine.=C2=A0 That idea was used in Whirlwind as= well.=C2=A0 EDSAC I did not have link, but it was proposed for EDSAC II.= =C2=A0 Whirlwind was likely first to implement.

> On 2022, Oct 25, at 4:35 AM, Angelo Papenhoff <aap@papnet.eu> wrote:
>
> On 25/10/22, Angelo Papenhoff wrote:
>> Might be earlier than this, I just happen to know the Whirlwind so= mewhat
>> well. It's late 40s machine, so you probably won't find an= ything *much*
>> older.
>
> Addendum: the original report from 1947 does not describe this behavio= ur
> yet. The change came in oct. 1948. M-668 mentions it and refers to M-6= 47,
> which however is not available online.
> So the concept of saving the resturn address in another register is at=
> least as old as oct. 1948, but again I wouldn't be surprised if so= me
> even slightly earlier computer had it too.
>
> aap

--0000000000006133fb05ebe16f25--