Repairing Williams CPU Boardsand the story of the
Pinball CPU Board TesterThe CPU Board Tester currently handles Williams
Systems 3 through 11 and DataEast boards.
Photo by the seller with the original state of the CPU board. It had a few missing parts and it had "Strike Zone" ROMs installed (a bowler?).
My initial testbench. The laptop was my scope and allowed me to pull up
documents from the web using my Wi-Fi connection. Note the playfield
setup on the rotisserie in the background.
- I first washed the board with alcohol and a brush to remove the
built-up dirt and dust. Since there was no relay or anything like
that, all parts could be washed in the fluid. One benefit is
that it removed dirt from the Molex connectors.
- To my relief, the 7-segment display showed "0" after power
up. This means that all the CPU self-tests passed and that the
core CPU functions (processor, RAM, ROM, busses, etc) are fine.
If the 12V supply is disconnected during power up, the display shows
"7", which means that the CPU is halted and that the "0" was
intentionally written by the CPU.
- When I hit the CPU test button (SW1), the display showed "5". This meant that the CPU read that the coin door was closed. I traced this to a bad output on U41 (a 7404). I will replace this with a socketed part.
- Hitting the sound CPU test button (SW2) showed this subsection working fine (speaker produced a game sound). I then plugged in a spare speech board into the CPU, and it passed all sound tests including speech.
- After some successful initial checks, I plugged the lamp matrix from my playfield (in the rotisserie stand) into the CPU board, and all the lamps on the playfield lit up! The kids and I were amazed to see the board on the table perform the attract mode light show just like the one in the machine.
- For the special solenoids (pops and slings), I found that U7 was missing (a 7402). An IC socket was soldered into this location, and a part was plugged into it. Everything in this section checked out fine after this.
- The K1 flipper relay was missing when I received the board. I
found a socket for it, and a
4PDT power relay.
- Two of the TIP122 solenoid driver transistors needed to be replaced due to them being missing or their installation was suspect (blobs of solder, etc). Using Leon's test ROM, I checked out all 16 drivers. This successfully completes the initial checkout of all the parts of the board, and all circuitry on the board appears to be operational.
The CPU board normally connects to a display driver board which in turn connects to the plasma displays in the machine. The communication to this display board is a dual 4-bit bus with 16 strobes. The 4-bit bus communicates the BCD code of the digit. Since there are two of these busses, and 16 strobes, a total of 32 digits can be controlled. These digits are arranged among the four player score and the ball/credit displays.
During the initial checkout above, I could tell all lines to the display driver board were toggling. However, it is very difficult to tell what the numeric information is without some specialized hardware. Although I have a spare display board, and plasma displays, I would also need to hookup a power supply board for the +/-100V supply. This in turn would need a cabinet transformer. Although I do have all these items as spares, it would quickly become unwieldy. I decided instead to use an LED display that has an integral BCD decoder, such as the TIL308. This kind of display can interface directly to the CPU board without any additional logic. The disadvantage is that these displays are hard to find and can be expensive. However, it is good for easy checks to make sure the logic that controls the display board is working. I just need to use a test clip to select which digit to show by clipping to the corresponding strobe line.
Once I had the display wired up, I could read (one digit at a time) "2535" on the Player 1 display. This is the model number of the machine. It showed that this circuit was correctly reading the CPU's numeric data. Woohoo!
The initial connection of the decoded LED display to the CPU board. Note the
MSI circuit under the encapsulation. It decodes the BCD information and latches it between digits. No additional logic is needed to show digits with this display,
and no high voltage is needed.
As a quick test, I used some quick clips to connect 1J6 and 1J7 to the 5x8 LED matrix.
The CPU board can interface to this display without any additional components.
By putting the CPU board into lamp test,
every lamp on the playfield will flash.
Concept photo of the Pinball CPU board tester. The size of the background board is about 5"x7".
- 10x8 dot matrix grid to display the 8x8 lamp matrix and the 2x8 main solenoids.
- Two dip switches and one momentary switch to select one of the 64 switches to close in the switch matrix.
- One dip switch and LED bar graph display for the special solenoids (pops & slings).
- A Microprocessor and 20x4 digit LCD display for all the plasma
displays such as the player score and the credit/match displays.
Although intended for testing System 9 CPU boards, my cursory look at the other system shows that it should be able to test System 3 through 9. It can also be made to test System 11 boards, but will require modifying the Microprocessor code and additional supporting hardware (for the alphanumeric displays). Since the interfaces above are generic, I suspect it would also be able to test CPU boards from other manufacturers.
Schematic Capture and Board Layout
After some interruptions to complete the Space Shuttle Playfield Renovation, and some other activities, I returned to the CPU tester project. With steady work, I completed the schematic capture and the layout of the board.
Microcontroller for the score display.
Layout of the circuit board done in FreePCB. The size is 6"x7".
The layout of the circuit board was done using a freepcb. A great software package that generates Gerber files. I then sent the Gerber files that were created from the layout process to Advanced Circuits. After only three days, the finished boards arrived at our doorstep. The online tools and the turn-around time were excellent.
Finished circuit boards for the CPU tester. This initial run is 10 boards.
The partially assembled CPU tester. The layout departs from the concept,
to optimize bench space when it is located next to the CPU board.
Testing on my workbench. Note the System 9 board in the bottom right and
another in the top left. In this setup, I could see all the lamps on the matrix work
without a rats nest of jumper wires. It was very cool.
Scope picture of two of the 16 strobes of the display interface.
Note the period is about 15 msec, and each strobe is activated
for slightly less than 1 msec.
Sept 09 Update: The IRQ on System 3-11 fires every 928 usec. This is the source of the "less than 1msec" timing reported above.
The display board has no latches on the BCD data. Thus the data
is kept between strobes by persistence in the displays. This shows
that the Microprocessor should sample the BCD data after
several hundred usec after the strobe goes low. The
strobe line should be polled once every 100 usec.
Once the circuit board was verified to be correct, I started on the development of the software for the Microprocessor. This unit controls the LCD panel and implements the score/numeric display.
Power-on banner of the CPU tester display. It shows the layout of the digits.
Each of the four players are shown in the top two lines,
and the credit (CR) and ball (BL) display are below them.
This banner appears for one second after power-up.
The display showing the numeric digits that are being sent by the CPU board.
Note the voltage reading on the bottom line. It implements a DVM function
right into the CPU Tester. Voltages on the CPU board can be
measured to verify their correctness.
One additional feature is the simple oscilloscope display. This shows the signal
on the strobe control line for the numeric display. Compare to this image.
Each pixel represents about 1 Volt in the vertical direction.
The horizontal resolution is still to be determined, but
can be as fast as about 100k samples/second.
To verify that the display code was written correctly, I put some credits on the System 4 board, and started a four player game. By hitting targets, and verifying the score increments correctly, I could verify the micro's code. The above display shows 8 credits, and we are in the middle of ball 2. Player 1's score is 508,550 points, etc.
System 8 compatibility
I was sent a System 8 to repair in 2017, and after some studying of the schematics figured out how to connect it to my tester. Since this board has the plasma display driver integrated onto it, I needed to apply +/-100V and connect 7-digit displays directly to it. I only needed to make the simple high voltage power cable (near the bottom in the image), and after some continuity checks, was able to get the displays working.
System 11 compatibility
The display is handled very differently with a System 11 board from the previous Williams Systems. Instead of BCD, the computer board controls the segments of the alphanumeric display directly. To support this, Williams added a 26-pin connector on the board. The additional number of I/O lines exceeds the capacity of the Microprocessor on the CPU board, so the display is tested one half at a time.
Development of the interface with a Big Guns System 11 board.
Although a bit awkward, the user swaps two cables to allow observation of the left and right half of the alphanumeric display.
The two halves of the display put together (left and right).
Obviously, this is for a "Big Guns" machine running Rev 8 software (System 11b).
In February 2013, I researched compatibility of this tester with DataEast/Data East boards and found that my tester could be used with a specific procedure, so I added this section to the manual. This is true for Version 1 (single row alpha), and Version 2 boards (dual row alpha), and mostly true for Version 3 (DMD - see below).
DataEast/Sega CPU board under test (Version 3 shown here).
Six of the first units to be assembled. They are each tested by plugging them into the System 9 CPU on the right.
These are ready to ship! I just need to fill them with foam peanuts.
A second batch being assembled and tested. Note the LED bar graph is
of a different color.
A new batch of boards with revised artwork to correct a small mistake on the first rev.
Note the model number is now W1A, and a new date (bottom right corner).
This unit was assembled by Richard (Firepower pinball) in 2010.
With the tester, I repaired the second (non-working board) that I purchased on ebay. The special solenoid section had major damage and burn marks.
Original state of the special solenoids section. Lots of burn damage.
Repaired special solenoid section. I replaced U6 and U7 (socketed), the flipper relay
transistor, four driver transistors, and removed the baked-on carbon damage.
This was a board that Keith Apgar sent me to repair. It is the first board I have seen that showed a "7" on the 7-segment display on power-up. This indicates that the CPU will not boot at all. This makes it the most difficult to troubleshoot as the problem could lie anywhere on the board. After a few days of troubleshooting, I concluded that the CPU's data bus was being corrupted. By removing each chip from the data bus one at a time, I found out that U5 was bad. This is the PIA that handles the blanking control, the plasma display and the 7-segment display.
Case #2. This board did not boot at all. It turns out U5 was bad. Notice
that it has been removed (it is normally located
to the upper right of the battery bank).
This board was a System 4 board from my Flash machine. The CMOS RAM (5101) and a PIA (6821) was replaced. The former resulted in the machine powering up in Audit mode, and the second caused the displays to go blank once the RAM was replaced. For more information, see here.
Testing with a System 4 board. Photo shot before the driver board was added.
This was a board I bought on ebay for $10 (+$10 shipping). It could have been a real steal, or a real dog. When I got it, it was very dirty (see here), but a wash with alcohol and a soft long brush cleaned it up nicely. I then hooked it up to the tester and quickly realized that the crystal oscillator was not running. After replacing that, the main and sound CPU booted up and passed their self-tests. Other than some missing parts such as a few transistors, the battery holder and the cover for the relay, the board is complete.
This board worked after replacing the 4 Mhz crystal oscillator. Note the "0" on
the display showing that the CPU passed all its self-tests. Note the rev
5 software on the ROMs (visible on the LCD display).
This repair included the CPU board, power supply board, display board, and all five displays. Comment by the owner below.
Got the board today. Installed it, plugged it in, said a prayer and turned it on and it fired right up! I about hit the ceiling and could not believe that (most everything) worked. All I need to do is make a few adjustments and that's about it. Another Space Shuttle brought back to life---and in part directly due to you!
Thank You so much for your help in fixing the power board for me. Just so you do know, for whatever reason, the game would not start and/or respond to the start button prior to you fixing the board. As soon as I get the bugs out of it I'll fire you off a few pics of it. This was the first game I ever took completely apart, fixed and reassembled so I'm really pumped up about it.
Thanks again Ed!
This was a System 11 repair. The board suffered burn damage in the area of the lamp matrix resistors. The damaged traces were replaced with wiring, but the job was poorly done.
Original condition of the lamp matrix of Case #6, a System 11A board.
I selected the "FQP17P06", a P-channel MOSFET, available from Digikey, due to the following atributes:
- Since this is a high side driver, a P-channel device is needed.
- The pin order is G-D-S, allowing direct insertion of the new part into the old hole pattern on the board.
- Max current is 17 Amps. More than enough to do the job here.
- 94 milliOhm typical Rds on resistance. Low enough to be negligible.
- Vgs of 4V, which will easily turn on with the drive from the predriver.
- At $0.66 in quantities of ten, they were a good price.
The area of the board was repaired with epoxy, polyurethane and acrylic paint. Then, the wiring was replaced.
A thread on RGP discussing MOSFET replacement.
Converted 11A board.
The above diagram shows how the System 11 Sound board connects to the test setup. Both the D-11581 and the D-11298 sound boards interconnect with the same harness set.
Power 'Tee' for the sound board
I made a special 'Tee' cable to provide a power tap for the sound board. It is shown in the photo above, partially demated to show the construction. The top colored ribbon goes to my CPU tester, while the grey is to the sound board. The black plastic is a double male (board type) connector that allows the top connector to plug into the top of the middle one.
I use Leon's (R.I.P.) 'flasher' test chip to test the 1J21 and 1J22 parallel IO ports. There are a lot of pins there, and they pass through the often damaged battery holder area. This works quite well for most of the pins, but some of the pins on 1J21 (connected to Port C) do not flash (despite his last update on Version 5 that said it would). I then have to do a tedious continuity test of all those pins. In early 2016, I hit on a good fixture to test those. It involves individually connecting the Port C pins to another IO that is flashing (via a switch), and then verifying the flashing back at the PIA Port C pin.
Special test fixture to test 1J21. This connector is similar to the adjacent
1J22 dual row header connector.
The fixture (pictured above) consists of a female header that plugs into 1J21, onto which is soldered a tiny perforated circuit board. A 4-position DIP switch completes the fixture. By doing a minimal amount of wiring under the board, I can selectively short or open the output in question to a flashing IO line.
Partial schematic of 1J21. Output pins CA1 (and similar) do not flash with Leon's
test ROM. So to test those, a switch on my test fixture shorts that output to
1J21-10 and I verify the flashing at the PIA pin. This verifies
continuity of the traces.
|Testimonial from a board repair customer (System 7 repair):|
From: Timothy Borlie
i have had my pinball machine for 20 years, it has never
worked right.i had a service tech from a large company work on it they never
could find the problem.you fixed the machine it works better than it ever
did. every thing that was wrong now works.thank you for your services.you are
the best at what you do.
Another happy customer (IV McNamara) 3/15
Shane was so happy with my work that he printed this
picture to hang in his gameroom (4/15)
Another happy customer: Thomas P with the System 11 board (9/16).
Page 2 of the board repair and CPU Tester
(c) 2010 Edward Cheung, all rights reserved.