From: Marc Donner <marc.donner@gmail.com>
To: Clem Cole <clemc@ccc.com>
Cc: The Eunuchs Hysterical Society <tuhs@tuhs.org>
Subject: [TUHS] Re: who invented the link register
Date: Tue, 25 Oct 2022 16:05:41 -0400 [thread overview]
Message-ID: <CALQ0xCDfGNXr=nSF_K9w1Th3VzzUihqjUQXNu=rPzZW1dRbDrQ@mail.gmail.com> (raw)
In-Reply-To: <CAC20D2OQavK4C5FXxJeMkyFdp8XwXUWacJL-JVXMCsA=ZP1JGg@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 4293 bytes --]
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.
=====
nygeek.net
mindthegapdialogs.com/home <https://www.mindthegapdialogs.com/home>
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 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: 6656 bytes --]
next prev parent reply other threads:[~2022-10-25 20:07 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
2022-10-25 20:05 ` Marc Donner [this message]
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='CALQ0xCDfGNXr=nSF_K9w1Th3VzzUihqjUQXNu=rPzZW1dRbDrQ@mail.gmail.com' \
--to=marc.donner@gmail.com \
--cc=clemc@ccc.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).