On 11/06/10 02:03, ard at p850ug1.demon.co.uk (Tony Duell) wrote:
>>>> > >>> > >
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.
Ok. Nice.
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.
The PDP-11 actually pulls that trick on a few addressing modes as well.
Addressing mode 6 and 7 autoincrement the register if it is the PC, but
not for other registers.
(So a thing like MOV FOO,R0 is encoded as
MOV x(PC),R0
.WORD .-FOO
and the PC should obviously be incremented again here, but x(Rn) does
not exist as a variant with autoincrement of the register.)
> > >
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.
Hmm. Maybe still a first for the PDP-11 then...? :-)
>>>> > >>> > > 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'
Sounds slightly different than the condition codes of the PDP-11 then,
but not really like the immediate test and do instructions like the
PDP-10. Closer to the PDP-11, it would seem.
Johnny