Early Programming Books

Paul Koning paulkoning at comcast.net
Mon Jun 21 15:13:48 CDT 2021

> On Jun 21, 2021, at 11:26 AM, Chuck Guzis via cctalk <cctalk at classiccmp.org> wrote:
> On 6/21/21 1:39 AM, ben via cctalk wrote:
>> I have 'borrowed' copy of the Green dragon book.
>> The book promotes code generation for a multi register machine. PDP 11,
>> PDP 10, IBM 360. "(C) Bell Labs 1979 " I think is big hint here.
>> The machine model I am looking at is a single accumulator design like
>> the 6800 or the IBM 1130. A AC,PC,Index and stack. No push or pop,
>> subroutine call returns the old pc in the AC.
> What is a register, but a memory location with a special name?    I'm
> assuming that your model does have memory.  Again, look to the older
> systems, such as the much-maligned (by Dijkstra) 1620.  You have *no*
> user-addressable registers--it's all memory-to-memory.   In lieu of a
> stack, you need temporaries in which to stash intermediate results.
> (The IBM 360 has no stack.)

The reason Dijkstra maligned the 1620 is not because of its lack of registers but because of its lack of interrupts and inability to save the full execution state.

It's not so much that registers have special names but that they have a distinct place in the instruction set.  It may be explicit, as in current machines, or implicit in some older machines that only have one "accumulator", like the ARRA or the CDC 6000 series PPUs or the PDP-8.

The registers may actually be implemented as memory (PDP-6 and PDP-10 without the "fast registers" feature), and perhaps the Philips PR8000 which had 8 sets of 8 registers, one per interrupt level.  Independently, registers may appear in the memory address space, as in the PDP-10 or the Electrologica X8.

> One of the restrictions of non-recursive functions in FORTRAN was
> because the idea of a machine-implemented stack was relatively
> uncommon--the Burroughs B5000 (1961) was an outlier in general systems
> architecture at the time.

The X8 also has a stack, not surprising given that Dijkstra was heavily involved in its design.  That machines came out in 1964 I think.

>> ...
> For heaven's sake, all you need is a decent assembler--even a
> cross-assembler.  Writing compilers in a HLL is a recent (post 1970)
> thing.  

More or less, except for the Burroughs mainframes where everything was done in ALGOL or a dialect -- such as ESPOL which was the variant used for writing the kernel.  It apparently didn't have an assembler; the little bit of machine code it needed to get the OS started was as I understand it written in hex (or octal?) machine code.

Some early assemblers are only barely an assembler; consider the Electrologica X1; its assembler takes only a few hundred words, in ROM.  But it has only a rudimentary symbol table and equally rudimentary opcodes; they don't quite rate the usual tag "mnemonic"...


More information about the cctalk mailing list