Early Programming Books

Chuck Guzis cclist at sydex.com
Mon Jun 21 17:03:52 CDT 2021


On 6/21/21 1:13 PM, Paul Koning wrote:
> 
> 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.

Somewhere I've got the Dijkstra paper.  The 1710 version of the 1620 did
have interrupts and some later versions even had binary math (options).

One of the big issues of the original Model 1(Cadet) and the Model II
was that there were digits with special properties, such as numeric
blank and record mark that had no instructions to test for their
presence--and any attempt to do math (or comparison) with them would
result in an error stop.  Even their definition was a bit fuzzy.
Anything that had the 8 and 4 bits set, but not the 2--84 and 841--was a
numeric blank.  Same for record and group marks.  Rather than multipunch
record marks on my object decks, I used a period, which read in as 821,
but functioned as a record mark.  Basically, you read the special digits
in and kept track of where they were.

You could save enough of the execution state via the Dump Numeric opcode
to see what was going on, but there was no corresponding Read Numeric
opcode to read to the end of core.  That was a fault of the I/O
implementation, not the basic system architecture.  But then Dijkstra
should talk--how about the wonderful I/O capabilities of the first
version of Pascal?

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

No, my point was that they're memory, however they're addressed (i.e.
how they're called).  In fact, if one looks at the lower level PIC
microcontrollers, read/write memory *is* the register set (Harvard
architecture; program memory is execute-only).  A hardware "stack" is a
convenient way of auto-addressing memory.

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

Again, the Burroughs architecture was an outlier from the general
machine population.

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

IBM 650 SAP at least had mnemonics.  The 1401 opcodes at least hinted at
their function.

--Chuck


More information about the cctalk mailing list