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.
@flyproductions , try the 6200/Test2/1ROMs/PNY_6200_PCI.rom. It's modified from the PNY_6200_PCI.rom that you posted (and is included at 6200/ROMs/PNY_6200_PCI.rom)

If it doesn't work in Beige G3, it should report where it's aborting from. Try it in G4 and G5 to make sure it still works.
 

Attachments

  • 6200.zip
    2.4 MB · Views: 98
There's an abort that's happening because the subsystem-id property is missing (I had set it to 0 in the emulation because that was the value in the lspci output that was provided). If I change it to 4D then the driver gets further.
Hmm, wasn't subsystem ID in the Sawtooth, that really supports the 6200 somewhat different?

Code:
vendor-id               000010de
device-id               00000221
revision-id             000000a1
class-code              00030000
interrupts              00000001
min-grant               00000005
max-latency             00000001
subsystem-vendor-id     000010de
subsystem-id            00000010
devsel-speed            00000001
fast-back-to-back       
fcode-rom-offset        00000000
model                   Geforce 6200

Nice to see progess to the project anyway! Thanks for that!

Meanwhile i had another noob-comparing-look on the 6200 and 2MX FCode-ROMs. Just to see that they are of completely different structure.
 
@flyproductions , try the 6200/Test2/1ROMs/PNY_6200_PCI.rom.
I tested the ROM in the beige. There it doesn't work. The card seems to be completely ignored by the system. I tried two slots, C1 a swell as B1. Graphic and Displays shows " No information found". PCI cards only shows the USB card.
If it doesn't work in Beige G3, it should report where it's aborting from.
How can this be displayed?
Try it in G4 and G5 to make sure it still works.
In Sawtooth the card seems to work like normal with the rom. Boots up with the usual known Leopard-delay for the Temp Sensor. After that, boots up fine and works without any issues.

Maybe removing the Temp-Sensor-part could help to exclude error sources.

One question: How is the checksum at offset 0x42 calculated?
 
How can this be displayed?
Add to the nvram script the stuff with the (install-console). At a minimum, this:
Code:
(install-console)
probe-all
banner

Also setup these nvram variables:
Code:
setenv auto-boot? false
setenv input-device ttya
setenv output-device ttya
And connect the serial cable before boot.

In Sawtooth the card seems to work like normal with the rom. Boots up with the usual known Leopard-delay for the Temp Sensor. After that, boots up fine and works without any issues.
If the sawtooth has serial port, then grab a lspci from it. And a dump-device-tree.

Maybe removing the Temp-Sensor-part could help to exclude error sources.
Depends how far we get in the rom.

One question: How is the checksum at offset 0x42 calculated?
That checksum is generated by the toke command which converts the forth file into the rom.
toke -v -o "Test2/1ROMs/PNY_6200_PCI.rom" "Test2/Forth/PNY_6200_PCI.4th"

The checsum you see in "Test2/Forth/PNY_6200_PCI.4th" is just a comment which comes from the PNY_6200_PCI.rom that you posted.

Use the DumpPCIRom.sh command to convert the rom back into forth:
DumpPCIRom.sh -v "Test2/1ROMs/PNY_6200_PCI.rom" > "Test2/2Forth/PNY_6200_PCI.4th" 2> "Test2/2Errs/PNY_6200_PCI.errs"
 
Add to the nvram script the stuff with the (install-console). At a minimum, this:
Code:
(install-console)
probe-all
banner

Also setup these nvram variables:
Code:
setenv auto-boot? false
setenv input-device ttya
setenv output-device ttya
And connect the serial cable before boot.


If the sawtooth has serial port,
Into the Sawtooth's OF i can get via telnet. So the ttya-part of the nvram-variables has to be replaced with " enet:telnet ,192.168.0.115" (the actual IP), right?
then grab a lspci from it. And a dump-device-tree.
Attached you find the device tree dump of the Sawtooth with the 6200, flashed with the test-ROM, installed. Sadly for some reason i was uable to boot into OF with the display connected to the 6200, even with the card showing normal operation wehn booting to the OS. So i had to connect the display to the other card, a 6800 xt in AGP.

Also in the Sawtooth there is a flashed SATA-controller in the lowest slot. No other PCI-cards.

