Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Status
The first post of this thread is a WikiPost and can be edited by anyone with the appropiate permissions. Your edits will be public.
The 0 > is the Open Firmware prompt, like joevt@Joes-Mac-Pro ~ % is the prompt in Terminal.app in macOS. Don't type the prompt part. Also don't type the ok response.
Thanks for your extensive reply!

Sorry for my lack of knowledge and understanding of OF and therefor (in most cases) silly questions. I am afraid, that, even while you give some very precise explanations, the things you write are still a bit beyond my skills.

Anyway, after a lot of attempts, editing the pci-probe-list command with value fffbffff into the nvram seems to have worked. At least even after a bunch of reboots and swapping vid cards the onboard video at PCI F1 still doesn't show up in System Info. This is what i get with the Radeon 9000 Pro installed.


system_info.jpg


...and the machine boots smoothly with the card without "looking for" some other video output anywhere else first.

Ofcourse all this does not give me any video out of the GeForce 6200. Now the card is just not "seen", if installed. Connecting to the beige via screensharing, System Info just gives "No information found" for Grapics/Displays, with the card is installed.

Any chance, it is as simple as OF 2.4 just does not know the device id of the 6200 and therefor doesn't get any match? Like in some cases it was possible to just add a device id to some kext's info-plist to make formerly "unknown" cards work.

Sorry, if the question is silly again.
 
Last edited:
In the rare cases, the 6200 has been "seen" by System Info (only whit another display adapter present), it looked like this:

GeForce 6200 PCI.png


So it has been recognized as a graphics card. And also Device ID, Vendor and Revision ID were detected.
 
Anyway, after a lot of attempts, editing the pci-probe-list command with value fffbffff into the nvram seems to have worked.
Glad that worked, what was the exact Terminal command you used?

It was me years ago that figured how to use this pci-probe-list command to disable the built-in video for the PM8600. It's the same bit for the Beige G3.

pci-probe-list was later replaced with the pci-probe-mask, but their operation is practically identical.
Ofcourse all this does not give me any video out of the GeForce 6200. Now the card is just not "seen", if installed.
We've been over this, GeForce ROMs contain .words not present in Old World Mac's versions of Open Firmware. Joe and I went over this many years ago, I chased my tail trying to get a GF2 MX 200 PCI working in my PM8600, thinking that it was the Map-In bug work-a-round that wasn't implemented in the GF FCode. The system starts to execute the FCode, but you end up with a default-catch! when it comes to a .word Open Firmware has no definition for, normally the card is in such a state when this happens that it renders the card invisible to the system.

Either you must find a way to add the .words to OF or you must rewrite the FCode ROM with .words that are compatible with your version of OF.

Neither is going to be easy, but there maybe a third way, to build all the needed .properties of the card and let OS X nVidia drivers initialize the card after boot.

As I say, things would be much easier if Apple did not leave out fcode-verbose? from I't implementation of OF.
 
