>>>
So, has anyone come across a good online resource which compares
vintage CPU
instruction sets? It'd be useful to see what 'core' instructions*
were most
common back in the day and use that as a basis for my own homebrew
effort;...
Have a look here:
http://www.ourcomputerheritage.org/
Around 40 machines from 1950 to 66.
17 machines from Elliott, 11 Ferranti, 3 Leo, 4 English Electric, 2
BTM and 5 ICT.
For me the Elliott 900/920 series is particularly interesting, 4 op-
code bits, a B line modifier and 13 address bits. I worked on
compilers for this before writing one for the Zilog Z8001 to replace
the 920 ATC. The language was Coral 66, and Algol 60 derivative for
real time computing.
The 900 had no OR,XOR or NOT instructions, but it did have a negate
and add instruction, and if you had a word in memory holding the
constant -1, then a negate and add -1 could be used to do a NOT. From
this and the built in AND instruction could be built the other bitwise
logic operations.
There is no subtract operation either which meant that the order of
evaluation had to be changed around within the compiler to use the
negate and add instead.
The other conditional jumps had to be constructed from jump zero, jump
negative and unconditional jump.
Increment but no decrement.
No stack, no immediate operands, an accumulator (A) and a right side
extension (Q) and a B register which could be used to modify any
instruction allowing access to all 256k memory words (though only 128k
of program).
No carry flag so multi word arithmetic was hard work, including
software floating point, thankfully built into hardware in the 920ATC.
My other personal interest is the ICT 1301 which is memorable for
having no program counter, in being 4 bit parallel, 12 digits serial,
having no indexing instructions and being programmable purely in
decimal. Even core memory is decimal, if you try to execute a non
decimal digit the machine would stop at instruction fetch. If you
directly hand key an instruction with a non decimal digit in the
address field, the core memory will not respond (the CPU sees a zero)
and stop the machine with a parity error unless parity checking has
been turned off.