Diagnosing a Gottlieb System 80

Recently, I got a “The Amazing Spider-Man” (Gottlieb 1980) that won’t boot. I’ve never worked with this architecture before, so my diagnostics might seem a little haphazard, but this is my plan:

  1. Make sure the board has good power and the chips seem to the be functioning
  2. Scope the signals (address, data, chip select, reset, IRQ, etc.)
  3. Plug into the diagnostic port and single step the processor
  4. Remove the processor and check the ROM, RAM, and RIOT chips
  5. ???
  6. Profit

Step 1 is complete. There was a weird jumper on the back of the board that was shorting power to ground near chip Z26 (hex inverter chip). I can’t begin to imagine why this jumper was there. Its only function was to create a short between +5 and ground, and it did that quite well.

Jumper from Z26 pin 14 (+5V) to ground.

Step 2 – I looked at the signals and they looked reasonable, with the exception of A4. I never saw it go low and it appeared to have noise on it from A5 perhaps.

A3 (yellow) versus A4 (blue).
A4 (blue) versus A5 (yellow).
A4 (blue) versus A6 (yellow).

I thought maybe there was a short in one of the chips that was causing A4 to be pulled high or something. When I removed U4, the problem disappeared, so I replaced U4 and moved on. After this, I was able to see A4 go low on occasion, but when it’s high it still has noise on it from other lines. Maybe it’s just crosstalk, I’m not sure. I decided that it would be easier to tell once I plugged into the diagnostic port and tried to read the addresses being accessed, so I moved on to step 3.

Step 3 – I have a bunch of Arduino Nano’s around (I use them for lots of projects) so I figured I could use one to serve as a diagnostic interface to this board. They’re perfect for this type of thing, but they only have 18 useful I/O lines (I think), so I had to put two together. I basically turned one Arduino into a shift register to read the Address lines, and used the other to input the Data bits and other signals (R/W, SYNC, clock, etc.). I use two lines to control the board – RESET and READY. This code is pretty simple, but I can GitHub it if anyone thinks it might be useful. Here’s my breadboard interface to the System 80.

Two Arduinos plugged into the TC1 socket.

With that done, I wrote code to RESET the 6502, raise the READY line, wait for the SYNC signal, and then drop READY again. After that, I figured I could read what the processor was trying to do. Here are the results of that effort.

(more coming…)

Leave a Reply