Glad that worked, what was the exact Terminal command you used?
nvedit [enter]
setenv pci-probe-list fffbffff [enter followed by Control+C]
nvstore [enter]
setenv use-nvramrc? true [enter]
reset-all [enter[

...as described somewhere else.
I chased my tail trying to get a GF2 MX 200 PCI working in my PM8600, thinking that it was the Map-In bug work-a-round that wasn't implemented in the GF FCode.
Sadly the ELSA Gladiac died. But i still get video up to the point, where it boots into the OS. I see the grey screen with Apple-logo with the wheel spinning up to the point when i tries to get into the OS. Screen even turns blue for half a second. Then turns black, but display still has a signal. When entering th mac via screen sharing, the card is visible to System Info normally as GeForce 2 MX with all the values as usual with only vram Size missing. Maybe the vram is dumped. I sure, that it once made it completely to the OS. I will try to get anotherone of them, to try to repeat this situation. But all the PCI cards seem "a bit" hard to find these days.
The system starts to execute the FCode, but you end up with a default-catch! when it comes to a .word Open Firmware has no definition for, normally the card is in such a state when this happens that it renders the card invisible to the system.
Even the 6200 sometimes is visible to the system even with the system fully booted. But only rudimentary with the few values shown above.
or you must rewrite the FCode ROM with .words that are compatible with your version of OF.
Depending on what to edit, i'd rather giv this a try as i would feel much more comfortable making edits to the card's rom than to OF, which is an absolute black box to me.
but there maybe a third way, to build all the needed .properties of the card and let OS X nVidia drivers initialize the card after boot.
Would that be possible if the card (as in my case) is at least "seen" by the system/OF? Is adding properties for a given device just "as easy" as deleting them? XPostFacto shows a name for the card in it's output-pulldown. So it should be possible to select it in OF.
 
the problem with the GeForce 6200 is simply that its OpenFirmware Option ROM talks in a language too advanced for the G3 beige to understand

its like trying to talk to someone from the 1400's yeah we both speak english, but the chap from the 1400's would probably have a hard time figuring out what all the new fangled words I keep using are!

and thats exactly whats going on with the G3 Beige and 6200, it looks at the ROM goes "Nope i have no clue m8" and just does not load the ROM because it cant understand it

so the card just appears as a normal un-flashed PC video card would



as an aside I do wonder what would happen if you tried using the ROM from a G3 Blue and white in a G3 Beige?


its surprising what you can get away with in that regard, my MacBook2,1 is still flashed with the BootROM of a MacMini1,1 IIRC LOL
 
the problem with the GeForce 6200 is simply that its OpenFirmware Option ROM talks in a language too advanced for the G3 beige to understand
Somebody get me a rom dump so we can understand what's wrong with it. Unless you mean the language is x86 for BIOS or UEFI, then never-mind.
 
Somebody get me a rom dump so we can understand what's wrong with it. Unless you mean the language is x86 for BIOS or UEFI, then never-mind.

the ROM I use is the Mac XFX WANG ROM from the link bellow here, its what I use on my PNY PCI 6200 with a just a slight down clock on RAM/Core to get it nice n stable :)


( as I understand it NVIDIA Fcode ROM's simply use OpenFirmware words that the G3 beiges OF 2.xx implementation does not have)
 
Last edited:
Also, these ROMs say they are for AGP. But Beige G3 is PCI. Did you test the GPU with the AGP rom in a PCI slot of a Mac that has a supported Open Firmware version? i.e. does the PCI GPU work in any Mac?
 
Also, these ROMs say they are for AGP. But Beige G3 is PCI. Did you test the GPU with the AGP rom in a PCI slot of a Mac that has a supported Open Firmware version? i.e. does the PCI GPU work in any Mac?
The PCI cards work just fine with New World OF versions( B&W or better ).

 
as an aside I do wonder what would happen if you tried using the ROM from a G3 Blue and white in a G3 Beige?
Hmm, couldn't this be the easiest way to solve this problems? At least the messy onboard video would likely be gone forever.

I would really like to try this, if i only had a B&W dump. Is there an updater from Apple, which can be used? I even have a hardware programmer if needed.

Also, if this is of any help, i stuffed the 6200 into my Sawtooth and let OF put out the properties:

6200pci_properties.jpg


...and also the Fcode rom, i use with the card and which runs it fine in newworld pci machines. As far as i remember, i patched a few more things than just the clockspeeds.
 

Attachments

  • PNY_6200_PCI.zip
    31 KB · Views: 87
Last edited:
  • Like
Reactions: LightBulbFun
Also, these ROMs say they are for AGP. But Beige G3 is PCI. Did you test the GPU with the AGP rom in a PCI slot of a Mac that has a supported Open Firmware version? i.e. does the PCI GPU work in any Mac?

yeah the GeForce 6200 works just fine in my G3 Blue and white :)


all the ROM's the NVIDIA cards are based off are from G5 cards so would of only been designed for New world OpenFirmware 3/4 implementations


as a side note there exist PCI to AGP slot converters, mainly used with Voodoo cards, but they do work in PC land with other cards as well


id love try one of those in a G3 Beige with a Radeon 9800 LOL (sadly tho those slot adapters, being a Voodoo thing means they are £LOL even tho they are not that complicated)

I have been half tempted to try using the right angle slot adapter that came with the Efika that @Amethyst1 sent me :)
 
Last edited:
  • Like
Reactions: Amethyst1
Hmm, couldn't this be the easiest way to solve this problems? At least the messy onboard video would likely be gone forever.

