Talk:EDSAC 2

A bit of oral history in case someone wants it
I have had the following about the EDSAC 2 instructions from one of the last people to program it. Someone might find it useful when expanding the article.

On 24 Sep 2011, at 22:03, David Barron [When asked about David Wheeler] wrote:

The EDSAC 2 had two hardware modifier registers (or three if you include the instruction counter, which could be used as a modifier to achieve position-independent code - another of David Wheeler's inventions). Realising that this might be a limitation, David provided a capability to use any memory location as a modifier. The instruction '2 f n' added the contents of the address field of location 'n' to the address of the following instruction. '2' instructions could be cascaded, and could be modified with the hardware modifier registers, leading to a variety of ingenious tricks.

But David being David, he also introduced a level of indirection with the instruction '4 f n'. This modified the address of the following instruction by the address field of the location pointed to by the address in the '4' instruction. Of course, '4' instructions could be cascaded giving multiple levels of indirection: or you could use a sequence of '2' and '4' instructions each modifying the next, and possibly themselves modified by the hardware registers.

Has to be said that very few programmers used the '2' instruction, even fewer the '4' instruction, and hardly any a combination of the two. That was the ultimate accolade, akin to the top level of Unix skills "writes own troff macros". (Which I did.) Also used the '2' and '4' instructions in my EDSAC 2 programmes. I have a vague recollection that I once managed to achieve a devilish trick by cascading two '4' instructions, but at this distance in time I can't remember the details :-(

BTW, life's unsolved mysteries: I remember the '2' and '4' instructions, but can't for the life of me remember if there was a '3' instruction in the order code :-(

Happy days David

Hugh.glaser (talk) 14:44, 25 September 2011 (UTC)