Close

In Your Memory

A project log for LittleSixteen - Commodore 16 Mainboard

Let's do justice to this mistreated machine, at last!

sukkoperaSukkoPera 12/07/2021 at 17:310 Comments

Something about the C16 that has been bothering me forever - and the very reason why this whole project somehow started - is that RAM expansions based on the cartridge slot do not work properly. This was probably intentional by Commodore (as in "Want more RAM? Get the Plus/4!") but it must have been a long-debated feature, since half of the job is done while the other half is missing. In particular, the /RAS, /CAS and R/W signals that are needed to control RAM chips have been brought to the cartridge slot and these cannot actually serve many other purposes. On the other hand, there is no way to disable the internal RAM when an expansion is plugged in the cartridge slot which means that both RAMs will fight for the bus, amounting to a disastrous effect.

In fact, RAM expansions that were sold back in the day used to come with instructions saying how to disable the internal RAM, which was usually obtained by barbarically cutting the power pins altogether. This had the obvious side effect that now the machine could ONLY work with the external expansion plugged in, preventing the use of other cartridges (not that many were made...).

The Plus/4 schematics from the German User Guide reports the Z pin of the cartridge slot as "RAMEN (NC)", where RAMEN might be short for RAM Enable: while on the actual machines the pin ended up Not Connected (NC) to anything, this could indicate that there might have been plans for this pin to serve that purpose, so let's complete the job!

To respect the semantics of the RAMEN moniker, it seems natural that when this pin is high the internal RAM will be enabled while grounding the pin will disable it. There are a couple of ways to obtain this, the simplest of which to me looks like having this pin drive the Enable signal of the internal RAM. This signal is just grounded on the original board, which unfortunately implies that it is active-low, which in turn means that I should have reversed that logic. Luckily though, it turns out that U12, a Quad NOR Gate IC, has a spare gate which can be used as a makeshift inverter to make things work as I had intended by just adding a pull-up resistor.

This will finally let me make a working update of my OpenC16RamExpansion project but it will not be sufficient to get the original expansions working straight away: they will have to be modded by grounding the Z pin but this should be rather easy to do, as ground is usually everywhere.

On a side note, while I was wiring the spare gate of U12 I realized that it had been left totally unconnected, which is never a good idea. Since U11, too, has a spare gate which we don't yet have an use for, I took the occasion to connect its inputs to VCC, which will keep the gate disabled and hopefully save some current (like 0.01 mA, LOL!).

Discussions