I would really like to try this, if i only had a B&W dump. Is there an updater from Apple, which can be used? I even have a hardware programmer if needed.

Also, if this is of any help, i stuffed the 6200 into my Sawtooth and let OF put out the properties:

View attachment 2037411

...and also the Fcode rom, i use with the card and which runs it fine in newworld pci machines. As far as i remember, i patched a few more things than just the clockspeeds.
Let's see the .properties of the Parent.......

Anyway, turning the Beige G3 into a New World Mac is a monumental task.

First you have the 4MB Boot ROM SIMM, you need the blank chips and a way to program them. Then you have to figure out how to disassemble New World OF as it uses hard coded device-tree for all the built in devices, it would only fry the Beige logic board, it it did anything at all.

You can dump the Beige G3 ROM into most of it's parts, modify it, and rebuild it with a tool Elliot Nunn wrote called :tbxi:. It will even dump out OF, tho that seems to not work with the Beige G3 ROM( we'll have to ask Elliot to help here ) , then you could replace it with OpenBios or SLOF with quite a bit of work on both.

Code:
pip3 install tbxi
 
Which Open Firmware version are these ROM's expected to work with?
Joe do you want to try and take a crack at implementing fcode-verbose? in OF 2.x.x?

That is really the way to debug this, in SUN's implementation of OF I think it is true to fcode-verbose?, whereas in OpenBios it is true to ?fcode-verbose, while in SLOF it is true to eva-debug?.

Sadly I don't know of any Apple OF implementation that enabled fcode-verbose?, so I'm hoping there maybe a way to implement it via a colon definition?
 
You can dump the Beige G3 ROM into most of it's parts, modify it, and rebuild it with a tool Elliot Nunn wrote called :tbxi:. It will even dump out OF, tho that seems to not work with the Beige G3 ROM( we'll have to ask Elliot to help here ) , then you could replace it with OpenBios or SLOF with quite a bit of work on both.
Are you sure it dumps Open Firmware? I don't see it.
For New World Macs, isn't tbxi just supposed to be used with the ROM File in the System Folder which doesn't contain Open Firmware? It doesn't do anything with a dump of the real ROM where Open Firmware is located?

Joe do you want to try and take a crack at implementing fcode-verbose? in OF 2.x.x?
I think that would be really difficult. You would need to make some kind of PowerPC emulator in Open Firmware to work with the compiled colon definitions. Or patch all words so they all output something to console.... that might be doable.

That is really the way to debug this, in SUN's implementation of OF I think it is true to fcode-verbose?, whereas in OpenBios it is true to ?fcode-verbose, while in SLOF it is true to eva-debug?.

Sadly I don't know of any Apple OF implementation that enabled fcode-verbose?, so I'm hoping there maybe a way to implement it via a colon definition?
I would just add debug code to the rom after converting the rom to with my DumpPCIRom.sh script.

We've been over this, GeForce ROMs contain .words not present in Old World Mac's versions of Open Firmware.
Do you know what .words?

Joe and I went over this many years ago,
Can you remind me where and when?

I chased my tail trying to get a GF2 MX 200 PCI working in my PM8600, thinking that it was the Map-In bug work-a-round that wasn't implemented in the GF FCode.
I found some e-mails from a couple decades ago discussing the map-in bug with Nvidia cards, but I don't think Open Firmware 2.x has that bug.

The system starts to execute the FCode, but you end up with a default-catch! when it comes to a .word Open Firmware has no definition for, normally the card is in such a state when this happens that it renders the card invisible to the system.
I wonder if the number included in the default-catch! message represents an instruction address that we can use to figure out where the problem is.
 
  • Like
Reactions: flyproductions
I found some e-mails from a couple decades ago discussing the map-in bug with Nvidia cards, but I don't think Open Firmware 2.x has that bug.
As mentioned before: I get a picture withe the 2MX in the beige up to booting into the OS. And i am very sure, it once booted completely, but now seems to be defective. I try to get one of them again to verify this.
 
Last edited:
So who wants to get a 6200 working in an Old World Mac, has a 6200, has an Old World Mac, can flash ROMs, and can capture Open Firmware output (preferably from serial port)?
For the first four, i think i can/will! As far as "flashing" means flashing the card.

