TI 99/4a 32k Memory Sidecar Build

I have had the TI 99/4a for awhile now, and posted the Recapping of it. I actually have two TI 99/4a computers as the first one had a bad membrane type keyboard. The second one had a Stackpole type keyboard, which is is working order (although some of the square tubes are split). The Joysticks are awful, and I built up a Joystick Adapter to plug in Atari 2600 compatible joysticks to it. That made things much better for it. I also built up a Pitfall Cartridge for it and 3d printed a shell. Still I haven’t used it much. The Ti 99/4a was the first computer I had, it was old at the time. I had a few cartridges for it, and used BASIC in it at the time. It was quite limited with all the more software I had available.

In anticipation of getting a FinalGROM Cartridge or Backbit or something, I had purchased a 32k Memory Expansion that was for sale from Backbit. After I received it, I designed a 3d printed case for it. It turned out really well and has been sitting with my TI 99/4a since then, but I was unable to use it at the time.

I like the small and clean look of the Backbit 32k.

The FinalGROM Cartridge came in, I made up an SD Card for it. I tested it with some games that did not require the 32k Memory Expansion. Then I plugged in the 32k Memory Expansion and the 99 wouldn’t power up properly, it just made an audio buzz. I checked the contacts, checked the Memory Expansion. I noticed flux residue on the ICs of the 32k Memory board, and cleaned that off just incase it became contaminated. I ended up removing the CPLD from the board, and inspecting it. I soldered back on the CPLD, and the buzz was gone, and I got it working just one time. Then I powered it off and tried another 32k program and it quit working again. I rechecked the soldering on the CPLD, as well as the ram IC and edge connector and touched it all up. It would randomly work, it may pass Jedimatt’s Burning Ram test for a few passes then fail. Then it generally won’t detect the 32k memory until it is powered off a bit and reseated.

Backbit has quit selling the 32k Memory Expansion, and has released on Github as a project to allow you to build your own.

The Backbit 32k is more compact, and should be cheaper to make than Jedimatt’s design if you have all the required equipment to program and assemble it. Jedimatt’s 32k which is available to build by ordering PCBs with the provided Gerber files and standard components. Jedimatt’s 32k requires no programming of components. There are a few issues with building the Backbit 32k. It has a CPLD and that requires programming with a JTAG programmer. The board doesn’t have a JTAG Header. I believe this is simply due to it not being designed as a DIY Project, Backbit is a business and she makes and sells her products. I later found the RAM IC Footprint is wrong, at least for the ram IC that was fitted on mine when I bought it. The CPLD is on the top edge of my ability to solder with the super fine pin pitch. The Backbit 32k has not been around nearly as long as Jeditmatt’s, I can’t be sure that the problem is a defective part. It may also just not like my specific Ti 99/4 for some reason.

Jeditmatt’s 32k design has been around for many years. It is all through hole style components and easier to solder together. Surface mount soldering is not that difficult with some practice. That is at least for the larger parts, the smaller pin pitch like the CPLD gets far more difficult for me.

https://jedimatt42.com/4a/ti32kmem/

This left me with a problem. I know I can build Jedimatt’s design, I know it is thoroughly tested. It takes way more parts and time to assemble, and is also more expensive to build. I just love how the Backbit 32k looks. I also currently have no interest in a TIPI which does require Jedimatt’s type of expansion.

I looked around and found a Jedimatt type expansion for a reasonable price with shipping. I would rather build it though. I looked into it. I found all the required parts at Digikey. I also found the Ram and CPLD for the Backbit 32k there.. I also found a more “stylish” case for the Jedimatt 32k board on Thingiverse.

I decided to order the parts for Jedimatt’s board. While I was at it, I did order a replacement ram chip for the Backbit 32k board. I could have picked up the CPLD as well for $3.50 or something. I wasn’t interesting in trying to hand wire that for the JTAG programmer at this point (I may next time I place an order).

Jedimatt’s 32k Parts List. I have provided links for more specific parts. The most generic parts can be purchased easily. I included a link to the type of Round Female Socket Pins that I used, Digikey does have them as well if you are willing to look for them.

I downloaded the Gerber files from Jedimatt’s site. Then I went over to JLCPCB and ordered the boards as that is where I order my PCBs from. I managed to order 5 of them and have them shipped to me for a total of $4.11 ($2.00 for the boards and $2.11 for shipping and taxes). I did kind of mess up, I didn’t want them in Green, but forgot to change it. The other colors did list they would take 2 more days to ship though.

I placed my order with Digikey for the parts I required. Between the PCBs and the Digikey order, I paid less than I would have for a completed 32k Memory Module on Ebay. I did have the 74HCT138 already, as well as the Resistors, Capacitors, 2.54mm Pin Headers, 2.54mm Jumper, DC Power jack, LED. I am also 3d printing the case. I ordered 5 of each of the 245s and 21s as well as two of the ram ics (and a replacement ram ic for the Backbit 32k incase that was the fault there).

First the Backbit 32k. I replaced the ram ic. The one I ordered was the exact part number that had been on it. I had the same results. Initially I couldn’t get it to work at all, once it made the buzz on power up, on removing it and trying it a few more times, it just failed every time I ran the RAM Test on it. It then worked for a little one time.. So it is on the shelf incase I want to buy another CPLD for it at some point.. I am wondering if it may be the edge connector is for some reason not making good contact. I am thinking I may get out the other TI 99/4a to see if it works on it. That one has no keyboard in it though, and I can’t start the ram test without one. The keyboard for it may be just working well enough to do that though if i reinstall it..

Next I moved on to the Jedimatt 32k build.

The boards came and looked great as usual.

The part that needed the most consideration was the Edge Connector. The edge connector that I purchased is of the same series as the one I purchased to replace the Cartridge Connector on my Commodore 128. Being that the connectors are the same 44pin, the difference between is the one for the Commodore 128 was a Right Angle connector. Being how it worked with the Commodore 128 I figured it should work for the TI 99/4a. It needed modification though, to remove the “mounting hole ears” on the side just like it had with the Commodore 128. This was a bigger deal here due to fitting in the 3d Printed case, the opening is very tight, and I needed to file it down a bit smaller than I thought I would.

There is a difference between the Edge connector between the Jedimatt and Backbit 32k. Jedimatt recommends some “individual pins” to use as extenders on the Edge Connector. It doesn’t seem they are available. I used Round Pin Female Socket strips. This is required because the “legs” of the Edge connectors are too short to reach deep enough into the side of the Ti 99/4a, or into the pass through socket of other Sidecars like the Speech Synthesizer.

I printed out the case and fitted the board to check how far the connector came out. With no pin headers in between it was way to short. I then tried with 1 pin header to see how that fit. It was still to short, compared to the Backbit 32k. The Backbit 32k didn’t use pin headers to extend the connector, it was cheated a bit by not putting the edge connector pins the whole way through through the PCB. The 3d printed case I made for the Backbit 32k is much thinner than the cases designed for the Jedimatt 32k (or at least the one I am using). I could rework the 3d printed case for the Jedimatt 32k, and maybe I could have managed then with a single pin header to extend it. That was not something I wanted to do though, it would have taken a good bit of work on the model.

That meant I needed to stack 2 of the Round Pin Female header pins for each of the 44pins of the edge connector. Which required stripping out 88 of the Round Pin Female header pins. The next step was to insert them into stacks of two each. The stacked pins were then soldered together, holding them with my Helping Hands. I went to stacking 5 pairs at a time and standing them up in holes in the PCB by the time I was done. While it was a bit awkward being they could spin around and even be picked up by the solder iron, that was quicker than trying to get the alligator clips in the Helping Hands to hold them properly.

That was a lot of time consuming work. Stripping the 88pins out of the strips without loosing or damaging them. Then stacking and soldering them together in pairs without making an awful mess of it. Then installing them onto the modified Edge connector that I had taken the wings/ears off and sanded down a bit more to fit through the 3d printed case.

To get the alignment correct, I fitted the pins and edge connector into the PCB. I then soldered the 4 corner pins into the PCB. I then aligned the edge connector and soldered the 4 corners of the edge connector to the pins. This let me align it all nicely, and after that it was easy soldering the rest of the now captive pins to the Edge Connector and PCB. Doing the soldering that way worked very well. It is very solid, it doesn’t look too bad overall once it was finished. I had tried to find what other people were using to extend the Edge Connector, it looked like one example was using the same Round Pin Sockets stacked up.

Above you can see the Jedimatt 32k Edge Connector does extend just a little bit higher than the Backbit 32k Edge Connector when they are in the cases. That was the closest I could get it with using the Round Pins to extend the Edge Connector. That does make it have a bit more gap between it and the Speech Synth Sidecar and or the TI 99/4a. I am thinking of that “heatsink looking” interface bit on the side of the Speech Synth Sidecar where it meets up to the TI 99/4a. I could make one of those and stick it on the Jedimatt 32k to support the gap in a very similar way.

The Backbit 32k has a serious time advantage due to not needing to extend the Edge Connector pins. You can see below the BackBit 32k just solders in the Edge Connector, keeping the pins as barely in as possible to extend it out as far as possible. You also see it has far less components overall. (Update 8/31/25 the Backbit 32k is working now, I striped it to be the bare board, flipped the edge connector 180 degrees and reinstalled the ics and capacitors, and with a new microscope I could inspect the work properly to clear any solder bridges and see that all the pins were soldered properly)



The rest of the Jedimatt 32k build is strait forward through hole soldering. Keep in mind that you have to install the Jumper for the Power Selection. To the front it uses the 5V from the Ti 99/4a Expansion port (requires a mod to the Speech Synth Sidecar to use), and toward the back of the TI 99/4a it uses the Power Jack and you need to connect up a 5V Power supply. Be sure to only use at 5V Power supply. I am using the Ti 99/4a to power it from the Edge connector with my modified Speech Synth Sidecar. Also install all the ICs on the board in the correct orientation, Pin 1 toward the Capacitor.

The case design intends the LED to tight to the board. There is a “clear” lens bit to print. I am not sure how that is fitted and decided to mount the LED pointing out through the hole.

I had taken the top out of that circle so the LED would clear, but on trying to close it still didn’t close. On pressing it a bit, and then opening the case, I saw that the screw in the corner hit that one spot around the LED housing. On removing a bit of the plastic there, the case then closed properly. I printed it in a Silver and Black theme to fit the TI 99/4a color scheme. The 4 screws are not specified, I used four 2mm by 10mm long screws and nuts (or 2.5mm, but I believe 2mm), a little shorter screw may have cleared the LED housing..

I connected it up and ran the Ram Burn in test on it. It passed all the tests for 12 cycles, then found an error on one of the banks. I powered it off and back on, and ran the test again, it was working again. I am not sure the issue, or if it was a random failure. I did do some more testing with it today, and it worked properly. I tried out a few 32k Games and Programs all of them ran fine.

The case printed reasonably well, but has room for improvement. The Silver is a sliver PLA, the 99 4 and A had little nearly “floating bits” that are missing. They were all partly there, but due to a defect on one and the poor strength of those bits, I removed them. I am thinking of possibly reprinting it as a 2 color print with a black insert filling in the letters to give it strength to retain the floating bits. I didn’t print the “inner blocking piece” You can see the PCB and parts inside through the openings. The back is printed in Black PETG, the case itself is a snap/friction fit top. The screws hold the PCB to the Bottom, but do not hold the “top” on.


The Speech Synthesizer doesn’t pass 5V through it without a modification as shown on Jedimatt’s website. You can alternately use the external 5V Power Jack to power the 32k Memory expansion. If you have built either of the 32k Memory Expansion Sidecars, it should be no problem to add the wire to connect the 5V Pin in the Speech Synthesizer.

I did a little side project based on the Jedimatt 32k. I made an adapter to use the SOIC Static Ram that the Backbit 32k uses fit on the Jedimatt 32k. It is currently running on the 83rd pass of the Jedimatt 32k Ram Burnin Test. https://hobbytronics.home.blog/2024/05/05/ti-99-4a-32k-memory-sidecar-alternate-memory-ic-adapter/

ZX Nuvo 128 Rev 4a

I like the old 8bit computers. Being in the US, the ZX Spectrums are not really around here. I while wouldn’t be against getting an original Spectrum 128, I like building things. They also make reproduction cases based on the original 16/48k Spectrum case. I found the DonSuperfo’s reproduction Spectrum board designs. He made a 48k reproduction as well as he has several designs for 128k Spectrums. I found the ZX Nuvo 128 Rev 4A design of his. This version is his 128k based design with a DivMMC built in, and it fits in the 48k Case.

The Spectrum 128 portion is mostly through hole components. The DivMMC portion has a CPLD. There are a few surface mount parts otherwise, and I didn’t have any trouble with anything except the CPLD. The CPLD is very fine pitch, and was not designed for manual soldering with a soldering iron. My smallest iron tip still touches a couple pins at a time, note the smallest tip wasn’t the best choice. While I got it in the end, I do not intend to be soldering any more of those CPLDs with an iron in the future if it can be avoided. Due to that I am very glad I didn’t attempt the Rev 5a with a second even larger CPLD on it.

Don’s Github : https://github.com/DonSuperfo/ZX-Nuvo-128

I used Don’s documentation on Github. To get the parts, I started by ordering a HARLEQUIN 128K REV 2D kit from ByteDelight. It is a starting point for the build. I started there to get the bulk of the parts from it, there are a few parts that were not needed. Since I am in the US, I ordered the kit from ByteDelight’s Ebay listing, which was the cheaper way to go due to shipping etc. If I ordered from his website, I would have likely purchased the “Parts Only Set (NO PCB)” option.

I would have went with the Rev 2d kit overall, except it doesn’t support a couple things, and I wanted the built in DivMMC. ByteDelight’s kit is great with the instructions that it comes with, but they are only available with the kit, and I could not get the BOM for the 2d at the time. Don has since posted the 2d BOM on the Superfo Harlequin 128 Facebook page files section.

I ordered my Nuvo 128 Rev 4a PCB from DonSuperfo by way of contacting him through the Facebook group. It can alternately be ordered from PCBWay’s Projects section. I didn’t need 5 of them, and I didn’t want to try to sell the spare PCBs somehow. Unfortunately for me the CPLD wasn’t included, which would have made the build so much easier. I think he does sell them with the CPLD, I just didn’t know to ask. The CPLD was $16.00 from Digikey, but it was quite difficult to install. It also took a bit of work to program, as I had no Jtag programmer around.

