The NVRAM is pretty much fixed in size. The 8K on Old World Macs is divided into partitions. The Open Firmware NVRAM variables are the last 0x800 bytes of the 0x2000 (8K) bytes.On the Macs I've looked at, the NVRAM physical storage is provided by an 8KB SRAM (static RAM) chip. It is pin compatible with 32KB SRAM chips. However, to be useful, Apple would have had to implement the extra 2 address lines. I have no idea how the system addresses NVRAM and/or if the assumption of 8KB is built into the system. But if one is hard coding addresses, it might be interesting to substitute in a 32KB SRAM chip and see if NVRAM space is expanded. I guess the extra space would also need to be in the machine's memory map for NVRAM.
I have installed 32KB SRAM chips, and the machines in question worked fine afterwards, but I didn't have the software chops to really explore whether the additional space was available. The utilities I tried to interrogate the size of NVRAM may just report what they expect.
Reading or writing a byte in NVRAM is different for each Mac. On the 7500/8500/8600, the address is 8 bits and represents a block of 32 bytes which means the limit is 8K total. I don't know if the address can be 16 bits by writing to a byte following the first address byte register that is at F301D000. Probably not.
For the Power Mac G3 (rev 3), you just access a byte at F3060000 + offset*16. 8K*16 = 128K. F3060000 happens to be the last 128K of the 512K sized BAR0 of Heathrow so I don't think you could access NVRAM bytes beyond 8K.
Even if the access methods could access more than 8K of NVRAM, you would have to make some patches to OF to make it usable. For OS 9 or OS X, the patches would be more difficult - you would maybe make it so they don't modify NVRAM.
Some other options:
1) have the nvramrc script read more script from the unused parts of NVRAM. I have a version of XPostFacto that sets that up for my too large nvramrc script for OF 1.0.5.
2) have the nvramrc script read more script from a partition of a disk that is accessible by OF before
probe-all
is called. I haven't tried that yet. The partition could be any size and allow any length of script (limited only by OF memory). It could also contain fcode images to override parts of OF such as disk-label
and mac-parts
(to allow booting HFS+ partitions on GPT formatted disks) or to add new OF drivers for USB, FireWire, AHCI, NVMe (to allow booting from any of those) and Thunderbolt (to allow PCIe cards in external Thunderbolt enclosures).3) instead of a partition, have the nvramrc script read more script from a PCI option ROM. The setup required should be very little (you just need to map the rom) unless the PCI card is behind a PCI to PCI bridge. In that case you may need to setup the PCI bridge yourself if you want the nvramrc script to occur before
probe-all
.My tests with dingusppc shows that Open Firmware 1.0.5 can enumerate PCI devices with multiple levels of PCI bridges. The issues you see may be software related or hardware related. First you have to check if Open Firmware is finding all the PCI devices, allocating all the PCI resources correctly (bus numbers, memory ranges, interrupts, etc.), and reading the Open Firmware Option ROMs. My "lspci for Open Firmware" can get the PCI info. UseWhile Gazelle has trouble with all PCI-PCI Bridge cards, PowerSurge (X500/X600) works properly with one level of PCI-PCI Bridge.
That is, in the PowerSurge machines, the issue is when you reach a second level of PCI Bridges. For example, the PowerSurge Clones made by Umax, the S900 and the J700, put all but 2 of the PCI slots behind a PCI-PCI Bridge. If one then installs a Bridged PCI card into one of those "lower" bridged slots, it will not function properly (with some interesting exceptions).
So, for example, an Adaptec 3940UW SCSI card which is two 2940UW cards behind a DEC 21052 bridge will work fine in an X500/X600 machine. In a Umax S900 or J700 it will work properly if it is installed in slot #1 or slot #2 (A or B). If it is installed in a lower slot it will be behind the PCI bridge when occupies slot C and it will not function as there is now a chain of two PCI-PCI bridges involved (motherboard PPB and card PPB).
I suspect, but do not know, that Apple did something in the Gazelle architecture that makes it act like the Gazelle PCI slots are already behind one bridge.
If that last sentence is true, then the PowerSurge and Gazelle problems are all symptoms of the same failure of Apple to properly deal with daisy chained PCI-PCI Bridges. OF will interrogate the first PCI-PCI bridge, but not any bridges behind that one.
dump-device-tree
to get the Open Firmware info. The issue with Gazelle is definitely software related, since it was reproducible in dingusppc and could be fixed with an nvramrc patch. The issue with PowerSurge may be hardware related. There's very little we can do about the problem without being able to reproduce it.The Macintosh ROM archive on Macintosh Garden has most of the Old World Power Mac ROMs.Also I read a little of that MacRumors thread you referenced. I can manufacture Rev. A, B or C ROMs for the Beige G3,. I think. I know I have the Rev. C code. I have had the Rev. B code in the past but I'm not sure where I stored it. I may or may not have the A code, as no one ever really wanted Rev. A.
What's the pEX project?I have a bunch of the blank circuit boards for hte ROM module on hand still from the pEX project.
Check the rom checksum or md5 to find it in the list at https://docs.google.com/spreadsheet...gpk0JX_b7bXvmAg6-Dk7QDyKPY/edit#gid=840977089The S900 uses the $77D.28F2 ROM Revision which Apple used in the X500 and 7200 machines.
Code:
cd "/Volumes/Work/Open Firmware and Name Registry/ROM Apple"
IFS=$'\n'
for therom in $(find .. -size 4M -not -path "*.src/*"); do
echo $(
thebytes=$(dd if="$therom" bs=32 count=1 2> /dev/null | xxd -p)
printf "%s %s.%s " ${thebytes:0:8} ${thebytes:16:4} ${thebytes:36:4}
md5 -q "$therom"
) '"'"$therom"'"'
done | sort
077d.20f2 9feb69b3 b40998471e33d802b350f699127e36df "../ROM Apple/#1 mac-rom-archive-20110819/9FEB69B3 - Power Mac 6100 & 7100 & 8100.ROM"
077d.22f1 9c7c98f7 992b36209d478fa5cc1e7f3a3a462c18 "../ROM Apple/#1 mac-rom-archive-20110819/9C7C98F7 - Workgroup Server 9150-80.ROM"
077d.23f1 9b7a3aad 6355d8c6841591e284853f878b99720a "../ROM Apple/#1 mac-rom-archive-20110819/9B7A3AAD - Power Mac 7100 (newer).ROM"
077d.25f1 9b037f6f f08ad7ba1d8435ecfa24282aab1e0eb0 "../ROM Apple/#1 mac-rom-archive-20110819/9B037F6F - Workgroup Server 9150-120.ROM"
077d.26f1 63abfd3f f841c66c2e94bf1872959fed0d69cc65 "../ROM Apple/#1 mac-rom-archive-20110819/63ABFD3F - Power Mac & Performa 5200,5300,6200,6300.ROM"
077d.28a5 67a1aa96 b0f62eae6c86657bfe9c1489337ff698 "../ROM Apple/#7/TNT A5c1"
077d.28f1 96cd923d dfebb8fdad4124e02608429d98bf349b "../ROM Apple/#1 mac-rom-archive-20110819/96CD923D - Power Mac 7200&7500&8500&9500 v1.ROM"
077d.28f1 96cd923d dfebb8fdad4124e02608429d98bf349b "../ROM PowerPC Mac/ROM PM 9500/ROMs/@FFC00000 len-400000"
077d.28f2 9630c68b 2623a0c438045ea04d2cc67310c97743 "../ROM Apple/#1 mac-rom-archive-20110819/9630C68B - Power Mac 7200&7500&8500&9500 v2.ROM"
077d.29f1 6f5724c0 cdc2b21a8991193b856e5a92c6df5c06 "../ROM Apple/#1 mac-rom-archive-20110819/6F5724C0 - Performa 6400.ROM"
077d.29f1 6f5724c0 cdc2b21a8991193b856e5a92c6df5c06 "../ROM PowerPC Mac/ROM PM 5400 and 6400/ROMs/@FFC00000 Entire ROM"
077d.2af2 83c54f75 d42c0a7386a345a008883be07beb0a64 "../ROM Apple/#1 mac-rom-archive-20110819/83C54F75 - Powerbook 2300 & PB5x0 PPC Upgrade.ROM"
077d.2cc6 2bf65931 318e40f6a1f47925876eb64cc18c9ede "../ROM Apple/#1 mac-rom-archive-20110819/2BF65931 - Bandai Pippin (Kinka Dev).ROM"
077d.2cf2 2bef21b7 d0eb08a7375b7fff78f5e14574364ac4 "../ROM Apple/#1 mac-rom-archive-20110819/2BEF21B7 - Bandai Pippin (Kinka 1.0).ROM"
077d.32f3 83a21950 d78e3715e0dd30cd6174bdda747222eb "../ROM Apple/#1 mac-rom-archive-20110819/83A21950 - PowerBook 1400cs.ROM"
077d.34f2 960e4be9 edcf3422d712f61f83c07efc2401cbb8 "../ROM Apple/#1 mac-rom-archive-20110819/960E4BE9 - Power Mac 7300 & 7600 & 8600 & 9600 (v1).ROM"
077d.34f2 960e4be9 edcf3422d712f61f83c07efc2401cbb8 "../ROM PowerPC Mac/ROM PM 8600/ROMs/@FFC00000 Entire ROM"
077d.34f5 960fc647 88d7bec4daa28028c1fd311cf89ef8ab "../ROM Apple/#1 mac-rom-archive-20110819/960FC647 - Power Mac 8600 & 9600 (v2).ROM"
077d.35f2 6e92fe08 670f3d04b8844cf89aae4391398d4b5c "../ROM Apple/#1 mac-rom-archive-20110819/6E92FE08 - Power Mac 6500.ROM"
077d.35f2 6e92fe08 670f3d04b8844cf89aae4391398d4b5c "../ROM Apple/#3 Twentieth Anniversary Macintosh/TAM-ROM-6E92FE08-670f3d04b884.rom"
077d.39f1 46001f1b 296558a210dfb961ff2b1b7495d2de84 "../ROM Apple/#4 Power Express (9700 Prototype)/test2orig.ROM"
077d.39f1 46001f1b 296558a210dfb961ff2b1b7495d2de84 "../ROM PowerPC Mac/ROM Power Express 2/ROMs/test2orig.ROM"
077d.39f1 46001f1b 58b8a8fadd5cc5bec6c3f8100feaceb4 "../ROM Apple/#4 Power Express (9700 Prototype)/test1digi.ROM"
077d.39f1 46001f1b 58b8a8fadd5cc5bec6c3f8100feaceb4 "../ROM PowerPC Mac/ROM Power Express 1/ROMs/test1digi.ROM"
077d.40f2 79d68d63 b8612cc39a56d141feade9dc6361ba20 "../ROM Apple/#1 mac-rom-archive-20110819/79D68D63 - Power Mac G3 desktop.ROM"
077d.41f5 cbb01212 738ae2b8394d2fe9cd3d39012458e756 "../ROM Apple/#1 mac-rom-archive-20110819/CBB01212 - PowerBook G3 Wallstreet.ROM"
077d.41f6 b46ffb63 01a80c4452c8cdf385e11bd973b44f58 "../ROM Apple/#1 mac-rom-archive-20110819/B46FFB63 - PowerBook G3 Wallstreet PDQ.ROM"
077d.45f1 78fdb784 8fd9c829342fa76213e7efbad2a80823 "../ROM Apple/#2/78FDB784 - PowerMac G3 Minitower (beige 266MHz).ROM"
077d.45f1 78fdb784 8fd9c829342fa76213e7efbad2a80823 "../ROM PowerPC Mac/ROM Beige G3 233/ROMs/@FFC00000 len-400000"
077d.45f2 78f57389 616d792ee6e2877c5c8faf30b6c56fe8 "../ROM Apple/#1 mac-rom-archive-20110819/78F57389 - Power Mac G3 (v3).ROM"
077d.45f2 78f57389 616d792ee6e2877c5c8faf30b6c56fe8 "../ROM PowerPC Mac/ROM PM G3/ROMs/@FFC00000 len-400000"
The "ROM PowerPC Mac" directory contains ROMs with Open Firmware and where I disassembled and converted to Forth the Open Firmware part of the ROM. I've done the same for New World ROMs as well.
I don't think so since my Power Mac 8600 is able to use the Sonnet Tempo Trio without a patch. While the 8500 and 8600 have different ROMs, the Open Firmware part is identical. That doesn't mean that there isn't a way for the 7500/8500/8600 to have the same problem as the Gazelle. It just means the problem doesn't occur in my case.Because the same ROM is used on the 7500/8500 there will be code in there for CHAOS/CONTROL I don't know if that could be causing an issue similar to the ATI chip code in the Gazelle.