Introduction: Commodore CHESSmate Reproduction

About: A retired software developer, living in Waterloo, Ontario, Canada, who appreciates having the time to make whatever the heck he damn well feels like!

CHESSmate was developed by Peter R. Jennings, author of the MicroChess program, under contract with Commodore International. The CHESSmate’s hardware is based on the venerable KIM-1, but the ROMs are loaded with a custom MicroChess 1.5 image not the KIM-1’s monitor.

Although I was very lucky to obtain an original CHESSmate to work from, CHESSmate units are extremely hard to find, understandable given that 45 years have passed since they were introduced. I built a working CHESSmate computer using modern fabrication techniques and components, so that anyone could make one. This Instructable describes the steps required to accomplish this.

I created a couple of CHESSmate variants.

  • One of course is the full reproduction, as accurate a work-a-like to the original as I could make. Mind you, under the covers it is quite a different beast, using emulation running on an ESP-32 rather than reproducing the original hardware.
  • The second variant is a minimal viable CHESSmate, basically just the PCBs mounted onto a a basic 3D printed frame.

Both use the exact same PCBs.

All of the files that you need to make a CHESSmate reproduction can be found on GitHub.

Should you wish to learn more about my CHESSmate journey check out my project blog.

Supplies

  • 1 - CHESSmate Main Board PCB
  • 1 - CPU Daughter Board PCB
  • 1 - ESP32 ESP-WROOM-32 NodeMCU Development Board

This is a 38 pin ESP-32 board with a 22.86 mm spacing between the rows of pins. It's important to get the right footprint if you want to use the backpack daughter board PCB. Amazon: https://a.co/d/amiKdym

  • 4 - Common Cathode 7 Segment 10 Pin 1 Bit 2.1V 0.36" Digit Height LED Display Module

Be sure to get the common cathode variety. Amazon: https://a.co/d/5QGyIi5

  • 19 - Momentary Tactile Push Button Switch 12 x 12mm x 8mm 4 Pin DIP w Cap

You don't have to get switches with caps, which could be easily 3D printed. Amazon: https://a.co/d/8qKJreo

  • 4 - 2N2222 NPN Transistor Metal Can TO-18

You don't need to get the more expensive metal version, but you do have to be careful getting the leads right with other variants. Amazon: https://a.co/d/8cMk6sU

  • 4 - 3 mm Red LEDs

Make sure to get 3V parts.

  • 8 - 470Ω 1/4 Watt Resistors
  • 4 - 10K 1/4 Watt resistors
  • 4 - 75Ω 1/4 Watt Resistors
  • 2 - 1K 1/4 Watt Resistors
  • 1 - 35 mm Piezo Elements Buzzer Sounder Sensor

Amazon: https://a.co/d/35aSMtS

  • 1 - 2.54 mm Pitch 90 Degree 22-Pin Male Single Row Pin Header

Amazon: https://a.co/d/dDvbWSZ

  • 1 - 2.54 mm Pitch 90 Degree 22-Pin Female Single Row Pin Header

Amazon: https://a.co/d/elKYvoU

  • 2 - Female Header 1 X 22 Pin 2.54 mm Pitch Straight

Amazon: https://a.co/d/57Vi849

  • 1 - Micro USB Power Adapter Breakout Module 5V for Arduino (Optional - Only if making a full CHESSmate reproduction.)

Amazon: https://a.co/d/aby2T6s

Step 1: Have the PCBs Fabricated

In the Fabrication Folder of the CHESSmate Reproduction GitHub you will find the Gerber files that I produced from my KiCad 7.0 CHESSmate PCB projects. I submitted the CHESSmate PCB.zip and CHESSmate CPU.zip files to my fabricator of choice JLCPCB. These files were created based on JLCPCB recommended settings.

If these are not compatible with your fabricator of choice, in the PCB folder of the CHESSmate Reproduction GitHub, you will find the KiCad 7 project files that I used to create the PBCs. From these you should be able to produce the Gerbers that you need. Note that the main CHESSmate PCB is a four layer board.

