Date: Fri, 15 Feb 2008 12:54:01 -0500
From: Dave McGuire
As one who has
had the extreme displeasure of programming both the
8X300 and an 8X305,
Are they really that bad? How so?
Brain-dead in the extreme, although the model might be interesting
for the "1900 Computer" thread. You had 8 registers, a shifter and
an ALU. R0 was the implied source for binary operations, but not
implied as an accumulator. The instruction set was 8 instructions:
1. Move between the register file and the I/O bus
2. Add using R0 betweeen the register file and the I/O bus
3. AND as in (2)
4. XOR as in (2)
5. XMIT - a "Load Immediate" (8 bits to register file, but only 4
bits to I/O bus.
6. XEC - Execute instruction at the location formed by adding the 8-
bit immediate field and the contents of a register.
7. NZT - replace the low order 8 bits (or 4 bits if I/O bus is being
tested) of the program counter with a literal value if the specified
register is nonzero.
8. JMP - unconditionally jump to the 13 bit immediate address.
That's it. Thee were some strange conventions with the I/O
registers, being designated as "right" and "left" bank which
restricted their use in operations. There was one status flag--
overflow--addressable as regiser 8.
No interrupts, unless you were fortunate enough to have an 8x310 ICC,
which gave you a 4-level stack and 3 interrupts. The 8x310 also gave
you some new instructions, implemented by decoding "do nothing" move
instructions. You got a PUSH (current PC+2), a RETURN, SET and CLEAR
interrupt mask and a clear pending interrupt status. You could use
the 310 to implement a CALL by using a PUSH followed by a JMP. But
8x310s were rarely seen.
By any measure, the PIC1640 was miles ahead in terms of ease of
programming.
AFAIK, the relay-based Mark I was the first Harvard architecture
machine. Was the 8x300 the first microprocess (maybe too strong a
word) to employ Harvard architure? I don't know, but it was an early
design.
It's interesting to me that, although the PIC claims to have Harvard
architure, the model has been violated somewhat in the more advanced
PICs. So, for example, members of the PIC18xx series allow for
fetching of data values from program memory (TBL instruction) and
modifying and re-flashing program memory under program control.
Cheers,
Chuck