For lspci even after running the script, i got a "no current instance"-error. So nothing here so far.

Now i try to make the nvram-modifications and see if it comes up with something after rebooting.
 

Attachments

  • sawtooth_device_tree.zip
    32.3 KB · Views: 98
Into the Sawtooth's OF i can get via telnet. So the ttya-part of the nvram-variables has to be replaced with " enet:telnet ,192.168.0.115" (the actual IP), right?
The IP of the Sawtooth that you see in the network settings when you boot the Sawtooth. Also, there shouldn't be a space between telnet and ,.

Attached you find the device tree dump of the Sawtooth with the 6200, flashed with the test-ROM, installed.
Ok, doesn't look different than what you posted before but it shows it works.

Sadly for some reason i was uable to boot into OF with the display connected to the 6200, even with the card showing normal operation wehn booting to the OS. So i had to connect the display to the other card, a 6800 xt in AGP.
Is this behaviour in the sawtooth different than with the previous rom?

What if you remove the 6800 XT?

For lspci even after running the script, i got a "no current instance"-error. So nothing here so far.
Maybe show what you typed when something goes wrong so I can tell you what to do different. Did you use the steps I used for my Power Mac G5? #55

Now i try to make the nvram-modifications and see if it comes up with something after rebooting.
Not sure what happens if input-device and output-device are set to telnet.
 
Not sure what happens if input-device and output-device are set to telnet.
It just somehow brick my sawtooth in the most stupid way!

I set it that way, even with the missing blank before komma. Of course also with auto-boot set to false. And now i just cannot connect via telnet. But keyboard als doesn't work to reset the NVRAM.

Is there any way to force-reset this without having any input accesss? 😟
 
It just somehow brick my sawtooth in the most stupid way!

I set it that way, even with the missing blank before komma. Of course also with auto-boot set to false. And now i just cannot connect via telnet. But keyboard als doesn't work to reset the NVRAM.

Is there any way to force-reset this without having any input accesss? 😟

this should do the trick :)


(on the sawtooth id try the interrupt button if holding the power button does not force it into programmers mode)


speaking of sawtooths (sawteeth?) I managed to almost cram a Quadro FX 4500 into mine,

the relevance here is It would be interesting to see what an X1900 would do and if that works, what that might do in a G3 beige or other Old world mac since we know ATI ROM's are generally old world friendly :)


sadly there are not any cheap flash-able X1900's or X1950's on ebay atm or id get one to try myself :)
 
  • Like
Reactions: flyproductions
It just somehow brick my sawtooth in the most stupid way!

I set it that way, even with the missing blank before komma. Of course also with auto-boot set to false. And now i just cannot connect via telnet. But keyboard als doesn't work to reset the NVRAM.

Is there any way to force-reset this without having any input accesss? 😟
What happens when you boot? Is it maybe waiting for telnet connection from other computer?

We could try putting the following in the PCI rom of the 6200:
Code:
setenv auto-boot? false
sentenv input-device kbd
sentenv output-device screen
(install-console)
Do you know what was in the nvramrc?
 
  • Like
Reactions: flyproductions
this should do the trick :)
You saved my day! 👍
Works as usual again.
speaking of sawtooths (sawteeth?) I managed to almost cram a Quadro FX 4500 into mine,

the relevance here is It would be interesting to see what an X1900 would do and if that works, what that might do in a G3 beige or other Old world mac since we know ATI ROM's are generally old world friendly :)


sadly there are not any cheap flash-able X1900's or X1950's on ebay atm or id get one to try myself :)
Aren't all of these cards 4x/8x AGP-keyed and the 4500 even PCIe? So for most of them minimum a Digital Audio and the Quadro no G4 at all.

For what i know, the latest and greatest for the Sawtooth with it's 2x AGP should be the Radeon 9800 Pro, the 6600 GT if it boots (for my experience one out of 30-50) and the 6800 xt which i have. This one should be the best performer by a small margin, but sadly has no dual link DVI, so doesn't support the 30".

Edit: Ah, should have checked the link before posting. Nice! A PCI to PCIe adapter. Didn't even know, such thing exists. And the card seems to be fairly recognized. But next problem, i'm afraid, would be power consumption.
 
