15

A slightly odd question, but is it possible to take an old 16K computer that wasn't designed for memory upgrades, such as a Commodore 16 or PET 4016, and upgrade it to 64K as a hardware hack?

I'm not a hardware engineer; here are my initial loose thoughts:

Suppose the memory chips are DRAM, standard 4116, eight of them. You'd need to take them out and replace them with 4164s. That's the easy part. If they're soldered rather than socketed, you would have to desolder the old chips.

Are there any differences in addressing the two kinds of chips? If there are, that probably kills the project right there?

If not, you would then really need to arrange for bank switching between the new RAM and the existing ROM in order to keep the upgraded computer actually usable. Can that be done by replacing a memory controller chip with something suitable?

  • 3
    Not all of these computers had memory controller chips or memory managers - sometimes it was just a series of logic gates used for address decoding. So the answer here will vary a lot based on the specific system in mind and how it was architected. – Joe Dec 26 '17 at 16:47
  • 7
    Many 8-bit machines allocated portions of memory space to ROM and memory-mapped I/O. Even if the machine might relatively easily be rewired to use larger RAM chips, the conflict with ROM & I/O would either result in losing some of that RAM at best (similar to the way typical IBM PC & clone systems can only make use of 640K of RAM in the 1st megabyte) and losing ROM access or total non-functioning of the machine at worst. – manassehkatz Dec 26 '17 at 17:06
  • 2
    Yes, it is possible within bounds, and not too hard. It was a common hack back when the Vic 20 was still new. The 6502 processor supports 64K addressing space, so there's a bit of hotwiring and soldering involved, plus watching the ROM boundaries. I'd have to reach back many decades to a mis-spent youth to give any more detail than that. – pojo-guy Dec 27 '17 at 4:05
  • 1
    One thing to keep in mind is that the dynamic ram must be refreshed on all the address lines. If the refresh circuit does not count on the highest RAS/CAS line the RAM will not be refreshed properly even if the new higher address lines are correctly multiplexed. – KalleMP Dec 27 '17 at 22:28
  • 1
    @KalleMP: I don't think that was generally true past a certain point. If one doubles the number of rows in a single uniform DRAM array, the amount of stray capacitance from inactive column transistors will also double, and it will eventually swamp the combined capacitance of the active node and the sense amplifier. At that point, each increase in the number of rows will require the sense amp to become more sensitive. If memory serves, once DRAM arrays grew beyond 256 rows, they started being split into smaller arrays of 256 rows each. I don't think the refresh limit is still 256, but... – supercat Aug 5 at 15:58
24

It all depends on the computer to be modified and its RAM system. For now, let's focus on the pure RAM expansion issue and drop the part about bank switching; as this is completely machine-dependent, a generalized answer, as requested, will be impossible. Even so, there are still many hurdles to overcome. One after the other:

RAM Type

Some machines, like original PETs are based on static RAM. They lack any logic to multiplex addresses thus, dynamic can't be used as (direct) replacement. Also, no provisions are on board for refresh (*1).

RAM Organization

The C16 mentioned above does use dynamic RAM, but with x4 organization (4416 - they are already 64Kib chips anyway :)), so x1 chips can't be used as (direct) replacement. Corresponding 256Kib x4 (4464) chips are available, still the hardware needs the capability to handle the additional address line(s).

Addressing Capabilities

Even if a machine, like the 4016, does use x1 chips (4116), it also must provide means to multiplex all 16 address bits, which the 4016 doesn't. Only the 14 lower lines are multiplexed (*2). If at all, a working extension would be using additional 4116, wired in parallel with their CS connected to a small decoder for A14/A15 - and of course only if there is address space available to do so.

The C16 in contrast is already (somewhat) prepared for 64 KiB. The RAM chips can be replaced right away, just A14/A15 have to be supplied to the multiplexers (74257).

Address Space

Next hardware hurdle is where to put the RAM. Even in a 16KiB machine, the remaining 48KiB address space are neither unused nor free. There is ROM somewhere, I/O and maybe a screen RAM.

The CBM 4000 series for example has its screen RAM at 8000h followed by I/O and ROM areas. That's the main reason why there never was a 4048.

The C16, in contrast, is already prepared to have 64KiB - after all, it's a 264 design, like the plus/4. The address decoder is made to handle full 64 KiB RAM in addition to the ROM and I/O areas. Screen memory is all the way down (*3).

Software Access

Even if one is able to squeeze in the additional RAM hardware-wise, most software, like BASIC, will not use it. The C16 is again a notable exception, as its BASIC is prepared to work with a full 64KiB RAM.


I did purposely focus on the machines listed in the original question, as otherwise this would be an endless story, even when confined to Commodore. But I hope you get the picture.


*1 - Then again, adding static RAM is less work (no multiplexer to consider) and nowadays even for DRAM machines the best choice. Just add it - especially if a suitable expansion bus is available.

*2 - Well, the multiplexer(74153) needed is available on (most) boards, but not wired, so it still be less work to use 4116s or add a new multiplexer on a sub board

