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.

joevt

macrumors 604
Jun 21, 2012
6,935
4,235
Here is some interesting posts:
https://strangedogs.proboards.com/post/10665/thread
https://strangedogs.proboards.com/post/11687/thread
Basically, we need a serial port connection (or maybe ethernet will also work) so you can do stuff like below to check for corruption of the dictionary.
Code:
printenv
dev / ls
devalias
dump-device-tree
or so you can paste the lspci command.
or dump the dictionary as hex to see how it gets corrupted.
The dictionary is built in an upward direction, so it's kind of a history of things that get added to the dictionary.
 
Last edited:
  • Like
Reactions: flyproductions

flyproductions

macrumors 65816
Jan 17, 2014
1,082
461
Wow! Didn't even know that this still exists!
Basically, we need a serial port connection (or maybe ethernet will also work)
I have plenty of machines with serial ports (if this means Macs): The Sawtooth has a Stealth. also ich have some Powermac 6100 at hand and a few others. What i am lacking are any skills to perform the tasks, you are suggesting. How ist the connection made? Will a printer cable work? Are there any tools/software needed? Does copy and past from a text editor work?

Sorry for all this noob-questions.
 

DearthnVader

Suspended
Dec 17, 2015
2,207
6,391
Red Springs, NC
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 -1 <> if \ _l0
                    bus 2 u.r ." :" dev 2 u.r ." ." fun 1 u.r
                    adr c + config-l@ dup 7f0000 and if \ _lc _l0
                        ." -["
                        adr 18 + config-l@ dup \ _l18 _l18 _lc _l0
                        10 >> ff and \ _b1a _l18 _lc _l0
                        swap 8 >> ff and \ _b19 _b1a _lc _l0
                        2dup 2 u.r \ _b1a _b19 _b1a _lc _l0
                        <> if \ _b1a _lc _l0
                            ." -" 2 u.r \ _lc _l0
                            1
                        else
                            drop \ _lc _l0
                            4
                        then
                        ." ]"
                    else
                        9
                    then spaces
                    swap \ _l0 _lc
                    ." ["
                    dup ffff and 4 u.r ." :"
                    dup 10 >> 4 u.r
                    ." ] ["
                    swap \ _lc _l0
                    adr 8 + config-l@ dup dup \ _l8 _l8 _l8 _lc _l0
                    18 >> 2 u.r 10 >> 2 u.r 8 >> 2 u.r
                    ." ]" cr
                    fun 0= if
                         dup 800000 and 0= if
                             7 fun + -> fun
                         then
                    then
                    drop \ _l0
                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.).
I adjusted this for OF >3.x.x for Old World machines so it can be loaded with the boot command as a text file from an MSDOS formatted floppy.

It's still not quite correct but maybe @joevt can test it on his 8600 and fix it.

Code:
\ comment

cr
hex

cr
dev pci
cr

: 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 -1 <> if \ _l0
                    bus 2 u.r ." :" dev 2 u.r ." ." fun 1 u.r
                    adr c + config-l@ dup 7f0000 and if \ _lc _l0
                        ." -["
                        adr 18 + config-l@ dup \ _l18 _l18 _lc _l0
                        10 >> ff and \ _b1a _l18 _lc _l0
                        swap 8 >> ff and \ _b19 _b1a _lc _l0
                        2dup 2 u.r \ _b1a _b19 _b1a _lc _l0
                        <> if \ _b1a _lc _l0                   
         ." -" 2 u.r \ _lc _l0

                           1                       
else                   
         drop \ _lc _l0         
                  4
                        then
                        ." ]"
                    else
                        9
                    then spaces
                    swap \ _l0 _lc
                    ." ["
                    dup ffff and 4 u.r ." :"
                    dup 10 >> 4 u.r
                    ." ] ["
                    swap \ _lc _l0
                    adr 8 + config-l@ dup dup \ _l8 _l8 _l8 _lc _l0
                    18 >> 2 u.r 10 >> 2 u.r 8 >> 2 u.r
                    ." ]" cr                   
fun 0= if
                         dup 800000 and 0= if
                             7 fun + -> fun
                         then
                    then
                    drop \ _l0
                then
                drop \
                fun 1+ -> fun
            repeat
            dev 1+ -> dev
        repeat
        bus 1+ -> bus
    repeat
;
cr
\

It's best to edit this with SimpleText.
 

Attachments

  • lspci.txt
    1.8 KB · Views: 88

joevt

macrumors 604
Jun 21, 2012
6,935
4,235
I have plenty of machines with serial ports (if this means Macs): The Sawtooth has a Stealth. also ich have some Powermac 6100 at hand and a few others. What i am lacking are any skills to perform the tasks, you are suggesting. How ist the connection made? Will a printer cable work? Are there any tools/software needed? Does copy and past from a text editor work?
Connect the serial cable between the beige G3 (modem port) and another Mac. Use a serial program such as Z-Term to see if you can get one to communicate with the other in Mac OS X. Try copying and pasting from a text editor to see if it can properly handle the characters and lines. If there's an issue then maybe there's some text spacing adjustments that can be made.

Then on the Beige G3 you can set the input and output devices to ttya using the setenv command and see if you can do Open Firmware commands over serial.

Then for your next trick, boot the Beige G3 into Mac OS X with Ethernet connection, write down the IP address, then try the following in Open Firmware (replace 192.168.0.121 with your IP address):

" enet:telnet,192.168.0.121" io

Then on your modern Intel or Apple Silicon Mac, run telnet 192.168.0.121 in Terminal.app. Then try some Open Firmware commands from there.

See https://forums.macrumors.com/thread...se-cards-flashing-quest.2331218/post-30827719

