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