The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: Clem Cole <clemc@ccc.com>
To: Lawrence Stewart <stewart@serissa.com>
Cc: The Eunuchs Hysterical Society <tuhs@tuhs.org>
Subject: [TUHS] Re: who invented the link register
Date: Tue, 25 Oct 2022 14:26:21 -0400	[thread overview]
Message-ID: <CAC20D2OQavK4C5FXxJeMkyFdp8XwXUWacJL-JVXMCsA=ZP1JGg@mail.gmail.com> (raw)
In-Reply-To: <EBEBFB0A-7360-4C3E-B26F-71977200639C@serissa.com>

[-- Attachment #1: Type: text/plain, Size: 3591 bytes --]

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."*

ᐧ

On Tue, Oct 25, 2022 at 1:01 PM Lawrence Stewart <stewart@serissa.com>
wrote:

> I’ve 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 “SP”
> (subprogram) instruction transferred the low 11 bits of the instruction
> directly to the program counter.  They do not show the old program counter
> being saved in the AR register, nor is there yet the “TA” (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 “Some 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 address
> 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 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 latter
> could be the first instruction of the subroutine.)
>
> Originally I thought that maybe David Wheeler invented the Link register,
> since he’s often credited with inventing the subroutine, but it looks like
> the particular thing he did was the idea of the “Wheeler Jump” 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 have
> link, but it was proposed for EDSAC II.  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 somewhat
> >> 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 behaviour
> > 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
>
>

[-- Attachment #2: Type: text/html, Size: 5256 bytes --]

  reply	other threads:[~2022-10-25 18:28 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-12 19:01 [TUHS] " ron minnich
2022-10-24 23:46 ` [TUHS] " Angelo Papenhoff
2022-10-25  8:35   ` Angelo Papenhoff
2022-10-25 17:00     ` Lawrence Stewart
2022-10-25 18:26       ` Clem Cole [this message]
2022-10-25 20:05         ` Marc Donner
2022-10-25 21:03           ` Lawrence Stewart
2022-10-26  4:45       ` Ralph Corderoy
2022-10-26  5:29         ` Angelo Papenhoff
2022-10-26  7:52           ` Marc Donner
2022-10-26 11:12         ` Larry Stewart
2022-10-25 22:24 ` Bakul Shah
2022-10-25 22:41   ` Harald Arnesen
2022-10-25 22:47   ` Robert Clausecker
2022-10-25 22:52 Noel Chiappa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAC20D2OQavK4C5FXxJeMkyFdp8XwXUWacJL-JVXMCsA=ZP1JGg@mail.gmail.com' \
    --to=clemc@ccc.com \
    --cc=stewart@serissa.com \
    --cc=tuhs@tuhs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).