Last edited:
What happens when you boot? Is it maybe waiting for telnet connection from other computer?
Yes, this would have been the case. But i just could not check. But luckily jus holding the power button for an extended period of time, as suggested by LightBulbFun, worked.

But the most stupid thing about all that was, that now i suspect the additions to the nvram-script where ment to be made in the beige, but not the sawtooth.

So i try to this. This time with the known working ttya io.
 
  • Like
Reactions: joevt
But the most stupid thing about all that was, that now i suspect the additions to the nvram-script where ment to be made in the beige, but not the sawtooth.
True. What might be nice though is a method to use the sawtooth to understand how the GPU is supposed to function. I imagine we could add code to output every read and write to the GPU's registers and see how it differs between the sawtooth and the beige.

I asked before, does the 6200 have a 128K chip? It would make adding code easier. Otherwise, a method to load from disk in Open Firmware may be required. Perhaps the expansion ROM base address register is indicating 128K even though the rom chip is only 64K? I guess the only way to find out is to try and flash a 128K rom?

What about pci-probe-list on the sawtooth? How do the bits translate to devices, since the sawtooth has a more complicated pci layout:
Code:
/pci@f0000000
/pci@f0000000/uni-north-agp@b
/pci@f0000000/NVDA,Parent@10
/pci@f0000000/NVDA,Parent@10/NVDA,Display-B@1
/pci@f0000000/NVDA,Parent@10/NVDA,Display-A@0
/pci@f2000000
/pci@f2000000/pci-bridge@d
/pci@f2000000/pci-bridge@d/mac-io@7
/pci@f2000000/pci-bridge@d/mac-io@7/interrupt-controller@40000
/pci@f2000000/pci-bridge@d/mac-io@7/gpio@50
/pci@f2000000/pci-bridge@d/mac-io@7/gpio@50/extint-gpio1
/pci@f2000000/pci-bridge@d/mac-io@7/gpio@50/programmer-switch
/pci@f2000000/pci-bridge@d/mac-io@7/escc-legacy@12000
/pci@f2000000/pci-bridge@d/mac-io@7/escc-legacy@12000/ch-a@12004
/pci@f2000000/pci-bridge@d/mac-io@7/escc-legacy@12000/ch-b@12000
/pci@f2000000/pci-bridge@d/mac-io@7/escc@13000
/pci@f2000000/pci-bridge@d/mac-io@7/escc@13000/ch-a@13020
/pci@f2000000/pci-bridge@d/mac-io@7/escc@13000/ch-b@13000
/pci@f2000000/pci-bridge@d/mac-io@7/davbus@14000
/pci@f2000000/pci-bridge@d/mac-io@7/davbus@14000/sound
/pci@f2000000/pci-bridge@d/mac-io@7/timer@15000
/pci@f2000000/pci-bridge@d/mac-io@7/via-pmu@16000
/pci@f2000000/pci-bridge@d/mac-io@7/via-pmu@16000/rtc
/pci@f2000000/pci-bridge@d/mac-io@7/via-pmu@16000/power-mgt
/pci@f2000000/pci-bridge@d/mac-io@7/via-pmu@16000/power-mgt/usb-power-mgt
/pci@f2000000/pci-bridge@d/mac-io@7/i2c@18000
/pci@f2000000/pci-bridge@d/mac-io@7/i2c@18000/cereal
/pci@f2000000/pci-bridge@d/mac-io@7/ata-4@1f000
/pci@f2000000/pci-bridge@d/mac-io@7/ata-4@1f000/disk
/pci@f2000000/pci-bridge@d/mac-io@7/ata-3@20000
/pci@f2000000/pci-bridge@d/mac-io@7/ata-3@20000/disk
/pci@f2000000/pci-bridge@d/mac-io@7/ata-3@21000
/pci@f2000000/pci-bridge@d/mac-io@7/ata-3@21000/disk
/pci@f2000000/pci-bridge@d/NVDA,Parent@3
/pci@f2000000/pci-bridge@d/NVDA,Parent@3/NVDA,Display-A@0
/pci@f2000000/pci-bridge@d/NVDA,Parent@3/NVDA,Display-B@1
/pci@f2000000/pci-bridge@d/NVDA,Parent@3/sensor-parent@2
/pci@f2000000/pci-bridge@d/NVDA,Parent@3/sensor-parent@2/gpu-diode-temperature@0
/pci@f2000000/pci-bridge@d/WiebeSATA3112@4
/pci@f2000000/pci-bridge@d/WiebeSATA3112@4/sd
/pci@f2000000/pci-bridge@d/usb@8
/pci@f2000000/pci-bridge@d/usb@8/hub@1
/pci@f2000000/pci-bridge@d/usb@8/hub@1/device@1
/pci@f2000000/pci-bridge@d/usb@8/hub@1/device@1/keyboard@0
/pci@f2000000/pci-bridge@d/usb@8/hub@1/device@1/eject-key@1
/pci@f2000000/pci-bridge@d/usb@9
/pci@f2000000/pci-bridge@d/firewire@a
/pci@f4000000
/pci@f4000000/ethernet@f
/pci@f4000000/ethernet@f/ethernet-phy

