On 2010-10-30 01:12, ard at p850ug1.demon.co.uk (Tony Duell) wrote:
> I have not seen anyone comment any of the
other things I listed as
> possible firsts on the PDP-11.
> Can anyone come up with an earlier machine that used condition codes?
> How about general registers with addressing modes, which is totally
> orthogonal? How about having the PC as a general register?
The Philips P800
series has the PC as a general register (register 0).
Could you use it like any other register?
There were some restrictions. I don't think you could shift it (at least
ont on the P850). But for many instructions it was just another register.
There are 16 registers, some instructions can
only use the first 8, others
can use all 16. Addressing modes (simpler than the PDP11, I admit) are
pretty much orthogonal.
Sounds like the registers were atleast not as orthogonally used as on a
PDP-11. If an instruction could take a register, it could take any
register. And all addressing modes are valid (well, almost) anywhere.
I think all P800 instructions that had addressing modes could use any
addressing mode. Any instruction with 4-bit register fields could use any
register. Any instruction with a 3 bit register field could use any of
the first 8 registers. And IIRC, like the PDP11, the addressing modes
commonly known as 'immediate' and 'absolute' were a couple of the other
addressing modes with the register specified as 0 (=PC, of course).
I guess the P800 wasn't totally ortogonal but it was a lot more
orthogonal than many other machines.
One wonderful thing about the PDP-11, which
unfortunately did not get
copied, was the nice things that happened because the PC was e general
register. Thus, the PDP-11 never had special versions of instructions to
implement immediate mode operands, and so on. All that was solved
because the PC was a general register.
(Well, the VAX sortof have it, but no other machine I know of.)
As I just mentioned, the P800 family did it this way too.
What do you
mean by condition codes here?
The four low bits of PSW.
Err... I don;t think that's helpful. Quite a lot of machines with a
status register have a 'low 4 bits' of it :-). But that doens't make them
condition codes. Similarly uf you hapopen to implement the same
functionality using other bits of a status registers, doesn't that make
them condition codes?
What I was asking was what fucntionality do you require of these
condtiion codes other than there being conditional jumps on carry, zero, etc?
-tony