Author Topic: ROM update questions  (Read 409 times)

Offline clh333

  • Member
  • *
  • Posts: 2
  • new to the forums
ROM update questions
« on: November 20, 2018, 03:32:48 PM »
Greetings!

I would like to ask the members for their advice and assistance with possibly updating the ROM in my G3 desktop PPC, which runs OS 9.2.2 (of course) and has a 300 MHz processor and 768 Mb RAM.  The ROM revision, according to Profiler, is 770.45F1.

Q1: Is is possible to update the ROM?
Q2: Is there any value to doing so, given the other limitations of the hardware?
Q3: If (Q1 AND Q2) =  TRUE then how is this accomplished?  Update or swap chips?

Thanks for your replies.

-CH-

Offline Daniel

  • Silver Member
  • ****
  • Posts: 196
  • Programmer, Hacker, Thinker
Re: ROM update questions
« Reply #1 on: November 20, 2018, 04:47:10 PM »
On New World Macs, the ones which have USB ports built-in, the boot ROM is on flash chips and is totally updatable.

I know there are several official firmware updates, but I forget what computers they are for.

If your G3 doesn't have built-in USB, then it is an Old World machine and the ROM chips can't be reflashed. In that case, you would have to replace them.

When Apple does have to fix bugs in Old World machines, they have the System Software put code in the NVRAM, where it is run very very early in the boot process.

I believe that the actual benefits to updating the ROM depend on the particular bugs in that ROM version. They probably aren't that important, as your machine can boot at the moment.

In theory, one could write a firmware update or NVRAM patch that does almost anything. In practice, we don't know enough about Open Firmware and the super-early boot process to do that.

Offline clh333

  • Member
  • *
  • Posts: 2
  • new to the forums
Re: ROM update questions
« Reply #2 on: November 21, 2018, 02:47:31 AM »
Thanks for your response.  I don't see an USB port on the machine.

Reading further at Low End Mac I conclude I have a Revision B ROM.  There is a Revision C as well but I don't know that it's worth pursuing.

As you point out: the machine boots.  I think I'll investigate a G4 instead.

Thanks again,

-CH-

Offline ELN

  • Silver Member
  • ****
  • Posts: 233
  • new to the forums
Re: ROM update questions
« Reply #3 on: November 21, 2018, 04:14:01 AM »
Theoretically a disk-based “NewWorld” ROM could be created that boots pre-USB PCI-based Macs like yours, in a manner very similar to Mac OS X. Hasn’t happened, though.

Offline Daniel

  • Silver Member
  • ****
  • Posts: 196
  • Programmer, Hacker, Thinker
Re: ROM update questions
« Reply #4 on: November 21, 2018, 09:02:38 AM »
I think that would be the Rom Vector Table and the Override Resources in the System File (or enabler).

Apple supposedly had a tool that could compare any 2 ROM object files and output the proper resources to upgrade the older one to the newer one at boot time.

Unfortunately, we don't have that tool. Yet another thing on the to-do list.

Offline ELN

  • Silver Member
  • ****
  • Posts: 233
  • new to the forums
Re: ROM update questions
« Reply #5 on: November 21, 2018, 02:56:08 PM »
Whoa — I’ve never heard of that! Cool...

Offline Daniel

  • Silver Member
  • ****
  • Posts: 196
  • Programmer, Hacker, Thinker
Re: ROM update questions
« Reply #6 on: November 21, 2018, 03:24:25 PM »
Check out ROvr.a in CubeE. https://github.com/elliotnunn/CubeE/blob/master/Tidbits/ROvr.a

It is quite awesome.

Offline ELN

  • Silver Member
  • ****
  • Posts: 233
  • new to the forums
Re: ROM update questions
« Reply #7 on: November 22, 2018, 05:10:20 PM »
Any docs on the tool?

Offline Daniel

  • Silver Member
  • ****
  • Posts: 196
  • Programmer, Hacker, Thinker
Re: ROM update questions
« Reply #8 on: November 22, 2018, 06:45:39 PM »
The patent on vectorization describes a tool called ROMPatch. https://patents.google.com/patent/US5546586A/en

The Resource Override mechanism isn't described there, but it is real simple. If a resource is added, stick it in the enabler. If one is deleted, add a 'rov#' entry for it. If a resource is changed, add a 'rov#' entry and stick the new version in the enabler.