I adjusted this for OF >3.x.x for Old World machines so it can be loaded with the boot command as a text file from an MSDOS formatted floppy.

It's still not quite correct but maybe @joevt can test it on his 8600 and fix it.
I'm trying it on my Power Mac Quad G5 first.
Code:
" enet:telnet,192.168.0.112" io
load hd:9,\lspci.txt
dev pci0
load-base load-size evaluate 
lspci
but I get a no current instance message.
 

joevt

macrumors 604
Jun 21, 2012
6,935
4,235
I'm trying it on my Power Mac Quad G5 first.
Code:
" enet:telnet,192.168.0.112" io
load hd:9,\lspci.txt
dev pci0
load-base load-size evaluate 
lspci
but I get a no current instance message.
I forget to remove the dev pci command from lspci.txt so that the lspci word gets added to the current device that I select before executing load-base load-size evaluate

Code:
dev pci0 load-base load-size evaluate 
dev pci1 load-base load-size evaluate 
dev pci2 load-base load-size evaluate 
dev pci3 load-base load-size evaluate 
dev pci4 load-base load-size evaluate 
dev pci5 load-base load-size evaluate 
dev pci6 load-base load-size evaluate 
dev pci7 load-base load-size evaluate 
dev pci8 load-base load-size evaluate 
dev pci9 load-base load-size evaluate

Then I can create a new word:
Code:
unselect-dev
: lspcidev bl word count open-dev ?dup if " lspci" rot $call-method then ;
And execute it like this for each pci device:
Code:
lspcidev pci0
lspcidev pci1
lspcidev pci2
lspcidev pci3
lspcidev pci4
lspcidev pci5
lspcidev pci6
lspcidev pci7
lspcidev pci8
lspcidev pci9
pci1 to pci9 appear to all have access to the same PCI segment so using lspci from any of those produces the same result. Actually, they are all part of /ht, so it would be sufficient to add lspci to /ht and just do
Code:
lspcidev pci0
lspcidev /ht

These are therefore all the devices of my Power Mac Quad G5:
Code:
0 > lspcidev pci0 
00:0b.0-[0a]    [106b:005b] [060400]
0a:00.0         [10de:0092] [030000]
 ok
0 > lspcidev /ht 
00:00.0         [106b:0074] [060000]
00:01.0-[04]    [1166:0130] [060400]
00:02.0-[05]    [1166:0130] [060400]
00:03.0-[06]    [1166:0132] [060400]
00:04.0-[07]    [1166:0132] [060400]
00:05.0-[08]    [1166:0132] [060400]
00:06.0-[09]    [1166:0132] [060400]
00:07.0-[02]    [106b:0053] [060400]
00:08.0-[01]    [106b:0054] [060400]
00:09.0-[03]    [106b:0055] [060400]
01:07.0         [106b:004f] [ff0000]
01:0b.0         [1033:0035] [0c0310]
01:0b.1         [1033:0035] [0c0310]
01:0b.2         [1033:00e0] [0c0320]
02:0f.0         [106b:0051] [020000]
03:0c.0         [1166:0240] [01018f]
03:0d.0         [106b:0050] [ff0000]
03:0e.0         [106b:0052] [0c0010]
05:04.0         [14e4:166a] [020000]
05:04.1         [14e4:166a] [020000]
 ok

The # for pci1 to pci9 matches the device ID on bus 0 of a bridge on the /ht pci segment.
Each pci# device has a secondarybus# that points to the last bus that they use.
Code:
0 > dev pci0 secondarybus# . a  ok \ the GPU
0 > dev pci1 secondarybus# . 4  ok \ empty
0 > dev pci2 secondarybus# . 5  ok \ 2 Broadcom Ethernet devices
0 > dev pci3 secondarybus# . 6  ok \ empty
0 > dev pci4 secondarybus# . 7  ok \ empty
0 > dev pci5 secondarybus# . 8  ok \ empty
0 > dev pci6 secondarybus# . 9  ok \ empty
0 > dev pci7 secondarybus# . 2  ok \ hidden ethernet controller used for iMac G5 but not Quad G5 ?
0 > dev pci8 secondarybus# . 1  ok \ mac-io, USB (ochi and ehci)
0 > dev pci9 secondarybus# . 3  ok \ sata, ata, firewire
 

flyproductions

macrumors 65816
Jan 17, 2014
1,082
461
Then for your next trick, boot the Beige G3 into Mac OS X with Ethernet connection, write down the IP address, then try the following in Open Firmware (replace 192.168.0.121 with your IP address):

" enet:telnet,192.168.0.121" io
Tried this. But whenever i enter this command in OF, i get an "bad IP value"-error. Even using the exact IP, the G3 gets when fully booted to the OS.
 

joevt

macrumors 604
Jun 21, 2012
6,935
4,235
I adjusted this for OF >3.x.x for Old World machines so it can be loaded with the boot command as a text file from an MSDOS formatted floppy.
I forget, how does Mac OS X boot on Open firmware 1.0.5 if we can't load files from HFS+ formatted hard drives?

There's a bootx file (originally from Apple, updated by XPostFacto) containing lots of Open Firmware stuff. It's got C++ code but also executes stuff in Open Firmware context. It replaces the mac-parts package by renaming the original to "lame" and loading new fcode via byte-load. It replaces the code for the "control" video output device. etc.

So how does the bootx file get loaded? I suppose it could be the same way the Mac OS ROM gets loaded for macOS 9, since both bootx and Mac OS ROM have the <CHRP-BOOT> header but isn't the Mac OS ROM file for New World Macs?
 

flyproductions

