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.
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