Need testers: “GR8RAM” 8+ MB Slinky/RamFactor RAM card for Apple II series

Zane Kaminski

Administrator
Staff member
Founder
Sep 5, 2021
372
610
93
Columbus, Ohio, USA
Hi everyone. I’ve got another nearly finished project here. This one almost done! I have boards in hand and they have been working in the lab for almost 6 months. I need some testers who have a variety of Apple II family machines to test the cards out on.

For those who don't know, "Slinky" or "RamFactor" RAM is a large memory expansion card standard for the Apple II family that presents itself by default as a RAM disk. This card can provide up to 8 MB (actually 16 but there is a bit of a caveat) of Slinky/RamFactor RAM. We call it the GR8RAM ("great RAM"), in reference to the 8 MB of RAM, a rather capacious amount on an Apple II. (The name came about as one of many in a series of puns about product names and RAM capacity but it stuck...)

Anyone interested in testing? Slinky RAM is particularly applicable to the //e but I’m looking for users who have at least one of all three generations of the Apple II: ][+, //e, and IIgs. Unlike the Mac Classic RAM card I posted about, these are all assembled so no need to put it together. I’m hoping the testers for this card can sort of put it through its paces in multiple machines running multiple apps, particularly in AppleWorks (maybe the most demanding client of Slinky RAM) but also as a RAM disk. Also to test you’ll need a PC capable of running Windows XP through 10 (not sure about 11) in order to run the programmer software required to update the controller CPLD on the card if necessary.

Board photo (not a rendering!):
1637042845949.jpeg


Source is available on the Garrett’s Workshop GitHub under the usual dual commercial/noncommercial license. Card will be for sale once I'm done with testing. Price will be $45 including shipping to anywhere in the United States.

How it works
There are basically two parts to a Slinky/RamFactor-type RAM. First there is the driver ROM that makes the card look like a ProDOS RAM disk. Second and most importantly is the RAM interface itself, accessible through the 4-register address low/med/high/data interface. You write addresses into the three address registers (totaling 24 bits, i.e. 16 MB) and then you can read or write the data register to perform a read/write access to that address. After any access to the data register, the address register is automatically incremented by the RAM card.

The driver ROM is implemented with a “ROM-in-RAM” architecture. We have 32MB of RAM onboard for just an 8 MB (16 MB experimental mode) RAM card. Some of the extra RAM is reserved for storing the ROM. The ROM is stored in an SPI flash memory. At boot, the contents of ROM are copied into RAM and accessed from there. Of course, the “ROM RAM” is effectively read-only so there’s no functional difference between the ROM-in-RAM architecture and a regular Slinky/RamFactor card with a real parallel ROM.

The RAM controller doesn’t run at 7.159 MHz Apple II bus speed; too slow to get the SDRAM access completed in time to return data to the 6502. Instead we have a 25 MHz crystal oscillator on the board which provides the SDRAM clock. The card synchronizes the start/end of PHI0 cycles to the SDRAM clock. Once a PHI0 cycle has started, the controller checks the /DEVSEL, /IOSEL, and /IOSTRB lines to see if a ROM (in RAM) or RAM access is being requested. If so, the correct sequence of ACT, RD/WR, NOP, PC commands are issued to the SDRAM. Write data is sent from the Apple II data bus asynchronously to the SDRAM data bus. On the other hand, read data from the RAM is registered into the CPLD for transmission back to the Apple so that the SDRAM banks can be precharged and the SDRAM placed into clock disable to save power, rather than the SDRAM holding the output data for the slow Apple by inhibiting the clock before precharge.

There’s plenty of extra space in the ROM-in-RAM flash so what would be amazing is if the contents in RAM could be pre-loaded from flash on power-up. (Could add another DIP switch for this.) Unfortunately the CPLD is completely full and there’s no room to implement this feature. I think more than 230 of the 240 logic elements in the CPLD are used and I have not had success so far paring down the design. Slinky RAM requires a large 24-bit address counter that gets incremented after every RAM access and this takes a bunch of logic elements. It would be awesome to be able to load a disk image into RAM right at boot so I will continue to ponder ideas about how to reduce the logic footprint of the design.

Why is 16 MB considered experimental? Not for hardware reasons; the hardware is stable in my machines and there’s nothing profound about the 16 MB mode. It’s just that software was never really written for RamFactor cards so large. I have seen some programs use the high bit of a 24-bit address to store some information so they tend not to work right with more than 8 MB of RAMFactor/Slinky RAM.
 
Last edited:

mg.man

Tinkerer
Oct 20, 2021
124
62
28
Ardley, UK
I'll be happy to try this out in my IIgs... I'm using my FloppyEMU as a SmartPort HD, so it might be interesting to see how they co-exist?
 

eric

Administrator
Staff member
Sep 2, 2021
941
1,540
93
MN
scsi.blue
Interesting project! I only have a //e and IIgs so not a wide variety but willing to test if needed.
 

Patrick

