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_INVALID,DKIM_SIGNED, HTML_FONT_LOW_CONTRAST,HTML_MESSAGE,MAILING_LIST_MULTI autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 7740 invoked from network); 25 Oct 2022 18:28:18 -0000 Received: from minnie.tuhs.org (50.116.15.146) by inbox.vuxu.org with ESMTPUTF8; 25 Oct 2022 18:28:18 -0000 Received: from minnie.tuhs.org (localhost [IPv6:::1]) by minnie.tuhs.org (Postfix) with ESMTP id F1DA240F26; Wed, 26 Oct 2022 04:27:56 +1000 (AEST) Received: from mail-ua1-f48.google.com (mail-ua1-f48.google.com [209.85.222.48]) by minnie.tuhs.org (Postfix) with ESMTPS id 2466B40154 for ; Wed, 26 Oct 2022 04:27:48 +1000 (AEST) Received: by mail-ua1-f48.google.com with SMTP id c12so2316288uat.13 for ; Tue, 25 Oct 2022 11:27:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ccc.com; s=google; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=2ukUGTxuLocUnBe9ru/Xfb0duMNwgE9uDLh2zxUt+oc=; b=sPpAtDRaNPNTjYgBNFMW7WNobUO5ocuas9P7RSwaEi2+N19S0ye2RcM+76Q50r6Lku +59tyY/YEanz9NFlGJ+YBYPzM8DVKb7KwPdl6zj+Rmdq4No6wQ1WDFGVttwh1NzVvMci UnyqKBVLGLB48QZrQZG6T6jyyOyN+Mcv7eQKA= 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=2ukUGTxuLocUnBe9ru/Xfb0duMNwgE9uDLh2zxUt+oc=; b=zGylObWHaNrJYM3ugcQ4xojpCZQW2q0eDfSguF/aZm1cI/yBOX4vAPi5lwyOr7u2kG +GLPUt4q7iu4oRpEY+EWmK2meTh2HAPAbsHmAGpcQkuR8ourJG1R+3zjymxcGJksaAK8 ljitKomdzpsp8yJpik4etPP6PdrpZKPFPuqGxdpeL7ASIsL0A21cp37HCjbWpTc/7vjg o18B33OFVrjULt86eu28Sby//41/6G4KolrfOK9uqJjaHJX9JqwK/5T+70/JyL+dsdLw WX7HMd4WxPRLEdUkKxPElg4QZqKhv9J00LsQc/LnzsiK36vXkvwn+iCYDqbd5+3FmLXQ SjQQ== X-Gm-Message-State: ACrzQf2/1ySms/X94ZY7dNRMnqbvTCRQXdJOwYSCudwdD+stS+HCgNT4 hANmyBPo8UvPvG4TG1Qq4Sfy2T0z1HYbXj4hwts+mcyQ2PG1dg== X-Google-Smtp-Source: AMsMyM4f8EZ4zrh8KUrdWoiokS9NtvkAReftWqXPUWGVJfC6rMS1GjjNuW5l0u8iTwKvXgBc0ilZCMObnBeKBOYuoIA= X-Received: by 2002:ab0:26d9:0:b0:3f4:ef5c:9e9a with SMTP id b25-20020ab026d9000000b003f4ef5c9e9amr18370706uap.41.1666722406929; Tue, 25 Oct 2022 11:26:46 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Clem Cole Date: Tue, 25 Oct 2022 14:26:21 -0400 Message-ID: To: Lawrence Stewart Content-Type: multipart/alternative; boundary="000000000000012cfe05ebe00d97" Message-ID-Hash: CLYP5AXCGSAKDCDIQJL3M4VDPK43P4IJ X-Message-ID-Hash: CLYP5AXCGSAKDCDIQJL3M4VDPK43P4IJ X-MailFrom: clemc@ccc.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: --000000000000012cfe05ebe00d97 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 documents= . 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 counte= r > 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 t= he > 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, sinc= e > 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 addres= s > 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 additional > memory location, to hold the return address for each point of call, and o= ne > additional instruction, one to load the return address into the accumulat= or > and one to store it into the code at the end of the subroutine. (The latt= er > 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 l= ooks 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 t= he > subroutine. That idea was used in Whirlwind as well. EDSAC I did not ha= ve > 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 somewh= at > >> well. It's late 40s machine, so you probably won't find anything *much= * > >> older. > > > > Addendum: the original report from 1947 does not describe this behaviou= r > > yet. The change came in oct. 1948. M-668 mentions it and refers to M-64= 7, > > 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 > > --000000000000012cfe05ebe00d97 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I agree that sounds pretty conclusive. I knew Wheeler h= ad used his JUMP with EDSAC, I had been wondering if Wilkes had something i= n his machine (EDSAC II) - sounds like it was proposed. But I would not be = surprised if the idea was Wilkes, but Whirlwind implemented it.=C2=A0 =C2= =A0They all talked to each other.

With apologies to = Tom Lehrer ...
"And then I write
By morning, night,
<= font color=3D"#0000ff">And afternoon,
And pretty soon
My n= ame in Dnepropetrovsk is cursed, When he finds out I publish first."

3D""=E1=90=A7
On Tue, O= ct 25, 2022 at 1:01 PM Lawrence Stewart <stewart@serissa.com> wrote:
I=E2=80=99ve just spent a fun hour looking at th= e old Whirlwind documents.=C2=A0 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.=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

--000000000000012cfe05ebe00d97--