Since I couldn’t get the Harlequin 128 Rev 2d BOM at the time, I had to wait for the 2d Kit to arrive. Once I had the kit, I took the instructions from it which have the parts listing and the Nuvo 128 4a BOM from Github to find what parts I would still need.

Then I placed an order with Digikey to get the remaining parts, well mostly. I had to order the one obsolete ram chip from Ebay. I also had the various additional diodes and capacitors I needed in my inventory as well as a couple of the 74hc series ics. Below is a list of the parts I purchased, but a couple parts are missing, I will have to find the copy of the BOM I had edited to find the last few items to add to the list below.

That is the parts to build up the Computer, minus the case and keyboard, which I sourced otherwise.

Building the Nuvo 128 4a:

I started with all the small low stuff. The AD724 NTSC/PAL Encoder was first. It came presoldered to the Harliquin 128 2D PCB, so I had to desolder it from there. I used my hotair gun for that. I then used my soldering iron to solder it onto the Nuvo PCB. I had thought of leaving it on the board and buying the AD724 from Digikey, but it was $26 just for one. Next the Diodes and Resistors. I think installed the Transistors and Resistor Arrays. I did be sure to not build up parts around the CPLD though. I could have done the CPLD first, but I wasn’t up to it yet. I wanted to get in some soldering practice and work up to that.

On the board J9 is to switch between “Composite Sync” for RGB mode and “Composite Video” on the 9 Pin MiniDin. It is made with the pins shorted for “RGB” mode, making it so you can’t switch it. So I cut the trace on the bottom of the PCB. ”Composite Video” can be used as the Sync signal for RGB video depending on your display/upscaler. I was having issues with using the RGB “Sync only” signal with RGB, and I wanted to be able to use plain Composite Video as well, so I switched it to Composite Video. It my have been an issue with my upscaler’s connection at the time.

Next I put on the CPLD and after that the MicroSD Card Slot. Notice the missing Diodes by the MicroSD Card Slot, they were left off to provide room to solder on the Micro SD Card Slot. I then went back and finished the Diodes. The MicroSD Card Slot was easy to install, but that CPLD wasn’t. Even though the CPLD looks good in this picture, it did not work properly. I tested all the pins I could and used my microscope to view it, I couldn’t find any faults. I was able to program it with the JTAG J17 header there just below it, but it wouldn’t initialize once the Nuvo 128 was built. In the end, I had to desolder it (using hot air). I then cleaned up the pads and CPLD and reinstalled it, partially soldering with my soldering iron and partially with hotair. It then worked properly.

Nearly ready to install the ICs.

Note: the Keyboard Connectors are 1 sided and must be installed turned the correct direction (which is different for each).

Above about all that was left were the switches, and the 3 directly soldered on ICs. 

Programming the CPLD:

I didn’t have a JTAG programmer. With some direction from people on Don’s Facebook Group page, I looked around and found how to setup a Raspberry Pi 3b as a JTAG Programmer. The guide was old, and the one required part for it to work is no longer part of the default pi os, I had to find an old clone of the Github repo to get it to install properly. After that I found they had an “updated” guide that was to work, but I couldn’t even get that to install properly. So at this point I programmed the CPLD. 
Directions I used: with the work around of finding the other repo:
https://linuxjedi.co.uk/2020/12/01/programming-xilinx-jtag-from-a-raspberry-pi/
The “newer” directions, which are also linked in the above that I couldn’t get working at the time.
https://linuxjedi.co.uk/2021/11/25/revisiting-xilinx-jtag-programming-from-a-raspberry-pi/

See the Programming Warning below..

Warning: As seen in the picture below I programed the CPLD “before” putting on any of the other ICs (except the video encoder). This worked fine.. But when I found the CPLD wasn’t working properly, I tried to program it again after installing all the ICs, and nearly fried the Pi. It seems it was trying to power the Nuvo 128 5V components by the 3.3V VCC pin on the JTAG programmer. I expected the VCC pin on the JTAG Header was going to be the 3.3V which only goes to the CPLD, as that is what we are programming with the header. It appears that the regulator doesn’t prevent reverse voltage back feeding from the “Output” back through it and out the “Input” pin, and nothing in the design otherwise is setup to prevent it. It melted the casing on my dupont connectors and melted the VCC and Ground pins loose in a matter of seconds. As I was watching the Pi’s Video output it listed a Low Power warning, which warned me of what was going on. I tried to pull the jtag header, and the VCC and Ground wires came right out of the dupont crimps. Thankfully it didn’t do any damage beyond the connectors. To verify the programming, I then reconnected the JTAG header, but “Except” the VCC pin. I powered the Nuvo 128 by it’s main power jack, which powered up the CPLD. Then the JTAG Pi programmer was able to read the CPLD and program it, although it was already programmed properly. That did verify it was likely working and that it was soldered on as well as before at least.

Finishing Up the PCB:

Once the CPLD was programmed, I soldered on the 3 ICs and installed the other ICs in the sockets. 

I missed installing the top IC before testing the board, it was not critical though. It is for the Joystick port.

The buttons were not installed yet, and I was waiting on the 5 position dip switch. I rigged up a minimum Composite Video connection for testing. With the dip switch not installed, Don’s ROM defaults to the Test ROM and the DivMMC disabled.

Further testing revealed that the DivMMC was not working. That took me a good while to sort. I examined the soldering, checked for shorts and found pinouts for the Rom and CPLD. I traced the pins for the DivMMC ROM, Ram, and CPLD unable to find an issue. The CPLD pins are so small that it was difficult to verify I was on the right pin though even with test leads with very sharp tips.

