• Hello MLAers! We've re-enabled auto-approval for accounts. If you are still waiting on account approval, please check this thread for more information.

Mac OS on ANS - Modding a ROM DIMM

Greetings,

Almost a month ago @John Tucker revealed he had an ANS booting Mac OS, somehow a rumor came true.
With the help of some folks at Tinker Different, 4 ROM were finally dumped and released by @joevt on his GitHub along some precious analysis.

The ROM we are looking for in order to boot Mac OS is version 2.0. Only one thing remains: building a DIMM to get others ANS to boot Mac OS.

Here is how I did mine.

I started looking at my ANS ROM DIMM. I noticed it was similar to other PowerMac ROM DIMM, confirmed by some research by @stynx @Jockelill and @dougg3 on this thread.

But something wasn't right on ANS DIMM (up) when I compared it to a spare DIMM from a PM7100 (down), can you spot the problem?
A side of an ANS ROM DIMM with two ROM chips with an unusual pinout
1764372236233.png

Congrats if you find it, it's quite unusual: one side of my ANS DIMM have upside-down ROM chips. The first pin is on the top right corner instead of the top left one, the PCB design is not reusable since binding the pins of a normal chip the other way to mount it reversed will certainly break them.

But after a quick check nothing seem different from an electrical standpoint, the PM7100 looked like a strong candidate for a PCB donor.
One small problem remains: finding a compatible SOP-44, 8Mb EEPROM, well turns out a quick search with those keywords lead to a flash reference with a compatible pinout from AMD: AM29F800B.

While this chip is EOL, I found few NOS on eBay. While I was waiting for the flash to be delivered I de-soldered the ROM from the PM7100 and started to dump their content.
This step was only necessary so I can verify how the ROM should be split between each ROM chip.

The ROM if made from 8 bytes words, splitted like this.
ROM-0ROM-1ROM-2ROM-3
Byte 1, Byte 0Byte 3, Byte 2Byte 5, Byte 4Byte 7, Byte 6

The word 0x49B2BE8F0000002A will be splitted as it follow:
ROM-0ROM-1ROM-2ROM-3
0xB2490x8FBE0x00000x2A00

I wrote a quite inefficient php script to slice ROM in 4 parts:
PHP:
<?php

const WORD_LENGTH = 8;
const ROM_CHIPS = 4;

$pathToRom = $argv[1];
$romFile = fopen($pathToRom, 'rb');

if (!$romFile) {
    echo "Can't open ROM file \"$romFile\"\n";
    die(-1);
}

$romChips = [];

while ($word = fread($romFile, WORD_LENGTH)) {
    $word = str_split($word);

    for ($i = 0; $i < ROM_CHIPS; $i++) {
        $romChips[$i][] = $word[$i*2+1];
        $romChips[$i][] = $word[$i*2];
    }
};

fclose($romFile);

for ($i = 0; $i < ROM_CHIPS; $i++) {
    file_put_contents('ROM_'.$i.'.bin', $romChips[$i]);
}

Then the flash arrived I flashed them with my TL-866+ and an adapter for SOP-44.
Then I soldered the 4 chip on the PM7100 DIMM PCB.
1764373722945.png
My first boot attempt failed because I forgot to wire some signals on the flash chips.

Indeed, original ROM are read only by nature, but flash must be set in read mode, pins WE# and RESET# must be tied to Vcc in order to do so. But on the DIMM PCB those pins are N/C! Nothing that some wiring can't fix.
1764373828723.png

After that the ANS booted!
IMG_5686 - Grande.jpegIMG_5688 - Grande.jpeg
The ANS identifies it self as a Power Mac 9500/9600 Work Group Server and booted a Mac OS 9 install CD without any modifications.
As confirmed, video and internal SCSI works fine.

Since years I've relied on the work of many contributors to fix or improve all my old Macs, I'm now glad I could share to the community this humble participation.
You will find scans and chip layout attached below.

Special thanks to @Dandu who shared the story on his blog!
 

Attachments

Oh now this is exciting. A friend has an ANS that I was going to be 'borrowing' for a while (due to size).. that would be a fun project to try out!
 
Well done!

I have done a similar 7100 rom mod to get the Kansas Roms onto the older 9x00, 7x00 and 8x00 PCI Power Macs for testing. Sadly, the in-system programming of the Rom does not work, even when the WE-pin is connected correctly.
 
Very cool! I was wondering if someone was going to make a ROM DIMM PCB to test it out. Swapping in some flash chips onto an existing board was a cool idea!

