Retro CPC Dongle – Part 46

It’s time to create the enclosure for the CPC2. This is my first foray into the world of 3D printing and it was quite daunting at first. However, free online software like TinkerCad make the process of creating a model fairly simple. I chose to start by creating the base that would hold the main PCB as this would likely be the most difficult piece to get correct, mainly because the cut-outs for the ports had to line up correctly. I ended up with this:

When printed, it gave me this:

Click for a large image

Not quite right, but almost! The holes for the HDMI and USB don’t quite align. To be fair to me, I was working from the mechanical design, rather than measuring the actual board that I built, so it’s not too bad.

One of the problems I have in testing the board fit is that there are two pin headers on the bottom of the board for the ESP32-Wroom32 and the FPGA, so it won’t quite fit onto the mounting pegs for a flush fitting. My plan is to build a second board that will connect to the main board with pogo-pins and remove the pin headers completely. That way, the same board can sit low in the case when in use and sit on the pogo-pins for testing and programming. This also means it must be easy to remove the board from the case and return it when programmed as it will flop-flop between the test harness and the finished case as needed for system programming.

Without spending time to really understand the capabilities of 3D printing, I opted for a conservative design for the enclosure. It will be a three part-piece comprising the base shown above, the top and the keyboard. It could probably have been done with two pieces, but would require support structures and have been a lot more difficult to print.

With businesses across the world struggling with COVID related problems, I really wanted to support my local businesses, so I used an Aussie printer, http://3dprint-au.com/ to print the part for me. It was a little more expensive than buying from overseas, but helping out local businesses in a tough year is the right thing to do.

I considered buying a 3D printer, but I’d need to create 9 pieces before I broke even at $50 per print vs a FlashForge Finder. I may still do this, given the lead time it takes to get a manufactured print and the chances of me screwing it up a few times.

The other discovery that I made when creating the model for the base is that to maintain the correct proportions for the CPC2 with the original CPC, is that it needs to be quite long. Anyone that knew the original CPC464 knew how long these machines are. You can see the location of the board pins in the image above, and everything outside of these is empty space. However, for the CPC2 to look like a miniature of the original, it needs this space added to be proportional. Sadly, it makes the final outer dimensions a lot larger than I wanted, and not exactly a dongle any more.

However, at this point, I’ll just be glad to have the project finished. I hope to have the programming harness built for my next post, so until then, stay safe!

Last Post <====> Next Post

Retro CPC Dongle – Part 45

I’m a big advocate for open source. I’ve been using Linux for close on 30 years – yes, Kernel compiling the Slackware Kernel on a 486 with 4M RAM was a nightmare! Linux has been my primary desktop OS for about 20 years. In the past few years, the open source community has matured to the point that the quality of open source software rivals and sometimes exceeds commercial closed-source software.

In the spirit of that great heritage, I had always intended to offer this project fully open sourced, both the software and hardware. The time has come to share some of the inner secrets of the CPC2.

Now that I’ve fully tested and proven the hardware, I proudly present the schematics for the CPC2 and the bill of materials for the project. You can also order the PCB from OSH Park by clicking the lovely OSH Park logo below. Unfortunately, OSH Stencils doesn’t appear to have a project share facility, but if you want to order stencils to replicate this project, leave me a comment below.

One final hardware resource for the project is a shared project on Mouser electronics, also linked below. Note that this is a partial shopping list, and excludes some common electronic spares, such as 100nF caps. Cross check with the bill of materials for a complete list. Sadly components are EOLd (end-of-life) all the time, so you may need to replace some of the components on the list with the contemporary replacements.

With the hardware sorted, you’ll need the FPGA core and firmware to load onto the board and this has been shared on GitHub. At the time of writing, I haven’t issued a push for some time, but I’ll post the code at some point over the next couple of months as the project reaches a conclusion. With many changes between board revisions, it needs a fair bit of clean up before I post the code.

I hope you’ll find this content both interesting, and possibly useful*. If, like me, you enjoy pouring over schematics to understand how something is put together, I hope you’ll enjoy reviewing these files. If you have any questions on the schematics, please post your questions in the comments and I’ll do my best to respond.

Over the next few months, I’ll finish the supervisor code, tackle the last few irritating timing issues with the FPGA core and develop a 3D printed case. I hope to post some CPC464 and CPC2 comparison photos when the case is completed along with some video of the CPC2 in operation!

Order from OSH Park

Last Post <====> Next Post

* YMMV Disclaimer: This project is provided purely for entertainment purposes and in good faith. If you choose to replicate this project, you are responsible for your own project outcome.

Retro CPC Dongle – Part 44

Final Hardware Build

At long last, the final build of the CPC is finished, tested and working!

A working CPC2(dot4!)

Assembly of the new board was pretty uneventful. I followed my usual process of dry assembly on a spare board, solder pasting with a stainless steel stencil, rapidly transferring the components from the dry board to the pasted board followed by a session in the IR oven. Continue reading

Retro CPC Dongle – Part 43

With the world in lockdown, you’d think there’s plenty of time for hobbies. Somehow, it’s been 4 months since my last post – time flies in a crisis! I’ll admit that I’ve been somewhat lax in working on the CPC2, but with the project so close to completion, I need to re-commit to finishing this 5-year project! Today’s post is about my CPC Bluetooth joystick!

Modded Atari 2600 joystick

Continue reading

Retro CPC Dongle – Part 41

Build v2.3

So the next build of the CPC2 is done. I recorded the process with a time-lapse camera because it’s hard to make a 7 hour build entertaining. Each second of video is 30 seconds of assembly time, so this 7-hour build ended up at 7m19s of timelapse, after cutting out the cursing and head-scratching. See if you can spot my hands start to shake at the 2-hour mark of trying to precisely place the sub-millimetre components and enjoy.

Continue reading

Retro CPC Dongle – Part 40

Doesn’t time fly? It’s been 6 months since my last post! My only excuse is that I started a new job and learning a new culture and processes is pretty exhausting. I have tended to work on this project during the evening, but kids being what they are, rarely co-operate when you need some project time. Time to work on the CPC2 has been limited indeed.

There’s been a fair bit of activity though, so let’s take you though what has been done.

Continue reading

Retro CPC Dongle – Part 38

This post talks about HyperRAM, what it is, how to interface to it and how to improve the performance of high-speed parallel interfaces.

HyperRAM is described well by Cypress. It is essentially a double data rate RAM with a compact 12-line interface that masks the underlying technology of a DDR SDRAM.  It can provide 333MB/s of data transfer in short bursts. Data is transferred on both edges of the clock, and the narrow bus makes it ideal for microprocessors or pin-constrained FPGAs. Continue reading