BMOW title
Floppy Emu banner

Introducing the Mac ROM-inator II

Mac ROM-inator II rominatorii-front-and-back

Say hello to a new retro-computing gizmo – the Mac ROM-inator II! It will supercharge your vintage Macintosh II series or SE/30 computer, by replacing the stock ROM with a programmable flash memory module. Add a bootable ROM disk, change the startup sound, hack the icons, gain HD20 support and a 32-bit clean ROM. Go nuts! The Mac ROM-inator II is available now in the BMOW Store.

The flash ROM comes pre-programmed with a custom ROM image with the following changes as defaults:

  • Customized startup chime – major 9th arpeggio
  • ROM disk image provides a diskless booting option
  • New startup menu screen displays installed RAM, addressing mode, and ROM disk details
  • Built-in HD20 disk support
  • 32-bit clean
  • Memory test is disabled for faster booting
  • Happy Mac icon is replaced by a color smiling “pirate” Mac

The ROM-inator II is derived from Doug Brown’s original Mac ROM SIMM design, used with permission. A portion of sales goes back to Doug.

 
ROM Hacking Magic

All the early Macintosh computers have some low-level functions stored in ROM. It’s the Mac equivalent of a PC’s BIOS. These ROM routines are responsible for initializing the computer when the power is first turned on, checking to see what hardware is installed, finding an attached disk with OS software on it, and booting that OS. Even after the OS has booted, the ROM routines still handle many low-level functions like interrupt handling, keyboard support, and floppy I/O, as well as some higher level functions like drawing windows and icons. If you can control the ROM, you can control virtually everything in the computer.

Nearly every member of the Macintosh II, Quadra, and LC families has a 64-pin ROM SIMM socket on the logic board. In some cases, the stock ROM is in this socket. In others, the stock ROM is soldered directly to the logic board, but it can be overridden by a ROM SIMM in the socket. All that’s necessary is to figure how to build a ROM SIMM that’s physically compatible, and then program it with appropriate software. A few years ago, the important details were reverse-engineered by Doug Brown and others at 68kmla.org in an epic forum thread that stretched to over 1000 posts.

The ROM-inator II is a standard PCB, shaped and sized to fit the ROM SIMM socket. It comes pre-programmed with a base ROM image that’s modeled off the Mac IIsi ROM. This is a universal ROM that’s also capable of working in many other members of the Mac II family, including the SE/30, Mac IIx, IIcx, IIci, and IIfx. By patching key ROM functions, it’s possible to alter the Mac’s behavior in fundamental ways – a new startup chime, support for additional disk types, and a modified Happy Mac being a few examples. All it takes is a 68K disassembler and a lot of patience.

disassembly

The stock ROM in most Macs of this period was around 512K in size, but the Mac’s address map devotes a full 8MB to ROM. In a normal Mac, the rest of this address space is unused. The ROM-inator II uses larger flash memory chips to take better advantage of the available address space. The first 512K of flash memory is used for the actual ROM code, and the rest is available for interesting goodies like a ROM disk image. Rob Braun’s original romdrv paved the way for ROM booting, and I’ve made several enhancements, including a startup menu and support for compressed disk images.

 
Compatibility

The pre-programmed ROM image is compatible with the Macintosh IIx, IIcx, IIci, IIfx, IIsi, and SE/30. The Mac ROM-inator II module is physically compatible with any Macintosh having a 64-pin ROM SIMM socket, except the Quadra 660AV and 880AV. This includes the previously mentioned models as well as many other Quadra, LC, and Performa models. For these other models, the flash memory will need to be reprogrammed with an appropriate ROM image.

For a similar ROM upgrade for the Macintosh Plus, 512Ke, 512K, and 128K, see the original Mac ROM-inator Kit.

 
HD20 Support and 32-Bit Clean ROM

A nice benefit of the pre-programmed ROM image is to add built-in support for HD20-type hard disks, such as the HD20 hard disk emulation mode of the BMOW Floppy Emu. The Macintosh IIx, IIcx, IIfx, and SE/30 lack HD20 support in their stock ROMs, so this replacement ROM enables those machines to use HD20 disks.

The pre-programmed ROM image also makes the Mac 32-bit clean, enabling it to use more than 8MB of RAM natively without the need for special system enablers or extensions. Some older Macintosh models like the IIx, IIcx, and SE/30 have stock ROMs that are “dirty”, meaning they can’t support 32-bit addressing without ROM patches. Using the Mac ROM-inator II and the pre-programmed ROM image, the Mac SE/30 can support up to 128MB of RAM!

 
ROM Disk