*3 - The 264 does show that Commodore engineers where willing to learn. Unlike the C64 which was just a quick hack, the 264 series was planed with extensibility and maximum usage in mind.

  • 2
    It might be worth also looking at how people did 32KiB to 64KiB upgrades to the Dragon 32, doco for which can still be found. – JdeBP Dec 27 '17 at 12:15
  • 2
    @JdeBP It's also worth bearing in mind that the Dragon 32 itself was designed as a 16k machine. Early machines were 16K boards fitted with an extra 16k on a daughterboard: archive.worldofdragon.org/index.php?title=Pippin – Kaz Aug 6 at 12:39
  • The exception not only the C16, there were 16KB ZX Spectrums. – Rui F Ribeiro Aug 8 at 12:45
10

The 4116 and 4164 have different pin allocations for the reason you'd expect: the 4164 has an additional address line (for two more bits of address in total because row and column are multiplexed). So you can't just drop one in, in place of the other. The 4116 also receives a 12v signal, which the 4164 doesn't. So you can't perform a straight substitution.

enter image description here

If you want to hack in 64kb where no original provision was provided, you'll need to make sure you don't connect that 12v signaland implement some sort of paging scheme of your own, to buffer an additional two bits and provide either one upon RAS and CAS. Or a single bit to supply regardless of RAS and CAS, to give 32kb in a 16kb slot.

So that means cutting or bending pins 8 and 9, connecting 8 to the board where 9 was, and providing a different input for 9.

  • 1
    And the different input for pin 9 is the hard part. Remember that this pin has two address lines multiplexed onto it, so you're going to need to detect when the main board logic is producing the RAS and CAS signals in order to choose which of your two extra bits of address you want to give it. As pointed out, in a machine not designed for 64K there's probably no unused address lines coming out of the processor, so you're going to need to implement some kind of paging scheme. – Jules Dec 26 '17 at 22:58
  • 1
    Of course, there were lots of addons available at the time that did this, e.g. see users.globalnet.co.uk/~jg27paw4/yr08/yr08_22.htm for a relatively simple and cheap addon you could get to turn a 48K spectrum into 80+K ... or do it the modern way and watch a youtube video where somebody's done it. – Jules Dec 26 '17 at 23:06
6

In general on old computers, the whole address space will be used in some way or other, even with less than 64 KB RAM (for ROM or I/O). So you'll have to do bank switching of some kind, or you loose the ability to use original software.

That said, a common method to do RAM (or ROM) extension is "piggybacking": You solder a second RAM chip of the same type on top of the first RAM chip, bend off the CAS pin (or CS pin), connect all the CAS pins. Then you need to find whatever chip on the motherboard drives the CAS (or CS) pins, cut it, add a chip (e.g. mux) to switch between both banks, and find some I/O port to control the bank switch chip.

Here is a description with a bit more details for a Z80 system.

This can double the available RAM; if you want to quadruple it, it will get more complicated (e.g. use modern chips, desolder old chips, add an extra board and get signals from where the old chips where).

It's even easier with ROMs if you just want to add some kind of functionality (e.g. switch a character set generator, or custom system ROM): In that case, a simple physical switch instead of a more complex bank select scheme is often all you need.

4

On the ZX Spectrum (at least with some versions of the logic board) you could upgrade from 16K to 48K (by installing 32 KB of memory plus a few logic chips), and IIRC you could also install 64KB and do bank switching (where the ROM and lower 16KB of RAM are fixed, and the upper 32KB are switched).

4

Some 16K computers can be upgraded very easily, because they were designed for it. The BBC Micro Model A is one such, though you're unlikely to encounter one in original configuration any more. An additional 16KB can be added to the main RAM bank using unpopulated spaces on the motherboard, and two 16KB "sideways" slots (using banking in the $8000-$BFFF range) can also be filled with RAM via an adapter board, for a total of 64KB. All of this is supported, to some extent, by the standard ROMs for the machine.

You can also go further and fill more "sideways" slots with RAM; the BBC Master came with four as standard, and 128KB "sideways RAM" expansion boards for the original machines were commonly available in the mid-1980s. These boards usually also included an extra four sockets for sideways ROMs, for a total of eight.

  • 2
    This is an example of a machine that was designed to be upgradable: the Model A and B used identical motherboards, differing only in the chips fitted. – Kaz Aug 6 at 12:42
4

Even if the main board does not feature place for additional memory chips, in the past it was quite possible just to solder the extra row of chips on the top of the existing ones. All power, control and data buses can be shared, often just a single chip selection pin must be bent apart and separately connected.

Address resolution logic requires some tweaks to produce the selection signal for the top row. It may be necessary to cut the track of the bottom row control signal and implement a different logic for it as well.

Of course, such changes are only easy to do for somebody who understands the computer well and most likely have assembled it with own hands. Here is the fragment of the Radio86RK mainboard where amount of RAM has been doubled this way (I am the author). The chips are the Soviet clones of 4116.

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.