mac-rom-simm-programmer/README.md

120 lines
7.4 KiB
Markdown
Raw Permalink Normal View History

# Description
This project is a bootloader and firmware for a Macintosh ROM SIMM programmer, along with control software for Mac OS X, Windows, and Linux. The ROM SIMM is compatible with the SE/30, IIx, IIcx, IIci, IIfx, and IIsi.
This particular repository contains the main firmware that runs on the programmer board. There are two variants of the firmware that are built from this source code:
1. The firmware for [my original programmer](https://www.downtowndougbrown.com/2012/08/mac-rom-simm-programmer/), the [Big Mess o' Wires programmer](http://www.bigmessowires.com/mac-rom-inator-ii-programming/), and the [CayMac Vintage revision 1 programmer](https://ko-fi.com/s/6f9e9644e4). These programmers use the Atmel/Microchip AT90USB646/1286 AVR microcontroller. The current compiler version used with this version of the firmware is avr-gcc 4.8.2. Using a different version of gcc may result in worse performance due to some very tight optimizations performed on this project to decrease programming time.
2. The firmware for the [CayMac Vintage ROMmate-2](https://ko-fi.com/s/d6e7e4494d), which uses the Nuvoton M258KE3AE ARM Cortex-M23 microcontroller. The compiler that has been tested with this firmware is [ARM GCC 6-2017-q1-update](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads/6-2017-q1-update).
# Downloads
Binary downloads can be found at the following links:
- [Firmware](https://github.com/dougg3/mac-rom-simm-programmer/releases)
- [Control Software](https://github.com/dougg3/mac-rom-simm-programmer.software/releases)
- [Bootloader](https://github.com/dougg3/mac-rom-simm-programmer.bootloader/releases)
# Repositories
The project is spread over a few repositories. Some of them have a wiki.
| Repository | Repository location | Wiki location |
| ------------------------------------------------------ | ---------------------------------------------------------------- | -------------- |
| Programmer Firmware (AVR microcontroller) | https://github.com/dougg3/mac-rom-simm-programmer | https://github.com/dougg3/mac-rom-simm-programmer/wiki |
| Bootloader (AVR microcontroller) | https://github.com/dougg3/mac-rom-simm-programmer.bootloader
| Programmer Software (Windows/Mac/Linux) | https://github.com/dougg3/mac-rom-simm-programmer.software | none |
| Windows Driver (.inf file, not needed on Windows 10) | https://github.com/dougg3/mac-rom-simm-programmer.windriver | none |
| CAD for programmer, along with 2 MB and 8 MB SIMM PCBs | https://github.com/dougg3/mac-rom-simm-programmer.cad | none |
| Mac ROM patcher | https://github.com/jpluimers/macrompatcher/ (from https://code.google.com/p/macrompatcher) | none |
# Firmware compilation instructions
## AT90USB646/AT90USB1286
This firmware is used on my original programmer, the BMOW programmer, and CayMac's original programmer.
As mentioned earlier, this is an AVR project that is currently optimized for avr-gcc 4.8.2. It can be built using either CMake or Eclipse with the [AVR Eclipse plugin](https://avr-eclipse.sourceforge.net/wiki/index.php/The_AVR_Eclipse_Plugin). To build with CMake, make sure avr-gcc is in your path, and then run:
```
mkdir build_avr
cd build_avr
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-avr.cmake ..
make
```
## M258KE3AE
This firmware is used on the CayMac ROMmate-2.
Tested with [ARM GCC 6-2017-q1-update](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads/6-2017-q1-update). To build with CMake, make sure arm-none-eabi-gcc is in your path, and then run:
```
mkdir build_arm
cd build_arm
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-m258ke.cmake ..
make
```
## Common information
The build processes described above will create a SIMMProgrammer.bin file that can be programmed to the board using the [Windows/Mac/Linux software](https://github.com/dougg3/mac-rom-simm-programmer.software). You can also generate a combined firmware image containing both the AVR and ARM builds that automatically flashes the correct firmware based on the detected board when using software version 2.0 or newer:
```
cat build_avr/SIMMProgrammer.bin \
<(echo -en "\xDB\x00\xDB\x01\xDB\x02\xDB\x03\xDB\x04\xDB\x05\xDB\x06\xDB\x07") \
<(echo -en "\xDB\x08\xDB\x09\xDB\x0A\xDB\x0B\xDB\x0C\xDB\x0D\xDB\x0E\xDB\x0F") \
<(echo -en "\xDB\xDB\xDB\xDB\xAA\xAA\xAA\xAA\xDB\xDB\xDB\xDB\x55\x55\x55\x55") \
build_arm/SIMMProgrammer.bin \
> SIMMProgrammerFirmware.bin
```
# Videos
## ROM SIMM
| What | Where |
| ---- | ----- |
| IIci booting from ROM disk | https://www.youtube.com/watch?v=SEFcQRmYtBI |
| Mac IIci Modified (Slower) Startup Chime | https://www.youtube.com/watch?v=lyIIRtR3Aw0 |
| Playing with IIci ROM - other death chimes | https://www.youtube.com/watch?v=mlmt1AealLo |
| Mac IIci with a newer Mac's startup chime | https://www.youtube.com/watch?v=bRJtMMYCf0E |
| Mac IIci with Super Mario Bros startup chime! | https://www.youtube.com/watch?v=omL7mx0zxvI |
| Mac IIci Mario Startup Chime Part 2 -- Long! | https://www.youtube.com/watch?v=Yen0omvBo2Y |
| Mac IIci - Another Custom Startup Chime | https://www.youtube.com/watch?v=1R4W3mApAio |
## Regular ROM
Mac IIci ROM hack (custom startup icons): https://www.youtube.com/watch?v=LALaYy7ZLy0
# Related articles
## [Blog](http://www.downtowndougbrown.com/programmable-mac-rom-simms/) posts
- [Mac ROM SIMMs](http://www.downtowndougbrown.com/programmable-mac-rom-simms/) where you can order them too.
- [Soldering using solder paste, a dispenser, and a toaster oven](http://www.downtowndougbrown.com/2014/04/soldering-using-solder-paste-a-dispenser-and-a-toaster-oven/)
- [linux `udev` rules](http://www.downtowndougbrown.com/2014/03/linux-udev-rules/)
- [8 MB Mac ROM SIMM](http://www.downtowndougbrown.com/2013/01/8-mb-mac-rom-simm/)
- [Mac ROM SIMM programmer](http://www.downtowndougbrown.com/2012/08/mac-rom-simm-programmer/)
- [Review of Seeed Studio Fusion PCB service](http://www.downtowndougbrown.com/2011/10/review-of-seeed-studio-fusion-pcb-service/)
- [Mac IIci custom startup chime, part II](http://www.downtowndougbrown.com/2011/08/mac-iici-custom-startup-chime-part-ii/)
- [Mac IIci custom startup sound ROM hack](http://www.downtowndougbrown.com/2011/08/mac-iici-custom-startup-sound-rom-hack/)
## Others
- [Capturing a Mac ROM Image](http://www.emaculation.com/doku.php/capturing_rom)
- [HxD - Freeware Hex Editor and Disk Editor](http://mh-nexus.de/en/hxd/)
- [Mac ROM Checksum Verifier](http://www.d.umn.edu/~bold0070/projects/checksum/)
- [68k Macintosh Liberation Army](https://68kmla.org/forums/)
- [Another IIci ROM hack](https://68kmla.org/forums/index.php?/topic/15436-another-iici-rom-hack/)
- [68k.hax.com](http://68k.hax.com/)
- [(Enhanced) Apple Sound Chip EASC/ASC programming](http://web.archive.org/web/20131004115313/http://mamedev.org/source/src/emu/sound/asc.c.html)
- [68k Mac ROM Boot Disk](http://synack.net/~bbraun/macromboot.html)
- [bbraun hacks](http://synack.net/~bbraun/)
- [Mac Related 3D Models](http://synack.net/~bbraun/mac3d/) including ROM SIMM Programmer Case
- [AppleTalk over IP](http://synack.net/~bbraun/avpn.html)
# Non-related articles
- [Microcontroller lessons](http://www.downtowndougbrown.com/microcontroller-lessons/)