Sunday, 10 March 2019

DivMMC Programmer Joystick Tester

The Future Was 8 bit has posted a couple of pictures of a nice new board with lots of flashing lights on recently, so I thought I would tell you more about it.
This board is used for testing the DivMMC future joystick ports. It sits on top of four DivMMC future devices, plugged into the four slots of the DivMMC future programmer (read all about that in it's own blog post).
Just a quick update on that first. It's been doing very well, testing every single DivMMC future that leaves the Pink Windmill, and there have been rather a lot of those.
However two years of heavy use is taking it's toll on the edge connectors, some of which were worn through to the copper in some places.
The boards used here were grey Spectrum 128K +2 boards, all of which were rescued from the junk pile (there's a blog post about them as well). They were all still working (they grey's are a pretty solid design), which is great. It would be a shame to have to replace them, so I designed a PCB which was basically an edge connector extender.
This is soldered onto the original connectors and presents a new gold plated edge connector, which will hopefully give many more years service - and if they get worn out, can be removed and replaced with a new extender board.
So, there are four Spectrum boards. Attached to those are the four extension boards. Plugged into those are four DivMMC future boards.
When plugged into the Spectrums, those boards are programmed (using software loaded from an MP3 player in the programmer box - you did read the previous blog post didn't you? keep up!).
The programming / testing process involves programming the firmware into the EEPROM onboard, and test loading some programs, including on which tests the joystick port.
Here the micrcontroller in the programmer box generates a series of actions on the joystick port. All 32 possible inputs (including the impossible ones like up and down at the same time), in sequence, with release inbetween to check for latching etc. (up, nothing, down, nothing, up and down, nothing etc.)
The software for the Spectrum end is loaded from the SD card by a series of automatic key presses generated by the micrcontroller in the box (are you impressed yet?). It will wait until it receives all of these in the right order and declare a pass or a fail on the joystick port.
In the original build a few years ago, a small blue box was constructed which was called the "joystick duplicator". It's job was to take the input from the microcontroller, which was a single joystick port, and apply those actions to all four ports, keeping them isolated from each other. (if you connected them in parallel, a short on one would cause all four to fail).
This small blue box was not bigger on the inside, anything but, so it had a miniature masterpiece of electronic assembly by TFW8b, following my design which was basically a 7404 driving five 4066 chips, each gate of the 4066 representing a joystick button.
The four cables coming out of that box plug into the for divs under test. I think these were salvaged from dead joysticks by the look of it.
This has also preformed great service over the last few years, but the joystick cables are getting a bit flaky and replacing those would require rewiring inside that box, so I designed a new version, this time on a PCB.
The design was simplified slightly. The original had used 4066s to give a little isolation in case the final design ended up having separate power supplies for the devices being programmed. I think we were considering using Spectrum still in cases at that point - presumably before I added the bit that 'pressed keys on the keyboard' (also using 4066s), which removed the need for keyboards and allowed the four units to be sandwiched together.
The new design uses 7407, open collector buffers. These will short the joystick inputs to ground when the inputs are low, and floating when the inputs is high (they will be pulled up by the resistors inside the divs, as would a normal joystick). That reduced the chip count, so there is just one for each port.
The board sits on top of the DivMMC boards, plugged into their joystick ports (which also serves to keep them vertical, and reduces wobble on the edge connectors). The screw threads on those connectors was the UNC 4-40 style used on D connector jack posts, so they had to be tapped to M3 to receive countersunk screws to hold them firmly in place.
The input connector is on the end, the cable runs down the back of the rear board, just out of shot.
Ooh, have we got flashy lights? Yes, the LEDs show the activity on the pins, and the four along side the ports show when those ports have power.
All being well, the testing completes and all the devices pass the test. Any that don't (and it's very few these days), can be reworked and retested.
Might seem a lot of effort to go to, but we want all the products that go out to have been fully tested, so we can be sure if anyone has a problem, they need to clean their edge connector, or have a broken Spectrum, possibly a Z80 with a bad M1 line.
The DivMMC future is available to order now, to suit all sorts of Spectrums, even white ones. As a reward for reading this far, here's a discount code: TYNEMOUTHDIVFUTURE for anyone wanting to buy a DivMMC future. For those of you that don't want to buy one, here is a picture of a cat looking judgemental.
Thank you to Rod Hull at the Future was 8 bit for all the photographs used in this blog post (including the last one).