68kMLA Classic Interface

This is a version of the 68kMLA forums for viewing on your favorite old mac. Visitors on modern platforms may prefer the main site.

Click here to select a new forum.
djMEMC (Q610 & Q650) ROM patch for ALL RAM SIMMs
Posted by: frontein1 on 2026-09-10 21:58:08
BBraun first provided the patch needed to support large SIMMs (64MB) for Macs with the djMEMC memory controller. Then earlier this year he provided the MMU patches needed to address over 512MB. This was excellent work!
The difficulty with supporting both small and large SIMMs is really a DRAM row/column addressing geometry issue. The djMEMC sizing implementation in the Apple ROM was limited as it was coded to only support one mode only. BBraun's original large-SIMM patch effectively forces the symmetric mode. That works for 64MB banks, but it can cause smaller asymmetric banks to size incorrectly.

Bit 8 in each bank of the djMEMC selects between two addressing modes.
  • With bit 8=0, djMEMC uses the symmetric addressing mode needed to expose a true 64MB 12/12 bank.
  • With bit 8=1, djMEMC uses the asymmetric compatibility mode Apple normally used for smaller banks. Apple originally hard-coded this bit as 1 in their sizing routines. This was BBraun's original find, changing this bit to 0 during sizing would discover 64MB banks.
The best solution is to use both djMEMC modes during memory sizing. Here is the interesting hint from Apple's own SizeMem.a code:

; Hysterical Note: (BG - 92 June 10)
; The High-End HW team says that it is entirely unlikely that we'll
; see 64MBit parts any time in the near future, and it's unlikely that
; from power/voltage requirements that our boards would be able to
; support them. So instead of writing the Sizing code to make two passes,
; one with bit 8 ZERO to check for 64MB banks, then a second pass for
; non-64MB parts to see whether or not they are there, we simply assume
; they are NOT there and set bit 8 front and make a single pass.

After a bunch of poking and testing, I think I have this working. Here is the 2-step process:
  • First Pass: All banks are first sized normally in asymmetric mode. This safely discovers populated banks and sizes them up to 32MB.
  • Second Pass: If the first pass sizes any banks as exactly 32MB, they are potential candidates for real 64MB hardware. These candidate banks are then temporarily re-sized in symmetric mode using Apple's original SizeBank routine. If a candidate returns exactly 64MB, it is promoted to a 64MB bank and left in symmetric mode. Otherwise the original configuration is retained: 32MB in asymmetric mode.
I have tried just about every configuration of RAM SIMM size and symmetry that I have; including 32MB asymmetric SIMMs installed with 64MB symmetric SIMMs. This appears to be working just fine for me now with any combination. Give the attached ROM a try and let me know if you have any issues.
Posted by: CptSkyfox on 2026-09-14 22:58:13
You guys have done awesome work, patching the ROM to get the Wombat's memory controller to recognize maximum capacity. This is really impressive work.
Posted by: croissantking on 2026-09-15 04:17:13
Wow! You've got 512MB working in a Quadra 650? That's amazing.

I think others had previously struggled to get more than about ~320MB working reliably.
Posted by: joevt on 2026-09-15 16:25:56
I can get 3.25 GiB of RAM on an emulated TNT/PowerSurge Power Mac by modifying the ROM and the Hammerhead memory controller in DingusPPC (normal limit is 1.625 GiB). For MPC106 memory controller (used by Beige G3, iMac, B&W G3), I modified the emulation to allow 2 GiB of RAM (normal limit is 1 GiB). For a real Mac, modifying the ROM is relatively easy. I wonder if we'll ever see replacement memory controllers (to allow more RAM or different kinds of RAM).
Posted by: frontein1 on 2026-09-15 19:49:46
For the ROM I modified here, I only kept BBRAUN's second patch for the tables. For the first patch, I instead implemented the dual pass sort-of how Apple originally envisioned. So this might be the first djMEMC Mac that can support any size of symmetric and asymmetric memory at the same time.

Nevertheless, my very first computer as a teenager was a Centris 610 with only the on-board 4MB; hard drive was 40MB. Imagine having a machine with 520MB of RAM back then. That would have been bragging rights!
1