I remember taking a course in systems architecture from an IBM'er when he pointed out that, based on their measurements and sampling, arithmetic wasn't as big a portion of the instruction mix as might commonly be thought.  He said, "Computers don't add.  What computers do is branch." (IBM lingo for a jump or a change of PC).  It was one of those eye opening moments.

So, Yes, you are going to have a bunch a jumps, it's really about how they get hit.

I found doing a compare and conditional jump nice, but perhaps that's because this is how the x86 does unsigned arithmetic, which the 10 doesn't really have.

I think the only time skips ever get confusing for me is when you want to transfer execution based on a bunch of bits all being on.  You can test for them all being off (TxnE), but the corresponding test (TxnN) skips if any of them are on.  So that means you have to complement the bits (TRC, say) then test them for being off while complementing them back again.

I believe the saying went something like, "Tricky, tricky, track" or something like that.

On 2/7/22 5:40 PM, Johnny Billquist wrote:
On 2022-02-07 21:41, Dennis Boone wrote:
  > PDP-8 works this way too.  Many people wrinkle their noses about it,
  > but I find the skip model to be very convenient and easy to wrangle.

The Honeywell x16 family does this too.  It's more or less
definitionally spaghetti code, which is probably the cause of the nose
wrinkling.  It'd be interesting to see if the rise in awareness of some
of this sort of "structured code" thinking coincides with a decline in
architectures using skips.

I don't agree. Skips aren't really any more strange than branches. We're talking assembler here anyway. There are bound to be jumps all over the place always. Not really more spagetti in any architecture compared to any other.

The probably more "ugly" thing in the PDP-8 is that you do self modifying code very often.

With the limited instruction set of the PDP-8, only one accumlator, and very limited addressing modes, combining any instruction with an ISZ (increment, basically) of that instruction allowed it to walk over some memory space easily, since the address is in the low 7 bits of the instruction.

  Johnny