Step 2: Populate the PCBs

Soldering on the electronic components listed in the Supplies section is pretty straight forward.

CHECKmate PCB

All of the components except for the 22-pin header and buzzer connector are inserted on the top side of the PCB (with the silkscreen).

Start with the 18 resistors. The resistor values are clearly labeled on the PCB. Your multimeter is your friend here making sure you insert the correctly valued resistors.

Make sure that the 4 common cathode 7-segment displays are inserted correctly, sloping up and to the right with the decimal point in the lower right corner.

If you purchased the 4 2N2222 NPN transistors recommended in the supplies list with the metal caps, the orientation is straight forward based on the triangular arrangement of the leads and lining up the small metal tab with the silkscreen image. If your transistors are compatible but with different packaging make sure you get the leads right.


The 4 LEDs of course have polarity. Make sure that the cathode (-) or short lead is inserted into the leftmost hole next to the flat part of the silkscreen image and the anode (+) lead into the rightmost hole. If this PCB is going to be used with just the minimal base, you can insert the LEDs flush with the top of the PCB. If however this PCB is going to be used with the full reproduction case, the LEDs should be inserted so that the top of the LED is flush with the top of the common cathode 7-segment displays.

Solder in the 19 push button switches. If this PCB is going to be used with just the minimal base, you can use any compatible 12 mm x 12 mm switch. In the photo of the completed minimal CHESSmate at the top of this Instructable I use plain black push buttons. If on the other hand you will be using this PCB in the full reproduction case you should insert the recommended switches with the rectangular caps (or equivalent) as I did in the picture above (you'll see why in a bit).

On the back of the PCB in the top left corner I soldered in a 4-pin 90 degree male header from which I had removed the center 2 pins. At he same time I added a 4-pin straight female header to the buzzer by soldering the leads to the outside two pins adding shrink tubing. Polarity doesn't matter here.

Finally I added a 22-pin male 90 degree header to the bottom of the PCB with the pins facing away from the CHESSmate PCB.


CHESSmate CPU Daughter Board

I inserted a couple of female straight headers to hold the ESP-32, and a couple of male pins to connect to the +5V and GND on the ESP to the top silkscreen side of the PCB. To the bottom side in inserted a 90 degree Female header to attach the daughter board to the CHESSmate PCB. See the image above.

Note: As the 90 degree female header pictured above is installed, with the pin holes facing inwards, the daughter board will end up being mounted underneath the CHESSmate PCB. If the 90 degree female header is installed with the pin holes facing outwards, the daughter board will extend straight out from the CHESSmate PCB. I prefer the daughter board being extended out for the minimal CHESSmate configuration, and the tucked under for the full reproduction.

Step 3: Assemble a Minimal CHESSmate

Print the minimal frame. The file CM_Minimal Stand 2.3mf can be found in the Models folder of the GitHub repository. Should you wish to make changes to the model I have also included the .step file in the same folder. Print in the default orientation. I used PLA and set the layer height at .2 mm.

I used eight 3M x 6 mm bolts and nuts to attach the CHESSmate PCB to the frame. Then I installed the piezo speaker securing it to the frame with two sided tape.


Finally attach the daughter board, insert the 5V USB-C power connector into the ESP-32 and you are ready to go.

To get started I recommend that you check out the Commodore CHESSmate User Manual pdf file which can be found on GitHub. Have fun.

Step 4: Make a Full CHESSmate Reproduction

Perform the following steps only if you want to make a full CHESSmate work-a-like.

Step 5: Make the CHESSmate User Interface Overlay and Logo

Membrane

The overlay or membrane sits on top of the PCB, has cutouts for the 7-segment displays and LEDs, and is flexible enough to allow the buttons to be pressed when it is in place.

To make an overlay, start by printing the image file Membrane Keyboard.pdf onto an 8.5 x 11 inch transparency (left image above). You will find this in the Overlay folder of the GitHub repository. It's important to make sure that the image gets printed 1:1 so make sure that the "scaling" and "fit to page" features are turn off when printing. I don't have a color printer so I took the file to my local print shop (Staples) and had them make me a few copies for a couple of bucks.

This membrane image is actually too transparent, so it needs to be backed by a solid white "mask" that has cutouts for the 7-segment displays and LEDs to shine through (right image above). I am lucky enough to have access to a laser cutter, so I was able to use the Membrane Cutouts.dxf file in that same Overlay folder to cut out the mask from a thin white vinyl sheet (about 3 mil). You could accomplish the same thing with a vinyl cutter like a Cricut or Silhouette. Even if you don't have access to a machine to do the job, you could print the Membrane Cutouts.svg file and use it to manually cut out the mask with a hobby knife.

Take the image transparency and carefully place the mask behind it so that the cutouts and edges line up. Use a bit of scotch tape to keep the mask in place then laminate the two pieces together with a 3 mil laminating sheet.

Cut out the membrane from this laminated sheet. I used an old bit on my soldering iron to carefully melt out the eight mounting holes around the edges of the overlay. I would have used a manual hole punch to accomplish this if I could have found mine :-)