But how is this "Open Firmware capturing" done?
 
As mentioned before: I get a picture withe the 2MX in the beige up to booting into the OS. And i am very sure, it once booted completely, but now seems to be defective. I try to get one of them again to verify this.
If it boots without an error in Open Firmware then I probably can't fix it. I was hoping for an error like the default catch! message that @DearthnVader mentioned (how does this appear?). Are you and @DearthnVader using the same PCI card in the same beige G3 Open Firmware version?

For the first four, i think i can/will! As far as "flashing" means flashing the card.

But how is this "Open Firmware capturing" done?
Using serial port connection to another Mac or maybe ethernet works in OF 2.x? Or maybe a video captured by phone or iPad will be sufficient.

Is it possible to create an nvramrc script to output messages before boot continues to OS X?
 
If it boots without an error in Open Firmware then I probably can't fix it.
I'm sure it is defective in hardware by now. It even outputs pattern on the screen.
Are you and @DearthnVader using the same PCI card in the same beige G3 Open Firmware version?
For both questions: No. My card is a 2MX 400 while he claims 2MX 200. Also he tried to run it in a Powermac 8600. I strongly doubt this having the same OF -version. My OW-Mac is a G3/300, now running a Yikes G4 at 433. OF-version is 2.4.

The 2MX is a ELSA Gladiac 511 (at the bottom of the picture). The 6200 (in the middle) is a PNY with BGA memory. There's also a verision of this card by the same manufacturer with TSOP-chips.
Using serial port connection to another Mac or maybe ethernet works in OF 2.x? Or maybe a video captured by phone or iPad will be sufficient.
Phone video/photos should not be any problem. What exactly do you need to see? Is there some kind of verbose mode, running before the machine boots to the OS and showing error messages?
Is it possible to create an nvramrc script to output messages before boot continues to OS X?
Sorry, i'm afraid this is beyond my skills (again).

pci_gallery.jpg
 
Here is the eva-debug? code from SLOF if anyone can make anything of it:

Code:
: new-token
   eva-debug? IF
      s" x" get-ip >r next-ip read-fcode# r> set-ip (u.) $cat strdup
      header
   THEN
   new-token
;