It may be useful to have pci-probe-list skip the 6200. Do some commands to setup logging, then reset pci-probe-list and call probe-all to execute the 6200 fcode.

I attached some notes:
- how to dump the Open Firmware dictionary which is useful to see how fcode is compiled or for New World Macs where it is unknown how to extract the fcode images (I think there's compression or something in the rom).
- how to dump the rom of a new world Mac, in case a method to decompress the bits is found. (UPDATE: found in a later post)
- notes about pci-probe-list for B&W G3 for comparison with other New World Macs.
 

Attachments

  • joevt Open Firmware Notes.zip
    10 KB · Views: 97
Last edited:
  • Like
Reactions: flyproductions
True. What might be nice though is a method to use the sawtooth to understand how the GPU is supposed to function. I imagine we could add code to output every read and write to the GPU's registers and see how it differs between the sawtooth and the beige.

I asked before, does the 6200 have a 128K chip? It would make adding code easier. Otherwise, a method to load from disk in Open Firmware may be required. Perhaps the expansion ROM base address register is indicating 128K even though the rom chip is only 64K? I guess the only way to find out is to try and flash a 128K rom?

What about pci-probe-list on the sawtooth? How do the bits translate to devices, since the sawtooth has a more complicated pci layout:
Code:
/pci@f0000000
/pci@f0000000/uni-north-agp@b
/pci@f0000000/NVDA,Parent@10
/pci@f0000000/NVDA,Parent@10/NVDA,Display-B@1
/pci@f0000000/NVDA,Parent@10/NVDA,Display-A@0
/pci@f2000000
/pci@f2000000/pci-bridge@d
/pci@f2000000/pci-bridge@d/mac-io@7
/pci@f2000000/pci-bridge@d/mac-io@7/interrupt-controller@40000
/pci@f2000000/pci-bridge@d/mac-io@7/gpio@50
/pci@f2000000/pci-bridge@d/mac-io@7/gpio@50/extint-gpio1
/pci@f2000000/pci-bridge@d/mac-io@7/gpio@50/programmer-switch
/pci@f2000000/pci-bridge@d/mac-io@7/escc-legacy@12000
/pci@f2000000/pci-bridge@d/mac-io@7/escc-legacy@12000/ch-a@12004
/pci@f2000000/pci-bridge@d/mac-io@7/escc-legacy@12000/ch-b@12000
/pci@f2000000/pci-bridge@d/mac-io@7/escc@13000
/pci@f2000000/pci-bridge@d/mac-io@7/escc@13000/ch-a@13020
/pci@f2000000/pci-bridge@d/mac-io@7/escc@13000/ch-b@13000
/pci@f2000000/pci-bridge@d/mac-io@7/davbus@14000
/pci@f2000000/pci-bridge@d/mac-io@7/davbus@14000/sound
/pci@f2000000/pci-bridge@d/mac-io@7/timer@15000
/pci@f2000000/pci-bridge@d/mac-io@7/via-pmu@16000
/pci@f2000000/pci-bridge@d/mac-io@7/via-pmu@16000/rtc
/pci@f2000000/pci-bridge@d/mac-io@7/via-pmu@16000/power-mgt
/pci@f2000000/pci-bridge@d/mac-io@7/via-pmu@16000/power-mgt/usb-power-mgt
/pci@f2000000/pci-bridge@d/mac-io@7/i2c@18000
/pci@f2000000/pci-bridge@d/mac-io@7/i2c@18000/cereal
/pci@f2000000/pci-bridge@d/mac-io@7/ata-4@1f000
/pci@f2000000/pci-bridge@d/mac-io@7/ata-4@1f000/disk
/pci@f2000000/pci-bridge@d/mac-io@7/ata-3@20000
/pci@f2000000/pci-bridge@d/mac-io@7/ata-3@20000/disk
/pci@f2000000/pci-bridge@d/mac-io@7/ata-3@21000
/pci@f2000000/pci-bridge@d/mac-io@7/ata-3@21000/disk
/pci@f2000000/pci-bridge@d/NVDA,Parent@3
/pci@f2000000/pci-bridge@d/NVDA,Parent@3/NVDA,Display-A@0
/pci@f2000000/pci-bridge@d/NVDA,Parent@3/NVDA,Display-B@1
/pci@f2000000/pci-bridge@d/NVDA,Parent@3/sensor-parent@2
/pci@f2000000/pci-bridge@d/NVDA,Parent@3/sensor-parent@2/gpu-diode-temperature@0
/pci@f2000000/pci-bridge@d/WiebeSATA3112@4
/pci@f2000000/pci-bridge@d/WiebeSATA3112@4/sd
/pci@f2000000/pci-bridge@d/usb@8
/pci@f2000000/pci-bridge@d/usb@8/hub@1
/pci@f2000000/pci-bridge@d/usb@8/hub@1/device@1
/pci@f2000000/pci-bridge@d/usb@8/hub@1/device@1/keyboard@0
/pci@f2000000/pci-bridge@d/usb@8/hub@1/device@1/eject-key@1
/pci@f2000000/pci-bridge@d/usb@9
/pci@f2000000/pci-bridge@d/firewire@a
/pci@f4000000
/pci@f4000000/ethernet@f
/pci@f4000000/ethernet@f/ethernet-phy

It may be useful to have pci-probe-list skip the 6200. Do some commands to setup logging, then reset pci-probe-list and call probe-all to execute the 6200 fcode.

I attached some notes:
- how to dump the Open Firmware dictionary which is useful to see how fcode is compiled or for New World Macs where it is unknown how to extract the fcode images (I think there's compression or something in the rom).
- how to dump the rom of a new world Mac, in case a method to decompress the bits is found.
- notes about pci-probe-list for B&W G3 for comparison with other New World Macs.
New World Macs use pci-probe-mask, but it functions the same as pci-probe-list.
 
  • Like
Reactions: flyproductions
I asked before, does the 6200 have a 128K chip? It would make adding code easier. Otherwise, a method to load from disk in Open Firmware may be required. Perhaps the expansion ROM base address register is indicating 128K even though the rom chip is only 64K? I guess the only way to find out is to try and flash a 128K rom?

Is there an easy way to check? The backup rom dump I took from nvflash is 64k in size.

I didn't see a eeprom chip looking at the pcb, but I haven't removed the heatsink to check. I though I'd mess around with the nvfash but other than doing a backup I haven't had much success today with the versions I've tried (5.31, 5.4, 5.13). E.g. nvflash --check, just getting eeprom id not found type errors.



6200a.jpg
6200b.jpg


I have a EVGA 6200 PCI (512MB) so maybe I can help at some point (Have two oldworld mac clones, Powercentre Pro and Powertower Pro, e.g. Catalyst, and a Tsunami architecture. The Powertower has 6 slots, bandit PCI bridge). Also have a MDD that is apart right now, but can put it back together and stick the 6200 card in also. That has Leopard & OS 9 on it. The clones just have OS9 & OSX Panther (but hope to get Tiger on them shortly, and Leopard once I figure out what is wrong with my ebay special Sonnet G4 upgrade).
 
I asked before, does the 6200 have a 128K chip? It would make adding code easier.
Sadly not. it’s PM25LV512, so 64k. But couldn't remove the temp-sensor-part at the end of the ROM help at least just a little? It should free up around 3k of space.

Thanks for the attached notes. But for that, sorry, again more questions than answers 😟

For the OF dictonary: As long as it's for the Sawtooth, i can enter OF via telnet. So no fast setup of a serial connection necessary. But for both of the commands i get an "unknown word" error.

For dumping the Sawtooth's Rom: Can this also be performed via terminal from the OS-side or has it to be made in OF?
 
Is there an easy way to check? The backup rom dump I took from nvflash is 64k in size.
In this case also the eeprom is most likely 64k. But if you want to double check, you can

a) try to read the printing on the part itself. See attached pic. Anything with 512 or 05 at the end should be 64k. 10 at the end is likely 128k.

b) run "nvflash --check", then select the number of the 6200 if mor than on NV card is in the machine. Same as above for the name of the eeprom that is found. This method is the safer one, as there are many misprinted parts around.

