You can buy programmers based on my design from CayMac Vintage. SIMMs are available from Big Mess o’ Wires and CayMac Vintage.
I actually completed this project a few months ago, but never got around to writing a post about it. Now I’m ready to share it!
Remember the programmable Mac ROM SIMM I created earlier? It’s nice and all, but it’s extremely annoying pulling the four chips out of their sockets and reprogramming them one by one. Having to do that over and over again will get old really fast, not to mention the fact that you need an EEPROM/flash programmer. I recognized these problems and solved them by creating a USB programmer board for the SIMMs. You take the SIMM out of the Mac, put it into the programmer’s SIMM socket, plug the programmer into a USB port on your computer, and then run a program I developed that can write or read the SIMM. The software works with Windows XP and newer, Mac OS X 10.5 and newer (Intel only), and Linux.
The ROM SIMM is compatible with the following Mac models: SE/30, IIx, IIcx, IIci, IIfx, IIsi, and Quadra 700. Anything from that era with a 64-pin ROM SIMM socket should work fine. The Quadra AV models, some of which have a 64-pin ROM SIMM socket, do not work with the SIMM. The pinout is different.
Although there aren’t currently any automatic ways to patch in a custom startup chime (this is planned though!), this board can still be useful if you want to tinker with the Mac’s ROM or make a replica IIfx or IIsi ROM SIMM to make your SE/30, IIx, or IIcx 32-bit clean.
Here’s what it looks like with one of my programmable ROM SIMMs in it:
Credit goes to olePigeon on the 68k Mac Liberation Army Forums for creating the Jolly Roger graphic used on the SIMM and the programmer board, and for providing the 64-pin SIMM sockets (which are incredibly difficult to find). Also thanks to others on the same forums for giving me PCB layout tips and helping me debug a scary problem that turned out to be a software error (thanks ojfd, bigmessowires, and Dennis Nedry!).
The board uses an AT90USB646 microcontroller as its brains. It has hardware support for USB, which is pretty cool. I also added an MCP23S17 GPIO expander chip to give me enough pins to control all of the SIMM pins at the same time (the microcontroller by itself did not have enough pins)
I had to make a small change to the ROM SIMM to make it writable. On the first revision of the SIMM, the write enable pin on each flash chip was tied directly to +5V, forcing the chip to always be in read mode instead of write mode. In the new revision, I’ve repurposed one of the +5V pins in Apple’s SIMM pinout to be the write enable pin. Because it’s +5V in Apple’s pinout, it’s always tied high when it’s in the Mac (thus disabling write mode), but when I put it in my programmer, I can control whether it’s high or low. I think that’s originally what the pin was designed for (it’s directly next to the output enable and chip enable pins, so that makes logical sense). Anyway, my point is that my original ROM SIMM (which doesn’t have the Jolly Roger picture on it) is not compatible with this programmer. I only had 12 of those boards made, so there aren’t many out in the wild 🙂
Everything I’ve done for this project is open source, from the PCB layouts to the programmer firmware to the control software. I’ve made extensive use of other open source stuff for this project, so I should probably share everything that I used for creating this project:
- Qt — a cross-platform library that I used for creating the control software.
- QextSerialPort — a Qt library for interfacing with serial ports–I originally used a custom version that allows Linux device discovery and fixes a device discovery bug on Windows, but issues were fixed in the main project at some point. The SIMM programmer appears as a virtual serial port to the computer, so that’s why I use a serial port library.
- LUFA — An extensive USB library for AVR microcontrollers. It’s really amazing. Without this project it would have been ridiculous trying to make the programmer firmware. It made it very simple to create a virtual USB serial port on the AVR.
All of the code, compiled binaries, and PCB schematics/board layouts are available on GitHub.
Important notes:
- Don’t plug/unplug the SIMM from the programmer board while the programmer board is powered. I didn’t add any protection and I’m pretty sure it would be ridiculous to try to protect against that stuff. Just play it safe and only plug/unplug the SIMM while the programmer board is unplugged from USB. It’s OK — the programmer software stays completely happy if the board is plugged/unplugged while it’s running.
- Make sure the SIMM is pressed firmly onto the board. Some of the SIMM sockets don’t perfectly fit the SIMM, but they should still work if everything’s pushed in firmly. If it’s too loose, I’ve seen some of the chips fail to read and write properly.
- If you suspect something is messed up on a SIMM, the software provides an electrical test function to make sure none of the SIMM pins are shorted to each other (with the exception of shorts to +5V — sorry, can’t test that without pull-down resistors!). You can also click a button to electronically read manufacturer and device info from the flash chips to verify that they are responding correctly.
- Just to be clear, this board is NOT capable of programming stock Apple ROM SIMMs. Those SIMMs use mask ROMs which are not programmable. If you’re careful, you may be able to read those SIMMs (do NOT try to do anything that does a write cycle, though–you may damage the programmer, the ROM SIMM, your computer, or any combination of the three). To be safe, only use the programmer with my programmable ROM SIMM.
- As I mentioned earlier, the board is also not capable of programming my initial version of the ROM SIMM that did not have the Jolly Roger graphic on it. If you have the old version of the SIMM, do not try to program the SIMM in the programmer board — it won’t work and you might damage something.
I’m sure you get asked this all the time, but will you sell a ROM SIMM and Programmer board to me? I’ll pay you handsomely. 🙂
Hi Anthony,
Absolutely! I probably should have put something like that on this post–I have a “for sale” post on the 68k Mac Liberation Army Forums. I’ll shoot you an e-mail. For anyone else who happens upon this info and is interested, leave a comment and I’ll email you.
Hello Doug,
I’ve been googling for IIsi roms for many months without success, but now I stumbled over a professional looking ROM-simm design including a programmer.
It will be the key to a IIsi rom for the SE/30 I’m working on. For me the same question as Anthony’s: are you willing to sell a simm & programmer board to me?
Assembling it I can handle myself.
Hey Doug,
I read about your incredible project on the 68kmla forums and I’d also really like to buy a SIMM+Programmer package from you.
Could you please contact me about the details at the email I submitted with this comment?
Thanks in advance and a happy new year!!
Quick question:
My Quadra 950 has an extra slot to the top-left of the 16 slots for system memory. Is this a ROM SIMM slot? Or Cache?
I can’t find information on this slot anywhere!
I notice that you mention that some motherboards have these slots with differing pinouts… has the slot on the 950 ever been tried (if that’s what it is.)
Steven
Hi Steven,
Based on pictures I’m looking at, it’s probably a ROM SIMM slot. I don’t see any markings on the logic board’s silkscreen, but I think the two large chips near it are the two onboard ROM chips, so it’s very likely. I don’t know for sure though. I do know that the ROM SIMM works in the Quadra 700, so it’s very possible that it works without any trouble in the 950. I really can’t guarantee it though. I don’t think any special hacks have been done with the 950 ROM, but it’s probably possible to change the startup chime or disable the startup memory test.
Thank you for the fast response and sorry for digging up such an old post.
The slot is also, of course, to the top-right* of the RAM slots, not left.
I’ll trust your judgement that it is a ROM SIMM slot. I cannot find any documentation anywhere else (even on the logic board, as you point out) as to what else it could be.
So, with this slot you could program your own ROM… to load an alternate OS directly? Perhaps? Otherwise, the reasons for doing so don’t seem that profitable! I love the standard 68k startup chime… the PPC chime not-so-much.
Thanks again!
[…] Brown makes ROM SIMM programmers that can write the SIMMs that'll fit into this slot. It doesn't seem that anyone, at all, on the […]
Wonderful work, many thanks! And a special thanks for providing it as open source work for noncommercial use!
In the course of restoring legacy Macs and related peripherals, system firmware seems to be my greatest challenge, especially when flash based since the data fades (data rot), ultimately rendering the firmware corrupt unless refreshed every few years. (MBAs probably love that…) I’ve essentially verified this with some old Seagate SCSI hard drives for example.
I have a Mac II with only soldered dip ROMs, and a IIx and IIfx with SIMM ROMs, all with healthy hardware and all of which chime on power up but appear to progress no further with known good SCSI storage devices or floppy disks, nor otherwise function (no bad memory chime occurs for example).
If the Mac II’s ROMs are mask type presumably thier data should be intact, so that situation seems mysterious. I’ll study it further…
For the Mac IIx and IIfx I presume the ROM SIMM data has faded, and if so a fresh firmware installation should restore system functionality. I’m restoring a Quadra 605, Centris 650, and 7200/90 with apparently identical firmware data rot issues as well. (I must complete hardware repairs for my SE-30 before I can test it.)
A key question is: When did Mac systems begin to provide direct firmware installation capability, or alternately is a catalog of which systems can do so, and which require custom external firmware installation, such as using your device and software, available somewhere?
If anyone knows please advise references for that or the latest resources or general discussion about restoring old flash based Mac and peripheral firmware.
In the meantime I’m interested in your SIMM programmer too, if you still have or fabricate any! Otherwise I’ll try to replicate one from your generously provided files, but if not too expensive a purchase would be much more practical.
Again many thanks for your terrific contributions!
PS: If anyone has or knows where any documentation or firmware for a Ricoh RO-5031E magneto optical storage device can be found, please advise! Ricoh brushed me off (as did Seagate for their old SCSI drive firmware) so I’m desperately seeking information and firmware for this device. My contact information is at AirplaneHome.com, and I’d be happy to discuss any firmware data rot related matters as well. Many thanks!
Hi Bruce,
Thanks for your kind comments! I honestly haven’t heard of much in the way of the stock ROM SIMMs losing their data. I’d be surprised if that was the problem. I’m pretty sure the chips were still mask type even on the ROM SIMMs of that era. The ROMs do have a built-in checksum test that would detect bit rot. If it fails, it should play the “chimes of death” — unless the section of ROM responsible for that behavior is damaged, of course. If you haven’t replaced the capacitors on these old machines, that’s definitely a good first step, and in my opinion a more likely problem to run into than bit rot on the ROMs. Bad leaky caps (and they all have started to leak now, due to age) cause all kinds of strange issues, including damage to traces on the PCB.
I’m not aware of any 68k Macs that were capable of having their ROM flashed in-system. That came much later in the PowerPC era. The first models that I recall being flashable were the “New World” Macs — pretty much all of the G3-based ones, except for the beige Power Mac G3 and possibly some early PowerBooks. I don’t think anything before that was in-system programmable.
Back in the 68k era, a lot of the models had the 64-pin ROM SIMM slot, and for the most part they should be compatible with my custom SIMM design. One known exception is the Quadra/Centris 660av/840av — a few of the pins got changed on those models. The slot was always populated in most of the II series models (and the SE/30), but later machines only had it populated on early boards. Your Centris 650 could potentially have the 64-pin ROM SIMM slot populated, if it’s an early enough board. Either way, it definitely has holes on the motherboard for the slot. See Rob Braun’s work on adding support for more memory to the 610/650/800.
I would recommend checking out these websites: 68kmla and TinkerDifferent. These are two fantastic communities out there with all kinds of useful information available and friendly people.
Unfortunately I don’t have any more programmers available. Even worse, it will likely be difficult to attain the parts necessary for building them right now due to the global chip shortage. You can buy pre-programmed SIMMs from bigmessowires. The cool thing is that his SIMM comes programmed with a bootable ROM disk, so you could use that to rule out SCSI issues.
P.S. your website is amazing!
[…] ago, Will from CayMac Vintage reached out to Doug Brown looking to resurrect his old Mac ROM SIMM programmer project. As a quick summary of that project, it provides a convenient way to program custom 64-pin ROM SIMM […]