# PDP-1 skip group invert bit functionality

I'm confused on the behavior of setting the invert bit on the PDP-1's SKP group. The manual states:

The intent of any skip instruction can be reversed by making Bit 5 (normally the Indirect Address Bit) equal to ONE. For example, the Skip on Zero Accumulator instruction, with Bit equal to one, becomes Do Not Skip on Zero Accumulator.

Is this example equivalent to "skip on not zero accumulator"? Can someone give a more specific example or maybe some pseudo-code on how this works? Thanks!

• Does this answer your question? Conditional skip instructions of the PDP-8 – OmarL Feb 24 at 16:51
• I disagree with the 'close as duplicate'. This is about a different computer. They might have a common heritage but that does not make it a duplicate question. – another-dave Feb 24 at 17:04
• This is how it's implemented: that bit of the instruction word controls whether the result of the test (a single bit value) is inverted before use by the skip logic. (And it is the same idea in the PDP-8, yes.) – RETRAC Feb 24 at 18:38
• That's a funny example of how something made perfect sense to the engineer who designed the instruction set, and wrote it down, but looked at later by someone else it's like - wut? Should of course have been "Skip on Not Zero Accumulator" ... – davidbak Feb 24 at 20:08
• I would as well consider it at least as strong related - if not duplicate. it's the same logic used and mechanic implemented. – Raffzahn Feb 25 at 10:59

Is this example equivalent to "skip on not zero accumulator"?

Yes.

It's the same idea as skips on the PDP-8, as explained in this Q&A: Without the I bit, you "or" the conditions, and skip if at least one of the conditions is true. With the I bit, you negate the final result, which (using de Morgan's rule) is equivalent to an "and" of the conditions each negated by themselves.

So we get

``````640100 SZA  skip on AC zero
640400 SMA  skip on sign AC = 1 (negative)
640500      skip on AC zero or AC negative
650500      skip on not (AC zero or AC negative)
= skip on AC not zero and AC not negative
= skip on AC positive and not zero
``````

And as described in the explanation of the Spacewar code, the last example actually gets the "unofficial" mnemonic of `SPQ`.

It's unofficial in the sense that you need to define these mnemonics in your assembler source code:

``````szm=sza sma-szf
spq=szm i
clc=cma+cla-opr
ioh=iot i
``````

and they are also not listed in the manual. But as the Spacewar commentary says, it was an encouraged practice.

• So `spq` is equivalent to `spa snz` on the pdp-8? Hpw is that unofficial? – OmarL Feb 24 at 19:31

If the normal instruction is "Skip on X, do not skip on not-X" then if setting bit 5 resulted only in "do not skip on X, do not skip on not-X", it would not be very useful.

Therefore we can probably assume the effect of setting bit 5 is to get you "do not skip on X, skip on not-X".

This is guesswork based on a consideration of reasonableness, not on actual machine experience.

• Not only would the behavior described in your first paragraph be not useful, it is questionable why engineers would put so much effort into developing something that they knew would do nothing. – DrSheldon Feb 24 at 18:32
• Exhibit A: the PDP-10 'SKIP' instruction, which does not skip; the 'JUMP' instruction, which does not jump. :-) – another-dave Feb 24 at 21:35