Kind of hard to believe it’s been a year since I last posted. I’m not very good at blogging, clearly. I figure it’s time to give some updates on what I’ve been working on.

My last post was about my Laser 128 memory expansion card. After more-or-less finalizing that, I sat on it for a while, but eventually had a few folks stumble across it looking to purchase. I ended up selling a couple, but discovered that it’s a real pain to deal with cards with nearly 40 ICs, and even if I sell it in kit form, I prefer to pre-test all the DRAM chips, since 30+ year old RAM chips don’t always work right, and that’s a lot of work.

So, someone put me on to the idea of building a modernized version of the card that uses SRAM. And so, I did. It was also a good excuse to play around with CPLDs, which I’ve also been using in some other projects I’m not ready to announce.

"First SRAM based memory card"

That’s the SRAM in the top left (actually there is a second SRAM chip on the back of the board), the CPLD in the middle, and a standard ‘245 transceiver below that to ensure that the 5V Laser can talk to the 3.3V SRAM. All of those extra headers were for debugging, although I ended up not needing any of them.

The CPLD does the work of listening to the address bus and the RAS/CAS strobes, and translating that into the addressing that the SRAM expects. Otherwise, it’s a pretty simple design. It actually worked more or less right off the bat. Actually, I’m not sure if I ever tested it under acceleration, but I soon decided that I wasn’t really happy with this version of the card.

Someone put me on to the idea of including a clock on the card. At first, I didn’t see how that would be possible. But then I remembered that this thing exists.

"RamExpress II+"

This is the Apple IIc RamExpress II+ from A2Heaven. It adds 1MB of SRAM plus a clock to the Apple IIc. The IIc exposes its expansion RAM with a slinky-style interface, same as the Laser 128, although it’s rather different electrically. However, this basically proved that you can expose a clock through the slinky memory interface, and because the RamExpress II+ is itself basically an Applied Engineering RamExpress plus an AE DClock, I could probably make use of AE’s old driver.

"Second SRAM based memory card"

After a while, I came up with this. You can still see the SRAM and the CPLD, although now there’s only one SRAM chip. It’s also a slower (but still plenty fast for the Laser), low-power SRAM, so that it can, in principle, be used as a RAM disk that persists over a power cycle. The transceiver is still there, but now it’s on the back of the card.

Unfortunately, it didn’t work. I tried a bunch of things, and couldn’t get it to work. I deeply regretted not adding all of the debugging headers to this version of the card, and ended up sitting on it for a couple of months.

Eventually I came back to it, and after talking to some other folks, I just… assembled the next card. They come from the PCB factory in batches of 5, but I’d only tested one of them. And wouldn’t you know it, the second one worked. I’m really not sure what happened to the first one- maybe it was broken from the factory, or maybe I accidentally killed it while assembling. In any case, the design seemed sound.

I did run into some fun getting it to work in accelerated mode on the Laser 128EX, but fortunately that proved not too difficult to solve. I believe it comes down to the timing of when the Laser shuts off the enable signal to the ‘245 transceiver versus when it shuts off the enable signal to the RAM. I had to make sure that the CPLD terminated the write cycle early and the read cycle late, and then all was well.

There’s one thing I’m still not happy about with this card, and it’s that the clock seems to run a little slow. About 7 seconds per day, if my estimations are correct. This isn’t terrible, but it should really lose less than 2 seconds per day if Dallas’ old datasheets for the clock chip are to be believed. I suspect (though have not proven) that this is due to a slight mismatch in the ESR of the crystal resonator I used. I’m probably going to do another run of prototypes that use a through-hole crystal instead of a surface-mount one, so I can try different crystals while testing.

Once that’s sorted, the card should be more-or-less ready to be productized. I can have these ones basically fully assembled at the factory, so I should be able to produce them much more easily. There’s probably not a huge market for them, but I know there’s at least a few of you out there that are interested.

Renée Harke

I'm a software engineer, currently focused on iOS development.

I also enjoy C++, OpenGL, and cross-platform development.

In my free time, I like to dabble in retrocomputing, particularly the Apple II.