I eventually decided to remove the CPLD and try putting it on again. I removed the JTAG programming header, as it was in the way and was going to be melted with the Hot Air gun. I covered up the nearby parts and sockets with Kapton tape to help prevent melting them. After I used hot air to desolder the CPLD, I cleaned up the pads and the CPLD pins and resoldered it on. I did then connect up the Pi3 to the JTAG header… see the warning above, I nearly fried it due to how VCC seems to be wired on the PCB. After verifying the CPLD was programmed ( I downloaded the programmed data to the pi, then programmed it again, and downloaded it again then compared the downloaded files.). I then put the properly prepared Micro SD Card (must be formatted properly, and must have the esxdos files of the matched version on it https://www.esxdos.org/index.html), and it worked!

Running a demo from the DivMMC

Now that it was fully working with the DivMMC and the 5position Dip Switch had arrived, it was time to make the PCB fit into the 48k case. The opening where the 9 Pin Mini din ( old rf opening) needs enlarged along the bottom edge a bit. The opening needs made for the DB9 Kempston Joystick port. The opening for the Micro SD Card Slot needs made. The two openings for the buttons on the side need made. Since I wanted to use the Multi ROM, I wanted the Dip Switch to be accessible as well, so it needed an opening. I have since seen another of Don’s boards done by someone that put the Dip Switch on the bottom of the PCB, and cut out an opening in the bottom. That looked very neat, I don’t know where that would align on the Nuvo though, and it was well after I finished this build and had my opening in the side of the case for the DIP Switches.

For the Buttons, I kind of messed up and put the openings lower than they should have been, then I decided to “slot” them “upward” toward where they actually should have been. Since I had those odd openings I need to come up with a way to make them look a bit better. I made up a model for a button cap in Tinkercad. I printed it out of TPU. It fit on the button stems perfectly, and after the first test print, I made an adjustment and they worked great. They stick out just enough to press, they close the holes up well, and the TPU has just a tiny bit of give. The MicroSD Card Slot came out great. The DIP Switches are accessible even if it is not quite a perfect opening.

On to the Keyboard:

It was on to the Keyboard. I had found there is a replacement “Velesoft” anti-ghosting microswitch keyboard for the 48k case. I wanted that rather than the membrane keyboard. They are available from ZXRenew.co.uk who does the Reproduction cases such as I am using as the “Zelux”. AmericanRetroShop on Ebay in the US sells the Velesoft keyboard labeled as the MechBoardZX. Bytedelight also sells the keyboards, again not in in the US. I purchased my case and MechBoardZX from AmericanRetroShop due to shipping etc to the US. From what I see they look to be identical PCBs, all labeled up with the Velesoft design and just different branding otherwise on the silkscreen.

I did order the baseline keyboard without the LEDs. When I went to put it together though, I had decided to install the LEDs. If I decide I don’t want them on, I can always unplug the power to them. I had the LEDs and required resistors in my inventory so it was just a bit more time to install them. I couldn’t find what resistors came with the kit, I used 1k resistors I believe. In the end I think the Blue LEDs could have had a slightly higher value resistor, while the Green LEDs would have been better with a slightly lower value resistor. With the Nuvo 128 4a, it has a 5V Power header by the left Keyboard connector labeled as J15. I expect that header is intended for this type of use. I based my resistors on using 5V for the power, so there is no need for a Buck Converter Regulator as is generally included in the LED kits. I don’t see why they do that, and don’t setup for 5V power.. Yes the power losses are a little higher, and for an original ZX Spectrum, that may be an issue.

The PCB is very thin, and flexes. To keep it in place while I worked, I taped it to my silicone work mat. That way I could move it on my bench, but it wouldn’t move on its own. 

Finished Setup:

Now that the Nuvo is finished and I built a new GBS Control with a RGB SCART Input on it, I can run the Nuvo 128 in RGB to any of my VGA, or HDMI Displays with audio. I don’t plan to primarily use it with my bench monitor. I can use this over on my desk that I keep setup for use with my old computers. I also built up a MAXduino kit, which I customized the case to be a nice match for the system. It is a quick and easy build from the Retro.care kit. It lets me load some games that I only have in the .tzx format which is not compatible with the DivMMC.

Some Notes.

C6 is a very tight fit, I had to find a capacitor small enough to fit there. It wedges in between U46 (the Regulator), J4 (the power jack), and SW1 (the 5 Position Dip Switch). It seems that could be adjusted with a bit of work, as the other versions don’t have it quite so tight. The value the capacitor is makes it a bit tougher to find that is small enough in diameter.

C28 and C29 need to be fairly small as well. In my case I had some rather large diameter ones that are very short, so they are raised off the board to clear the components around them. They can be found though, and thankfully I could use the ones I had due to them being so short.

U57 and U53 are a bit too close, they rub each other when installed. It just feels awkward.

As mentioned above the JTAG header J17 for programming the CPLD will backfeed power through the 3.3V regulator to the rest of the Nuvo board. This caused the JTAG programmer to try to power the whole ZX128 after the ICs were installed. I did find that something such as a 7805 Regulator will have that problem if power it applied to the “Output” while no power is on the “Input” side if there is a load on that “Input” side that can draw power. With the Nuvo 128 there is a lot of stuff on the 5V Input side of the 3.3V Regulator. I think a Diode just before the Regulator Input would prevent that, and as the DivMMC CPLD doesn’t draw much power it shouldn’t be a big deal if the 3.3V regulator can handle the slightly lower input voltage that would cause.

J12 for the ESP8266 module has the VCC Pin wired to the 5V Power rail. The ESP8266 Module that fits there is a 3.3V device. Some are “labeled” as “3.3V/5V” but I think they are “mislabeled” as none of them that I have been able to find have an onboard 3.3V regulator. The Nuvo128 has a 3.3V regulator for the CPLD, it could have been wired to J12. Provided it can handle the extra load. I have thought of modifying the board to get the 3.3V over there. I do have the module, the 3.3V powered one, but it doesn’t seem worth the trouble. It looks to be of limited use.

I don’t understand the choice to wire the 9Pin Minidin up with a Jumper J9 to switch Pin 4 between “Composite Sync” and “Composite Video” (which is defaulted to “Composite Sync” . The pinout is based on the Mega Drive 2 / Genesis 2 pinout. With the Mega Drive 2 / Genesis 2 9Pin Minidin port Pin 4 is “Composite Video” and Pin 5 is “Composite Sync”. On the Nuvo 128 Pin 5 is not connected to anything, and Pin 4 is by default “Sync” not “Video”. I expect there may be at least small quality improvement when using “Composite Sync” for “Sync” instead of “Composite Video” for “Sync”. It seems it must be small, as it looks that most of the RGB SCART Mega Drive 2 cables don’t use “Composite Sync”, they use “Composite Video”. I thought of wiring Composite Sync to Pin 5, but the output is great with using Composite Video for Sync so it doesn’t seem worthwhile. The little change of putting Composite Sync on Pin5 and removing J9 seems like a reasonable idea. I also find it a bit odd to use that type of cable, when the Resistors and Capacitors need to be removed from the cable to make it work properly with the Nuvo. Now if I use that cable by accident with at Genesis 2, it won’t do the upscaler, or display any good I am sure. It does make finding an “almost ready to use cable” for the Nuvo easier though.

A New Improved GBS Control and Upgrades

Now that I have built a ZX Nuvo 128, I have a need for a good option for connecting up the RGB (RGBS) Video from it. The Composite Video output of it is pretty good on my 10″ LCD Monitor that I have on the work bench. The composite doesn’t look as good on some other monitors though.

With the GBS Control I built awhile back to use with the Commodore 128 RGBI to RGBS I had not included a SCART RGBS port or have an option for Audio passthrough. I just made it up to work with a standard VGA Cable. I also didn’t included the optional .96″ LCD Display and Encoder. This time I want to include those items. I am also going to place the SI5351 in a different location. I didn’t like putting it on the heatsink like I had last time. That heatsink does get warm with use, and having the board on it does reduce the heat dissipation. There will be a Switch to toggle in the Resistor between the Sync and Ground for 75 Ohm Sync Termination Enable/Disable. With SCART it will have audio passthrough. Due to that, I am also building it with a 3.5mm Stereo Audio Input/Output Jack. There is also a VGA to HDMI Adapter inside the case with audio wired to the 3.5mm and SCART ports. I can still use the VGA Output, but if I use the HDMI Output I will have audio passthrough from SCART (or the 3.5mm jack). If I use VGA as the Output and SCART for input, I can use the 3.5mm for Audio Output. If I use the HDMI as the Output and the “VGA” Input, I can use the 3.5mm jack for Audio Input so it will then output through the HDMI port.

I looked for a case that included this exact setup. I couldn’t find a full featured case that used the ESP8266 NodeMCU board form factor that Voltar had used, and I have a spare of. I found cases that use a smaller footprint ESP8266 Board with all the ports and features I wanted. They also often used a different SCART Connector than I have though.

I found a case that is similar to the last one (It is listed as a “remix” of it, but is nearly a full reconstruction I think) I had used previously. The remix also included a SCART port, which is the type of port that I have. It also had the option for the HDMI adapter, and being based on the other case I found there are 3 variants of HDMI Adapters that had mounts already made for them. The first HDMI Mount I printed I thought was the right one for my adapter, but I found out it wasn’t. There are 2 very similar looking HDMI Adapters, and mine was the “other one”, I found a mount that fit it. I tweaked it a bit to make it a slightly better fit. It turned out to have smaller screw holes, so I split it when installing it. I went back and resized the holes and reprinted it. It now fits quite well.

The case didn’t have an audio input (except by the SCART Connector), but that is an easy 1/4″ hole to add. This case did not have the LCD, or Encoder option. It also didn’t have spot for a switch that I wanted for the Sync resistor. It was simple to add the 3.5mm jack, and easy to add the Encoder, as they are simple holes. I added the spot for the switch in the little part above the VGA output port. The case is 3mm thick, which is a bit much though for the Encoder and 3.5mm jack, but it just fit. I printed the base case part to check it out and found a couple issues with it. The GBS board I have was a very tight fit, and when I test fit the board I almost couldn’t get it out. I ended up sanding the PCB down just a little, which makes it fit better. The SCART port is a bit of a problem to get in due to the large pin RGBS connector getting in the way. The Component RCA Jacks openings are slightly offset to the right.

After building this GBS Control up, I went back and relocated the front VGA and Component holes over to the left where they belong. I relocated the SCART port further toward the back of the case. I also thinned the front of the case by 0.25mm, due to the tight fit of my GBS board, this also gives the Encoder and 3.5mm Jack a tiny bit more usable screw thread to secure them. I printed a new version, the holes on the front line up properly now, the SCART still has a bit of an issue with the large RGBS header being in the way. It isn’t as bad now as the screw won’t run into that connector. For this build I had removed the RGBS port as it was in the way. I also redid the HDMI Port opening in the back, I didn’t like the tapered/feathered edge on it. I can’t move the SCART back any further than I already have as it will run into the back case screw.

Adding the .96″ LCD, it was bit more complex. I had to find some dimension specs, and I made up a model of it in Tinkercad. It gets a small bit oversized to allow room for the part to fit. My LCD is 1mm narrower than some other similar .96″ LCDs. I had to work out where everything else will be in the case. Where the ESP board will be blocking space, where the VGA to HDMI board will be, and also where the back of the Encoder will be. I printed a test print of the LCD holder part. The LCD fit, but that 1mm wider version didn’t. I reworked my 3d model of the LCD to be 1mm wider on the PCB, but it did not matter on this part, as there is no Rim up around the PCB with this part. I made another minor change to the case to accept the LCD where I wanted it. The LCD is optimally installed with four 2.5mm m2 screws. You can use 3mm m2 screws, be careful not to bottom them out and damage the case making them show through the top.

I didn’t realize it at the time, but when I went to put the VGA to HDMI adapter into the mounting bracket, it did not fit properly. There are apparently (at least) 2 VGA to HDMI adapters that look very similar externally, but the boards are a bit different. The one that was included with this case was not the correct one for mine. I did find one that was made for my adapter. I did make changes to it, I put in a relief cavity to let one of the ICs to rest in to prevent putting pressure on it with the clamping plate. That could cause failure over time. I also put some “slots” in the bottom of it looking similar to the one that did come with this case, I then found the screw holes were smaller, so I split the part when putting in the screws. I revised that and reprinted it with the larger screw holes. I swapped it out and the screws didn’t split it out this time.

The case is cool looking, and there is a good attention to how to make it work. It feels sturdy, mostly due to being thicker than the case I used last time. It is thicker than most cases I make myself, but for what it is, I figure it is worth the extra filament. I don’t like seeing into the case internals through the VGA ports, I may make little thin plastic sheets that close those gaps. I had to order the proper length screws to put the case together, as I didn’t have any that long. The model designer did specify the proper screw type and length.

This second GBS Control is functionally about the same, it has more connector options and HDMI Output internally. The VGA output also still works, I left it on the board and used the output header beside it to get the RGBHV into the VGA to HDMI.

The 3.5mm audio jack can either be used for input or output. If I am using SCART as the input, that will be inputting audio. If I want to use SCART with a VGA monitor, I can then use the 3.5mm audio jack as the audio output to speakers. If I am using RGBS/RGBHV VGA port for input (or component) and want to use HDMI with Audio for the output, then I can input the audio into the 3.5mm audio jack.

Overall, I had to pull pinouts for the SCART, and find the Pinout for the RGBS header that the included pigtail wire was for. I had to check the pinout of the 3.5mm jack I purchased. I also had to trace out the VGA/RGBHV pinout on the GBS Board, to verify it as it is labeled properly. For the VGA to HDMI adapter, I had to desolder the 3.5mm jack usb port, and the VGA port. I lost the HSync (or VSync) pad in desoldering the vga connector from the VGA to HDMI adapter. I was able to trace that down to a pad on the other side of the board. I had to trace out the pinout of the 3.5mm Jack on the board as well, and found I lost one of the Right audio pads too. There are 2 Right audio pads and 2 Left Audio pads so that worked fine as well. The board seems a bit delicate, but removing those connectors can be hard on any board. There is another type of VGA to HDMI board, the one used on the Super Gameboy Console project, there is a bracket for it out there as well, it has a standard through hole VGA input and audio jack. After building this second GBSControl, I went back and rebuilt the first one adding the SCART, HDMI etc. For that one I used the other HDMI Adapter. It was easier to remove the VGA and through hole Audio jack, but the USB Power had to be removed, and that was difficult to do without ripping off the pads (I lost one of the ground pads, but there are plenty of ground pads).

The LCD didn’t work when I connected it up, I flipped SDA and SCL and the LCD worked. I wired the Encoder as shown in the diagram on the GBS Control site, with the recommended capacitors, but it doesn’t work very well. For the rebuild of the other GBS Control, I didn’t include the Capacitors on the Encoder, it seems to work better. I was thinking of putting on some 100nF capacitors instead, but as it worked better without any capacitors, I didn’t bother with them.

To prep the GBS board, I removed the large pin RGBS header, as it was in the way of the SCART and not needed. I removed the RGB adjustment pots. I removed the headers over where the ESP gets wired in. I also removed the buttons, as I was unsure if they would get in the way of the Encoder (they would not have). The one capacitor was damaged (dented), so I also removed it and swapped it with a spare.

Once all the parts and boards were prepped, I tested the GBS before modding it. It posts a splash image when in default mode. That worked.

Then I added the 4 surface mount capacitors. I added the wiring for the ESP board. I again used two angled pin headers for the Ground pins to give a good secure connection to the GBS board.

The LCD was easy enough with just 4 wires with a header. For the Encoder, I wired it up with the suggested capacitors. The Encoder didn’t work very well in testing, below I also show that I added the new connectors etc to my original GBS Control, with that board I didn’t put on the Capacitors with the Encoder, and that is working better for me. I will probably remove the capacitors from the Encoder on this unit the next time I open it up.

For the HDMI Adapter I desoldered the VGA the Audio jack and USB Power port. I built up the HDMI adapter wiring. I didn’t have a large enough connector for the VGA output header, so I made up 2 smaller ones, the first for the RGB and Ground, then a smaller 2 pin one for H Sync and V Sync that gets plugged in to the right of the larger one. The board is labeled with R G B and H V on the header, which is correct, the other unlabeled pins are Ground, or mostly are ground on that header. I used the provided pigtail for the power header and soldered that to where the usb power port was for the HDMI adapter to power it.

Below I have the baseline GBS Control. This has the ESP board installed, the Encoder, the 4 pin header connector for the LCD screen. The 4 added surface mount capacitors. The RGB potentiometers are removed, they do have the jumpers installed from the bottom of the board, don’t forget them. The jumpers on the RGB potentiometer locations were put on the bottom of the board, as I am placing the Clock Generator board on top where they used to be. When I had this this far along, I tested it to make sure it was still working.

Next I installed Clock board. This new placement is recommended currently on the GBS Control wiki, and the board just fits in there. The first board shown is an Adafruit branded board appears slightly larger, but I don’t have dimension of it. The person doing the alternate placement used the same type of board I am using had cut the board down smaller, more in one dimension than the other. I expect the reason for chopping it in the narrower dimension is to get more clearance to the TrueView IC pins and heatsink, as it is quite close. I had missed this was to shift it to align with one of the Ground Through holes in the board from the removed Potentiometers. The smaller generic board I used does otherwise fit perfectly without any modification if you use a ground wire. You may be able to get alignment to that ground point though by removing the RGBS connector, but I missed the note about the Ground pin while doing the build. I placed 2 layers of Kapton Tape to the bottom once the wires were soldered on. I then put foam double sided tape to hold it in place. Then I put in the short wires to the ic pin on the corner. I wired into the capacitor the same as before for power, except I put power to the power and ground pins. I am not sure why they are telling you to add the 3.3v to the one capacitor, the board supposedly runs as 3v with a LDO Regulator that can be powered by 3.3v. So I felt it best to power it the way it was designed to be powered.

The last parts all plug in. The HDMI Adapter took some tracing out the pinout to know where to put the wires. I used a bit of ribbon cable with connectors that I crimped on. I do not do them very often, so it took me a bit to figure out how to crimp this type of connector properly. I used the power pigtail to power it. I used the RGB pigtail to wire to the SCART Connector. The switch and resistor for the Sync pin is wired to the Sync pin and Ground on the SCART Connector. I did wire together both halfs of the switch, it just doubles up the connection path incase one half starts making poor connection with use. It is not easy to see, but the SCART Connector has all the Ground pins wired together. Then the 3.5mm audio jack is wired into the SCART. With the audio also running over to the HDMI Adapter from the SCART Connector. The HDMI Adapter ribbon cable has some Liquid Electrical Tape on it to tie it together. That was mostly as I had lost a pad for H or V Sync and had to run a little 30awg wire to the top of the board and solder it then to the proper wire in the ribbon.

The 12pin JST PH (2.0mm) connector by the VGA output is where the HDMI Adapter is connected to. The pin out is Red, Ground, Green, Ground, Blue, Ground, Hsync, Vsync, and 4 more pins that we won’t be using. As I didn’t have a 12pin JST PH connector, I used a 5pin connector wiring in R, G, B and 2 Ground pins. Then for Hsync, and Vsync I used a 2pin connector, which fit in nice beside the 5pin connector. You can add a spot of Hot Glue if you like to hold it. Alternately if you have an 8 pin, or longer plug you can do it all as one, and it will be more secure. I linked a couple suggested connectors and the tool below, not any affiliated links or anything. You could solder to the pins, or maybe get or salvage a cable from somewhere else. I used part of a salvaged ide cable, which a good size of wire for the crimp connectors. Otherwise I use 30awg solid core wrapping wire, and 24 awg silicone insulated stranded wire, along with various other bits of regular scrap wire from my stash. The wrapping wire is small and easy to use to solder to small pads or ic pins. The stranded silicone insulated wire is very flexible, easy to strip, and the insulation doesn’t melt, so I splurged on some the other year.

SCART Connector, 3.5mm Audio Jack for Input or Output depending on usage. Sync to 75Ohm Switch and HDMI Adapter assembly.

The wiring on the VGA to HDMI adapter may vary, as there are some variations in the connector. With the adapter above, Red, Green and Blue were on the top of the board with Hsync and Vsync on the bottom of the board. I checked them with a continuity mode on my multimeter to verify I had it all correct. There are of course numerous Ground pins on the VGA connector. For the Audio input to the HDMI Adapter, I just used my multimeter again to test the connectors on the removed 3.5mm jack, which I was unfamiliar with the footprint for. While the 3.5mm jack had the build in “switches”, both the switched and non switched pads were wired to the inputs. That was good, as I lost one of the audio input pads closest to the hdmi adapter.

The last bit is easy, just screw the LCD to the top cover. Then it is connected with the included pin header. Using some M2 x 2.5mm (3mm max) screws to install it. The Pinout is sometimes different for the LCDs, so always wire it based on the Silkscreen Labels on the LCD. The Silkscreen Labels though are on the “front” side of my LCD, once installed I can’t read them.. The Dupont 2.54mm connectors can be purchased as various lengths and used for breadboard wiring and such. You can buy the crimp tool for them. I purchased a SN-28B Ratcheting Crimper, which doesn’t work for the JST PH 2.00mm crimps.. so purchased the SN-01BM Ratchet Crimper I have both sets now. I am wanting to try the SN-01BM with the Dupont 2.54mm. The only difference in the Crimp tools is the Die Inserts, so you can just use one crimper and get different Dies for them if needed. There are other non ratcheting crimpers that are a bit cheaper, I tried one but didn’t have much success with it. Other people have said they are great, and I find that the case with such tools, using them incorrectly they smash the crimp, or cut the wires off.. Doing them correctly, they work great. Putting the crimp in from the wrong side, crushes the connector and usually cuts the wire, but putting them in the correct side it just works.

The complete internals. There is a good bit more inside this GBS Control build, The filament I used is Overature Matte White PLA. It is a little bit of an odd filament, not glossy and more opaque (but not fully with LEDs behind it).  It gave the unit a unique look, and it feels sturdy. It also looks good with my White ZX Nuvo 128 in the ZX Spectrum 48k White reproduction case.

I closed it up and did some testing with RGB Video from my Nuvo 128 to HDMI on my bench monitor. It looks great and the audio sounds great, all considering the monitor it is connected to that is.

I decided to do some revisions to the case and upgrade my original Grey GBS Control. https://hobbytronics.home.blog/2021/12/11/gbs-control/


I had all the parts that I needed. I used another type of HDMI Adapter, and put it in the revised case.

Below are most of the new parts laid out. It is hard to make out, but the required resistor is wrapped between the sync and ground pins on the large rgb header partially blocked by the new 3.5mm jack. The HDMI Adapter wiring had connectors JST PH (2.0mm) connectors crimped on. I didn’t have connectors that were long enough, so I used a 5pin for the RGB and Ground, then a 2pin connector for the H-Sync and V-Sync pins again. The wiring on the VGA to HDMI adapter was a bit different as it is a traditional through hole vga port, but it was easier to map out as that is the standard vga port footprint. For the Audio, it was easy to check left and right on the 3.5mm jack, it had 2 pads for Left and 2 pads for the Right channel.

The SCART port is relocated further back on the case to help it better clear the large RGB Connector. If you look at the pictures, you may see in the White one above, the one SCART Screw would run into one of those RGBS pins if the connector was installed. The front of the case is .25mm thinner as the GBS board was wedged tight in the white case, which did make it nicer for the 3.5mm and encoder mounting with just that little bit more thread usable to screw in. The front input port openings on it are now properly lined up with the Component RCA Ports. The .25mm thinner front of the case gives the GBS board that little bit more space, but oddly the other GBS board seems to have more clearance. The Grey case is the revised one. The top didn’t print as nicely in the Grey.

With the large RGBS header on the board, it did get in the way of the one corner spacer. That I had to shave down a bit to get it to fit properly. I could have removed that header like I did on the white one above, but I didn’t want to go to that trouble. It was minor thing to file the spacer.

The SI5351 board was relocated. This was almost required, as there was very little clearance to the HDMI Adapter with the prior location glued to the top of the heatsink. I also prefer it as that heatsink does get warm with use.

I did use one of the other style of HDMI Adapters in the Grey one. I had a couple of them. It is the type used in the Gameboy Console project, so I had two more of them laying around. After looking at it, it is not identical to the one I used in the Gameboy Console project, the regulator setup is different, some parts are not present. This adapter was easier for me to get the VGA and Audio ports off, but the the type of USB ports for power was more difficult than the other style. I prefer using this type of HDMI adapter, as it lines up to the hdmi better and feels more secure. I will also be more likely to reuse the connectors I pulled from it.

I think this one looks a bit neater internally, I did get the wire lengths down just a bit, which helps it be less cluttered. It still has a lot of wiring in it though. You can see the buttons on the pcb don’t have any issues with the Encoder being above them. Sure they won’t be used, but there was no reason to remove them.

I am going to reprint the Grey top case at some point, plan to do it with a multicolor print to fill in the GBS C text flush to the top. I tested this one with the Nuvo 128 as well, testing both HDMI with Audio and VGA Output. It worked just as well as with the White unit except the Encoder seems to work better without the capacitors. This GBS Control will go back on the desk where I keep my Commodore 128 connected for use with the RGBI to RGBS adapter. I plan to use the new White one for the Nuvo 128 mostly if I use it somewhere other than that desk.

Revised Case : https://www.thingiverse.com/thing:6387573

Screws for this type of Case:

4x M3 x 35 mm (Main Case Screws)

2x M3 x 10 mm screw (for HDMI output bracket)

4x M2 x 2.5/3mm max (for Mounting the LCD)

2x M3 x 10 mm (For SCART Connector) Alternately use longer screws with Nuts if you prefer.

Depending on which VGA to HDMI Adapter you use. Either 2x M3 x about 6mm for the smaller one, or 1x M3 x 6mm with nut for the larger boxy type Adapter (in the Grey unit)

Tools / Supplies used:

SN-01BM Ratchet Crimper AWG28-20 for XH2.54/3.96,PH2.0,PX,JST,Molex https://www.amazon.com/gp/product/B019ARWWFY/?th=1

JST PH Connectors https://www.amazon.com/gp/product/B077LX3G6S/?th=1

30awg Wrapping Wire https://www.amazon.com/JESSINIE-8-Color-Electronic-DM-30-1000-Wrapping/dp/B0BJ86D1Q3

24awg stranded Silicone Insulated Wire https://www.amazon.com/Fermerry-Stranded-Electrical-Silicone-Cables/dp/B089CRSLG8/

Commodore 64 C 250469 / 252311 Rev B

After building the RAD REU for my Commodore 64/128 I found out that the Nuvie videos were made for PAL systems. My two Commodore 64s and 128 are NTSC models. I didn’t make the RAD REU to watch those, but since I wanted to see what they were like. I started to look around for a reasonably priced PAL C64. I came across this one listed as not working with a switch issue at least. It also doesn’t look great.

It arrived with a little paint on the lower left corner, some cut marks along the lower case and badge. Such as hobby knife or pocket knife. The cuts look intentional, but I don’t see a reason or pattern. The case overall looked reasonable. I opened it up to inspect the stuck switch and overall condition. It was rather dirty inside, the cartridge port guard was somewhat rusted. A little rust on the RF Module. It was dirty like it been stored in an attic or shed. I tested the jammed switch and got it to move to a position where it was switched on. Powering it up the system seemed to work fine. I did some testing but not a full diagnostic test.

I took the system apart to clean it and work on the power switch.

The C64c after repairing the power switch and cleaning the board up.

This is a Short Board. I find it interesting how much less complex it is than my other two Commodore 64s.

I do have some brand new power switches for the C64, but these switches can be taken apart and be fixed, at least sometimes. I removed the power switch and took it apart, the grease in it was gummy and sticky making it not operate properly. The switch didn’t show any significant wear internally. It did take a fair bit to get the gummed up grease out of it though. I added new silicone grease and reassembled it. This blue power switch doesn’t have a “nice click” to it like my other Commodores, but as far as I can tell, it is working properly. It now moves nicely, and makes very good connection across the switch pins. I have since seen someone comment in a video that the Blue switch doesn’t feel or sound the same as the other Red ones, so it seems this is just one of those other types.

This got the computer working fully, or appeared to. While I had the board out, I did clean it with IPA. I cleaned as much of the rust from the cartridge shield as I could. I did not reinstall the clip on cardboard RF Shield. The image above is the board after cleaning and fixing the power switch.

For the case I washed it with dish soap and warm water. For the white paint on the case, I used 91% ipa, which easily removed it. For the cuts into the case, they were shallow, but I could “feel” the edges when touching them. I decided to use a hard plastic stick, and “rub/burnish” the scratch down. That pushed the raised up sides of the scratch back down and made it so that I couldn’t feel it any longer. There were a number of them all mostly below the keyboard. This also made them less visible, although if you look closely you can see them. The case is in good condition overall beyond that, the clips are intact, it is not cracked or modified.

Those are the scratches after burnishing them.

The dirty keyboard.


I also disassembled the keyboard, just taking the keys and springs off with a keycap puller. The rest of the keyboard assembly was cleaned with Windex, a brush, and qtips and paper towels. The keyboard frame and pcb was not disassembled, I waited to test it before deciding if it needed opened. The keys were washed with warm water, dish soap and a toothbrush. There were some springs that were a bit rusty, those spring were wiped down and put into a small cup of vinegar for about 20 minutes. They were then rinsed with water, wiped down and dried. The next day after the keys were properly dry, I reassembled the keyboard. It was connected to the computer and tested and found to be working properly.

The video output on the C64c was good on Composite. There are some visible jailbars, but it is not awful. I had more of TheRetroChannel’s RF Replacement boards for the C64Shortboard (and C128) as I installed one on my Commodore 128. I also had all the parts to build one, so I decided I would swap out the RF Module. With doing something like that, I decided I would also recap the board.

The audio jack on the board was modified to sit lower to the pcb. The jack would have otherwise been centered at the same point as the SVideo port. With the audio jack lowered, I was able to keep the board a little bit more level than I would have been able to otherwise. There is no modification to the C64 mainboard or case for this mod. The L-H opening is not modified and neither is the RF opening. I kept the modulator, just incase I want to put it back someday. To get proper alignment, I test fit in the board and case. Once I get the alignment correct, I solder in one of the 4 mounting pins, then test fit it again. Then solder the next mounting pin and test fit again. Then finally I solder the remaining two mounting pins as well as the 8 pins for the signals to finish the installation. I then tested output of the Composite video, it looks pretty much the same as before. I then tested the Svideo output and audio output, which both worked properly. The Svideo is sharper as expected. Also the Chroma/Luma is still on the normal display port as well as Composite video. There is a jumper on the new board that does disable the color signal to the Composite, which is to clean up the Svideo output a little, but I keep it installed. There is also the Chroma Luma bypass option, which I did not do. The board supports doing Stereo Audio out to the audio jack if you have dual SIDs, which I don’t have. It also has a Hard Reset circuit on it, that you either install a button in place of the Audio Jack or use a button mounted somewhere else by the one jumper header on it. At this time, I do not have the Hard Reset connected, but I did populate that part of the board incase I decide to set that up at some point. I don’t like to modify cases, so I don’t have anywhere to put a switch at this time.

The video wasn’t bad on this C64c, and after the change, the Composite looks pretty much the same. With the Commodore 128 there was a significant video output improvement though. I wouldn’t have put the mod, except I had the spare boards. It may be a little better, and it does make it easy to connect to SVideo. I do have a single Commodore 64 to Svideo cable, but I have 4 computers now, so not having to have more custom made cables around is nice if I want more than one of them connected at a time.

When I recap a board, I test the new capacitors before installing them. I then test the replaced capacitors and compare them to the new test results. With this computer, I didn’t find any capacitors that were obviously going out. Sometimes I find a few that seem to be out of where they were expected. I work to use proper replacements from good manufactures and sources. I see no reason these capacitors should fail as long as I have use for the computer. The old capacitors are 33 years old now, they may not have held up at some point in the future. My hand isn’t as steady as it was, and I can’t see the part as well as in the past. I can do this work now, I don’t know about in another 10-20 years what it would be like. Maybe the computer won’t work in that time, maybe it will..

I keep forgetting to get good before pictures of projects. There wasn’t much to this, I would have liked to have some pictures of the switch internals. I have been doing similar switch tear downs for years, it isn’t complex, although it is good to carefully look at the parts and how they come apart. The recap was standard, this board did give me a hard time with the thick ground plane though. I don’t remember having quite as much trouble with the other two C64s or the C128 on the ground plane. The cleaning is standard, I used dish soap and warm water in the bathtub for the case top and bottom. For the keycaps I use a bucket of warm water with dish soap in it. If I am not washing something large like the case in a sink/tub I will often use Windex instead. For sticker residue I use WD40. I only use IPA to get marks off if nothing else has worked, I also tend to not use it on dark plastic. IPA can damage the finish of some plastics and can make visible marks on dark plastics sometimes. I use IPA to clean circuit boards and metal areas. I have also started to use 99% IPA instead of the 70% or even 91% IPA to clean flux. That has shown to leave less residue, and break down flux much easier.

The RAD REU Nuvies do work with this PAL C64c. Now to get Sam’s Journey? Which is one of the reasons I wanted a REU to start..

Someday I may try to retrobright the keyboard. The case itself is not very yellow, but the keys are.

Flat Commodore 128 From 16k to 32k ROMs and Switchless JiffyDOS Kernal

Updated 8/13/23: I switched the U34 and used the J4 Bodge wire to A15 and have updated instructions and pictures below to match.

I have been wanting to put JiffyDOS on my Commodore 128. My 1541ii came with JiffyDOS, but none of my Commodore Computers have the JiffyDOS ROM to match. I recently purchased JiffyDOS from RETRO Innovations, I purchased the ROMs for my Commodore 128, as well as for one of my Commodore 64s and a 1541 ROM to use on my pi1541.

The Commodore 128 Flat model shipped setup with 16k ROMs, but it can be switched to use 32k ROMs by setting some jumpers. If you switch it to 32k ROMs, then there are only 2 ROMs required instead of 4. The ROMs that shipped in the Commodore 128 Flat model are also older versions than what is available. I wanted to update to the latest version of the Basic ROM, and the Kernal as well, so it is nice to only need two eproms instead of four.

I used this guide as a basis for the 32 ROMs: https://www.rift.dk/upgrading-and-consolidating-commodore-128-roms/

Note: I originally used the 390393-01 ROM for U34 and put a jumper on J4. I had issues loading programs from Disk, while some programs would load properly numerous ones would not work. I don’t know if there were other issues or not. Mark from TheRetroChannel on Youtube did the 32k ROM mod on his 128 and reported having issues with closing J4, it turns out to be the same type of issue I thought I was having too. He reported that when using the regular DCR ROM and the J4 bodge wire as shown at the rift.dk post, that he didn’t have any problems. I went back and have switched to doing that as well. I haven’t come across any disk reading issues after following the rift.dk J4 bodge wire method. I would like to know why that seems to have been an issue, the 390393-01 ROM having a part number like that means it is made up or a legitimate release from Commodore for the 128. I am expecting it throws off some timing off somewhere.The result I ended up with the dupont cable looks neat enough, but it still is a “bodge”.

In this case I am going to switch to the 32k ROMs, and also install a Switchless ROM Switcher with JiffyDOS. So this is a combination of a few mods.

To change the Commodore 128 Flat from 16kB ROMs to 32kB ROMs we just have to install jumpers or bridge J3, a bodge wire to one of the J4 pads and a via nearby, and J6. I am going to put in Jumpers and pins to make it easy to switch back if needed.

To setup the 32K ROM Set. We pull U33 (16k) and U34 (16k) and install the 32k U34 to replace them. That new ROM is the basic.318022-02.bin (32kB).

The second ROM we pull the 16K U32 and U35. Since I am doing the JiffyDOS Switchable ROM, I am making a 64K ROM to replace the original U32.

For the Switched C128/C128DCR KERNAL ROM (64kB) we combine the files below in this order:
basic.901226-01.bin (C64 Basic)
kernal.901227-03.bin (C64 Kernal)
kernal.318020-05.bin (C128 Kernal)
basic.901226-01.bin (C64 Basic)
JiffyDOS_C64_6.01.bin (C64 JiffyDOS Kernal)
JiffyDOS_C128DCR_6.01.bin (C128 JiffyDOS Kernal)

There are different ways to combine the files. I just use the copy /b Binary combine from Command Prompt: (Note as one single line)

copy /b basic.901226-01.bin+kernal.901227-03.bin+kernal.318020-05.bin+basic.901226-01.bin+JiffyDOS_C64_6.01.bin+JiffyDOS_C128DCR_6.01.bin C128U32kJDOS.bin

Then burn the combined ROM to a 64k Eprom such as the 27512. The Commodore 128 uses the 27256 Pinout in 32k ROM Mode (and 27128 in 16k ROM Mode), so they are drop in replacements.

To do the Switched ROM we keep Pin1 (A15) bent out, and not inserted in the Socket. If I was going to do a Kernal “Switch”, then I would wire a 4.7k (recommended value I found) Resistor from Pin1 (A15) to Pin28 (VCC). Then put a switch between Pin1 and Ground. I am going to use an Arduino Pro Mini, it will not need the Pullup Resistor. I expect you could do Kernal Switcher that does more than two modes by making a 128K ROM, but for the Commodore 128 I don’t know of other Kernals that I care to use. That would also be a 32PIN Eprom, so an adapter would also be required. If you did stick with the 16k ROMs, you could then alternately use 64k Eproms to setup a 4 way ROM Switcher.

I am basing the Arduino Pro Mini code on a modified version of Adrian Black’s C64 Kernal Switcher that was done by Mark Ormond. I am starting with Mark Ormond’s modified version of the code as the basis. He had it setup for swapping 4 ROM Sets for 16k ROMS, but I only need to trigger a single pin (A15 Pin 1) on my JiffyDOS 64k U32. It was setup to control 2 Eproms and rotate through more ROMs triggering several Address lines as he was using 16k ROMs.

The Arduino board will be triggering A15 on the 64k ROM triggering it to use either the upper or lower 32k portion. It will also be wired to the ResetLine, EXROMLine and RestoreKey, as well as Ground and 5V.

The PowerLED will also be moved to the Arduino board with a proper current limiting resistor (220 Ohm typically) this will Blink the LED to show the status changes. When the C128 turns on it will blink the LED in my case 1 or 2 times based on which ROM it is set to use.

Above is the starting point. We have the four 16k ROMs installed. The first part of this modification is to remove them and install the jumpers to switch the system over to 32k ROM mode. That is just adding the 3 jumpers to the board.

There was a bit of an issue with that, the pins are not the typical 2.54mm pin spacing (probably 2.0mm?), I slightly bent the bottom part of the jumper to get it inserted. I do know there is a smaller size jumper I have seen on other equipment, but I don’t have the pins or jumpers to put on them. After bending the pins a bit they did fit well. I then got out some spare jumpers and installed them. By using the jumpers I can easily switch to 16k ROMs again if I want.

That is the end of enabling the use of the 32K ROMs. That is beyond putting in the new U32 and U34 which is a little different as I am doing the JiffyDOS switchless mod.

The next thing I had to do was put in the connections for the Switchless Kernal Switcher. It also handles doing a Hard Reset, well it is supposed to. I don’t know how it works with the Commodore 128 as I have only seen such mods on Commodore 64s. I wanted to make it removable, so I put in pins where I could, even to the point of putting pins on the side of two of the 74 logic ICs. That made it so I can detach the Pro Mini board and go back to normal ROMs, be it 32k or 16k ROMs. Also if the Pro Mini fails I can more easily switch it out. Be sure to get a 5V Pro Mini, not a 3.3V model.. The only wire directly soldered to the Pro Mini without a connector on the other end is for the Eprom, but it is socketed itself, so not a huge deal.

The last pin is Pin 1 of the new U32. It needs to kept out of the socket and wired to the Pro Mini pin5.

U32 Pin 1 is Not in the Socket, is it connected just to the white wire.

Above you can see the new 64k Switched U32, and the 32k U34 in place. It may not be visible but Pin 1 on U32 is Not in the Socket, it is sticking out on the side and not making contact to the socket. The wire there goes over to Pin5 on the Pro Mini. Since I am using the Pro Mini, as I mentioned there is no Pullup Resistor from Pin 1 to Pin 28 on U32 like would be done with a typical “switch” based JiffyDOS setup. The Pro Mini handles the pullup internally.

I have modified Adrian/Mark’s code so that by default it will do a 4 way Kernal Switch for the Commodore 128. That can only be easily done with 16k ROM sets. Mark’s version had it setup using 16k ROMs with a 4 way switch for 1 of the ROMs (Kernal ROM I believe) and only doing 2 way for the second (Basic ROM). It now does a 4 way switch for both Commodore 128 16k ROMs by default as that seems more natural, although for the 128 16k mode only needs C14 and C128 basic.. so it makes sense that Mark had it set that way. I added a “Max ROMs” entry to easily change behavior in the code below it is set to 4, but for use on my C128 here I set that to “2” as I am using 32k ROMs and only have 2 sets of ROMs. Well I set it for 2 the second time around, I thought I messed up the code when it was trying to do a 4 way switch initially… I miswired the U32 Pin 1 to the wrong output of the Pro Micro, so I had to fix that too. Other than those two little issues it worked as expected mostly.

There is the oddity that when it resets, the Commodore 128 goes directly into 64 Mode. Maybe it doesn’t like the Exrom Reset? It does properly remember the selected Kernal, and it does go into 128 mode when powered on based on the saved Kernal setting, the Reset button on the 128 also takes you to 128 Mode as normal. You may catch that the RF Modulator was changed out on the pictures, you can also find the post other recent post about the RF Mod. The RF Modulator change was certainty worth it for the video quality improvement for 40 Column output. I did all of the changes at the same time.

To switch between ROMs, You Hold the Restore Key down, and wait for it to flash the Power LED the number of flashes for the ROM you want to select. It will first Flash the “current” ROM number, if you release the Restore Key at that point, it will just cause a Reset of the Commodore. If you keep holding it down, it will then flash the Power LED the number of times for the next ROM bank, when releasing it after that it will swap to that ROM and Reset. The Switcher will Remember the Last selected ROM (and I believe at power up it flashes the Power LED to tell you which setting it is on).

I am not certain the code below is correct for 16k 4 way switching for the C128 or not. I was getting U35 and U32 etc all mixed up when working on it. It is the code I compiled and used on my “2” ROM Modes, below it is set for 4 way switching with that set by “NumROMs” value.

#include <EEPROM.h>

// C64/C128 Kernel Switcher and Restore Key Reset/Selector
// Version 1.3 - 03-26-2023 Updates - By Travis Durf

// Based on C64 Kernel Switcher - 26-March-2019 - By Adrian Black
// Restore Key Mod: https://www.breadbox64.com/blog/c64-restore-mod/
// Initial C128 Changes - 06-22-2020 - By Mark Ormond aka dabone

/*
             "The Simple" Pro-Mini

           DTR  TX   RX   VCC  GND  GND
        +--------------------------------+
        |  [ ]  [ ]  [ ]  [ ]  [ ]  [ ]  |
        |              FTDI              |
    D1  | [ ]1/TX                 RAW[ ] |    
    D0  | [ ]0/RX                 GND[ ] |    
        | [ ]RST        SCL/A5[ ] RST[ ] |   C6
        | [ ]GND        SDA/A4[ ] VCC[ ] |    
    D2  | [ ]2/INT0    ___         A3[ ] |   C3
    D3  |~[X]3/INT1   /   \        A2[ ] |   C2
    D4  | [X]4       /PRO  \       A1[ ] |   C1
    D5  |~[X]5       \ MINI/       A0[ ] |   C0
    D6  |~[X]6        \___/    SCK/13[ ] |   B5
    D7  | [X]7                MISO/12[ ] |   B4
    B0  | [X]8      [RST-BTN] MOSI/11[ ]~|   B3
    B1  |~[X]9  GND[ ]A6[ ]A7[ ]SS/10[X]~|   B2
        +--------------------------------+  
 
Based on: http://busyducks.com/ascii-art-arduinos

D3 to EXROMLine (C128 U11 (PLA) Pin12)
D4 to PowerLED to 220 Ohm resistor to Power LED
D5 to C64 A13, C128 U32 (A14) Pin27 
D6 to C64 A14 27256(32kB), C128 U32 (A15) Pin1 With 27512(64kB) EEPROM 32kB ROMs
D7 to ResetLine (C128 U63 Pin2)
D8 to RestoreKey (C128 U16 Pin9)
D9 to C128 U35 (A14) Pin27
D10 to C128 U35 (A15) Pin1 With 27512(64kB) EEPROM 16kB ROMs

Set "NumROMs" to be the Maximum Number of ROMs.  2-4 Default is "4"

For Commodore 64:
To do 4 ROM Sets you can use a 27256(32kB) EEPROM with A13 and A14
You can use a 27128(16kB) EEPROM and do 2 ROM Sets with A13.

For Commodore 128:
To do 4 ROM Sets on a stock C128 Flat that uses 16k ROMs you can use 27512(64kB) EEPROMs with A14 and A15
You can use 27256(32kB) EEPROMs and do 2 ROM Sets with A14.

For C128 Flat/D set to 32kB ROMs, or DCR (Both use 32kB ROMs), you can use 27512(64kB) EEPROMs to do 2 ROM sets with A15. 
When doing 32kB C128 ROMs you only use U32 and only use A15 as A14 is kept in the Socket and controlled by the C128.
U35 is removed in the 32kB ROM configuration and is now included in the 32kB based U32 now.  The drawback here is you can only
do two ROM Sets with the 27512 EEPROMs.
The C128 Basic ROMs must be replaced with a new 32kB Basic ROM (basic.390393-01.bin) in U34, also removing U33.

*/

const int EXROMLine = 3;    // Output the /EXROM line
const int PowerLED = 4;     // Output Power LED
const int PowerLEDAlt = 13; // Output Power LED (onboard LED)
const int RomAOne = 5;      // Output EPROM C64 A13 (C128 16kB Mode U32 Pin27 A14, 32kB Mode U32 Pin1 A15)
const int RomATwo = 6;      // Output EPROM C64 A14 (C128 16kB Mode U32 Pin1 A15 27512 EEPROM)
const int ResetLine = 7;    // Output to /RESET line
const int RestoreKey = 8;   // Input Restore key
const int RomBOne = 9;      // Output EEPROM C128 16kB U35 Pin27 A14
const int RomBTwo = 10;     // Output EEPROM C128 16kB U35 Pin1 A15 27512 EEPROM


int RestoreDelay = 2000;    // 2000ms delay for restore key
const int FlashSpeed = 75;  // LED Flash delay

const unsigned long repeatdelay = 500; // used for debouncing
 
const int NumROMs = 4;		// Maximum Number of ROMs
int CurrentROM;				// which rom is select (0-3)
int debouncecounter = 0;	// how many times we have seen new value (for debounce)
int debouncereading;
int debounce_count;
int RestoreHeld;
unsigned long TimeHeld;     // amount of time Restore is held down

int buttonDuration = 0;     // for keeping track of how long restore is held down
boolean buttonHeld = 0;     // for keeping track when you are holding down 
boolean Released = 0;       // Keeping track when the restore key is released
boolean holdingRestore = 0; // Keeping track if you are holding restore
boolean resetSystem = 0;    // keep track whether to reset

int buttonInput;            // used to return if restore is held
unsigned long time;         //used to keep track of millis output
unsigned long htime;        //used to keep track of millis output
unsigned long btime;        //used to keep track of bounce millis output

void setup() {
  pinMode(PowerLED, OUTPUT);
  pinMode(PowerLEDAlt, OUTPUT);
  pinMode(RomAOne, OUTPUT);
  pinMode(RomATwo, OUTPUT);
  pinMode(RomBOne, OUTPUT);
  pinMode(RomBTwo, OUTPUT);
  pinMode(ResetLine, INPUT);
  pinMode(EXROMLine, INPUT);
  pinMode(RestoreKey, INPUT);

  digitalWrite(PowerLED, HIGH); // turn on the power LED

  digitalWrite(ResetLine, LOW); // keep the system reset
  pinMode(ResetLine, OUTPUT);   // switch reset line to OUTPUT so it can hold it low
  digitalWrite(ResetLine, LOW); // keep the system reset

  CurrentROM = EEPROM.read(1);
  SetSlot(CurrentROM);
  delay(200);
  pinMode(ResetLine, INPUT);    // set the reset pin back to high impedance which releases the INPUT line
  delay(1000);                  // wait 1000ms 
  FlashLED(CurrentROM);         // flash the power LED to show the current state
  
  // all set!
}

void loop() {
  buttonInput = readButton(); delay(500);
  time = millis(); // load the number of milliseconds the arduino has been running into variable time
  if (buttonInput == 1) {
    if (!buttonHeld) {
      htime = time; TimeHeld = 0; buttonHeld = 1; } //restore button is pushed
    else { 
      TimeHeld = time - htime; } // button is being held down, keep track of total time held.
  }
  if (buttonInput == 0) {
    if (buttonHeld) {
      Released = 1; buttonHeld = 0; htime = millis(); TimeHeld = 0; //restore button not being held anymore
    } 
  }
  
  if (TimeHeld > RestoreDelay && !Released) { // do this when the time the button is held is longer than the delay and the button is released
    htime = millis();
    if (holdingRestore == 0) { FlashLED(CurrentROM); holdingRestore = 1; resetSystem = 1; } // first time this is run, so flash the LED with current slot and reset time held. Set the holding restore variable.
    else {
      if (CurrentROM < NumROMs - 1) { CurrentROM++; SaveSlot(CurrentROM); } // or you've already been holding restore, so increment the current ROM slot otherwise reset it to 0
      else { CurrentROM = 0; SaveSlot(CurrentROM); }
      if (TimeHeld > RestoreDelay) { TimeHeld = 0;}  // reset the time held
      FlashLED(CurrentROM); //flash the LED
    }
  }
  
  if (Released) {
    //if time held greater than restore delay, reset the system, set the current rom slot, reselt the time held and holding restore
    if (resetSystem) { // on do this if the reset system has been set above
      htime = millis();
      resetSystem = 0;
      holdingRestore = 0;
      Released = 0;
      digitalWrite(ResetLine, LOW); // keep the system reset
      digitalWrite(EXROMLine, LOW); // keep the EXROM line low
      pinMode(ResetLine, OUTPUT);
      pinMode(EXROMLine, OUTPUT);
      digitalWrite(ResetLine, LOW); // keep the system reset
      digitalWrite(EXROMLine, LOW); // keep the EXROM line low
      delay(50); // wait 50ms
      SetSlot(CurrentROM); // select the appropriate kernal ROM
      delay(200); // wait 200ms before releasing RESET line
      pinMode(ResetLine, INPUT); // set the reset pin back to high impedance so computer boots
      delay(300); // wait 300ms before releasing EXROM line
      pinMode(EXROMLine, INPUT); // set the reset pin back to high impedance so computer boots
    } else { //otherwise do nothing
      htime = millis(); Released = 0; resetSystem = 0; holdingRestore = 0;
    }
  }
// finished with loop  
}

int readButton() {
 if (!digitalRead(RestoreKey) && (millis() - btime >= repeatdelay)) {
  for(int i = 0; i < 10; i++)
    {
      debouncereading = !digitalRead(RestoreKey);

      if(!debouncereading && debouncecounter > 0)
      {
        debouncecounter--;
      }
      if(debouncereading)
      {
        debouncecounter++; 
      }
      // If the Input has shown the same value for long enough let's switch it
      if(debouncecounter >= debounce_count)
      {
        btime = millis();
        debouncecounter = 0;
        RestoreHeld = 1;
      }
    delay (10); // wait 10ms
    }
   } else {
    RestoreHeld = 0;
   }
return RestoreHeld;
}


void SaveSlot(int CurrentRomSlot) {
  // Save Current ROM selection (0-3) into EPROM
  EEPROM.write(1,CurrentRomSlot);
}

void FlashLED(int flashcount) {
    // Flash the LED to represent which ROM slot is selected
    switch (flashcount) {
    case 0:
      digitalWrite(PowerLED, LOW);
      digitalWrite(PowerLEDAlt, LOW);
      delay(FlashSpeed);
      digitalWrite(PowerLED, HIGH);
      digitalWrite(PowerLEDAlt, HIGH);
      break;
    case 1:
      digitalWrite(PowerLED, LOW);
      digitalWrite(PowerLEDAlt, LOW);
      delay(FlashSpeed);
      digitalWrite(PowerLED, HIGH);
      digitalWrite(PowerLEDAlt, HIGH);
      delay(FlashSpeed);
      digitalWrite(PowerLED, LOW);
      digitalWrite(PowerLEDAlt, LOW);
      delay(FlashSpeed);
      digitalWrite(PowerLED, HIGH);
      digitalWrite(PowerLEDAlt, HIGH);
      break;
    case 2:
      digitalWrite(PowerLED, LOW);
      digitalWrite(PowerLEDAlt, LOW);
      delay(FlashSpeed);
      digitalWrite(PowerLED, HIGH);
      digitalWrite(PowerLEDAlt, HIGH);
      delay(FlashSpeed);
      digitalWrite(PowerLED, LOW);
      digitalWrite(PowerLEDAlt, LOW);
      delay(FlashSpeed);
      digitalWrite(PowerLED, HIGH);
      digitalWrite(PowerLEDAlt, HIGH);
      delay(FlashSpeed);
      digitalWrite(PowerLED, LOW);
      digitalWrite(PowerLEDAlt, LOW);
      delay(FlashSpeed);
      digitalWrite(PowerLED, HIGH);
      digitalWrite(PowerLEDAlt, HIGH);
      break;
    case 3:
      digitalWrite(PowerLED, LOW);
      digitalWrite(PowerLEDAlt, LOW);
      delay(FlashSpeed);
      digitalWrite(PowerLED, HIGH);
      digitalWrite(PowerLEDAlt, HIGH);
      delay(FlashSpeed);
      digitalWrite(PowerLED, LOW);
      digitalWrite(PowerLEDAlt, LOW);
      delay(FlashSpeed);
      digitalWrite(PowerLED, HIGH);
      digitalWrite(PowerLEDAlt, HIGH);
      delay(FlashSpeed);
      digitalWrite(PowerLED, LOW);
      digitalWrite(PowerLEDAlt, LOW);
      delay(FlashSpeed);
      digitalWrite(PowerLED, HIGH);
      digitalWrite(PowerLEDAlt, HIGH);
      delay(FlashSpeed);
      digitalWrite(PowerLED, LOW);
      digitalWrite(PowerLEDAlt, LOW);
      delay(FlashSpeed);
      digitalWrite(PowerLED, HIGH);
      digitalWrite(PowerLEDAlt, HIGH);
      break;
    default:
      digitalWrite(PowerLED, LOW);
      digitalWrite(PowerLEDAlt, LOW);
      delay(FlashSpeed);
      digitalWrite(PowerLED, HIGH);
      digitalWrite(PowerLEDAlt, HIGH);
      break;
  }
}

void SetSlot(int DesiredRomSlot) {
    // Select the actual ROM slot being used
    switch (DesiredRomSlot) {
    //Stock-Kernal0
    case 0:
      digitalWrite(RomAOne, LOW);
      digitalWrite(RomATwo, LOW);
      digitalWrite(RomBOne, LOW);
      digitalWrite(RomBTwo, LOW);
      break;
    //Kernal1
    case 1:
      digitalWrite(RomAOne, HIGH);
      digitalWrite(RomATwo, LOW);
      digitalWrite(RomBOne, HIGH);
      digitalWrite(RomBTwo, LOW);
      break;
    //Kernal2
    case 2:
      digitalWrite(RomAOne, LOW);
      digitalWrite(RomATwo, HIGH);
      digitalWrite(RomBOne, LOW);	  
      digitalWrite(RomBTwo, HIGH);
      break;
    //Kernal3  
    case 3:
      digitalWrite(RomAOne, HIGH);
      digitalWrite(RomATwo, HIGH);
      digitalWrite(RomBOne, HIGH);
      digitalWrite(RomBTwo, HIGH);
      break;
    default:
      digitalWrite(RomAOne, LOW);
      digitalWrite(RomATwo, LOW);
      digitalWrite(RomBOne, LOW);
      digitalWrite(RomBTwo, LOW);
      break;
  }
}

While I was working on the Commodore 128, I had been having issues with the Cartridge Port reading correctly. So while I had the board out I reflowed all the pins on the cartridge port. Upon getting the Kernal Switcher (and RF Modulator change) done I put in two different cartridges and both worked properly the first time. I’m hoping this means my Commodore 128 is in good working order now. It is annoying not being able to use cartridges reliably. On further testing of the Cartridge Port, I found it was still not working reliably. I have just cleaned it out again, using 99% IPA and some folded cardstock. On the two cartridge tests I did have that, they both worked, we will see I guess.. I tried the RAD REU on it but it wasn’t working properly. My Kung Fu Flash kind of works on it. I am not sure if those issues are related to the cartridge port being flakey yet. I do have to do more testing with JiffyDOS. I need to try it out with my 1541ii that has a Vintage JiffyDOS rom in it. I also purchased JiffyDOS to put on my pi1541, I did a little testing with that.

I realized I forgot to show a JiffyDOS 128 80 Column RGB Video screen shot. You see it adds the JiffyDOS line to the startup screen there.

Commodore 64 326298 Rev A 1982(FAB 326295 Rev D) Reset Mod and Switchless Kernal Mod

The Commodore 64 326298 Rev A has a different reset circuit. The 556 is wired in with a way that it keeps the reset line pulled to 5V and will supply as much current to that as it can. There are various ways to rework the circuit from over the years. I was looking at the least invasive way to accomplish this. I ran across a post on the Backbit Forum, as this reset being the way it is prevents the Backbit cartridge from working properly. It also affects other cartridges that use the Reset or have Reset buttons integrated into them. When they try to pull Reset to Ground the 556 works hard to keep it from resetting. It may crash the computer or cause glitches, probably as much as anything because it pulls the 5V line down starving the computer for power.

The process posted on the forum was to install a 1k Resistor in R36. This is a pull up resistor that keeps the Reset line pulled to 5V but “gently”. If it is missing the system could randomly reset, or be stuck in reset. The second part is to disconnect Pin9 on the 556 IC. We only want to disconnect the pin, the “wire” that is in the board there needs to remain connected. The simplest and easiest way to accomplish this would be to cut the leg off the 556. I didn’t want to do that.

What I ended up doing was desoldering the 556 from the board. I then took a 14pin machine pin IC Socket and clipped the bottom of Pin9 from it. I then paced he modified socket into the board so that Pin9 on the 556 is not going to the board. The Wire though is still going from the Pin9 Pad to Pin13 but that wire is no longer making contact with Pin9 of the 556. I then installed the 556 into the socket. On power on the system didn’t work. I checked the work, and then also tested the 556. The 556 had failed, it may have been during desoldering it, but it also may be that a portion of the 556 had been damaged by trying to use the Reset button on my cartridge. It may still have worked with Pin9 connected. I did have a spare so I tested the replacement and installed it. On powering it up the system worked normally again. I also tested using the reset button on the cartridge and that worked properly now. R36 is installed, it is a 1.5k resistor, a special precision one I have a small stock of, as I was short on 1k resistors at the time.

I believe if I had not done the Reset Modification that my next Modification, the Switchless Kernel ROM probably wouldn’t have worked normally. It also pulls Reset low, which it couldn’t sink all the current required to overcome the 556 previously.

C38 was previously replaced with a 4.7nF capacitor when I replaced the Electrolytic Capacitors to make the Restore key responsive. With the factory 51pF capacitor you have the hit the Restore key quite hard to get it to register usually, I don’t know if that would in any way affect the Kernal Switcher, as I haven’t seen it said that mod needs to be done. I did it as part of the recaping process based on it being recommended by Console5 where I purchased the kit. It did work as described, I tested both before and after switching that capacitor out.

Kernel Switcher:

The I am using bwak’s SKS64 “C64-Switchless-Multi-Kernal-27C256-adapter” project. This is a custom PCB that works as an adapter to install a 27256 as a 4 way Kernal ROM replacement. It is controlled with an ATTiny85, an early version used a PIC instead. I happened to have some ATTiny85s and liked the idea of using one for this. There are also ATMega based Arduino type board options out there. I am using a Pro Mini Arduino board for my Commodore 128 Switchless Kernal. This ATTiny was a neater solution for this, it is a all-in-one option as we already need an adapter board to convert the 27256 to work with the Commodore 64.

It has very good documentation at his Github page. There are considerations on what order your solder the parts together. He does cover that in his documentation.

The documentation shows where you can tap into the required signals on the C64 mainboard. The Reset, Restore and EXRom lines. Keep in mind the images below are for the 326298 Rev A, the guide from bwak shows similar images of all the various board types for reference.

I preped the board putting in single angled pin headers for the three signals and replaced the old single wipe socket for the Kernal ic. Of course I messed up and used the only socket I had, which you can see in the picture is solid in the center so the ATTiny85 on the bottom of the adapter can’t go in place.. So I have to replace it again, this time with machine pin header strips, as I don’t have an appropriate machine pin or other hollowed out socket to put on the board.

Opps wrong socket..

Since I had the wrong socket, I had to use the Turn Pin socket strips.

Now that the socket problem is sorted, I can get the adapter installed.

Switcher with the required header wires.

I was glad I was able to use some premade dupont cables I had. They are actually all premade cables from my breadboard cables I have. For the LED cable I just swapped the single dupont plastic holder for a tripple holder. There is an issue with just using the stock Red LED, but for now it works.

Note: I quickly replaced the Stock Red LED with a RGB LED, while it worked and the pictures in this section are showing the wiring for that, you only had the LED on if it was in Kernal 1, so the computer didn’t give an indication on the case that the power was on. The code could be change to always keep the RED LED on and just blink, but I didn’t want to look into what that involved. I just went with swapping to the RGB LED as I had them anyways.

The documentation is a lacking information on making the file to program the Eprom. You can get information from bwak on doing similar things by looking at the documentation on his VersaCart project. I’ll cover some basics blow.

The 27c256 is a 32k Eprom that can hold four 8k Kernal ROMs. I program the Eprom with my TL866ii plus.

To prepare the bin file for the Eprom. I collected them all in the same folder. I am using the Stock Kernal for the first one, then JiffyDos from RetroInovations, MasterRom 64, and JaffyDos (customized JiffyDos). Taking those 4 files in a folder, then open a Command Prompt window and while in the folder with the files use the command below. This is for the exact filenames I had, so your do need to be sure to enter the filenames you have instead. The U4_32KuB.bin is the 32k bin file I will use with my TL866ii to program the 27c256 Eprom. The code below it all in 1 line, if it is wrapped to two or more lines when viewing this page keep that in mind.

copy /b kernal.901227-03.bin+JiffyDOS_C64_6.01.bin+MASTEROM64_V3.0.BIN+jaffydos.bin U4_32KuB.bin

I will say JaffyDOS was a bit annoying to create. I couldn’t find proper instructions on how to accomplish it. JaffyDOS is created with a Commodore 64 .prg. You need to run it from the Commodore 64 Vice Emulator. You answer some customization settings once you manage to get it mounted properly and get it to where it can find your “JiffyDOS_C64_6.01.bin” which it has to be able to access. Running it properly will then create the jaffydos.bin file in the same folder as “JiffyDOS_C64_6.01.bin” had been located in. I did find some apparently outdated and possibly incomplete instructions and fumbled through getting the prg in Vice and the folder where the JiffyDOS bin was.

Once you have the 32k bin it is a simple task to use the TL866ii to burn the data to the Eprom. I will not go into detail on that, it is easy to find instructions on using at TL866 to program an Eprom or EEprom etc.

So the next bit that was a bit lacking in the documentation is programming the ATTiny85. You need to setup the Arduino IDE to be able to use the ATTiny85, and use bwak’s files to compile the program file. bwak does cover that you need to disable the Reset pin on the ATTiny if you want to use the EXRom function which enables doing a Hard Reset rather than the standard “Soft” Reset, if you are just using the Arduino IDE to program the ATTiny, then I don’t know how you disable the Reset pin, I think one or more of the ATTiny board types can do that. The ATTiny core I use for Arduino apparently doesn’t, or doesn’t make it obvious how to to it. The main reason I expect is they don’t want it to be easy for you to accidentally doing it without knowing that you will no longer be able to program the ATTiny with the Arduino IDE you will then have to use a HV(High Voltage) Programmer. If you have a TL866ii, it is a HV Programmer, it can set the Reset disable fuse, and also enable reset again if needed as well. He does cover that in his document. I actually used the Arduino IDE to program the ATTiny85, then used the TL866ii Plus to disable the ATTiny’s Reset pin fuse. You can also use the TL866ii to upload the Hex file created by the Arduino IDE though, which is in bwak’s document.

For now I just have the Stock LED in place. I will have to finish wiring up a RGB LED so I can then see which ROM is enabled by looking at it. I was hoping it would just keep the standard LED enabled, maybe somewhere in the code there is an option to tell it to just use the RED LED, I didn’t notice it though. The board looks like it is intended to be alternately used with the Stock LED though.

Beyond the LED being off for all but the First ROM (the Stock ROM in my case) it is working great. I’ll get that LED wired up and installed shortly. I have the right RGB LED, I just didn’t get around to making it up initially, I really didn’t want to make it up. I may look at the Code and see if there is an option to change the LED output behavior it is about as easy to make up the RGB LED as it is to pull the chip and recompile the code.

Commodore 128 / Commodore 64 Shortboard RF Module Replacement

I have been unhappy with the regular 40 Column video output on my Commodore 128. Watching a video by TheRetroChannel on Youtube, I saw his RF Module replacement. I feel technically that is not the right thing to call these types of boards, they “replace” the RF Module, but they are not “Replacement RF Modules”. You loose the “RF” Output, this really isn’t an issue as not many people would likely want to ever connect up the Commodore 128/64 by RF to an old TV tuned to Channel 3/4.

He released the board designs on Github as open source projects. There are two versions the C64 Longboard and the C64 Shortboard/C128 versions. For the Commodore 128 I needed the short board version, so I ordered them from JLCPCB. This is specifically the board that fits the Commodore 64 Short Board and Commodore 128 as they share the same type of Modulator. He also made a Commodore 64 Long Board version, they are basically the same but the Long Board version is a bit larger pcb to fit the Long Board properly.

https://github.com/TheRetroChannel/C128-C64-Shortboard-RF-replacement

The boards have various options on them. I have populated everything except the C64 Hard Reset section. This is for a Commodore 128 after all, and it already has a reset button. That isn’t a Hard Reset though, but by the time I install this that also won’t be an option. It is indicated it may not work on the C128 though I don’t know if that is the case or not.

I put on the 500 Ohm Trimmer Pots rather than the default resistors. I had the exact parts in stock, and I have a fair quantity of them, I purchased them for some project, maybe even when I was working on the earlier RGBI Adapter builds years ago. I did set them to match the set resistors as a starting point. The center and “right” pin have to be set to the baseline value, 75 Ohm and 180 Ohm I believe. I don’t know if I will have to do any adjustments on them or not (they were perfect at those starting values), but I had them and it made sense to me to use them. I probably have more of those Trimmers than resistors of the correct values anyways. This whole board was populated with parts I had in stock, the Audio jack was salvaged, but everything else is new. It was neat having a project I had everything for.

It was a strait forward build, everything is labeled. The two capacitors are labeled on the bottom of the board instead of the top, that did have me almost putting them in the wrong locations. It is easy to transpose the positions when flipping something over. I know he mentioned he made is so that the parts would cover up most of the silk screen markings. When assembled it does look pretty nice too. The only other thing I did check which pins on the Trimmers needed the proper baseline resistance set on them, but that was easy. I picked the White boards as I thought it would look nice when installed as well. It won’t clash with the color of the C128 board, or look like some poor attempt to color match it.

I am going to start with the normal Chroma/Luma paths. I will test that everything is working properly there, then I plan to switch to the External Chroma/Luma lines. The whole reason I am doing this modification is to try to improve the poor video quality I get from the VIC 40 Column video output. My Commodore 64s have far superior Video Output to the C128.

I really don’t need the SVideo and 3.5mm Audio Jack output. I have my RGBI Video Adapter which already has level adjusted SVideo and the SVideo jack (which is why I had a spare SVideo jack in my stash of parts), plus the Audio Jack on it. It won’t hurt to have them. It was unclear as to if the Chroma/Luma output on the Commodore AV Port was still active, but looking at the Schematics and board itself it is still connected.

Again, it was an easy build. TheRetroChannel does say the hard part of this mod is removing the RF Modulator module from the C128/64 board. He is correct, I have removed three of them, and well it is not something I look forward to.

I desoldered the factory RF Modulator, and stuck in the new unit. I fit it without soldering. The pins helped hold it reasonably secure so it wasn’t sliding around. So I did a test fit, and put the board in the case to get it lined up to the openings properly.

You can see that it is crooked in relation to the board. This is due to the alignment of the holes in the case having the opening for the “switch” lower than the “RF” port opening. Once I had it set where I wanted it, I carefully removed the boards from the case. I then tacked some of the pins with a bit of solder. I fitted it back inside the case again to make sure it didn’t move. Then I removed it from the case again and finished soldering it in. It was not difficult to align the board, as the pins held it fairly firmly in place as there are 12 pins they gave enough friction to not have it flop around while I was lifting it out of the case or flipping it over to solder.

It is in and the pins are all cut down properly. It was time to test it. I wanted to get some pictures of the output before switching out the modulator, but I forgot.. I fully remember it was awful in comparison to both of my Commodore 64s even in SVideo output. I was hoping I had some pictures of testing the SVideo output when I built the new RGBI adapter. I didn’t take pictures of the SVideo output. It was still awful at the time..

There is a jumper on the board to enable the Composite video, I believe the Chroma line to it. If you are just going to use SVideo, having it disabled is to slightly improve the output. I forgot to install it and ended up with the first screen above, basically no color except the “noise” around the text. The second shot is the Composite after putting the Jumper on. The last being SVideo output. The SVideo is much cleaner with no noise around the text. Even the Composite is a huge improvement over having the RF Modulator installed.

I wish I had some pictures of the Before. It is dramatic in this case. I was going to do the Chroma / Luma Bypass, those two pins on the lower right of the board. Without doing that, the video is comparable to my Commodore 64s. I feel it isn’t worth it at this point. I don’t want to bend out the VIC’s Chroma and Luma pins from the socket and solder wires to them. The improvement as it is was totally worth it. The two trimmer potentiometers are left set on the 180 and 75 ohm settings, I didn’t see a reason to adjust either at this point. I figure your probably safe to put in the standard resistors for those unless you want to go all out and tweak it to perfection. The same wit the Chroma / Luma bypass. You can still see Jailbars on the display, they are far better and overall the image is much sharper and cleaner.

I have recently build one of these up and installed it in a C64 Shortboard. For that one I did populate the Hard Reset section, but I didn’t put in a button or wire it in at this time. I used the regular resistors instead of the trimpots. I modified the Audio Jack to sit lower on the pcb, the jack I used is nearly identical to the one shown here. That helped the board sit more level in the C64 than on the C128 here. There are multiple pads for the Audio Jack, I was thinking maybe it is compatible with a slimmer jack type, but I didn’t want to risk it. I do have a slimmer jack that looks like it may have fit. The slimmer jack doesn’t seem as well built though, so I used the style I had used previously. You can lookup the more recent post showing that board. It is the same though, except sitting a bit more level due to the slightly lower mounted audio jack.

Flat Commodore 128 Maintenance and 64k VDC Ram Upgrade

When I purchased my first Commodore 64 I also purchased a Commodore 128 Flat type model. The Commodore 128 worked when it arrived. It was complete and in the original box. It is quite yellowed, after cleaning it looks a little better, but is still very yellow. I did the kind of Maintenance I had done with the Commodore 64s.

Pulling the board, cleaning the case with soap and water. I pulled all of the keys from the keyboard and cleaned them and the keyboard frame. The capacitors were all replaced with a kit from Console 5. Two capacitors had residue under them. I also pulled the cover and frame from around the VIC/VDC area. I did not reinstall the RF Shields, I did install heatsinks on various of the ICs that tend to get warm. For the heatsinks I filed an angle on the Pin 1 corner. I also painted that angled area to make it stand out and painted the IC Part on the side of the heatsink to know what ICs they are if they are removed.

The heatsinks came from Console5 as well. They are attached with “THERMALLY CONDUCTIVE HEAT SINK ADHESIVE GLUE“. To identify Pin1 when they are installed, I have Filed the corner of the heatsink a bit where Pin1 is and they painted the filed edge with a Sharpie Paint Marker (Not a Permanent Marker as they “fade” with time). I also paint the IC Part on the side of the heatsink to identify them.

When I installed the Heatsinks on my first Commodore 64 I had not filed the corner or labeled the ICs. I just went by they were in the right place already and that I wasn’t planning to remove them. I believe they can be separated, but it would be risking damage to the chips, and I don’t know how well the glue can be removed once fully cured. I went with the Glue on type of heatsink, in a small part is I could get them. The main reason I liked the Glue on type is I feel more confident in the “thermal glue” being “Thermally Conductive” as intended than the double sided tape used on other heatsinks. I am not real good with the paint marker, and it is a rather blunt marker. The paint seems to work well and last better than a Permanent Marker. With the Thermal Glue, you don’t want it any thicker than it has to be for the best thermal transfer. With about any thermal transfer material it is best to keep it as thin as possible. Before installing the heatsinks I do like to make sure I have good pictures of all the chips, that way I can look up date codes and revisions etc if I want to in the future.

For bolt on heatsinks such as the regulators, I do use modern thermal paste to replace the old white paste. Not the Liquid Metal stuff that eats the metal surfaces though.

The 64k Ram upgrade for the 80Column mode is quite easy. There are two ram chips that need to be desoldered from the board. Then I soldered in IC Sockets and put in the new Ram Chips. The Ram can be checked with a basic program to ensure it is active. Yes there is a “no soldering required” 64k Ram upgrade, this is a carrier board that you pull the VDC from the socket and install it where the VDC is then reinstall on the board.

From Ray Carlsen’s site:

One way to tell if you have the upgraded VRAM is with a little BASIC
program typed in 80 column mode:
POKE DEC(“D600”),28:POKE DEC(“D601”),63:SYS DEC(“FF62”):SCNCLR <RETURN>
If the screen says: READY and looks normal, you have 64K of VRAM. If you
have only 16K, the screen will fill up with zeros.

Ray Carlsen CET Carlsen Electronics

To test the Commodore 128 I made up one of the modified VersaCart boards with some Commodore 128 Diagnostic ROMs. It is one of the spare boards I had left over, setup with two different versions of the diagnostics. For the Versa Cart as I set it up, I closed JP8 A15, JP10 A14, ROML, J5 set to Switch. Resistor installed for A13, and the last switch installed to toggle between the two ROMs.

I did have issues with the cartridge making good contact. You may see in the first picture there is another cartridge sitting under it, slightly wedging it upward. I looked at the cartridge port, it looks fine, I cleaned it with contact cleaner, I checked all around and can not find why it is being problematic. I’ll be looking at the port more. I had the same problems with other cartridges. With being careful to get good contact, and the C64 harness connected everything passed though. I later found out you shouldn’t get the solder coated PCBs, you need to order them with Gold Plated contacts to get good contact. Without looking, I am not sure any of my modern cartridges have Gold Plated contacts. I don’t use them often, but they have worked what little bit I use them fine in my 64s. Many though aren’t wanting to work properly in this C128. I do have some old cartridges, and the original PCB that my one Commodore cartridge does have Gold Contacts. I have had issue with the Atari 2600 with certain original solder plated cartridges being far far more problematic, and need serious cleaning to get working well.

When doing my next project on this C128, I resoldered all the points on the cartridge connector. I can’t see anything wrong with it, it looks to be clean, doesn’t look like any of the pins/contacts are bent or pushed out to far etc. It has been cleaned with contact cleaner several times. I did then test one of my original cartridge games and it worked properly, I don’t remember if I used that specific one previously, and I haven’t tried the C128 Diag Cart again at this point.

Fixed C128 Dual Diagnostic Cartridge. Red marks are the Solder Bridges. This is a modified version of Bwack’s Versa64Cart 1.5

Commodore 128 RGBI/CGA to Analog RGB Part 4: A New Case

Part 1: Prototype Post

Part 2: PCB Design, Schematics and BOM

Part 3: Boards Assembly and Testing

The KiCad files, Gerbers, Schematics, Bill of Materials and 3d Models are all released at Github:
https://github.com/Markeno76/rgbi2rgba

I worked up some 3D Printable Cases for the C128 RBGI/CGA to Analog RGB Adapter boards.

I am trying to get away from TinkerCAD, the AMpI4 case (See the post on that here) that I made in TinkerCAD turned out for me. It was a lot of work and it is complex to make modifications to that model when I need/want to.

This time I went back to DesignSpark Mechanical, which is what I started with for the AMpI4 case. I wasn’t ready for a project like that as my first real attempt to make anything in it. This time it was painful as well, but it is a much easier project. I learned a fair bit, but have a long way to go. The case hasn’t turned out perfect, but I’m quite happy with it overall. I make make a couple adjustments to it yet. To start with a made up a mockup of the physical board. That took awhile, then I realized I could export a 3d model of the board from KiCad. When I found that option, I went back and partially started over. I then just had to model the various ports. I did not size them to real world size, I upsized them to be used as the penetrations in the case exterior.

I ended up with making two prototype case prints. The first one showed me the primary mistakes. The SVideo Mini DIN Port opening was too small. The port was accessible with it being properly uncovered, but the outer plastic of the SVideo cable couldn’t get into the opening as it has to go down flush to the port. The RCA ports were correct, they don’t go the whole way down around the outside. The 5V Barrel jack was properly sized for 3 different power cables I tested with it. The DE9 was right. The screw holes placement for the HD15 port were 1mm to high, the whole port was 1mm to high, the cutout and all. This may be due to me using the DE9 measurements as the basis for both openings. I resized the Mini DIN opening, dropped the screw holes for the HD15 port and made the case thicker overall. The first case closed properly, all port alignments were right (short of the HD15 height), the mounting holes for the board and the posts were all correct. I made those adjustments and printed another test of what is now the “all” version of the case. The revised case printed out well, the Mini DIN Port cable now fit properly, the screws for the HD15 were aligned properly and the case was not as flimsy feeling. Once that all checked out, I went back into DesignSpark Mechanical and made up my variant cases from the initial “all” openings case. It was easy to make those variants as it only took a couple minutes. If I was familiar with it I bet it would be more like 2 minutes to do the modifications. I am still very unfamiliar with it, but I like the greater control with the model compared to TinkerCAD.

There are 3 versions of the case, the “all”, the “CGA” and the “C128” variants.

The “all” case has openings for all of the ports.

As you can see the case design is a split top case. There are no overhangs (except the DB/DE screw holes and the underside holes) that require support when printing. There is a slight rounding on the corners. With the settings I am using on my printer it takes about around 1.5hours per half of the case. I normally print faster on my Ender 3 Pro, but the filament I am using didn’t like that. It is some old PLA+ and that particular filament always gets moisture in it. To speed up the process I ended up printing each half on one of my two printers. That is why the filament is different for each, as I didn’t have two spools of the same color. I printing in PLA/PLA+ incase I wanted to paint the case. The color is an acceptable color for the use though. I plan on making up a version of the labels I put on my prototype to put on the tops of the cases. I’ll have to get ink cartridges in the printer before I an make the labels up though. The DE9/HD15 ports have the holes for the standoffs in the lower case shell. The bottom of the case has 4 holes in it for screws to go up through into the standoffs on the top half of the case to keep it shut. I don’t put the Standoffs in tight until I have the bottom screws in to prevent cracking something. With the case design, it does take opening the case to move the jumpers of course. I’d rather not have holes in the top for stuff to fall in, it is also hard swap jumpers in openings like that. It may be possible to rework the PCB to have some sort of DIP Switch. That makes another part to have to source, but it is possible to use that footprint for Jumpers too. DIP Swithes though are generally SPST, not SPDT which is what three of those jumpers need. I do have “mini” SPDT Switches, which I actually intended to install into the C128 type board, but I forgot to. They fit the 3pin Pin Header footprint, and have a narrow somewhat tall slide. These are used on some Commodore 64 (and I am sure other) New and Reproduction cartridges such as my C64 Diag/DeadTest Cartridge. I have also used them on some cartridges, like the C128 Multi Diag Cartridge I made awhile ago. For those mini switches it could be possible to design a case top that let you change them either with small openings, or even make extension caps that let you toggle the switches with the case closed. I don’t expect to be switching the configuration of the adapters often. The SCART to HDMI adapter was unstable in testing the games and was said to introduce lag, I’ll likely just use these with my GBS Control adapter instead. I’d love to be able to use them with my Sony PVM, but it takes a 4V Sync signal, I haven’t even looking at what may be done to adapt that from the ~1V Sync that normally is put out with RGBI/CGA.



The “C128” case is modified to accept my slightly custom RGBI board and has openings for the four Commodore 128 specific ports along the left side. It doesn’t have an opening for the DE9 Male port, as I am using a short “dongle” type cable out the side. It has a smaller opening where the 5V DC barrel jack would be and a second matched opening beside that for my two “dongle” cables grommets to rest in.

I use the short “dongle” cables there for the C128 version as I don’t want to have to make up short stubby cables to plug into ports. I also don’t want to make a custom Commodore AV Cable of some type. It gets more complex trying to find a port and jack for the Commodore AV Cable, then everyone who wants to make one needs to source the same “odd” port and jack. It is bad enough getting the Commodore AV Port “U” DIN connector. Since I am using that short AV dongle there is no good reason to make up a shot stubby DE9 Male to Female cable either. In my case that is part of an old DE9 Serial Modem cable. The grommets fit the cables snuggly and are from a case of grommets I picked up at Harbor Freight. I sized the holes to accept those grommets.

The third type of case is the “CGA” Case. It doesn’t have any of the Commodore 128 ports on the side, but has all the other normal openings in it. The case should be easy to modify with various 3d modeling packages, even with Tinkercad or such if you want different openings.

The case isn’t perfect but I’m happy with it. The holes in the bottom were meant to take recessed M3 screws. The recesses aren’t deep, or wide enough. I have already printed 4 cases today for just 2 adapters, so I don’t plan to rework the recesses. I also don’t have any tapered M3 screws of an appropriate length. It seems to close well with M3 screws, I made the holes in the top standoffs to be hollowed out quite deeply, but something like a 10mm or probably 8mm screw is sufficient. My cases are printed out of PLA on two different printers and the holes worked well on both, the holes are a good fit for the M3 screws on both, but each printer is a bit different. I thought of putting Threaded Brass Inserts in, which takes a larger hole, but there is alot of variation on what size and depth they need to be. It is hard to make a “universal” case when using brass inserts. I have some super cheap thin ones, them my good ones are massive.. When sitting the case together there is a slight pulling at the corners, but on putting the screws in the minor gaps close up tightly. With my cases the fact it is made of two different materials does make it stand out a bit, but I kind of like the look. It should print fine in PETG. I used PLA as I have more color options, and if I decide I want to color match it with paint, PLA is the better option. I like doing prints in Transparent PETG, but this is for use with an 80s Era Computer not an iMac. I have a couple opaque PETG filaments, but not one in a color that I felt was appropriate.

Above are pictures of the closed up cases from various angles. I also showed some bottom views where the screws are present. It is quite bland looking and you can’t tell what it is for by just looking at it. I want to make labels similar to the prototype, but I’ll need ink for the printer before making them.

After assembly I did some testing with the Commodore 128 with my GBS Control (see post on that for details) taking the 80 Column output the rest of the way to standard VGA.

I did test the Monochrome Composite 80 Column Output after doing my bodge on the V1.2 board the Monochrome Composite 80 Column worked properly after. The Monochrome 80 Column is fixed on the released V1.3 Board design. I really don’t know why anyone would use it, it can very easily be used just connecting directly to the pin on the RGBi Video Port. I only added it because I could.

The KiCad files, Gerbers, Schematics, Bill of Materials and 3d Models are all released at Github:
https://github.com/Markeno76/rgbi2rgba

I went back and finally looked at H2Obsession’s “Ultimate” adapter project. He included a “Dark Gray” fix as well. I wasn’t aware there was an issue with Dark Gray. I’ll have to look at it and see why that was done. It should be simple enough to add. I’m also thinking about the PVM taking 5V CSync for RGB. I’m wondering if I could come up with an option for that.

Here are a few pictures of the Commodore 128 setup. It is a bit crowded with projects, most of them have posts here on the blog. The Commodore 64 replacement Power Supply, a Commodore 64 to Commodore 128 Power Supply Adapter cable (I don’t have post about it, It takes the C64 power jack on once side and the Commodore 128 plug is from “Hey Birt!“. My C64 power supplies were built for higher current than the factory model making them able to handle the C128’s requirement fine. I used Drunk “n” Retro’s Diagram, which you can find many examples of diagrams to do so ). I do have the serviced Commodore 128 Power Supply, but it is easier to just swap in the adapter cable, than having both out on the desk. The Commodore 128 is connected to the Samsung 940MW TV I repaired. I of course have the RGBI Adapter tucked in under the monitor. I do have the Monochrome Composite 80 column connected up to the TV, as I was testing it. I also have the 40 Column SVideo connected to the TV. The RGBI Adapter is connected across to the GBS Control (silver box on the right under the pi1541 which is another project). Then the Commodore 128 which I serviced, but I guess I have no post on servicing it. I’m still debating painting it, I won’t be retrobrighting it.

Finally the gamepad project, which I don’t have a post about. It is far from flawless, the Dpad isn’t great. It has 2 buttons, the normal fire button on the left and “button 2” is either “Up” or wired to one of the Pot inputs. It also has an adjustable speed 555 based Rapid Fire option for the primary Fire button. I want to revisit that project, maybe then I’ll make a post about it.

I made up some labels for the two units I built up. Below you will see the original 2019 prototype with the new 2023 label. I made that label the same way as before. It was printed on plain inkjet paper. Then covered with adhesive laminate film and cut to size. In 2019 I masked off the “case” and sprayed adhesive spray onto the case. I then removed the masking and put the label on it. This time I tried the “easy way” of spraying the paper, as you can see it ended up with the obvious effect of the paper looking like it got something on it showing through. That is why I had originally sprayed the Case instead of the label. This was for testing, and I wasn’t completely happy with the label. I need to get new ink cartridges for my printer and then I may remake the label. The second picture shows the reduced build CGA Adapter’s label. This label was printed on a scrap of HP Adhesive Vinyl. The printer didn’t print quite right due to being out of black ink and the red cutting out too. This label does look better overall although it isn’t perfect. I did put a label for Audio In on the CGA label. It is possible to jumper across the outer two pins of the Audio Out jumper to send the “Audio Output” jack to the “Audio In” Pin on the HD15 port for use with the SCART to HDMI Adapter. All I would have to do is open the case and cut in a hole for the rca jack and install it to the board in the future if I wanted to. I don’t plan to do that currently though.

I think that pretty much wraps up this project. You can see the label on the box there now, and the 128 is running JiffyDOS now. I do have the SID Audio, Monochrome 80 Column Composite, 40 Column SVideo, and of course the RGB through the GBS Control into on the Samsung TV.

NABU PC Black Screen, FAN Repair and Checks

Like a lot of other people I purchased one of the NABU Personal Computers that came up for sale in November. My Nabu arrived in December. It all looked good, when I turned it on there were two problems, the fan was making an awful noise and while I was getting a video signal it was a blank black screen. I opened the cover to look if something was out of place, and to check that fan. I pressed all the socketed ICs, reseated cables, tried other displays. Nothing helped and I didn’t feel it was worth shipping back. I mean even if scrapped I expect the computer was worth keeping.

I did inform the seller and he offered to send me another if I shipped it back. I decided to keep it in hopes of getting a second one, but there were none for sale. I kept looking back and recently he had some listed without the keyboard. I figured I probably had a working keyboard so I purchased a second one.

The new one came in and it worked with my monitor just fine. I was initially happy that the fan wasn’t making any noise, then I realized it wasn’t turning at all. I could hear that high pitch sound that likely indicated a stuck motor, which after opening it I found that was what was going on. We will get back to that later.

Now that I had a working Nabu I decided I would look at the other unit. The fan was noisy and I had pulled it back in December to check it. I connected it up to the monitor to see if it was in the same condition. It was still just displaying a black screen (it was powering on, and there was video signal), I didn’t realize it but looking at the LEDs on the front may have indicated if it was doing anything. Interestingly the fan was working much better, again I will get back to that later.

I found a guide to help trouble shoot the Nabu here: https://github.com/RudyRetroIntel/Vintage-Computer-Diagnostics

I have worked on a number of 80s era computers so there were a few things I was going to try. I started by pulling the power supply to get the fan detached to check it further. While I had the supply out, I checked it and reflowed some solder points on it. I didn’t see any issues with the power supply soldering, except I felt some pins were a little light on solder. I also polished all the connector pins on the power supply. They were pretty clean, but it was easy to do while it was out. I put the supply back in without the fan attached just for testing.

I pulled the mother board to get full access to it, and check the bodge wires on the bottom against the guide. It is the same revision of the board as in the guide, and has the same wires on the bottom (except different colors).

While I had it out I really don’t like that the LED board doesn’t have a connector on it. I put on a regular pin header and made a cable up and soldered that to the LED board and reinstalled it. Checking over the main board I didn’t find any issues. Before I reinstalled the mainboard though I rechecked the bodge wires, two of them had been pressed into and poked on component legs, I moved them and rechecked as I reinstalled the board.

Above you can see the LED Board with the original ribbon cable. I rewired it with a removable connector to make servicing the NABU easier in the future.

I pulled all the socketed ICs starting with the video generator ic. That IC had very tarnished legs. I take it that is due to the type of coating on that chip, I see that type of tarnish on IC and connectors and such. I used a fiberglass brush on the legs being sure to also do the inside of the legs. The IC Sockets on the Nabu look nice, but I still put a bit of contact cleaner into the socket before putting the IC back. I did the same with all of the other socketed chips. The video generator was the only IC that looked questionable.

On the left you see the video generator chip before cleaning, then the right is the chip after cleaning it.

After cleaning the ICs and reinstalling the board the Nabu was working properly. The fan still needs to be reinstalled but it all seemed to be working otherwise. They were tested before shipping out, so I expect it was a bad connection on some chip, possibly that one above.

The next thing to do was fix the fans on both of the computers. I was thinking about why the fan seemed to be working well on the first Nabu as it wasn’t before I took it apart in December. I figured it just freed up. Then looking it, it was still rubbing slightly. I pulled the fan from the Second Nabu, it wasn’t turning at all. I found the blades rubbed the outer frame just at the bottom. Looking at it closer I could tell there was no gap in the bottom and a wider gap at the top. The fan comes apart by taking out three small screws, this separates the motor from the frame.

The fans are very heavy. They are made of cast aluminum apparently, both the frame and the blades. They have been sitting so long, it seems the fan motor settled a little bit and slid down where the blades are now catching on the frame part. To correct this, you just have to take the three small screws loose on the back and get it properly centered again and reinstall them. There is very little clearance on these old German made fans. Modern fans are all plastic and many have far larger gaps between the blades and the frames. After doing this process with both fans they are properly centered again and moving freely without noise or any catching on the frames.

I reinstalled the fan and added a connector so that I can easily put it out off I have to in the future.

These computers do not appear mass produced. There is hand done work with the various cables and connectors. There are odd choices in assembly. The fans only have 3 screws holding them in, there are washers on the screws, flat washers glued to both sides of the fans, those locking washers glued to the top of that flat washer on the inside and a nut glued to that (which the glue has failed from removing them). The LED board on the front has spacers between it and the front frame. The fan has one connector that is removable, but the other one had a permanent splice crimp on it so it couldn’t be fully disconnected. The oddity that is the power cable from the power supply to the mainboard, which has no connector on that end either. The LED board being permanently soldered to the mainboard. That LED board is difficult to remove having to bend one or more of the LEDs to the side to get it out, possibly due to the LED leads being left so long do to having to use those spacers. It feels like they were designed and had some issues that were addressed, it would have been cool to see a “Rev 2” Nabu without the little oddities. I like the system, it is just a bit odd.

I look forward to using the Nabu. I guess at some point I may look at coming up with a keyboard for the second unit. I really like the Nabu Keyboard. I keep realizing I probably should have more pictures of these things working.

PSU Bottom, Reinforced Ground connector on the lower right corner.

Both of the NABU Power Supply Ground Lugs pushed off the pcb when reinstalling the ground wire to them. The pcb is a single sided board and has no through hole plating to keep it solid. The first one pushed and tore the copper the first time I went to put it back on, and I thought maybe it wasn’t solid or fully seated when it was put on originally. I pulled the power supply out and repaired it, by soldering some heavy wire around the pads and adjacent pin to reinforce it. Then tonight when getting the fan reinstalled into the second NABU the same thing happened to it. I know that one was soldered on well, as I had reworked the solder points on it and had even added solder to them. I pulled it back out again and did the same reinforcement with some heavy coper wire around the solder points. The picture above the ground connector is on the other side of the board there on the lower right corner. The two points from the lug holes and the one hole to the left of it are now all joined up with the wire in the solder. I was careful reinstalling the ground wire so as to not tear it free again from the copper. With that fixed and the fan reinstalled both of my NABUs are working now. I do only have one Keyboard, I’m wondering what it would take to build up a replacement keyboard. I would love to have had keyboards for both, but the current listing for them doesn’t include keyboards. I don’t see myself using both at once, I hate to keep a fully working unit as a spare parts machine though..

The second NABU worked perfectly out of the box, it had some rust along bottom of the back edge of the case top. I cleaned that up scraping away the worst of the rust, then used a fiberglass pen to get most of the rest. I then put some clear nail polish to protect the metal a bit. Beyond that I fixed the fan as described above, as it didn’t spin at all. The fan is now removable as I replaced the permanent crimp connection on the one lead with a connector. The system looked good otherwise and is working fine. I didn’t do any other modifications or changes to it. That unit is back in it’s box sitting on the storage shelves.

The other unit which was the one giving a black screen before pulling and cleaning all the socketed chips, I also fixed the fan on. It is the unit I put the removable connector on the front LED Panel. This was the first NABU I purchased, and it is the one with the matching keyboard so it will be the one I keep out to use. It also now has the fan removable with the detachable connector on the second wire on it.