macrumors 65816
Jan 17, 2014
1,082
461
There's a bootx file (originally from Apple, updated by XPostFacto) containing lots of Open Firmware stuff.
Yes! Whenever once boot via XPostFacto, the nvram entry to disable the onboard video gets overwritten. Also, if once booted withXPostFacto, i am not able to boot into OF via bootong with the key combination anymore. I have to reset pram first to make it work again.
 

DearthnVader

Suspended
Dec 17, 2015
2,207
6,391
Red Springs, NC
I forget, how does Mac OS X boot on Open firmware 1.0.5 if we can't load files from HFS+ formatted hard drives?
Never quite figured that out, I suppose that the nvram patch used can somehow read HFS+ disks and loads the custom bootx.image that XPF installs.

Remember that the Beige G3 Rev 1 and Rev 2 can't read HFS+ either, so there is a Fake System and Fake Finder in /System/Library/CoreServices up to 10.2.8 that works some NVRAM magic and reboots to OS X.
 

flyproductions

macrumors 65816
Jan 17, 2014
1,082
461
Also tenet does not seem to be present in my beiges OF. At least for
Code:
dev /packages/telnet
as adviced in this post i just get can't find device.
 

joevt

macrumors 604
Jun 21, 2012
6,935
4,235
Yes! Whenever once boot via XPostFacto, the nvram entry to disable the onboard video gets overwritten. Also, if once booted withXPostFacto, i am not able to boot into OF via bootong with the key combination anymore. I have to reset pram first to make it work again.
I suppose you could edit XPostFacto so that it includes the nvram entry to disable onboard video. I think the script is in a resource inside the executable. You have to make sure the total size of the script is not too big (the I do have a patch to increase the size by using unused part of the nvram).

Remember that the Beige G3 Rev 1 and Rev 2 can't read HFS+ either, so there is a Fake System and Fake Finder in /System/Library/CoreServices up to 10.2.8 that works some NVRAM magic and reboots to OS X.
bootx has file system code for net, HFS, UFS, and ext2. Looking at my Power Mac 8600, I see a Mac OS X partition with just stuff from XPostFacto (kernel extensions and BootX). It's been awhile since I used XPostFacto... I think the BootX file is acting as the System file? There's no Finder. I guess this partition boots the real Mac OS X partition. But the real MacOS X partition also has BootX and XPostFacto kexts. Maybe the first partition is for Mac OS X Installer CDs.

