Re: external ram expansion modules for 16k 264 series machines

From: HÁRSFALVI Levente <>
Date: Wed, 01 Aug 2012 22:41:38 +0200
Message-ID: <>
On 2012-08-01 16:49, Gerrit Heitsch wrote:
>> Well, first, the extra bank would have to be mirrored at $c000-$ffff
>> (otherwise, writes to $fffc...$ffff end up at $3ffc...$3fff instead of
>> $7ffc...$7fff which causes problems on a supposedly 32k-spec machine).
> Unless you kill _CAS for everything that is not $0000-3FFF. Then there
> would be no RAM underneath the ROM and no mirroring. Then you use A15
> low / A14 high to enable the module. Not sure if that would cause a
> problem, never tried it.

The problem is the original design relying on ram to be present in the
whole 64k address space. (That is, 4 mirrors of 16k, 2 mirrors of 32k
and obviously 1 single page of 64k on 16k / 32k / 64k machines

The Kernal's memory size calculator routine (which is called as a step
of the reset sequence) actually works by checking whether a sequence of
bytes, written to somewhere above $ff40, gets mirrored above $7f40 and
$3f40 (resulting in 28661 or 12277 bytes free for Basic, respectively -
or 60671 if there was no match).

Also, ram needs to be mapped to $fffc...$ffff in any case (else, there'd
be no way to set the IRQ and Reset vectors with ROM mapped off, which
kills backwards compatibility; defining custom IRQ and Reset is
frequently done by games capable of running even on the stock 16k machine).

> Yes, but the thing is, only one of the two has a 74LS73 on board, the
> other one seems to achieve the same result with a 74LS00 (4 x NAND) and
> a 74LS133 (on 13 input NAND) plus some diodes.

Hmmm, that's interesting indeed. Possibly a different trick? ...Would
definitely worth investigating.

> The datasheet for the MB81416 says that CAS has a minimum pulse width of
> 75ns (for the 150ns part) and since CAS also controls the output
> drivers, a short enough glitch might not cause any problems. Still a
> very dirty hack.


>> First, we seem to have an exception here (the C116 board I used for the
>> tests uses HM48416AP-12 ie. Hitachi drams, datecode 8432).
> Hm, OK... another theory shot to hell... Not all 16Kx4 DRAMs were
> compatible with the refresh supplied by TED, the Hitachi obviously were.

Haven't known about problems concerning 16k*4 rams vs. TED memory refresh.

> I see no other way than to have the drivers fight it out with what's on
> the board. Unless the installation manual had you remove a signal from
> the internal RAM (like _CAS or _OE, assuming the RAM interprets the open
> input as HIGH) prior to installation. I remember the first 64KB
> expansion from Kingsoft, that one went into the TED socket (which made
> it easy to intercept _CAS and disable the original RAM) and back then it
> was considered impossible to do a 64 KB expansion on the expansion port
> without removing the internal RAM.

I seem to remember problems that you're talking about (having to modify
the machine in order to get an external memory expansion module to work
and such). Never seen that in practice, though. Most (all) machines I've
seen so far were either stock 16k machines, or internally expanded
machines (using either 64k*4 bit rams or a bank of 4164s on a

There has been a memory expansion module test article in a very early
issue of Commodore Újság (literally, Commodore Magazine), the official
mag of the Hungarian Commodore Association of the '80s. , page 7.
In short, they tested five memory expansions, three externals (including
the make that I have) and two internals. They don't mention the
suggested remedy of incompatibility problems, ie. cutting some traces on
the mainboard. (They do list, however, the overall current consumption
of the stock machine, the internally expanded machines, and stock
machine + external modules, which might possibly be interesting; it's
762mA, 778mA, 878mA, 904mA, and 958mA, respectively (...although, we
don't know anything about the internals of these expansion modules)).
Interestingly, the very next article (from page 10) is about a "64 Kbyte
kit", that is, a DIY daughterboard with a bank of 64k*1 bit drams, and
instructions of how to install it in a C16.

I've just set up some triggers so that I'd know whenever one of the
"simple" memory expansion modules pops up at some auction sites. We'd
just need to know that detail someday... at least, I'm eager to know that.


       Message was sent through the cbm-hackers mailing list
Received on 2012-08-01 21:00:06

Archive generated by hypermail 2.2.0.