Skip to main content
Home Forums IIci with Quadra 650 IIci with Quadra 650
Thread

IIci with Quadra 650

IIci with Quadra 650 Hardware 38 posts May 18, 2012 — Oct 2, 2012
Haha, that's great! Another model I can add to the compatibility list :-) I think I have one of those here too...

The Quadra 840av's SIMM pinout is slightly different. I wonder at what point it changed...

That's awesome that you were able to hack the ROM for that!

With a fairly minor tweak to the ROM (plus disabling the ROM checksum test, and RAM test), I've got the Centris 610 seeing 128MB SIMMs (the 610 only has 2 RAM slots)
That is really cool. Is it possible to explain in simple terms what you changed in the ROM to make it work?

I'm kind of surprised that the lack of 12 X 12 support was fixable in firmware. Why in the world didn't Apple put that in to begin with?

Yes, the Q840AV is different. It seems to have a memory control system similar to the later PM7100 and PM8100. At least, it behaves similarly, treating 64MB and 128MB SIMMs as 1/4 of their capacity. Apparently, it only has support for 11 X 11 memory banks.

Hmmm. The PM6100 has support for 64MB and 128MB SIMMs and used the same ROM and chipset as the 7100 and 8100. However, on the 7100 and 8100 the upper address lines run through some kind of CPLD before going to the ROM slots. So, I do not think that the memory addressing in the 7100 and 8100 can be changed with firmware, but who knows.

But, if the 840AV does not use that CPLD arrangement, then perhaps all that's needs is the same tweak that changed the memory addressing in the Q610 to 12 X 12.

Here's my understanding, which is by no means complete or authoritative...:

The ProductInfo tables allocate address space for 64MB/bank with 2 banks per SIMM slot.

When determining the size of memory available, the ROM starts at address 0 of each bank, probing to determine the amount of memory in each bank, assuming each bank is contiguous. However, the djMEMC's per-bank DRAM configuration register requires a different value for >32MB SIMMs, and the ROM doesn't iterate the probe twice, with the two different configuration values. It just iterates once, detecting <= 32MB in each bank. So when we plugin a 128MB SIMM, it finds 32MB in the first bank, skips the 2nd 32MB, finds the 3rd 32MB in the second bank, and skips the 4th 32MB.

My hack was to just change the value written to every bank's DRAM config register to only work in 64MB. So, it really only detects 64 or 128MB SIMMs. A more complete solution might be to iterate once looking for <=32MB in each bank, then iterate again looking for 64MB in each bank, and making sure to set each bank's configuration register appropriately for what was found. But that'd require restructuring the logic of the code (and moving it to make more room), rather than just messing with an existing value, and I'm not really sure that's worth the effort.

This code is the same for all of the djMEMC based machines, so as long as the ROM SIMM works in the 650 and 800 machines, it seems pretty easy to get 520MB working in them.

Disabling the RAM test was very helpful. I didn't disable it initially and thought my change didn't work, since the machine sat there without video so long at power on.

Thank you for the explanation. Interesting. I wonder what that value in the configuration register is representing. It sounds like it has one value for all of the bank size possibilities up to 32 MB, which should encompass several different possibilities and a different value for the single bank size of 64MB.

BTW, every 32MB SIMM I've seen is actually a 2-bank X 16MB/bank. Does the first configuration value actually detect up to 32MB per bank or just up to 16MB/bank?

I haven't messed with smaller SIMMs, but with the stock value, it was seeing the 128MB SIMMs as 64MB, so I'm kind of guessing that's 32MB/bank. I'm not really sure though.

FWIW, I checked the Q605 ROM, and it just does one iteration over the banks, always leaving the value the same as what I used to make 128MB SIMMs work. Additionally, I realized for my mod, a full 260MB is being recognized, which means the builtin 4MB is still being seen with the same configuration value as the 128MB SIMMs. Now I'm really wondering why it ever was the original value.

Now I'm really wondering why it ever was the original value.
Maybe it was an arbitrary decision because Apple didn't want these machines to be perceived as more capable than the higher-end models.
Nonetheless, it sounds interesting!

c

Well

Additionally, I realized for my mod, a full 260MB is being recognized, which means the builtin 4MB is still being seen with the same configuration value as the 128MB SIMMs. Now I'm really wondering why it ever was the original value.
That is truly cool. It would be worth getting some of Doug's SIMMs just to use your firmware modification and get the 72 pin SIMM Quadra family to their full capacity.

I'm trying to stick to a strict, "Only buy it when you are ready to actually use it" policy right now, so I won't be doing that until I clear other projects, like the PEX DIMM. Little League baseball season has started up again...

In case you run out of things to do.... :-) You might take a look at VRAM limitations in some of these machines. I think that may be more closely tied to the hardware, but then, I would not have guessed that you could fix the RAM limitation in firmware.

mp.ls