Logo

In a similar way, print the file Commodore Logo.pdf onto a transparency. Back the logo with a piece of white paper and laminate the two as above. Cut out the logo and glue it to the indent on the top of the case above the membrane.

Step 6: Print the CHESSmate Case Parts

To make a full CHESSmate reproduction you will need to print one of each of the following parts:

  • CM_Case Top
  • CM_Case Bottom
  • CM_Membrane Standoff
  • CM_Power Clip

The .3mf files can be found in the Models folder of the GitHub repository.

Print the parts in their default orientation. I used PLA and set the layer height at .2 mm. The CM_Case_Top and CM_Case_Bottom parts require supports. I'm not going to lie, cleaning up the supports from the printed part will be a pain, but the end result is worth it.

Step 7: Assemble a Full CHESSmate Reproduction

To assemble the full CHESSmate reproduction:

  • Attached the stack comprised of the:
  1. Membrane
  2. 3D printed Membrane Standoff with cutouts for the displays, LEDs, and buttons
  3. Populated CHESSmate PCB 

to the case with eight M3 x 14 mm bolts.

  • Mount the backpack CPU. In this case the female 90 degree header pin holes face inward so the daughter board is "tucked into" the main PCB.
  • Install the piezo speaker securing it to the case with two sided tape.
  • Solder a couple of leads to the VCC and GND pins of the micro USB breakout module. I used leads with a female pin header on the other end so the I could plug them into the +5V and GND pins on the daughter board. Be sure to get the polarity right here, the +5V pin is closest to the 22-pin header, beside the J2 label. Attach the micro USB board to the slot in the rear of the case with the Power Clip as in the image above.

Pop the bottom of the case on, apply power via a +5V micro USB connector, and viola you should have a working CHESSmate reproduction.

To get started I recommend that you check out the Commodore CHESSmate User Manual pdf file which can be found on GitHub. Have fun.

Step 8: Final Thoughts

Left: CHESSmate Reproduction  Middle: Minimal CHESSmate  Right: Original CHESSmate


By todays standards CHESSmate is a pretty weak program, estimated to have the strength of a beginning player at around 1100 Elo. However at the time it was created it was an amazing achievement. The whole program fit into 1K of memory for crying out loud. I'm not a strong chess player and I'm a little rusty which shows because I have not been able to beat CHESSmate yet playing at level 4 of 8. It's fun to try though.

What a fun and satisfying project. The CHESSmate Reproduction turned out better than I could have hoped for, plus I made a cool (IMHO) "minimal" bare bones CHESSmate. Of course there were a few missteps along the way (see my project blog for details), but all in all things worked out pretty much as planned.

I have a couple of CHESSmate related ideas for the future. 

  1. I thought that a micro CHESSmate might be fun, say something 1/3 the size of the minimal one pictured above.
  2. Software only CHESSmate with a proper display that includes a proper chess board. This would still be accomplished through emulation.

Not going to jump into either right away, but lately my projects have been grouped into trilogies so we'll see.