Tinkerer
Oct 26, 2021
434
1
224
43
i have a ][+ , //e plat, and IIgs i could test this with. However, i'm very noob with apple 2's in general and would need some good hand holding on what to test it with. (and how to use it). So it might be fair to say i may not be the best candidate for testing.

It would be a good excuse for me to set those machines up tho. currently they are either in box's downstairs or in pieces in mid restore projects. (i actually built a ][+ from a kit tho. so that might be kinda neat to test it on)
 

Zane Kaminski

Administrator
Staff member
Founder
Sep 5, 2021
372
610
93
Columbus, Ohio, USA
Hi again, sorry for not getting back to you guys earlier. I think we have to limit testing to people with at least two of the three supported machines--][, //e, and IIgs to make sure we're getting good test coverage on all the supported machines. So @eric and @Patrick I'll message you guys to get your addresses and then I'll send out the cards.
 

eric

Administrator
Staff member
Sep 2, 2021
941
1,540
93
MN
scsi.blue
I got mine in the mail a bit ago, thanks! What are some specific tests you'd like to have done?
 

Zane Kaminski

Administrator
Staff member
Founder
Sep 5, 2021
372
610
93
Columbus, Ohio, USA
Well... I do also have a //e Enhanced I just picked up - so let me know if you need another multi-//-owner tester... :)
Okay I’ll bite. PM me your address and I’ll send you one.

I got mine in the mail a bit ago, thanks! What are some specific tests you'd like to have done?
Okay sorry for not getting back to you guys earlier. The first order of business is just to run the self test. Steps are pretty straightforward:
  1. Install the card into any free peripheral slot (so not the aux or memory expansion slots) except for slot 3 on the IIe/IIgs or slot 0 on the II/II+. On the IIgs you will have to either put it in slot 7 or disable the relevant onboard virtual slot hardware in the control panel.
  2. Boot into BASIC, then do “CALL -151” to enter the machine language monitor.
  3. In the monitor, you wanna jump to an address of the form Cn0A where n is the slot number you installed the card into. So if you have the card in slot 7, execute the command “C70AG”. Don’t forget the G at the end. That stands for “go” as in jump to that address.
  4. At Cn0A is the self-test program. After jumping there it will run endlessly until it fails or you reset the machine.
Best thing to do is to let this run for a while and see if it fails. Each of the different firmware modes (1/8/16 MB and “Slinky”/“RAMFactor” firmware) has slightly different idiosyncrasies as to how the address register works so it would be great if everyone could spend some time testing each of the four firmware modes on each of their machines. Doesn’t need to run for too long; the card is quite cool so there isn’t any need for long-term testing to find heat-related issues.
 
Last edited:

eric

Administrator
Staff member
Sep 2, 2021
941
1,540
93
MN
scsi.blue
All tests passed on the IIgs for all RAM sizes. The IIe passed 16, 8, 1(RAMFactor) but then the PSU started smoking! Smells like a RIFA.

Well putting it back to 16mb and seeing if GS/OS works.
 

Zane Kaminski

Administrator
Staff member
Founder
Sep 5, 2021
372
610
93
Columbus, Ohio, USA
All tests passed on the IIgs for all RAM sizes. The IIe passed 16, 8, 1(RAMFactor) but then the PSU started smoking! Smells like a RIFA.

Well putting it back to 16mb and seeing if GS/OS works.
Uh ohhh, hope you can get it sorted.

Anyway 16 MB mode is kinda finicky; I think it works fine in hardware but almost every app I’ve tried doesn’t play nice with 16 MB. If GS/OS doesn’t detect the card as a disk device with it set to 16 MB but 8 MB works then I oughta switch the 16 MB mode to do like 15.75 MB or something. Let me know if GS/OS sees it in 16 MB mode and if not I’ll make the 15.75 MB change and we can all do an update.

Oh and by the way, we have a draft manual available here: http://www.garrettsworkshop.com/files/GR8RAM/GW4205AManual.pdf
Maybe I should have posted this in the first place lol...
 

Patrick

Tinkerer
Oct 26, 2021
434
1
224
43
i just started running the test on my //e plat.

it stopped after 3 passes

Code:
PASS: 03     TESTING ...8
*
note i hand typed in that. but i think its right

did that mean it failed on the 3rd pass ?

i'm running it while i also do my day job. so if i leave it running for a long time its just because i'm also working. :p

--

EDIT: i ran it a second time and it got to pass 4 no problem. ¯\_(ツ)_/¯

I wonder, should we setup some ... spreadsheet or something so we can record our results?

or should we just report back on this thread if there was a failure. and assume its fine if no reporting?
 
Last edited:

Zane Kaminski

Administrator
Staff member
Founder
Sep 5, 2021
372
610
93
Columbus, Ohio, USA
i just started running the test on my //e plat.

it stopped after 3 passes

Code:
PASS: 03     TESTING ...8
*
note i hand typed in that. but i think its right

did that mean it failed on the 3rd pass ?

i'm running it while i also do my day job. so if i leave it running for a long time its just because i'm also working. :p

--
Hmmm yeah that’s right, it failed on the 3rd pass. Can you reproduce it? Sometimes this can happen from a dirty contact or from jiggling the cards too much.
 

Patrick

Tinkerer
Oct 26, 2021
434
1
224
43
Hmmm yeah that’s right, it failed on the 3rd pass. Can you reproduce it?
i ran it directly again. just typed in the command a 2nd time. and it got to pass 4 when i stopped it.

maybe it was a dirty contact or something. or maybe i bumped the table.
 

Zane Kaminski

Administrator
Staff member
Founder
Sep 5, 2021
372
610
93
Columbus, Ohio, USA
I wonder, should we setup some ... spreadsheet or something so we can record our results?
Maybe but I find that the problems get fixed and then it’s kinda cumbersome to maintain the spreadsheet. Spreadsheet is better in the release candidate stage when the gizmo is almost done in order to find if there are any “compatibility caveats” that need listed in the manual.

i ran it directly again. just typed in the command a 2nd time. and it got to pass 4 when i stopped it.

maybe it was a dirty contact or something. or maybe i bumped the table.
I’ll test more on my //e and see if I can reproduce this, otherwise it might be a problem with your machine. I had one particular issue with my //e which was present for a long time but only caused problems in certain cases so I thought it was a problem with some of the cards I was using. I’ll investigate some more and see what I can figure out
 

Patrick

Tinkerer
Oct 26, 2021
434
1
224
43
Could be. I've ran self diagnostics and RAM tests But i am unable to reproduce this a second time..

i have a CFFA3000 in there that always boots and really wants to boot total replay. So while its at the CFFA3000 screen, I perform a control + reset to get to a dos prompt. (before it actually boots to a disk)
Maybe that contributed the problem? Maybe something was wonky in the memory or something? idk ¯\_(ツ)_/¯

Maybe its just a transient problem. idk how much time we should spend on it. after this, I have tested all the modes and they all run the test from the card fine. even the 16MB mode. with at least 4 passes each. and again was unable to reproduce this failure mode.
 
Last edited:

Zane Kaminski

Administrator
Staff member
Founder
Sep 5, 2021
372
610
93
Columbus, Ohio, USA
Oh wow... SO sorry here - I never saw this. (my excuse - my company was acquired on 11th Jan, so this was a pretty turbulent time!). It looks like you're now close to shipping, so best of luck with these!!
Haha no big deal. I have been putting this card off for years. I think I first announced that I was developing it something like three years ago. It has been (partially) redesigned four times....

First version with legacy DRAM and CPLD... cancelled this prior to release because legacy components are unprofessional to use unless absolutely necessary:
1660132120658.jpeg


Next version with modern components (never fabricated):
GR8RAM.png


Subsequent iteration using serial (8-pin) flash instead of parallel (48-pin) flash, plus other changes:
1660132099703.jpeg

This one was really interesting. It had DC-in to preserve the RAM contents during power-off so you could basically use it like a hard disk or battery backup RAM. It also had the ability to sense when the +5V was falling (indicating an imminent power off), generate an interrupt, and then copy the entire computer state to RAM using the few remaining milliseconds before the CPU stopped working. Then when power was applied again, it could interrupt the system before boot and restore all the state. It could also detect when the reset button was pressed alone (normally this does nothing; only ctrl+reset resets the system) and put up a menu or something. Credit goes to the great Jeff Mazur for the RAM keeper and menu button concept. You can see his 80's-style implementation of this in the CKeeper card for Apple IIc. I think he also had a similar card for Mac SE or SE/30. These features were really promising but they jacked up the cost of the card too much. There was all this analog circuitry on the right side of the board and it required a much larger FPGA than we had initially estimated to put all the features in at once. We had to test out all the features separately since we could not fit them in the FPGA all together.

Hence we reduced it into what we actually hope to ship:
1660132005999.png


As for all the features of the second-to-last prototype, once we get our Apple II products back in order we can tackle some kind of all-in-one storage product that delivers most of the benefits of the (slightly awkward) DC-in architecture but using flash storage.

Suffice to say, I've been putting the release off for a long time haha so no big deal.
 
Last edited:

Zane Kaminski

Administrator
Staff member
Founder
Sep 5, 2021
372
610
93
Columbus, Ohio, USA
My latest "innovation" on this project is this little JTAG update gizmo:
Screen Shot 2022-08-10 at 8.20.53 AM.png

Same circuitry as I have discussed in the WarpSE thread. And they're only $1.68 each assembled from JLCPCB (in qty 50)! I think it's the cheapest and also the slowest JTAG programmer in existence hahah... It only works with our software and it could take 15 minutes to update the FPGA but it's good enough. One of these will come with every GR8RAM (and we will solder the opposite side connector on the board too) so any mistakes in the FPGA programming can be corrected in the future. So the release is imminent and the need for extensive testing is bypassed! Woohoo!
 
Last edited:

mg.man

Tinkerer
Oct 20, 2021
124
62
28
Ardley, UK
Very cool *and* professional! I'm still happy to test one in my "]["s, I have a //e, and 2 x IIgs' (one a ROM3 the other a ROM1 (I think)). I also have a couple of @skate323k137's TJBoldt cards in addition to my FloppyEMUs, so can check for any issues with those. Happy to cover shipping too if that helps.
 
Last edited:
  • Like
Reactions: skate323k137