Like the rest of us, 8-bit hardware is not getting any newer, and failed ROMs are just a fact of life. Of course you can’t call up Commadore corporation for replacement parts anymore, so something is needed. [Peirs Rocks] wasn’t satisfied with the existing options, so he came up with the Software Defined Retro ROM to serve as a drop-in replacement for 2364, 2332, and 2316 ROM chips.
Physically, the Software Defined Retro ROM is a PCB that matches the footprint of the original ROM chip, and holds an STM32F4 family microcontroller with a number of extra pins facing upwards. Some of those pins are for programming, so you can flash the board in-situ without removing it from the system using a Pi Pico. The others pins are jumpers for image selection or chip configuration. Depending which STM32 you use, you can have upto 16 ROM images on the board, at whatever chip select behaviour you require. The ROM’s chip select lines could be configured at the factory to answer to HIGH or LOW, and this board can handle either with a jumper swap.
The documentation on the GitHub is very well done, for which we applaud [Piers]. Instructions and demos are also available in the video embedded below. We could certainly see this hack becoming popular in the retrocomputer community, especially as everything ages and memories continue to, uh, y’know. What were we talking about, again?
Oh, right, ROMs. You might think an mask ROM would last a very long time, but it’s been a very long time since some of these were made. Best to dump them while you still can. If the chip is really far gone electrically, you might try decoding a photograph of the die.
“Commadore”?
Also, “an mask”… if we are in this mood…
Because of the Commodore tag?
I think it’s because of the 1541 in the video title screen, a very poor piece of scrap metal I must admit.
It suffered from overheating (int. PSU/no fan), had not enough RAM (exploited as copy-protection), had a broken serial interface and a head-bumper routine.
The 1541C had a new firmware and a light barrier, at least – which in turn broke parallel interface mod so the fix was undone in 1541 II. Sigh. 😮💨
Personally, I think the 1541s should just be gone. There are better alternatives, anyway, such as 1570 or 1571.
These should rather be repaired or re-built, in my opinion.
……is this chatgpt?
Of course! Real, native speakers don’t use commas and punctuation.
The lack of an affection for bad wordplay (puns) is another indicator for an AI.
I have often wondered the same thing…
I like my writing like I like my blood: type-O positive.
It’s the typos and the bad puns that separate us from the machines.
I believe that is French for golden comma.
You sure about not being able to call them? https://en.wikipedia.org/wiki/Commodore_International#Revival_of_the_Commodore_brand_(2025-Present)
Ok, no phonenumber but they might be selling replacement parts, and maybe, this very product can carry the official logo and brandname if he wants to.
That would be most excellent.
Any idea of the access times this can provide? Not sure what the STM32F446 can do with DMA but 180MHz should cover it lol.
I would’ve put the USB hardware on the board for some easy fun ICE.
The F411 at 100MHz is sufficient to replace the C64 character ROM, which I believe was a 350ns access time ROM. (On these ROMs, 350ns refers to the address line access time – chip select access time is 200ns.) I would expect the F446 at 180Mhz to be able to get down to 200ns (address line access time), but I haven’t tested with the F446 – or a system that requires 200ns – yet).
No USB because the PCB footprint is so small, and SWD covers programming needs (and I hate handsoldering small USB ports).
questuion is how change the font in room? I need Polish font in commodore.
Not really feasible since a Polish character set was never released (officially).
You could make your own (https://github.com/ricardoquesada/vchar64), but otherwise you’ll be kinda stuck with what’s out there.
I have been collecting and cataloging them, if it’s of any use…
https://weaselsworld.com/c64-roms/
what about using ch32v chips? maybe ch32v006 could do it too and one can get 10 of them for $3. and they can run from 5v directly and need just two capacitors. It is ony 48mhz though so either it would need some optimization or it is tad too slow.
It’s probably too slow for, say, the C64. Might be able to cope with the PET/VIC-20, but I’m not very familiar with RISC-V and how many instructions/cycles are required for the various operations – plus what flash prefetch/cache there is). Also do these have sufficient 5V tolerant GPIOs – that tends to be quick a big swinger when it comes to fitting everything one side of such a small PCB.
some of them like CH32V006 and CH32V103 runs off 2.2V-5.5V so the gpios output 5V as logic high when running from 5V. so yes they are definiltely ‘tolerant’. CH32V103 runs up to 80MHz
It might be viable then. Probably depends on any flash wait states or flash prefetch buffer/instruction cache. Both prefetch and cache are really good on the STM32F4. My guess is with the 80MHz variant you’d be able to get it working with the PET and VIC20 but maybe not the C64.
It would be fun to make one or more of any unsed ROM addresses be a value that updates every time you read from it. Thats basically just software defined memory mapped IO. but a way to add virtual hardware and data to your system. for output, I guess the action of reading could be a write output.
I was thinking you could make some sick demos remapping the ROM and char ROMs contents on the fly – I’m probably not the person to do it though.
It might be possible to order ROMs from Commodore in the future. Christian Simpson (AKA Perifractic) has purchased the rights to the Commodore name, and has hired some OG Commodore employees to reform the company. We’ll see what they come up with, I have high hopes as he is a retrocomputer hacker with a popular Youtube channel, Retro Recipies.
I would love to be able to buy brand new “official” ceramic roms with gold pins, but I don’t see reproducing failed ROMs as a priority for any new Commodore any time soon, given there’s so many other solutions.
Hey let’s use a computer to program a computer to program a computer!
If only I could find a way to add a few more layers.
:-)
I’m hoping to build few of these, it’s just that where do you get any of these applicable STM32Fs for anywhere near $2?
aliexpress and lcsc. I have some STM32F405s for £2.40, and GD32F405s for £1.60 (~$2) just arrived from aliexpress. Lcsc currently want $1.93 for an STM32F401 for 1.