OMG! Why are all my drives only 2 GB? I forgot SCSI hard drives were that small. I have three of those (but one's not mounting?). I also have a 20 GB and 40 GB ATA drives connected to Sonnet Tempo Trio ATA 133/FireWire 400/USB 2.0 PCI card.

Also tenet does not seem to be present in my beiges OF. At least for
Code:
dev /packages/telnet
as adviced in this post i just get can't find device.
You're right. You'll need to use serial. Try working on that. I have a USB serial port adapter for my MacPro3,1. I also have a serial PCIe card that I can use in the MacPro3,1 or in a Thunderbolt enclosure with my Mac mini 2018. It could probably work in my Quad G5. I suppose you can use an older Mac with built-in serial port but using your newest Mac with a USB adapter is best so you can google the internet for Open Firmware info.
 

flyproductions

macrumors 65816
Jan 17, 2014
1,082
461
You're right. You'll need to use serial. Try working on that.
Took me quite a while, but now i think i'm ready to go.

I found some long printer cable down in the basement and use the sawtooth, which has a stealth serial port, to connect to the beige's modem port. As you can see on the screenshot attached, this seems to work so far for running stuff on it's of.

Now i can access the sawtooth via screen sharing from my main working machine. So i have a fairly comfortable solution to try things.

of_serial.jpg
 
  • Like
Reactions: LightBulbFun

flyproductions

macrumors 65816
Jan 17, 2014
1,082
461
Here is, what the beige's device tree shows for the 2MX, if it's of any help:

Code:
/pci@80000000/NVDA,NVMac@e
PROPERTIES:
vendor-id               000010de
device-id               00000110
revision-id             000000b2
class-code              00030000
interrupts              00000001
min-grant               00000005
max-latency             00000001
subsystem-vendor-id     00000208
subsystem-id            0000a5b8
devsel-speed            00000001
fast-back-to-back
AAPL,interrupts         00000018
AAPL,slot-name          B1
fcode-rom-offset        00000000
name                    NVDA,NVMac
device_type             display
model                   GeForce2 MX
compatible              GeForce2 MX
character-set           49534f38 3835392d 3100
rom-revision            31303537 2e303139 00
NVDA,Features           00000001
reg                     00007000 00000000 00000000  00000000 00000000
                        02007010 00000000 00000000  00000000 01000000
                        42007014 00000000 00000000  00000000 08000000
                        02007030 00000000 00000000  00000000 00010000
width                   00000280
height                  000001e0
depth                   00000008
linebytes               00000280
NVDA,BMP                55aa04eb 4b373430 30e94c19 77cc5649 44454f20 0d000000 0000d32b 00004942

                        4d205647 4120436f 6d706174 69626c65 01000000 80100000 30312f30 352f3031

                        00000000 00000000 00000000 00000000 e9791700 00000000 e91d2be9 252b504d

                        49445800 5b000000 00a000b0 00b800c0 005bff7f 4e560005 10c9d6e0 15001103

                        00000000 8007d808 bc013002 6801dc01 00000000 00000000 00000000 00000000

                        00000000 00000000 00010100 3f3e3736 04000000 00801a06 00400d03 00cb00dd

                        00e300fb 00070107 01dd0029 01800744 012707d7 01940205 02810200 00000101

                        010201d4 02100001 0000001c 02100001 000000d0 02100001 00000000 10100040

                        ... 0000079a bytes total
driver,AAPL,MacOS,PowerPC
                        4a6f7921 70656666 70777063 00000001 b9ebff24 00000000 00000000 00000000

                        00030002 00000000 ffffffff 00000000 000030d8 000030d8 000030d8 000003b0

                        00040400 ffffffff 00000000 00000dc8 0000083d 000005fa 00003490 02010400

                        ffffffff 00000000 00000000 00000000 00000330 00000080 04040400 00000000

                        00000001 00000160 ffffffff 00000000 ffffffff 00000000 00000004 00000013

                        00000001 000000f0 00000104 0000030c 00000001 00000002 00000000 00000000

                        00000000 00000004 00000000 00000000 00000012 00000000 00000000 0000000a

                        00000004 00000000 00000022 00000000 00000000 00000002 0000000e 00000000

                        ... 00003a8a bytes total
power-consumption       00000000 00000000
assigned-addresses      c2007014 00000000 88000000  00000000 08000000
                        82007010 00000000 81000000  00000000 01000000
                        82007030 00000000 80810000  00000000 00010000

METHODS:
close           restore         draw-logo       write           open            nv-close

nv-open         nvreset         dimensions      read-rectangle  draw-rectangle  fill-rectangle

setup-clut      color@          color!          get-colors      set-colors      ddc2-send-byte

ddc2-set-stop   ddc2-set-start  show-modes      get-mode

I have yet to see anything for the 6200. 😟
 

joevt

macrumors 604
Jun 21, 2012
6,935
4,235
Here is, what the beige's device tree shows for the 2MX, if it's of any help:
I have yet to see anything for the 6200. 😟
Are we trying to get the 2MX or the 6200 working?
Looking back, it seems they both have problems.
- "The 2MX only has VGA output. And Dual Displays does not work."
- "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."

Do the steps from #51 for both GPUs.

Can you get into Open Firmware with the 6200 installed?

I've attached a newer version of lspci.txt which also dumps all the registers for each PCI device. Are you able to perform the steps in #55 ? Put the lspci.txt file in the root directory of the boot drive of the Beige G3. Is there a command dir hd:9,\ that will list the contents of the root directory of the boot drive of the Beige G3? 9 is the partition number. I'm not sure if your partitions are the same. pdisk in Mac OS X can list the partitions. Maybe Beige G3 doesn't know how to do HFS+. If not, then you have to use the copy/paste method of adding lspci to each pci segment. I think beige G3 only has one which has devalias pci.

Code:
dev pci
\ past contents of lspci here.
lspci

I'll have to make some debug versions of the 6200 ROM for you to flash.

What modem speed are you using? I think 38400 is the default. This can be increased to 230400. Does Z-Term have a 230400 option? To make the change I need the disassembly of the initscc word:
Code:
dev ttya
' initscc dis
Continue the disassembly until you see 00000000.
If initscc is unknown, then do this:
Code:
dev ttya
' open 200 - dis
Continue the disassembly until you see 128 lines.
 

Attachments

  • lspci.txt.zip
    936 bytes · Views: 157

flyproductions

macrumors 65816
Jan 17, 2014
1,082
461
Are we trying to get the 2MX or the 6200 working?
No. But my thinking was, comparing this properties of a NV card working in a beige to the properties of the 6200 in a machine where this works (posted before) might be helpful. I assume the 2MX would work in the beige, if it didn't have some hardware defects, as it shows the same disfuntionalities also in new world macs.
- "The 2MX only has VGA output. And Dual Displays does not work."
I think, this is because the rom used is of a card with a different port layout.
Do the steps from #51 for both GPUs.
Yes, i can to this. Is the complete device tree output of any importance or just the part for the GPU?
Can you get into Open Firmware with the 6200 installed?
Yes! But up to now since i am able to do OF over serial, it has been completely ignored in any of the PCIs. Did not once appear with "dev / ls".
I've attached a newer version of lspci.txt which also dumps all the registers for each PCI device. Are you able to perform the steps in #55 ?
I'll try this later and post results.

What modem speed are you using? I think 38400 is the default. This can be increased to 230400. Does Z-Term have a 230400 option?
Yes, i can set it to this. But it does not seem to work correctly.
To make the change I need the disassembly of the initscc word:
Here is the output up to the first 00000000
Code:
0 > dev ttya  ok
0 > ' initscc dis
ff845188: 967efffc
ff84518c: 7e6802a6
ff845190: 4bfc8181
ff845194: 4bffffcd
ff845198: 4bffff89
ff84519c: 4bfc429d
ff8451a0: 00000020
ff8451a4: 4bfc74ad
ff8451a8: 4bfc4ff1
ff8451ac: 48000010
ff8451b0: 4bfc4289
ff8451b4: 00000080
ff8451b8: 4800000c
ff8451bc: 4bfc427d
ff8451c0: 00000040
ff8451c4: 4bffff9d
ff8451c8: 4bffff59
ff8451cc: 4bfc7985
ff8451d0: 4bfc5e09
ff8451d4: 4bfc6395
ff8451d8: 4bfc4261
ff8451dc: 00038400
ff8451e0: 4bffff61
ff8451e4: 4bfc6e4d
ff8451e8: 4bfc6e71
ff8451ec: 4bfc6ba5
ff8451f0: 4bfc7ac9
ff8451f4: 4bfc4245
ff8451f8: 0000000d
ff8451fc: 4bffff65
ff845200: 4bffff61
ff845204: 4bfc4235
ff845208: 0000000c
ff84520c: 4bffff55
ff845210: 4bffff51
ff845214: 4bfc4225
ff845218: 0000000e
ff84521c: 4bffff45
ff845220: 4bfc4219
ff845224: 00000001
ff845228: 4bffff39
ff84522c: 4bfc420d
ff845230: 0000000b
ff845234: 4bffff2d
ff845238: 4bfc4201
ff84523c: 00000050
ff845240: 4bffff21
ff845244: 4bfc812d
ff845248: 4bffff19
ff84524c: 4bfc41ed
ff845250: 0000006a
ff845254: 4bffff0d
ff845258: 4bfc69b9
ff84525c: 4bffff05
ff845260: 4bfc41d9
ff845264: 0000004c
ff845268: 4bfffef9
ff84526c: 4bfc6985
ff845270: 4bfffef1
ff845274: 4bfc41c5
ff845278: 000000c1
ff84527c: 4bfffee5
ff845280: 4bfc4118
ff845284: 00000000

I’ll post results of the things mentioned above in following posts to keep things a bit more clear.
 
Last edited:

flyproductions

macrumors 65816
Jan 17, 2014
1,082
461
Do the steps from #51 for both GPUs.
Here is, what i get for this. The 6200 is installed in PCI B1.

First "printenv"

Code:
0 > printenv

VARIABLE            CURRENT             DEFAULT
little-endian?      false               false
real-mode?          false               false
auto-boot?          true                true
diag-switch?        false               false
fcode-debug?        false               false
oem-banner?         false               false
oem-logo?           false               false
use-nvramrc?        true                false
real-base           -1                  -1
real-size           100000              100000
virt-base           -1                  -1
virt-size           100000              100000
load-base           600000              4000
pci-probe-list      -1                  -1
screen-#columns     64                  64
screen-#rows        28                  28
selftest-#megs      0                   0
boot-device         ide1/@0:7           /AAPL,ROM
boot-file
diag-device         fd:\diags           fd:\diags
diag-file
input-device        kbd                 kbd
output-device       pci/@12             screen
oem-banner
oem-logo
nvramrc
     hex
     : $D find-device ;
     : $E device-end ;
     : $L BLpatch ; : $R BRpatch ;
     : $X execute ;
     : $p 0 to my-self property ;
     : $a " /chosen" $D $p $E ;
     : helpb ['] install-interrupt-vectors ['] noop $R
     0 4000 release-mem 8000 2000 release-mem ;
     10 buffer: km
     dev kbd
     get-key-map km swap move
     $E
     : ck 0 do swap dup 3 >> km + c@ 1 rot 7 and << and or loop ;
     : bootr 0d word count encode-string " machargs" $a
     0 0 1 ck if 0 and else dup 1 = if 3d 0 1 else f 3d 0 2 then ck if 40 or then then
     40 and if bye else helpb 1e 0 do ['] boot catch drop 1f4 ms loop then bye ;
     : myboot boot-command eval ;
     dev /packages/mac-parts
     : $M 7F00 - 4 ;
     ' my-init-program 34 + ' $M $L
     ' load-partition dup
     80 + ' 2drop $L
     104 + ' 0 $L
     ' load 15C + ' 0 $L
     $E
     dev /packages/obp-tftp
     : $M dup 24 - HIS-ENET-HA 6 move 14 + ;
     ' open 66C - ' $M $L
     $E
     dev mac-io
     : decode-unit parse-1hex ;
     $E
     ff000000 dup dup 400 28 do-map 4+ w@ 10 and 0=
     if 90b7 f3000032 w! then
     unselect-dev
boot-command        0 bootr             boot
 ok

Now "dev / ls"

Code:
0 > dev / ls

Children of the node:
ff82ea78: /                             [AAPL,PowerMac G3 MacRISC]

Node Adr    Node Name                     Compatible

ff82fee0: /cpus@0
ff82fff8:   /PowerPC,60?@0
ff8308f0: /chosen@0
ff830a20: /memory@0
ff830b68: /openprom@0
ff830c28: /AAPL,ROM@ffc00000           [AAPL,ROM]
ff830e70: /options@0
ff8316b8: /aliases@0
ff8319f8: /packages@0
ff831a80:   /deblocker@0,0
ff8322f8:   /disk-label@0,0
ff832de8:   /obp-tftp@0,0
ff835810:   /mac-files@0,0
ff837b68:   /mac-parts@0,0
ff838d50:   /aix-boot@0,0
ff839258:   /fat-files@0,0
ff83ac68:   /iso-9660-files@0,0
ff83b778:   /xcoff-loader@0,0
ff83c1b0:   /terminal-emulator@0,0
ff83c248: /pci@80000000                [grackle]
ff83d748:   /mac-io@10                 [heathrow]
ff83eaa0:     /mesh@10000              [mesh]
ff840b30:       /sd@0,0                [sd]
ff841880:       /st@0,0                [st]
ff8426e8:     /bmac@11000              [bmac]
ff844e28:     /escc@13000              [escc CHRP,es0]
ff844fc0:       /ch-a@13020            [ch-a CHRP,es2]
ff8456d0:       /ch-b@13000            [ch-b CHRP,es3]
ff845de0:     /davbus@14000
ff845ec8:       /sound@0,0             [awacs screamer]
ff845fb8:     /swim3@15000             [swim3]
ff8476c0:     /nvram@60000             [nvram]
ff8477b8:     /ide@20000               [heathrow-ata]
ff849988:       /disk@0,0              [ata-disk atapi-disk]
ff84bc20:       /disk@0,0              [ata-disk atapi-disk]
ff84df08:     /ide@21000               [heathrow-ata]
ff8500d8:       /disk@0,0              [ata-disk atapi-disk]
ff852370:       /disk@0,0              [ata-disk atapi-disk]
ff854658:     /via-cuda@16000          [via-cuda]
ff8557d8:       /adb@0,0               [adb]
ff8558f0:         /keyboard@0,0
ff856310:         /mouse@1,0
ff8565d0:       /pram@0,0
ff856680:       /rtc@0,0               [rtc]
ff856bb0:       /power-mgt@0,0         [power-mgt]
ff857a38:   /ATY,mach64_3DUPro@12
ff85c8c0:   /pci1106,3038@d            [pci1106,3038]
ff85cbe8:   /pci1106,3038@d,1          [pci1106,3038]
ff85cee0:   /pci1106,3104@d,2          [pci1106,3104]
ff856f10: /perch@0                     [Whisper]
 ok

As can be seen, nothing shows up for the 6200 in the PCI section.

Now "devalias"

Code:
0 > devalias
pci                 /pci@80000000
mac-io              /pci/mac-io
kbd                 /pci/mac-io/via-cuda/adb/keyboard
mouse               /pci/mac-io/via-cuda/adb/mouse
ttya                /pci/mac-io/escc/ch-a
ttyb                /pci/mac-io/escc/ch-b
scsi                /pci/mac-io/mesh
scsi-int            /pci/mac-io/mesh
ide0                /pci/mac-io/ide@20000
ide                 /pci/mac-io/ide@20000
ata-int             /pci/mac-io/ide@20000
ide1                /pci/mac-io/ide@21000
enet                /pci/mac-io/bmac
swim                /pci/mac-io/swim3
fd                  /pci/mac-io/swim3
screen              /pci@80000000/ATY,mach64_3DUPro@12
 ok

...and the device tree dump. As this is very long, only the part for the onboard video and physical PCI slots. If mor is needed, just tell me.

Code:
/pci@80000000/ATY,mach64_3DUPro@12
PROPERTIES:
vendor-id               00001002
device-id               00004750
revision-id             0000005c
class-code              00030000
interrupts              00000001
min-grant               00000008
max-latency             00000000
devsel-speed            00000001
fast-back-to-back
AAPL,interrupts         00000016
AAPL,slot-name          F1
ATY,Flags               07170010
depth                   00000008
device_type             display
character-set           49534f38 3835392d 3100
iso6429-1983-colors
reg                     00009000 00000000 00000000  00000000 00000000
                        02009010 00000000 00000000  00000000 01000000
                        02009018 00000000 00000000  00000000 00001000
name                    ATY,mach64_3DUPro
model                   ATY,GT-C
ATY,Rom#                3131332d 58585858 582d312e 3100
ATY,Fcode               312e3533 00
assigned-addresses      82009010 00000000 a1000000  00000000 01000000
                        82009018 00000000 a0001000  00000000 00001000
address                 a1000000
width                   00000400
height                  00000300
linebytes               00000400

METHODS:
close           restore         draw-logo       write           open            disable-videomo
de
enable-videomode                show-modes      set-mode        mode#           read-rectangle

draw-rectangle  fill-rectangle  get-colors      set-colors      color!          color@

dimensions

/pci@80000000/pci1106,3038@d
PROPERTIES:
vendor-id               00001106
device-id               00003038
revision-id             00000062
class-code              000c0300
interrupts              00000001
min-grant               00000000
max-latency             00000000
subsystem-vendor-id     00001106
subsystem-id            00003038
devsel-speed            00000001
AAPL,interrupts         00000017
AAPL,slot-name          A1
name                    pci1106,3038
compatible              pci1106,3038
device_type             usb
reg                     00006800 00000000 00000000  00000000 00000000
                        01006820 00000000 00000000  00000000 00000020
power-consumption       00e4e1c0 00e4e1c0
assigned-addresses      81006820 00000000 000008a0  00000000 00000020


/pci@80000000/pci1106,3038@d,1
PROPERTIES:
vendor-id               00001106
device-id               00003038
revision-id             00000062
class-code              000c0300
interrupts              00000002
min-grant               00000000
max-latency             00000000
subsystem-vendor-id     00001106
subsystem-id            00003038
devsel-speed            00000001
AAPL,interrupts         00000017
AAPL,slot-name          A1
name                    pci1106,3038
compatible              pci1106,3038
device_type             usb
reg                     00006900 00000000 00000000  00000000 00000000
                        01006920 00000000 00000000  00000000 00000020
assigned-addresses      81006920 00000000 00000880  00000000 00000020


/pci@80000000/pci1106,3104@d,2
PROPERTIES:
vendor-id               00001106
device-id               00003104
revision-id             00000065
class-code              000c0320
interrupts              00000003
min-grant               00000000
max-latency             00000000
subsystem-vendor-id     00001106
subsystem-id            00003104
devsel-speed            00000001
AAPL,interrupts         00000017
AAPL,slot-name          A1
name                    pci1106,3104
compatible              pci1106,3104
device_type             usb
reg                     00006a00 00000000 00000000  00000000 00000000
                        02006a10 00000000 00000000  00000000 00000100
assigned-addresses      82006a10 00000000 a0000000  00000000 00000100

In slot A1 is some USB card, which shows up as expected.

For B1, where the 6200 sits, again nothing.

For the same with the 2MX installed, see post #63.
 

flyproductions

macrumors 65816
Jan 17, 2014
1,082
461
This is the lower part of the "dev / ls"-output with the Radeon 9000 Pro in PCI B1, onboard video hidden via pci-probe-command...

Code:
ff857a58:   /pci1106,3038@d            [pci1106,3038]
ff857d80:   /pci1106,3038@d,1          [pci1106,3038]
ff858078:   /pci1106,3104@d,2          [pci1106,3104]
ff858370:   /ATY,Radeon9000iParent@e
ff87dea0:     /ATY,Radeon9000i_A@0     [ATY,Radeon9000i]
ff87e6d8:     /ATY,Radeon9000i_B@1     [ATY,Radeon9000i]
ff856f30: /perch@0                     [Whisper]
 ok

...just to see, if any GPU shows up.

But, even with the onboard video hidden and a display attached to it's VGA-port again nothing for the 6200!
 

flyproductions

macrumors 65816
Jan 17, 2014
1,082
461
Finally, after countless tries, at least i got the 6200 to show up at all!

here is the device listing for it:

Code:
ff858370:   /pci10de,4d@e              [pci10de,4d]

And here the device tree entry:

Code:
/pci@80000000/pci10de,4d@e
PROPERTIES:
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            0000004d
devsel-speed            00000001
fast-back-to-back
AAPL,interrupts         00000018
AAPL,slot-name          B1
name                    pci10de,4d
compatible              pci10de,4d
device_type             display
reg                     00007000 00000000 00000000  00000000 00000000
                        02007010 00000000 00000000  00000000 01000000
                        42007014 00000000 00000000  00000000 10000000
                        02007018 00000000 00000000  00000000 01000000
                        02007030 00000000 00000000  00000000 00020000
power-consumption       00000000 00000000
assigned-addresses      c2007014 00000000 90000000  00000000 10000000
                        82007010 00000000 82000000  00000000 01000000
                        82007018 00000000 81000000  00000000 01000000
                        82007030 00000000 80820000  00000000 00020000
 

flyproductions

macrumors 65816
Jan 17, 2014
1,082
461
I doubt, the script will work with the beige / OF 2.4. For "lspci" as well as "lspcidev" i just get "unknown word". 😟
 

joevt

macrumors 604
Jun 21, 2012
6,935
4,235
No. But my thinking was, comparing this properties of a NV card working in a beige to the properties of the 6200 in a machine where this works (posted before) might be helpful. I assume the 2MX would work in the beige, if it didn't have some hardware defects, as it shows the same disfuntionalities also in new world Macs.
Good point.


Yes, i can to this. Is the complete device tree output of any importance or just the part for the GPU?

I’ll post results of the things mentioned above in following posts to keep things a bit more clear.
Complete dump-device-tree is best. Just put all the output in a single file, zip it, and attach to a post. In the post, you can make a short description about the setup that the file is generated for.


Yes! But up to now since i am able to do OF over serial, it has been completely ignored in any of the PCIs. Did not once appear with "dev / ls".
I'm not sure I understand this. Are you saying there's different behaviour using serial or not serial?


Yes, i can set it to this. But it does not seem to work correctly.

Here is the output up to the first 00000000
Of course the setting used in Z-Term needs to match the setting used by Open Firmware. You have to change the setting in Open Firmware first.
Try this:
Code:
dev ttya
44 ' initscc dc + code!
0 ' initscc b4 + code!
initscc
UPDATE Aug 11, 2022: Fixed the above patch

Now, if you type something in Z-Term, nothing should appear until you change the setting to 230400 bps.

You can include the first 3 lines in the nvramrc script to make it permanent. Mac OS 9 or OS X might alter the nvramrc. If that's so, then you'll need to find where the nvramrc script comes from (probably an OFpt resource in System Disk? Or XPostFacto? Or system file? Or XLR8 MACh Speed Extension?)
https://www.netbsd.org/ports/macppc/SystemDisk-tutorial/of105patch.html

Put these 3 lines before the unselect-dev line (the last line) in the nvramrc script
Code:
dev ttya
44 ' initscc dc + code!
0 ' initscc b4 + code!
UPDATE Aug 11, 2022: Fixed the above patch

If you want 115200 bps, then change 44 to 84.

Make sure Z-Term is set to 8N1 (8 bits, no parity, 1 stop bit).

Here is, what i get for this. The 6200 is installed in PCI B1.

First "printenv"
Change the input-device and output-device to ttya so that the Open Firmware always starts as serial port. This will be necessary for new GPU firmware testing.
Code:
setenv input-device ttya
setenv output-device ttya

It says the boot device is ide1/@0:7. Does the following command produce something? Maybe not, since there's no hfs package?
dir ide1/@0:7,\


Now "dev / ls"

As can be seen, nothing shows up for the 6200 in the PCI section.

Now "devalias"

...and the device tree dump. As this is very long, only the part for the onboard video and physical PCI slots. If mor is needed, just tell me.

In slot A1 is some USB card, which shows up as expected.

For B1, where the 6200 sits, again nothing.

For the same with the 2MX installed, see post #63.
I think we'll want to see the full dump to see if there's any corruption.


Finally, after countless tries, at least i got the 6200 to show up at all!

here is the device listing for it:

And here the device tree entry:
What changed? It can't just be randomly showing up for different boots....

I know my Power Mac 8600 is flaky. I usually only get consistent boots by doing cold boot every time (no warm boots).

I doubt, the script will work with the beige / OF 2.4. For "lspci" as well as "lspcidev" i just get "unknown word". 😟
You have to add the lspci word by pasting the lines into Z-Term which enters the lines into Open Firmware.

1) dev pci
2) paste (Command-V in Z-Term) contents of lspci.txt here.
3) lspci

