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.
The system has been running Spacewar! demonstrations just fine for about nine months. We needed to image some 8" diskettes, so we booted OS/8 from the RK05 and then used it to load the RIM and BIN bootloaders. We then used the BIN loader to load the RX01 dumprest program through the serial console, connected my laptop to the serial console, and tried to read the diskette. We got some strange error messages about the diskette being quad-density. After several tries we reloaded Spacewar!, but it would not run. Time for some diags to see what is broken.
We ran MAINDEC-8I-D01B Instruction Test 1, so most of the CPU and the core memory is working OK. We tried loading MAINDEC-8I-D02B Instruction Test 2, halted at 226 doing a DCA test. That section of the program did not have the correct contents even though the BIN loader said that it was received correctly. Sounds like a core memory problem. We loaded Warren's Tune core memory test, and the first run seems to work OK. We need to fiddle with the switch settings to do a more severe core memory test.
We started running the MAINDEC diagnostics that are listed on the summary WWW page for the PDP-12. All are working OK so far.
MAINDEC-8I-D0BA EXT ARITH TST PART 3B halted, but MAINDEC-08-D0BA Instruction Test 3B runs OK. I am not sure what the difference is in the PDP-8/I version.
We noticed that the bit-11 bulb in the MQ is not working. The bulb is OK, so there is a problem elsewhere.
We had lots of visitors today, so we only had time to rerun MAINDEC-12-D6BC VR12 Display, Tests display system using DIS and DSC instructions. It worked OK.
We ran MAINDEC-12-D8CD-D KW12A Clock Test, and after about 30 seconds it failed with a TST70 CHAN 3 INPUT LINE FREQ FAILED 0000. We reran the test and saw the same error. The source code says that the SOURCE knobs on the KW12 Clock Control panel need to be in the LINE FREQ position. We set all three knobs and now it fails with the message TST74 O'FLO WON'T FAST SAM 0776 0775. We reread the instructions, especially the part about setting the KW12 switches and knobs and the Analog Channel 0 & 1 knobs to specific positions. The KW12 test now runs OK.
We ran MAINDEC-12-D8AB Relay Register Test. It ran OK and even lit the Christmas lights that we have connected to relay 0.
We ran MAINDEC-12-D6CC A To D Test. Channels 0-17 all look OK, but channel 16 needs a slight adjustment. Channels 20-37 all need to be adjusted.
We ran MAINDEC-12-D6BC VR14 VR20 Display Test. When it is displaying pattern 2 the text wiggles a little. Maybe we should check the power supplies in the VR14 to see if there is some ripple when displaying pattern 2. The other patterns are solid with no jitter.
We ran MAINDEC-12-D0SA Automatic Priority Interrupt Test. it runs and does not halt, but doesn't ring the TTY bell after 1 minute so it may not be working. We don't use this part of the PDP-12, so we can ignore this for now.
We loaded SpaceWar! and it works OK. The TTY console options list is working too. I even got a ship to orbit around Polaris.
We booted OS/8 from the RK05 and tried to run LUNAR.SV. It hung at a TSF instruction waiting for the console printer to be ready for another character. Maybe a serial port problem?
TANK.SV halted at 7702. That is beyond the end of the program.
KALEID.SV runs OK.
MOON.SV runs OK.
SNOOPY.SV runs OK.
We tried LIFE.SV. It is executing a 7141 IOT instruction. We have no idea what peripheral responds to that IOT.
ORGAN.SV runs OK. You use the TTY console keys to control the notes.
CUBIC.SV is a 3D TIC-TAC-TOE program. It runs OK.
HANGMN.SV runs 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
Fix the bit-11 indicator for the MQ register. The bulb is OK.