DEC PDP-12 Restoration Blog starting 1/1/19


Something strange is going on.

Sometimes OS/8 hangs, looping with a 6041 instruction waiting for characters to be sent out the serial console.

None of the usual programs like SPCWAR, TANK, and HANGMAN will run, the all loop with the 6041 instruction.

A toggle-in test for console output that uses the 6041 instruction works OK.

We swapped the M707 Teletype Transmitter module, but there was no change in the behavior.

Instruction test 1 works OK, including ringing the bell on the serial console.

Instruction test 2 works for a little bit, and then hangs in a loop at 0001 executing a JMP 0001.

Executing an interrupt when it should not?

Not executing an interrupt correctly?

Next week we will start at the beginning with all of the simple diagnostic programs to make sure that the processor is working OK.


It passes MAINDEC-8I-D01C Instruction Test 1, but fails fails MAINDEC-8I-D02B Instruction Test 2

It gets stuck in an loop at 0001 executing a JMP 0001

Instruction Test 2 tests that interrupts do not happen after a range of instructions, so this looks like the problem

Either we have a peripheral that is generating an interrupt when it should not, or the CPU is processing an interrupt when they are inhibited

Looks like interrupt test #4 is not working

We swapped the M607 Teletype Receiver, but it did not make a difference.

Running the CPU in single-step mode works OK if the Auto Repeat is on and set to a slow speed

So we don't have a solid failure, we probably have a chip with low drive capability

I looked through the diag code

The base code has a JMP 0001 in location 1

The first interrupt test does a JSR to a routine that writes a JMP I, 0002 into 0001 and clears locations 0002 and 0003

Each interrupt test writes a return address into 0002

It looks like the JMP I, 0002 was never written into 0001


Starting MAINDEC-8I-D02B Instruction Test 2 at 201

Hangs in a loop of JMP 0001 @ 0001

Core 0000 contains 3013

Core 0001 contains 5001

Core 0002 contains 3016

The interrupt happened and the instruction @3012 was the last one executed before the interrupt happened

The target address for the JMP i is 3016, which is correct

The JMP 0001@0001 should be a JMP I, 0002

The subroutine that changes the contents of 0001 didn't work

I checked the core contents against the diag listing and found that core locations 2000-2777 were all 0000

We ran MAINDEC-08-D1B2 Memory Address Test and found that Core from 2000-2777 was reporting errors

The G221 flipchips decode the memory address and send current through the core stack

It either had to be the G221 in slot C08 or C07 that was not decoding the 2xxx addresses

We tried the G221 in slot C08 first, but it didn't make a difference

Replacing the G221 in slot C07 fixed the memory

We will repair the G221 and put it back in the spares inventory

OS/8 and Spacewar are running again!


Ran Spacewar! just to make sure everything is working OK.


Ran Spacewar! just to make sure everything is working OK.

The serial console looks it is receiving characters, but the menu option from Spacewar! is not displaying.

To Do:

Test the TC12 & TU56 to see if the RF interference that we observed in the other building is not present and LAPS-DIAL will boot

Move the modified Spacewar that supports the game controllers onto the RK05 disk pack

Find a copy of Pong (PING) and copy it to the RK05 disk pack

Modify Pong to use the game controllers instead of the analog knobs