I'll start work on a debug version of the ROM.
 
Last edited:
  • Like
Reactions: Amethyst1

DearthnVader

Suspended
Dec 17, 2015
2,207
6,391
Red Springs, NC
I doubt, the script will work with the beige / OF 2.4. For "lspci" as well as "lspcidev" i just get "unknown word". 😟
How did you load the script?

Did you get any errors when you loaded it?

The NetBSD documentation says OF 2.4 can read HFS/HFS+ disks, can you confirm this?

Some changes in the syntax of the script are needed for my Beige G3, they may also be needed for OF 2.4.

@joevt @flyproductions, likely it is needed to flash the 6200 back to the PC VBIOS and load the debug rom from disk, sadly what works with New World Mac's doesn't seem to work correct with Old World OF, so we again have to figure the exact syntax OF is looking for:

Code:
setenv fcode-debug? true
load hd:,\6200debug.rom
dev pci/@e
: open true ;
" pci/@e" open-dev to my-self
load-base 1 byte-load

load-base assumes you need to clip everything up to 0x40, or whoever the start of the fcode in in the debug rom, some Macs require this, the 9600 does not.
 

flyproductions

macrumors 65816
Jan 17, 2014
1,082
461
Complete dump-device-tree is best. Just put all the output in a single file, zip it, and attach to a post. In the post, you can make a short description about the setup that the file is generated for.
So here it comes!

