These programmers (and SIMMs) are available for purchase here.

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 used a custom version that allows Linux device discovery and fixes a device discovery bug on Windows. 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 at the Google Code project site.

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.


  1. 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. 🙂

  2. 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.

  3. 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.

  4. Fabian Off @ 2012-12-31 01:48

    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!!

  5. 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.)


  6. 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.

  7. 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!

  8. […] 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 […]

Add your comment now