@stynx how far did you go with testing the in-system programming? Were you testing with the TNT Flasher app? My understanding is there's a register bit that has to be set in order to enable the /WE functionality. Apologies if you are already two steps ahead of me!
 
welp, now to send this to 65scribe as a correction in his video on the ANS where he says that nobody was successful in making the ANS boot Mac OS
 
Were you testing with the TNT Flasher app?
Yes, but it did not work. The TNT flasher crashes. I suspect that the register was changed in the final revision of the board or something is needed to be done to make the registers addressable.
My goal was to get the Kansas Roms to experiment with the Mach 5 604e CPU-chips. The in-system programming was just a thing i tried for fun.
I realized that there was a lot more stuff going on with the ppc in the late 90s than i have thought. I found out that IBM produced a backwards compatible version of the "Mach 5" (604e3) that can be simply dropped into older systems. I modded a Mach 5 card with that chip and that card works in older machines now. Motorola only produced the incompatible version of the Mach 5 (604r) while IBM produced both versions. Sadly, the backwards compatible Version is is not discernible on the outside but has a different CPU ID (v9 for 604e3 / v10 for 604r).
 
This is great, for non programmers would you please upload the ROM images here and take a shot of the back of the adapter 7100 showing where the rear bodge wire is going?

I've owned an ANS 500 for years (and have a 7100 ROM PCB pretty sure somewhere!) and would love to see it running Mac OS.
 
Yes, but it did not work. The TNT flasher crashes. I suspect that the register was changed in the final revision of the board or something is needed to be done to make the registers addressable.
My goal was to get the Kansas Roms to experiment with the Mach 5 604e CPU-chips. The in-system programming was just a thing i tried for fun.
The TNT flasher only handles two types of flash chips: AMD Am28F020 (01h:2Ah) or Intel 28F020 (89h:BDh). And the flasher has a bug that makes it not work correctly with the Intel 28F020 chips. The flasher utility doesn't detect the flash until you ask it to do the flash. At that point, if the flash chips are unknown then it hangs because it has done unrecoverable stuff like turn off interrupts or something.

I've added emulation of these ROM flash chips to the TNT class of machines in DingusPPC to test the TNT flasher to see how it works.

Discussion of the TNT flasher and how it works is in the TinkerDifferent thread.
https://tinkerdifferent.com/threads/apple-network-server-macos-based-roms-found.4756

Making a flasher for this Power Mac 7100 ROM SIMM would require new code (either in Open Firmware like for New World Macs, or the TNT flasher, or some other utility). The SIMM might also require modification if the SIMM doesn't have the write enables connected.
 
@Byrd Here is a webpage that slice a 4MB ROM file in the 4 required chunks. Just open it in a browser et choose a ROM file, it will download the 4 files. Processing is done locally.
I can't take a picture of the bodge wiring yet but you need to connect pin #43 and #44 to pin #23 on each chip. This connects RESET# and WE# to Vcc. You can also use the upper side of the capacitors. I uploaded a annotated version a the pinout.

------

Making a flasher for this Power Mac 7100 ROM SIMM would require new code (either in Open Firmware like for New World Macs, or the TNT flasher, or some other utility). The SIMM might also require modification if the SIMM doesn't have the write enables connected.
Indeed the 7100 DIMM doesn't have write enables connected and could be connected, but is the ANS able to flash ROM?
 

Attachments

Indeed the 7100 DIMM doesn't have write enables connected and could be connected, but is the ANS able to flash ROM?
So far, only ANS ROM 2.0 can boot Mac OS, therefore only an ANS with that ROM can use the TNT flasher but I don't think anyone has tried it.

The ANS is very much like a TNT Mac so it should be possible. You can find schematics for the TNT Macs (e.g. Power Mac 9600) that show the pinout of the ROM SIMM slot and how the write enable signal connects to the Hammerhead memory controller. You can compare those schematics with those of the pre-PCI power Macs (e.g. Power Mac 8100) to verify that the ROM SIMM slot is compatible.
https://www.macdat.net/repair/apple_schematics.html

If the ANS cannot boot Mac OS or if the flash chips are not supported by the TNT flasher, then an Open Firmware script could be created to do the flashing.
 
If the ANS cannot boot Mac OS or if the flash chips are not supported by the TNT flasher, then an Open Firmware script could be created to do the flashing.

I'll hold my soldering iron, thanks joevt for the info - look forward to a patch popping up one day.
 
I’ll try to look into it next time I remove the logic board from the ANS.

