Reverse-Engineered ROM sources for Mac 128K, 512K and Plus

Hi there,

I had a look at the available Mac Plus ROM listing the other day and thought I would give Claude Code a try at making a fully-commented source tree out of this, which would be able to be assembled again into a bit-identical copy of the ROM using modern open-source tooling.
As you can imagine, this spiraled a bit out of control, and a few(*) nights later, we have this:


This source tree builds the ROMs for:
  • Macintosh 128K
  • Macintosh 512K
  • Macintosh Plus (3 versions)
The source code is fully commented - that being said, the quality/accuracy of these comments varies wildly, so consider them with a grain of salt.
The comments and label names have been derived from whatever I could find online in terms of documentation/reverse engineering/... on this topic.

Note that I am by no means an expert in 68k Macs.
I have a few at home and every blue moon I do manage to find some time to play around with them.
This is is why I faithfully turn to the expert community in this forum to help me out with aligning the comments in said source tree with actual reality.
Feel free to fork and place PRs against this source tree, or just open an issue to point out further sources of (ideally machine-readable) information that I could ask the AI to feed into this project.

Otherwise, just have fun exploring - maybe this might be useful for someone out there some time.
It certainly was a fun exercise for me in getting AI to do something useful.

Looking forward to seeing what you think about this :)

Best,
Jon

*I know at least one person who would disagree with this.
 
Have to admit, this is pretty darn cool! It really is amazing what we can do with AI these days. Thank you for sharing this.

Earlier I posted the hack below to bypass the memory test on the MacPlus. Looking at the memtest.s in your GitHub, this absolutely lines up with what I did to trick the system into treating it as a warm boot. So maybe I could have saved the time and just asked AI how to do this :)

 
Last edited:
Have you compared the names with the MacPlusROM.lst?
https://github.com/joevt/68k-mac-ro...m-mpw-gm-3.5/ROM Maps/ROM.List/MacPlusROM.lst

Are you able to create a rom map from the compiled result that looks like MacPlusROM.lst?

The 3 Mac Plus ROMs are very similar - I think each version is just a patched version of the previous. Therefore, the MacPlusROM.lst ROM map is suitable for all versions (though the patched parts may be incorrect).

I understand that https://github.com/elliotnunn/supermario is from the Power Mac 6100 era. I wonder what parts still match those earlier 68K ROMs?
 
@joevt
1. I had a first look and started to push Claude to align the names with the linked MacPlusROM.lst, but did not find the time yet to pull this through cleanly and publish it. Aligning these names might actually just be a matter of find-and-replace? Would you be up to get this working and post a PR in the repo with this fixed?
2. Yes, I think that would be possible - that is probably most relevant for the original (128K, 512K) ROM variants?
3. Indeed, the changes are rather small. The README in the repo's root details what exactly differs where among the three Plus variants.
4. I did use the SuperMario sources as a guidance for Claude to figure out label names, context for comments, and overall functioning of this ROM.

@demik
I used Claude Opus 4.6 and 4.7 for this work in a Claude Code setup on my Linux desktop computer.

I don't want to get ahead of myself, but maybe it is interesting for some people that an extension of this codebase to also cover the Mac SE is on the way. I am thankful for the reverse engineering posted on this forum, e.g., the firmware for the RTC and ADB chip replacements.

Please always LMK if you know of further (ideally machine-readable) information sources that I could feed to the AI to improve on the documentation/naming/... of this source tree.
 
1. I had a first look and started to push Claude to align the names with the linked MacPlusROM.lst, but did not find the time yet to pull this through cleanly and publish it. Aligning these names might actually just be a matter of find-and-replace? Would you be up to get this working and post a PR in the repo with this fixed?
2. Yes, I think that would be possible - that is probably most relevant for the original (128K, 512K) ROM variants?
I think that #2 should be done first (unless you already have an address name map somewhere?). Then #1 can be compared with that using a script. This would apply to the Mac Plus since there's no Apple supplied rom map for the earlier Macs. The same source code in your repository is used for 128K and 512K and Plus so the corrections made for Plus would automatically be made for the 128K/512K.
 
Back
Top