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 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."* > > ᐧ > > On Tue, Oct 25, 2022 at 1:01 PM Lawrence Stewart > 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 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 >> >>