Code:
: evaluate-fcode ( -- )
   BEGIN
      get-ip break-fcode-addr = IF
         TRUE fcode-end !
      THEN
      fcode-end @ 0=
   WHILE
      fcode@                               ( fcode# )
      eva-debug? IF
         dup
         get-ip 8 u.r ." : "
         ." [" 3 u.r ." ] "
      THEN
      \ When it is not immediate and in compile-mode, then compile
      get-token 0= ?compile-mode AND IF    ( xt )
         compile,
      ELSE                                 \ immediate or "interpretation" mode
         eva-debug? IF dup xt>name type space THEN
         execute
      THEN
      eva-debug? IF .s cr THEN
      break-fcode-steps IF
         break-fcode-steps 1- TO break-fcode-steps
         break-fcode-steps 0= IF
            TRUE fcode-end !
         THEN
      THEN
      next-ip
   REPEAT
;
 
Let's see the .properties of the Parent.......
So here are the properties of the card as they show up in some new world machine, a Quicksilver in this case.

Sure it's the card's info, what's of interest. Not those of the display. Sorry! It's just photographed of the screen. I hope, the important info is readable anyway.

6200_properties.jpg
 
Here is the eva-debug? code from SLOF if anyone can make anything of it:

Code:
: new-token
   eva-debug? IF
      s" x" get-ip >r next-ip read-fcode# r> set-ip (u.) $cat strdup
      header
   THEN
   new-token
;

Code:
: evaluate-fcode ( -- )
   BEGIN
      get-ip break-fcode-addr = IF
         TRUE fcode-end !
      THEN
      fcode-end @ 0=
   WHILE
      fcode@                               ( fcode# )
      eva-debug? IF
         dup
         get-ip 8 u.r ." : "
         ." [" 3 u.r ." ] "
      THEN
      \ When it is not immediate and in compile-mode, then compile
      get-token 0= ?compile-mode AND IF    ( xt )
         compile,
      ELSE                                 \ immediate or "interpretation" mode
         eva-debug? IF dup xt>name type space THEN
         execute
      THEN
      eva-debug? IF .s cr THEN
      break-fcode-steps IF
         break-fcode-steps 1- TO break-fcode-steps
         break-fcode-steps 0= IF
            TRUE fcode-end !
         THEN
      THEN
      next-ip
   REPEAT
;
I suppose something like this code be added to Apple Open Firmware...

This is for evaluating fcode, which is what PCI cards have, but it's only going to show the immediate or interpretation parts of the fcode which is only a small portion of the total fcode. Basically, we can get the same effect by adding extra code to the PCI rom fcode ourselves.

Probably the issues are going to be in the fcode that gets compiled. I suppose it would be possible to modify the compiler to add extra code for debugging... but again we can get the same effect by adding the extra code to the PCI rom fcode ourselves.

Phone video/photos should not be any problem. What exactly do you need to see? Is there some kind of verbose mode, running before the machine boots to the OS and showing error messages?
On second thought, I don't think video will be good enough since you'll want to be able to paste code and the output may be larger than what can be shown on the screen. Do you have two Macs with serial port and a serial cable to connect them? Otherwise we can try ethernet connection.

We can make a verbose mode. The idea is to probe everything except the pci card, then setup the console output to serial port, then probe the pci card. I believe Open Firmware 2.4 has a probe-mask so that it doesn't probe the same thing twice. If that doesn't work maybe we can rely on the fact that Open Firmware is supposed to capture console output until the output device is available.

Something like the following (for Open Firmware 2.4) could be added to the end of nvramrc (if there's enough space remaining? post the contents of your nvramrc):
Code:
." [ probe-all (except gpu)"
pci-probe-history 1 12 << or to pci-probe-history
probe-all
." ] probe-all (except gpu)"
." [ install-console"
install-console
." ] install-console"
." [ banner"
banner
." ] banner"
." [ probing GPU"
pci-probe-history 1 12 << not to pci-probe-history
probe-all
." ] probing GPU"
Replace 12 with the device ID of the GPU.

This script changes pci-probe-history so that the GPU doesn't get probed during the first probe-all.
Then it does the normal stuff - probe-all, install-console, banner, then it removes GPU from the history so that the last probe-all can probe it.
 
Last edited:
Here's a script to list PCI devices in Open Firmware.

Code:
dev pci1

: lspci { ; bus dev fun reg adr }
    cr
    0 -> bus
    begin bus 100 < while
        0 -> dev
        begin dev 20 < while
            0 -> fun
            begin fun 8 < while
                bus 10 << dev b << fun 8 << + + -> adr
                adr config-l@ dup dup -1 <> swap 0 <> and if
                    bus 2 u.r ." :" dev 2 u.r ." ." fun 1 u.r
                    adr c + config-l@ dup 7f0000 and if
                        ." -["
                        adr 18 + config-l@ dup
                        10 >> ff and
                        swap 8 >> ff and
                        2dup 2 u.r
                        <> if
                            ." -" 2 u.r
                            1
                        else
                            drop
                            4
                        then
                        ." ]"
                    else
                        9
                    then spaces
                    swap
                    ." ["
                    dup ffff and 4 u.r ." :"
                    dup 10 >> 4 u.r
                    ." ] ["
                    swap
                    adr 8 + config-l@ dup dup
                    18 >> 2 u.r 10 >> 2 u.r 8 >> 2 u.r
                    ." ] "
                    0 -> reg
                    begin reg 100 < while
                        adr reg + config-l@ lbflip 8 u.r
                        reg 4+ -> reg
                    repeat
                    cr
                    fun 0= if
                         dup 800000 and 0= if
                             7 fun + -> fun
                         then
                    then
                    drop
                else
                    fun 0= if
                        7 fun + -> fun
                    then
                then
                drop \
                fun 1+ -> fun
            repeat
            dev 1+ -> dev
        repeat
        bus 1+ -> bus
    repeat
;

lspci

Do this for each pci segment (change pci1 to the devalias of the pci segment; for example, vci0 and pci1 on a Power Mac 8600, pci1 and pci2 on a PowerMac 9500, etc.).
 
Last edited:
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.