eeprom.jpg
 
In this case also the eeprom is most likely 64k. But if you want to double check, you can

a) try to read the printing on the part itself. See attached pic. Anything with 512 or 05 at the end should be 64k. 10 at the end is likely 128k.

b) run "nvflash --check", then select the number of the 6200 if mor than on NV card is in the machine. Same as above for the name of the eeprom that is found. This method is the safer one, as there are many misprinted parts around.

Hi, it seems to be a Gigadevice 25Q21bt e5p535
This might be the datasheet

2M-bit Serial Flash -256K-byte.

I have been getting a Supported EEPROM not found error trying to do anything other than backup. Forgot to write down the exact ID and error but will do that next time I try. But am assuming I'll have to hunt through the nvflash versions. Nothing is ever easy ; )

thumbnail_IMG_5905.jpg
 
Last edited:
Sadly not. it’s PM25LV512, so 64k. But couldn't remove the temp-sensor-part at the end of the ROM help at least just a little? It should free up around 3k of space.
I suppose removing the temp-sensor-part could work.

But for both of the commands i get an "unknown word" error.
Usually unknown word error tells you what the unknown word is. Show what you typed and show what the error message says.

For dumping the Sawtooth's Rom: Can this also be performed via terminal from the OS-side or has it to be made in OF?
I don't know about terminal from OS-side. I think one method of dumping is sufficient.