The setup used is a former G3/300 desktop, revision C, now running a Yikes 400 mhz CPU at 433, with now 768 mb of memory. Machine has some Maxtor 80 gig HD divided in three partitions as follows: 1 gb for OS9 running 9.2.2, 6.7 gb for X with 10.4.11 installed and the rest for random data. Also installed is some Quicksilver pulled Pioneer DVD-RW drive.

For the pci, there is a 4 port USB card in slot A1, the Radeon 9000 Pro in slot C1 (which doesn't appear in the device tree at the moment) and the GeForce 6200 in slot B1 (which appears as shown but doesn't work).

Onboard video / slot F1 is hidden via probe-list command.
I'm not sure I understand this. Are you saying there's different behaviour using serial or not serial?
No. I just wantetd to say, the card sadly didn't appear since i am able to get a closer look of the open firmware via serial. But now it has.
Of course the setting used in Z-Term needs to match the setting used by Open Firmware. You have to change the setting in Open Firmware first.
...
Now, if you type something in Z-Term, nothing should appear until you change the setting to 230400 bps.
Sadly didn't really work. Sure it stops working after the commands. But sadly doesn't start working again when i switch the setting.

Is this just for speed? If so, is this necessary? It just works fine so far. Fast enough for me.
Make sure Z-Term is set to 8N1 (8 bits, no parity, 1 stop bit).
It has been like that by default.
Change the input-device and output-device to ttya so that the Open Firmware always starts as serial port. This will be necessary for new GPU firmware testing.
I think i'd prefer not to. So i have to type the command every time. But otherwise, if i forget to set it back, i will not be able to get into OF anymore without first plugging the connection in.
It says the boot device is ide1/@0:7. Does the following command produce something? Maybe not, since there's no hfs package?
dir ide1/@0:7,\
Says "unable to open the DIR device
What changed? It can't just be randomly showing up for different boots....
Sure! But sadly i tried so many times and changed so many things (different slots used and combinations with other cards) that i am absolutely unable to give a definitive statement about what finally "made it work". As mentioned above, the actual setup, which at least shows the card as a generic display adapter, has the Radeon 9000 in PCI C1, which does not show up. Next thing i will try is, if the 6200 is still "seen" if i remove the Radeon.
I know my Power Mac 8600 is flaky. I usually only get consistent boots by doing cold boot every time (no warm boots).
Yes. And even if i gave my best to avoid it, when swapping cards so much times, a poor seating can not be excluded 100%.
You have to add the lspci word by pasting the lines into Z-Term which enters the lines into Open Firmware.