I successfully installed Mac OS 9.0.4 on the internal SCSI bus, it’s quite slow as my ANS is only a 133MHz with no L2 cache.

Video card supports 640x480, 800x600 and 1024x768 in 256 colors or gray mode only, no surprise here as nothing more is required on a server.

But 256 colors on OS 9? Rough. I’ll try to add a PCI video to get better performance.
 
Have yet to figure that out, but the 2.0 failed to boot my AIX install when I installed the new DIMM, I may need to reset the nvram.

Unfortunatly my AIX install is on a scsi2sd, and my MacOS on a ZuluSCSI, I need to migrate the image because my ANS is missing a lot of accessories and I can’t connect both at the sametime.

For now when it does a cold boot it get stuck on "unable to open: disk0:aix", I must do a reset, and on warm boot does ask if I want to boot Mac OS.

I suspect this is not the normal behavior, I hope nvram reset will do the trick.

OF 2.0 is to early to have the boot selector IIRC, so I guess if you want to choose were you boot from you have to enter Open Firmware and then boot the OS you want.

I have confirmed with no surprise that the Startup panel won’t see the AIX partition, nor the Drive utilities.
 
I forced the boot into Mac OS with setenv boot-command bye

Now the ANS just boot like a normal Mac. To boot AIX I suspect you only have to press Command-Option-O-F and type boot to start AIX.

I tried to install a video card but it wasn't detected, maybe a bad contact or a non-working card as it was untested.

Fun-fact the Cirrus Logic 54m30 chip is limited by... software and hardware (sort-of), because the chip is designed for little-endian operations and the driver lack implementation of endianess convertion.

The Network Server implements a Cirrus Logic 54M30 video controller, which provides a bit-mapped
1Mbyte DRAM frame buffer. This controller implements only a little-endian window into the packed-
pixel frame buffer, hence Big Endian operating systems are limited to 8 bits per pixel unless low-level
transformation routines are written. The buffer will support 1024x768 at 8 bits, however many monitor
modes are supported. Extended RAS is configured with adequate DRAM speed to accomplish 68 MHz
clocking. Hardware acceleration and cursors are available requiring software implementation. Pure bit-
mapped mode will undoubtedly be visibly slow and require signficant CPU utilization. Screen savers
should be discouraged for maximum system performance.
Source: https://wiki.preterhuman.net/ANS_Hardware_Developer_Notes - page 9 section 2.8

Doc also contains CPU board pinout!
 
Fun-fact the Cirrus Logic 54m30 chip is limited by... software and hardware (sort-of), because the chip is designed for little-endian operations and the driver lack implementation of endianess convertion.
Is AIX big-endian or little-endian?
Does AIX enable 16 or 32 bit color modes?
What's Extended RAS?
 
AIX and Mac OS are big-endian systems, the PCI interface is little-endian and accounted for, but I guess not for the way the video memory is dealt through the video chip thus requiring the driver to swap to little-endian.

Extended RAS has to do with memory signals but I don’t know about those. I suspect it’s related to fact that some video chip were also able to use slower/cheaper memory chip but at the cost of performance.

As far as I know, AIX on the ANS does on 8-bit video, but I could wrong since it’s a pain to configure…
 
Some news:
- Mac OS 7.6 for CHRP won’t be it just freeze on the « Welcome to Mac OS » screen, probably need some modding
- After patching an Si3112 card, I did boot the ANS from a fresh install of 9.0.4 of an SSD drive.
- The 604 at 133MHz with no L2 cache is so slow that the SSD doesn’t make any difference.
- The previous videocard was bad, need to source an ATI Rage 128
- FireWire card seems to work, at least detected
- Need to find a compatible USB and network card.

Will try to boot OS X after I manage to get a proper video card.
 
Some news:
- Mac OS 7.6 for CHRP won’t be it just freeze on the « Welcome to Mac OS » screen, probably need some modding
- After patching an Si3112 card, I did boot the ANS from a fresh install of 9.0.4 of an SSD drive.
- The 604 at 133MHz with no L2 cache is so slow that the SSD doesn’t make any difference.
- The previous videocard was bad, need to source an ATI Rage 128
- FireWire card seems to work, at least detected
- Need to find a compatible USB and network card.

Will try to boot OS X after I manage to get a proper video card.
I wonder if booting into single user mode would work without a proper video card?
 
So, with all of the wackiness of porting things like Windows NT to PPC Macs, are we going to get modded ROMs for PowerMac 8500/8600/9500/9600 systems that can now run that funky AIX??!

Would be fun to play with!
 
Back
Top