Maybe show what you typed when something goes wrong so I can tell you what to do different. Did you use the steps I used for my Power Mac G5? #55
Try to get the lspci working.

For each of the commands below, enter the command, paste the lspci command from the "lspci for paste OpenFirmware.txt" file, then execute lspci.
dev agp
dev pci1
dev pci2


A script is included to parse the output of lspci from Open Firmware in macOS (since Mac OS 9 or PPC Mac OS X doesn't have a working pciutils/lspci?)

See for download link:
#565
 
Last edited:
  • Like
Reactions: flyproductions
Which method did you use to get that? It looks like a valid dump, similar to what I got for my B&W G3.
I followed your guide, entering the G4's OF via telnet from my main workstation. Then copied from the terminal window to an empty document of the hex-editor i am using.
 
I followed your guide, entering the G4's OF via telnet from my main workstation. Then copied from the terminal window to an empty document of the hex-editor i am using.
Excellent. I am reading a document about how the New World Rom for B&W G3 boots and decompresses the Open Firmware part of the rom into ram.
 
I have been getting a Supported EEPROM not found error trying to do anything other than backup.
What version of NVFlash did you use?

Edit: Sorry for missguiding you. But from the datasheet the device i pointed too, doesn't seem to be an eeprom at all. Is there a similar looking (8-pin) part anywhere on the card? Maybe on the back.

For NVFlash i'd recommend 5.31 (see attachement) for use with the 6200-generation of cards. This should perfectly support anything that has ever been used on one of them.
 

Attachments

  • nvFlash 5.31.zip
    230 KB · Views: 69
Last edited:
For each of the commands below, enter the command, paste the lspci command from the "lspci for paste OpenFirmware.txt" file, then execute lspci.
dev agp
dev pci1
dev pci2
Attached is the output for all of the commands mentioned in "lspci for OpenFirmware.txt".

Installed cards: The 6800 xt on AGP (which seems to be pci0), the 6200 on the second of the PCI slots, a SATA controller on the last one.
 

Attachments

  • Sawtooth_output.zip
    128.1 KB · Views: 102
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.