ROM Disk

The built-in ROM disk is a 5.5MB bootable disk image containing System 7.1 and a collection of classic games. Using the ROM disk, it’s possible to create a diskless workstation without any physical disks attached. Once booted from the ROM disk, Appletalk file servers can also be mounted over a local network.

The ROM disk image is stored compressed in the module’s flash memory, and is decompressed on the fly as needed, in order to squeeze the largest possible disk image into the available space. This requires 1MB of RAM for caching of decompressed disk sectors, so a minimum of 2MB total system RAM is required. The ROM disk can be mounted as read-only, or as a read-write RAM disk.

 
Usage

When first powered on, the Macintosh will play a customized startup sound, and display diagnostic info about the amount of installed RAM, the current addressing mode, and the detected ROM disk type. After a moment, a startup menu will be displayed. To boot from the ROM disk as a read-only disk, press the R key on the keyboard. Or to convert the ROM disk into a writable RAM disk, press the A key. If no keys are pressed after five seconds, the Macintosh will boot normally from an attached SCSI disk, or wait for a floppy disk to be inserted.

romdrv-splash romdrv-splash2

 
Programming

The Mac ROM-inator II’s flash memory can be reprogrammed using an external SIMM programmer, providing the ultimate in customization. There’s 4MB of flash memory available for any purpose, like a custom ROM disk image, alternate ROM code, digitized sounds, user interface tweaks, or other crazy experiments. Using compression, this is enough for the base 512K ROM image plus a roughly 5.5MB uncompressed disk image. Or fill the whole space with a collection of different base ROMs, selected from a startup menu. Go crazy!

Programmer software

The SIMM programmer is currently a DIY project you can build yourself. See the schematics and PCB files, firmware, and host software on GitHub.

A second-generation SIMM programmer will be ready at the BMOW Store in summer 2016.

Happy ROM hacking!

Read 12 comments and join the conversation 

12 Comments so far

  1. MagerValp May 23rd, 2016 9:43 pm

    I’m happy to hear you implemented on the fly decompression 🙂 How’s the performance? And what cache algorithm did you pick?

  2. Steve May 24th, 2016 6:37 am

    In practice, there’s no noticeable difference between decompression on the fly vs decompressing the whole disk ahead of time. I’m sure it’s a tiny fraction slower, but the decompression time is dwarfed by the time needed for other operations, and it still feels as fast or faster than a SCSI disk on the same hardware. Cache algorithm is a simple LRU scheme with 16 entries.

  3. cb88 May 24th, 2016 6:57 am

    Cool I’m gonna pick one of these up… my SE/30’s scsi bus is not working at the moment but once I get that working this will be the ticket.

  4. Josh May 24th, 2016 9:27 am

    Are you willing to program custom ROM images if I buy one?

  5. Steve May 24th, 2016 12:12 pm

    For custom ROM images, send me a private message and we can discuss. You may be better off waiting for the programmer hardware before experimenting with custom images, though.

  6. Wesley May 24th, 2016 12:49 pm

    You mention possible compatibility with some LC models…yet the ones I’m familiar with I’m nearly positive have no such slot…the LC/II/III/475…? Or perhaps the compatible models are all later/different ones I’ve not worked with…

  7. Steve May 24th, 2016 2:49 pm

    Good catch. I may be wrong about the LC series, sorry. There’s some theoretical interoperability between LC ROMs and other Macs, but at least the LC II and LCIII boards I have here lack the ROM socket. Maybe some of the later LC models have it? I’m trying to find where I originally read this.

  8. Wesley May 24th, 2016 5:19 pm

    Without pulling out one of mine (going by pictures found online), it appears that the LC and II have four ROM chips. Looks like the LC and maybe some LCII\’s are socketed, the others soldered directly. The LCIII appears to have two larger chips. Oh well…would be fun to play with your ROM-inator on it. Maybe I can yet resurrect a IIcx I have here… 🙂

  9. Thomas May 28th, 2016 1:52 am

    Great job!! But why limiting the chips on the board to 4Mb since the mac can adress 8Mb of ROM?

  10. Steve May 28th, 2016 5:42 am

    The memory size was a cost/benefit tradeoff, rather than any technical limitation.

  11. Tristan January 7th, 2020 7:26 pm

    If the physical connection wasn’t an issue, would the rom work on the Macintosh II?

  12. Peter February 26th, 2020 5:12 pm

    I have an LC 475 that has the ROM SIMM socket BTW.

Leave a reply. For customer support issues, use the Contact page instead of comments.