1) dev pci
2) paste (Command-V in Z-Term) contents of lspci.txt here.
3) lspci
Yes. I try this later. Sorry for noob questioning again. But has this to be pasted completely "as is" or just the ": lspci ... ;"-Part without the hex line?
I'll start work on a debug version of the ROM.
Thanks in advance for that!
 

Attachments

  • G3_device_tree.zip
    10.9 KB · Views: 85

DearthnVader

Suspended
Dec 17, 2015
2,207
6,391
Red Springs, NC
Says "unable to open the DIR device
Could be because that is the slave drive, or the NetBSD documentation is incorrect and OF 2.4 can't read hfs/hfs+ disks after all, I've never seen any reports that verify that it can.

What disk do you have connected to the master?

Try:

Code:
dir ide:,\
dir ide1:,\

That doesn't specify the partition number and OF will just give a directory of the fist readable/bootable partition it finds. If both those commands return the same then OF 2.4 can't read HFS/HFS+ hard disks. It's still conceivable that it can read HFS floppies, but I'd just format an MSDOS floppy to load files from.
 

flyproductions

macrumors 65816
Jan 17, 2014
1,082
461
hange the input-device and output-device to ttya so that the Open Firmware always starts as serial port. This will be necessary for new GPU firmware testing.
Ahh, sure i will. Sorry for not noticing the second sentence.
What changed? It can't just be randomly showing up for different boots....
So now i tried manx different combinations with different cards...

...and the only one, that makes the 6200 appear in the device list ist the one with the 6200 in PCI B1 and the Radeon 9000 Pro in C1. The opposite (6200 C1, 9000 Pro B1) makes the 9000 Pro get listed.

Any other combo with the GeForce 2MX or a Rage 128 allways makes this cards show up over the 6200, no matter in which slot they were. In no case i had all the cards installed showing in the device list.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.