Repairing Williams CPU Boards

    and the story of the

    Pinball CPU Board Tester

    The CPU Board Tester currently handles Williams
    Systems 3 through 11 and DataEast boards.

    Note: I have several repaired System 9 and 11 boards for sale, and  I also repair System 3-11 and DataEast boards.  Please contact me for details. 

    In order to learn about how to repair the System 9 CPU board, I purchased a non-working unit from Coin Op Warehouse.  Compared to System 3  through 7 and System 11 parts, System 9 boards appear less frequently on ebay.  About 1-2 units come up per month in the price range of $75.  After several months of watching the auctions, I decided to contact Lloyd, and he had one at a reasonable price.


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

    I setup my initial test bench by first setting up an ESD safe work area to set the board onto, along with a wrist strap.  For the power supply, I used a benchtop supply that supplied +5, and +/-12V.  The current needed from the 5V supply is about 1.25 Amps.  For the scope, I decided to use my National Instrument's DAQScope card, which plugs into one of my laptop's PCMCIA card slot.  This allowed me to take easy snaps of the screens, and served as a means for me to pull up reference documents (datasheets, web pages, etc) without having to run to my office.


    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.

    Initial checkout:

    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.

    Test fixture breadboard
    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.

    Another interface that is multiplexed is the lamp matrix.  On the playfield, at the intersection of each row and column of the matrix is a light bulb in series with a diode.  It occurred to me that a standard LED dot matrix could be a compact tester for the lamp matrix.  As a quick test, I used some quick clips to connect 1J6 and 1J7's pins to the pins of the dot matrix.  When I powered up the board and reset the CPU board, I was rewarded with the glittering attract mode light show on the dot matrix display.  Neat to see the idea actually work.


    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.

    CPU Board Tester Project

    After I built the System 9 Playfield tester, I received a few e-mails about building a tester for the CPU board.  I decided to combine the ideas explored above into a unit for testing the many types of I/O that are furnished by a pinball CPU board.


    Concept photo of the Pinball CPU board tester.  The size of the background board is about 5"x7".

    The tester includes:

    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.

    Since the processor will be programmed to read all the score information, its code could be modified to display the data on a Desktop PC, an alternate display, or over the internet.  Another approach would have been to use an FPGA.  This would have allowed me to absorb all the I/O into a single device, and put the user display on a PC (connected via USB or serial).  In that case, I would do away with the dot matrix LEDs and the DIP switches.  All interface would have been through the PC.  It would have been slick to load the image of the backglass and playfield into the PC user interface, and have a simulated machine light up.  Sort of like a 'virtual pinball', but with a real CPU board.  However, the cost increase would have been significant (double or more).  One advantage of this approach, is that the FPGA could be reprogrammed to test a variety of CPU boards. 

    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.


    Schematic drawn in ORCad.  This is one of three pages.  This page has the
    Microcontroller for the score display.


    Layout of the circuit board done in FreePCB.  The size is 6"x7".

    Unlike the concept, the actual CPU tester board will be rearranged differently, and will not include the TIL308 display.  I decided since these are hard to find, and not as funcational as the LCD display, that I would omit this device.

    Completed circuit boards and testing
    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.


    Development of the Micro software
    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.

    In addition to the normal function of showing/testing all the numeric digits of the score displays, I added two special features: DVM and scope mode.  The microprocessor is programmed to use one of its pins as an analog input, and the fourth line of the LCD display shows the voltage on that pin.  This implements a DVM (Digital Volt Meter) and logic probe.


    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.

    The CPU tester can also be placed into 'scope mode'.  This is similar to the function of the osziFOX.  This allows the user to checkout the signals along the chain for the various switch, lamp and solenoid matrices.


    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.

    System 3-7 Compatibility

    Although similar to System 9 (bcd data is sent from the board to the display driver), the interface format for System 3 through 7 is sufficient enough that I decided to add a special section to the code to handle this form of display.


    Display of the CPU Tester when started in System 3-7 mode.  Note the "Sys37".

    System 3 through 7 machines use 6 digit glass displays, and the ordering of the digits with respect to the strobe control lines is different than System 9.  This causes a confusing jumble of digits on the LCD display if the strobes are not decoded accordingly.


    System 4 CPU and driver board connected to the CPU tester.


    Output of the tester with a simulated four player game in progress.

    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

    Williams Pinball System 8 board under test

    System 8 board under test

    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.

    Video of above board with completed test

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

    DataEast/Sega Compatibility
    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 CPU board test

    DataEast/Sega CPU board under test (Version 3 shown here).

    Since the Version 3 and 3b games of this series used a DMD, ROM software from those games cannot be used for test.  The user needs to switch to older software to test the board or else, hes/she cannot read the messages the software is displaying.  More details are listed in the manual.

    Initial round of assembly and shipment


    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.


    Using the tester
    Case #1
    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.


    Case #2
    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).

    After U5 was removed, the CPU board finally booted up, and ran Leon's test ROM just fine.  This was quite a victory, and represented the most challenging repair to date.  In addition to U5, I also found that U4, U6, and U7 were also bad.

    Case #3
    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.

    Case #4
    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).

    Case #5
    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!

    Greg Deakin

    Case #6
    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 decided that this board was a good candidate for a MOSFET upgrade.  This has many advantages: 1) the low gate current eliminates the bulky and hot resistor.  2) the whole area will run cooler and be less stressful on the 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.

    In addition to removing the old power resistors, I also replaced all the Darlington pre-driver transistors with 2N2222A NPN switching transistors in a metal can.  Some of the existing Darlingtons were damaged, and I wanted all 8 high-side drivers to match.  After repairing the burn damage to the board with epoxy, polyurethane and acrylic paint (mixed to match the color of the existing board), I replaced the missing wiring with thin black wires, and the circuit worked like a champ on the CPU tester.


    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.

    Case #7


    Converted 11A board.

    This board was an original 11 board, and then converted by the Williams factory to a System 11A.  I have seen these referred to as System 11a (note small "a").  One can see the original 7-segment LED display board layout was not used, and then individual LEDs used instead.  Photo added 2/2012.

    Case #8
    Moved to Sound Test section.

    Case #9
    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.

    Pinball System 11 1J21 connector test

    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.

    1J21 on System 11 board

    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.

    Note: I have several repaired System 9 and 11 boards for sale, and  I also repair

    Williams 3-11 and DataEast boards.  Please contact me for details. 

    Testimonial from a board repair customer (System 7 repair):

    From: Timothy Borlie
    Sent: Saturday, November 24, 2012 10:43 AM

    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 fixed the machine  it works better than it ever did. every thing that was wrong now works.thank you for your are the best at what you do. 

    happy customer

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

    Christmas card from the family of a happy customer.


    We final got to putting the Comet back together.  It plays beautifully.   I installed LEDs from Comet pinball and the game lights up beautifully.  I have been playing it for the past 45 minutes after everyone here went home.  I cant thank you enough.  The local repair guy said the game was a complete failure and there was no fixing it and suggested I sell it for parts.  Thanks for rescuing it.  It is truly appreciated.  

     All good things 

     Scott Zellner (May 2019)

    (c) 2010 Edward Cheung, all rights reserved.