> > > 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.
Cool. So you could add to it, index by it, and so on?
I think so. I can't find my programemrs pocekt guide fo the machine at
the momnet. But I am pretty sure that register 0 could often be used like
any other register.
There is at least one oddity. There are no autoicrement/autodecrement
adressing modes on the P800s. However, in some cases, if you use the PC
in some instructions it is autoincrements. For example the 'immediate'
addrtessign mode isessentialy a (PC) operation (i.e. take the word
pointed to by register 0) and has that bit pattern. But for obvious
reaosns the PC is autoincrements then.
I guess the
P800 wasn't totally ortogonal but it was a lot more
orthogonal than many other machines.
Indeed sounds nice. When did the machine appear?
My P850 CPU service manual is copyright 1972, which alas puts it after
the PDP11, but I thoguht the series was around a bit before that.
> >
> 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?
Sorry. I was just being lazy, and trying to explain condition codes by
referring to what they are on the PDP-11.
To try and be more specific then: condition codes are bits that are
set/reset as a result of operations performed by the processed, and upon
which you can the make conditional branches/jumps on.
Now the P800 has a very odd way of doing this. There is a 2 bit status
registers. It is set differnet ways according to the results of some
instructiuos (for example, an arithmetic instruciton will set it one way
if the result is 0, a differnet way if there's a carry out, etc). I/O
operations set it one way for device ready, another for certain errors, etc.
The condtional branches have a 3-bit condition field. You can branch on
the status beits being any particualr value (00, 01, 10, 11), them not
being one of 3 values 9I forget which one is omitted) or 'always'
-tony