Now that I've pondered the below a bit, I must say that this is a rather interesting bug.  I don't recollect hearing anything that would cause an instruction to get skipped unintentionally.

The PDP-10 is interesting (or strange) in that it uses skips to convey the result of various tests and comparisons.  You don't use tests to set PC flags and do conditional jumps on them (like nearly every other architecture that comes to mind immediately).

I have heard of cranky I/O hardware causing a CONSO (Conditions In and Skip if One) to think that an I/O operation was complete when it wasn't, but I don't recall a processor (which you can read conditions on) doing this.  It is true that sometimes checking an asynchronous transfer too soon can get you the wrong thing, perhaps the paradigmatic example being the PC-AT bus:

TIN MACRO REG1:REQ,REG2:REQ	;; Define the macro name
    Local BusIdle       	;; Address to Idle 286 Bus

     in REG1,REG2       	;; Actually do the IN
     jmp SHORT BusIdle  	;; Basically a JMP SHORT +2
BusIdle:                ;	; Target of jmp
    ENDM                	;; End of macro 


The JMP SHORT functioned something like a NOP except that it hit the memory bus.  You couldn't trust anything an I/O instruction said unless you gave it time to catch up.  But the 11/60 bug isn't the same thing and I can only imagine what it took to track it down.

Very interesting.


On 2/2/22 7:15 AM, Johnny Billquist wrote:

Paul already mentioned it:

Here is the code in RSX:
[11,10]SSTSR.MAC:

        CLR     @$CPUER         ;CLEAR CPU ERROR REGISTER

        .IF NDF M$$EXT

        NOP                     ;THIS NOP MUST BE HERE.
                                ;UNLESS THE MICRO CODE BUG IN THE
                                ;11/60 IS FIXED (ECO M7872-00007),
                                ;CLEARING THE CPU ERROR REGISTER
                                ;WILL CAUSE THIS WORD TO BE SKIPPED.

        .ENDC


(it actually occurs in two places in the code)

RSTS/E seems to be a bit more fancy and actually tries to detect the bug and print a message on the console at boot (I assume) if it is spotted.

I thought I had seen something in 2.11BSD as well, but now I can't find it.

  Johnny