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,974
4,262
so " fd:,\jvt5.rom" (load) return (load) unknown word on oOF 2.0.x.
Open Firmware 2.4 has all the fcodes named so it's really nice to work with.
For Open Firmware 2.0f1, you need to find the fcode by address (execution token) or fcode number. But fcode number doesn't always work because multiple fcode images can use the same fcode number.

Code:
0 > see load 
: load 
  " load " ^-7DB1C0  init-program ; ok
0 > -7DB1C0 (see) 
: ^-7DB1C0  
  ^-7DB5D8  pack drop ['] ^-7DB520  to init-program carret word count ^-7DB6B0  
  ; ok
0 > -7DB6B0 (see) 
: ^-7DB6B0  
  state-valid off ^-7DB8C8  ^-7DB8E0  2! 
  begin 
    ^-7DB8E0  2@ bl left-parse-string ^-7DB8F8  2! ^-7DB8E0  2! ^-7DB8E0  
    @ while/if 
      ^-7DB8F8  2@ ['] open-dev catch if 
        2drop false 
        then 
      dup if 
        dup close-dev 
        then 
      else 
      true 
      then 
    until 
  ^-7DB8F8  2@ ^-7DB7A8  ; ok
0 > -7DB6B0 20 - 40 dump 
FF824930: FF 81 09 60 4B FE 47 F5 FF 80 F6 88 4B FE 58 95 :...`K.G.....K.X.:
FF824940: 4B FF A3 A9 4B FE 49 B4 FF FF FF 08 A0 B7 08 B2 :K...K.I.........:
FF824950: 96 7E FF FC 7E 68 02 A6 4B FF 1A 39 4B FE 67 DD :.~..~h..K..9K.g.:
FF824960: 4B FF FD D9 4B FF FD BD 4B FE 65 49 4B FE 55 FD :K...K...K.eIK.U.: ok
0 > 8b2 get-token  ok
2 > u. 0  ok
1 > u. FF86B3D0  ok
0 > FF86B3D0 (see) 
: ^-794C30  
  3 ^-794C68  ; ok
0 >
get-token would work better if it could take a token by name and use it as a starting point to find the fcode number.

But for our purposes, you can use -7DB6B0 execute on Open Firmware 2.0f1 instead of (load).
 
Last edited:

DearthnVader

Suspended
Dec 17, 2015
2,207
6,392
Red Springs, NC
Open Firmware 2.4 has all the fcodes named so it's really nice to work with.
For Open Firmware 2.0f1, you need to find the fcode by address (execution token) or fcode number. But fcode number doesn't always work because multiple fcode images can use the same fcode number.

Code:
0 > see load
: load
  " load " ^-7DB1C0  init-program ; ok
0 > -7DB1C0 (see)
: ^-7DB1C0 
  ^-7DB5D8  pack drop ['] ^-7DB520  to init-program carret word count ^-7DB6B0 
  ; ok
0 > -7DB6B0 (see)
: ^-7DB6B0 
  state-valid off ^-7DB8C8  ^-7DB8E0  2!
  begin
    ^-7DB8E0  2@ bl left-parse-string ^-7DB8F8  2! ^-7DB8E0  2! ^-7DB8E0 
    @ while/if
      ^-7DB8F8  2@ ['] open-dev catch if
        2drop false
        then
      dup if
        dup close-dev
        then
      else
      true
      then
    until
  ^-7DB8F8  2@ ^-7DB7A8  ; ok
0 > -7DB6B0 20 - 40 dump
FF824930: FF 81 09 60 4B FE 47 F5 FF 80 F6 88 4B FE 58 95 :...`K.G.....K.X.:
FF824940: 4B FF A3 A9 4B FE 49 B4 FF FF FF 08 A0 B7 08 B2 :K...K.I.........:
FF824950: 96 7E FF FC 7E 68 02 A6 4B FF 1A 39 4B FE 67 DD :.~..~h..K..9K.g.:
FF824960: 4B FF FD D9 4B FF FD BD 4B FE 65 49 4B FE 55 FD :K...K...K.eIK.U.: ok
0 > 8b2 get-token  ok
2 > u. 0  ok
1 > u. FF86B3D0  ok
0 > FF86B3D0 (see)
: ^-794C30 
  3 ^-794C68  ; ok
0 >
get-token would work better if it could take a token by name and use it as a starting point to find the fcode number.

But for our purposes, you can use -7DB6B0 execute on Open Firmware 2.0f1 instead of (load).
I understood some of that;-)

So:

Code:
" fd:,\jvt6.rom"  -7DB6B0
?

When I get around to it I'll test (load) on my New World machines too rather than clipping the PCI header.

Thanks!
 

joevt

macrumors 604
Jun 21, 2012
6,974
4,262
So:
" fd:,\jvt6.rom" -7DB6B0 ?
^-7DB6B0 is how the see command shows unnamed words.

-7DB6B0 is just a literal number which is the execution token of the unnamed (load) word. You need to call execute to execute it.

-7DB6B0 is the same as FF824950 (a negative number means bit 31 is set; bit 31 can represent the value -2^31 for signed numbers or +2^31 for unsigned numbers).

The code starts at FF824950. At FF82494E is the fcode number 8b2. After the fcode number is usually the name (represented by a byte for length, followed by the ascii character, with some zero padding so the code starts at a multiple of 4 or 8). FF82494D is B7 which is b(:) which means this is a colon defined word. FF82494C has the flags 80 (defined) + 20 (no header/name) = A0. FF824948 is the offset to the previous word (FFFFFF08 = -F8).

" fd:,\jvt6.rom" -7DB6B0 execute
but verify that -7DB6B0 (see) shows the same code that I showed.
 
Last edited:

flyproductions

macrumors 65816
Jan 17, 2014
1,091
466
You don't have any subsystem or sub-vendor ID's before the FCODE, odd.
This is with the PCI-header clipped. They are in the part before the fCode starts. I was thinking, this is why byte-load gives the "vendor-ID missing" error, if i use the ROM like this.
 

flyproductions

macrumors 65816
Jan 17, 2014
1,091
466
@flyproductions Did you notice, tho you likely didn't as you can't use this ROM, but the rom we are using is set to 128MB for VRAM,size.
My fault! At some point i mistakenly started to use debug version 5 again. But the 128k v. 6 ROM also exits the debugging after 4k at the same point.

Code:
0 > 600040 1 byte-load [ NV43
here:ff87baec

vendor-id               000010de
device-id               00000221
revision-id             000000a1
class-code              00030000
interrupts              00000001
min-grant               00000005
max-latency             00000001
devsel-speed            00000001
fast-back-to-back
AAPL,interrupts         00000018
AAPL,slot-name          B1
name                    pci10de,221
compatible              pci10de,221
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
subsystem-id            0000004d


close           open            close           open
get subsystem-id
val93f=4d
r_3 @00007014.l = 90000008
r_3 @00007010.l = 82000000
w_3 @00007010.l = ffffffff
r_3 @00007010.l = ff000000
w_3 @00007010.l = 82000000
r_3 @00007014.l = 90000008
w_3 @00007014.l = ffffffff
r_3 00007014.l =f0000008
w_3@000071.l  900008
r_3 @00007018.l = 81000000
w_3 @00007018.l = ffffffff
r_3 @00007018.l = ff000000
w_3 @00007018.l = 81000000
r_3 @00007030.l = 80820000
w_3 @00007030.l = ffffffff
r_3 @00007030.l = fffe0001
w_3 @00007030.l = 80820000
r_3 @00007004.w = 6
w_3 @00007004.w = 6
w_0 @00000004.l = 1000000
:ddb
r_0 @00000000.l = a100a104
r_0 @00101000.l = 8b904a23
w_0 @0000184c.l = 0
w_0 @00001850.l = 1000000
w_0 @00001854.l = 0
r_0 @00000200.l = 103
w_0 @00000200.l = 103
r_0 @00000200.l = 103
w_0 @000c03c3.b = 1
r_0 @000c03c3.b = 1
r_0 @000c03cc.b = 0
w_0 @000c03cc.b = 1
w_0 @006013d4.b = 1f
w_0 @006013d5.b = 57
w_0 @000c23c3.b = 1
r_0 @000c23c3.b = 1
r_0 @000c23cc.b = 0
w_0 @000c23cc.b = 1
w_0 @006013d4.b = 44
r_0 @006013d5.b = 0
r_0 @006013d4.b = 44
r_0 @006033d4.b = 0
w_0 @006013d4.b = 44
w_0 @006013d5.b = 4
w_0 @006033d4.b = 44
w_0 @006033d5.b = 4
w_0 @006033d4.b = 0
w_0 @006013d4.b = 44
w_0 @006033d4.b = 1f
w_0 @006033d5.b = 57
w_0 @006013d4.b = 44
r_0 @006013d5.b = 4
r_0 @006013d4.b = 44
r_0 @006033d4.b = 44
w_0 @006013d4.b = 44
w_0 @006013d5.b = 0
w_0 @006033d4.b = 44
w_0 @006033d5.b = 0
w_0 @006033d4.b = 44
w_0 @006013d4.b = 44
r_0 @006013d4.b = 44
r_0 @006033d4.b = 44
w_0 @006013d4.b = 44
w_0 @006013d5.b = 1
w_0 @006033d4.b = 44
w_0 @006033d5.b = 1
w_0 @006033d4.b = 44
w_0 @006013d4.b = 44
w_0 @000c23c3.b = 1
w_0 @000c03c2.b = e3
r_0 @000c23c3.b = 1
w_0 @006033d4.b = 1f
w_0 @006033d5.b = 57
w_0 @006033d4.b = 21
w_0 @006033d5.b = fa
r_0 @00602804.l = 0
w_0 @00602804.l = 80
w_0 @00602860.l = 0
r_0 @006013d4.b = 44
r_0 @006033d4.b = 21
w_0 @006013d4.b = 44
w_0 @006013d5.b = 0
w_0 @006033d4.b = 44
w_0 @006033d5.b = 0
w_0 @006033d4.b = 21
w_0 @006013d4.b = 44
w_0 @000c03c3.b = 1
w_0 @000c03c2.b = e3
r_0 @000c03c3.b = 1
w_0 @006013d4.b = 1f
w_0 @006013d5.b = 57
w_0 @006013d4.b = 21
w_0 @006013d5.b = fa
r_0 @00600804.l = 0
w_0 @00600804.l = 80
w_0 @00600860.l = 0
here:ff89ed08
:e10
here:ff89ed08
here:ff8a10d4 -7612f8 23cc -7612f8
 ok
0 >
 
Last edited:

joevt

macrumors 604
Jun 21, 2012
6,974
4,262
Much easier if we had fcode-verbose? as that prints every single line of fcode and when it fails it's much easier to search your 4th file for the exact point where the code fails.
Version 7 adds tracing!

Also, all the words are declared external so all the words will be visible in the device node.
It logs most of the words created by the device (some are deliberately not logged, such as most of the register read/write functions)
It does not log words created before the device - they would be way too much.
It only logs colon definition words.

A full log is ≈1.6 MB.

Tested in OF 2.4 but should also work in 2.0f1.
 

Attachments

  • 6200 #7.zip
    366.6 KB · Views: 92

flyproductions

macrumors 65816
Jan 17, 2014
1,091
466
Version 7 adds tracing!

Also, all the words are declared external so all the words will be visible in the device node.
It logs most of the words created by the device (some are deliberately not logged, such as most of the register read/write functions)
It does not log words created before the device - they would be way too much.
It only logs colon definition words.

A full log is ≈1.6 MB.

Tested in OF 2.4 but should also work in 2.0f1.
Just tested!

I don't know, if this is exactly what was suppused to happen or if it's complete. But to me it looks like some progress. See attached file.

But at the end, even with a display attached to the 6200's VGA, for "dev @0" it gives "can't find device".
 

Attachments

  • debugg_7.zip
    26 KB · Views: 65

joevt

macrumors 604
Jun 21, 2012
6,974
4,262
But at the end, even with a display attached to the 6200's VGA, for "dev @0" it gives "can't find device".
Looks like a fail. Something random is happening. What's weird is that it stopped in the middle of patching all the words for tracing (it never got to the tracing part). That's one of my words, not one of the rom words. So it seems like an Open Firmware problem. I think I've experienced similar issues just by having my tracing defining code in a different location, like the order of things matters.

Maybe I need to implement a stack trace.
 

flyproductions

macrumors 65816
Jan 17, 2014
1,091
466
Can you test sawtooth to make sure it still works? I think I'll try to find the Open Firmware bug that causes the code to stop if I change the position of the tracing code in the rom.
I can try this a little later. But i cannot flash the ROM to the card anymore as it is 128k and the card only has a 64k eeprom. Should it work (= output image to dsplay) when the ROM is loaded from file?
 

joevt

macrumors 604
Jun 21, 2012
6,974
4,262
I can try this a little later. But i cannot flash the ROM to the card anymore as it is 128k and the card only has a 64k eeprom. Should it work (= output image to dsplay) when the ROM is loaded from file?
Not sure about that. I have not done testing from file yet. Might be faster for you to try, then for me to figure out a method to load a file into the emulation.
 

DearthnVader

Suspended
Dec 17, 2015
2,207
6,392
Red Springs, NC
I can try this a little later. But i cannot flash the ROM to the card anymore as it is 128k and the card only has a 64k eeprom. Should it work (= output image to dsplay) when the ROM is loaded from file?
It should load from file just fine, you can load from hd: on a Sawtooth.

I'm pretty sure you can still use the (load) method, but I haven't tested it yet on a New World Mac, only loading without the PCI Header.
 

flyproductions

macrumors 65816
Jan 17, 2014
1,091
466
Can you test sawtooth to make sure it still works?
So i tried on the Sawtooth and this is what i get:

Code:
0 > dev pci/@3  ok
0 > .properties
vendor-id               000010de
device-id               00000221
revision-id             000000a1
class-code              00030000
interrupts              00000001
min-grant               00000005
max-latency             00000001
devsel-speed            00000001
fast-back-to-back
name                    pci10de,221
compatible              pci10de,221
                        pciclass,030000
reg                     00011800 00000000 00000000  00000000 00000000
                        02011810 00000000 00000000  00000000 01000000
                        42011814 00000000 00000000  00000000 10000000
                        02011818 00000000 00000000  00000000 01000000
                        02011830 00000000 00000000  00000000 00020000
assigned-addresses      c2011814 00000000 90000000  00000000 10000000
                        82011810 00000000 82000000  00000000 01000000
                        82011818 00000000 81000000  00000000 01000000
                        82011830 00000000 800a0000  00000000 00020000
R2AD                    5c3e8200 90ff002b 00000000 00000000 2e7c0690 07300030 0020041a 04380003
                        0006041a 06900001 00000000 00000000 00000000 00000000 00000000 00000000

 ok
0 > load cd:,\TEST7A.ROM load-size=1ffc0 adler32=63e8a4a4
 ok
0 > words

 ok
0 > : open true ; : close ;  ok
0 > " pci/@3" select-dev  ok
0 > 800000 1 byte-load [ NV43
here:ff97e1f4

vendor-id               000010de
device-id               00000221
revision-id             000000a1
class-code              00030000
interrupts              00000001
min-grant               00000005
max-latency             00000001
devsel-speed            00000001
fast-back-to-back
name                    pci10de,221
compatible              pci10de,221
                        pciclass,030000
reg                     00011800 00000000 00000000  00000000 00000000
                        02011810 00000000 00000000  00000000 01000000
                        42011814 00000000 00000000  00000000 10000000
                        02011818 00000000 00000000  00000000 01000000
                        02011830 00000000 00000000  00000000 00020000
assigned-addresses      c2011814 00000000 90000000  00000000 10000000
                        82011810 00000000 82000000  00000000 01000000
                        82011818 00000000 81000000  00000000 01000000
                        82011830 00000000 800a0000  00000000 00020000
R2AD                    5c3e8200 90ff002b 00000000 00000000 2e7c0690 07300030 0020041a 04380003
                        0006041a 06900001 00000000 00000000 00000000 00000000 00000000 00000000


const_800_0     close           open
encoding trace
evaluating trace
 ok

If i do "words" after that, i get the same random stuff like on the Beige yesterday.

No signal to the display so far.

Edit: Here is the complete output of loading Test7 in the Sawtooth. Properties differ a bit. But alltogether it looks very similar to what showed up in the Beige.
 

Attachments

  • output_test7_Sawtooth.zip
    26 KB · Views: 72
Last edited:

flyproductions

macrumors 65816
Jan 17, 2014
1,091
466
At least i could finally test the ROM v. 5 with the Sawtooth, loading the ROM from CD to the card. It went trough 1MB of debug log and when it was done all the tests, color bars etc. worked as expected.

After that i could boot to the OS from OF via "mac-boot". Machine worked nicely as normal with a 6200, flashed with a PC ROM.
 
Last edited:

joevt

macrumors 604
Jun 21, 2012
6,974
4,262
So i tried on the Sawtooth and this is what i get:

Code:
[ NV43
here:ff97e1f4
const_800_0     close           open
encoding trace
evaluating trace
 ok

If i do "words" after that, i get the same random stuff like on the Beige yesterday.

No signal to the display so far.
Probably (hopefully) just a missing word on Sawtooth. I'll test the tracing code on B&W G3 (OF 3) and OF 2.0f1 emulation.
 

flyproductions

macrumors 65816
Jan 17, 2014
1,091
466
Probably (hopefully) just a missing word on Sawtooth. I'll test the tracing code on B&W G3 (OF 3) and OF 2.0f1 emulation.
Attached the complete Sawtooth result to #338.

Another thing appeared a bit strange to me: While loading the debug ROM v. 5 resulted in a OS-bootable card in the end, loading the normal ROM, i usually run the card with, did not. For that the byte-load-command was just answerd with "ok" and nothing further happened. Shouldn't loading this ROM also result in a usable card?
 

DearthnVader

Suspended
Dec 17, 2015
2,207
6,392
Red Springs, NC
Attached the complete Sawtooth result to #338.

Another thing appeared a bit strange to me: While loading the debug ROM v. 5 resulted in a OS-bootable card in the end, loading the normal ROM, i usually run the card with, did not. For that the byte-load-command was just answerd with "ok" and nothing further happened. Shouldn't loading this ROM also result in a usable card?
It should, but likely it's just aborting somewhere, maybe the " subsystem-id" check, but I'm not sure.

I just wonder why your 6200 PCI flashed with the PC ROM doesn't have the " subsystem-id" and " sub-vendor-id" .properties?

Not a lot has been tested loading FCode ROM's from disk, I know with the GF4600 Ti OS X would kernel panic when loading the NVDA,ResMan.kext, but OS 9 would happily boot and everything working just fine( 2D/3D, DVD Player ).
 

flyproductions

macrumors 65816
Jan 17, 2014
1,091
466
It should, but likely it's just aborting somewhere, maybe the " subsystem-id" check, but I'm not sure.
Yes i even tried waiting just as long as the debug stuff needed to finish, about half an hour, thinking it is loading in the background, as it has no debug functionality. But no dice. No changed properties and no child display devices.
Not a lot has been tested loading FCode ROM's from disk, I know with the GF4600 Ti OS X would kernel panic when loading the NVDA,ResMan.kext, but OS 9 would happily boot and everything working just fine( 2D/3D, DVD Player ).
Buy the way: A pity the 6200 512MB ROM is lost. I wasted a lot of time, trying to get the PNY 6200 and earlier the Gainward Bliss to run with all of their memory. But have never seen the complete 512MB out of a safe boot.
 
  • Sad
Reactions: dextructor

flyproductions

macrumors 65816
Jan 17, 2014
1,091
466
I just wonder why your 6200 PCI flashed with the PC ROM doesn't have the " subsystem-id" and " sub-vendor-id" .properties?
What stands out, is, that one of the few things test 5 as well as test 7 do in the Beige is switching the subsystem-ID (even if manually set before) from 4d to 10.
 

domii

macrumors member
Jul 24, 2022
50
17
Grimsby, Ontario, Canada
just so your aware you do realise thats an AGP to PCI adapter in that it plugs into an AGP slot and lets you plug in PCI devices like SATA cards

what I meant to say in my above post was PCI to AGP (as in PCI slot to AGP card) but the vogons people seem to call such an adapter, AGP to PCI for some reason (I guess AGP card to PCI slot)
I did find another one, somewhat basic but with 33/66MHz jumpers, and 3.3/5V support. He has tested it successfully with some non 3dfx agp cards. I ordered one and it will be interesting to try a couple cards, like the Radeon 9800 in it.

E4LJ5ZZXIAQBsjQ.jpeg




 

LightBulbFun

macrumors 68030
Nov 17, 2013
2,900
3,195
London UK
I did find another one, somewhat basic but with 33/66MHz jumpers, and 3.3/5V support. He has tested it successfully with some non 3dfx agp cards. I ordered one and it will be interesting to try a couple cards, like the Radeon 9800 in it.

View attachment 2051934



yeah those are what im talking about :)

there was some on ebay not long ago which I quite temped by, but it was about £80 for really what was just a PCB and nothing much more, and I imagine a large part of it was just voodoo tax


they seem to lack the active single and voltage conversions of the ones I linked to in the vogans thread

(I also did not like how they where sold as "not working/parts only" which would of given me no way to get a refund if I really did get a duff one)

which made me hold off on going for one, but it will be very interesting to hear how yours works for you :)

(I am quite curious what chipset his PCIe to AGP adapter use, is he actually somehow running at more then just PCI speeds, or is still just running the AGP cards at PCI speeds through a PCI to PCIe bridge, the heatsink on the bridge chip makes me think he is running at faster then just 33/66mhz PCI which is quite interesting)
 

DearthnVader

Suspended
Dec 17, 2015
2,207
6,392
Red Springs, NC
I received the PNY 6200 256MB PCI card and made a working ROM for it, sadly it's not the same as @flyproductions ROM we have been testing with.

Still waiting on the serial device, but none of the test roms seem to work with this card in my Beige. V7 had a long output of .words that a had to scroll through on the screen, but didn't build any .properties for the card other than the subsystem-id(0x10).
 

Attachments

  • 6200256.rom.zip
    30.4 KB · Views: 71

flyproductions

macrumors 65816
Jan 17, 2014
1,091
466
I received the PNY 6200 256MB PCI card and made a working ROM for it,..
Means working in New World Macs?
Still waiting on the serial device, but none of the test roms seem to work with this card in my Beige. V7 had a long output of .words that a had to scroll through on the screen, but didn't build any .properties for the card other than the subsystem-id(0x10).
Sounds alot like what i got.
 

flyproductions

macrumors 65816
Jan 17, 2014
1,091
466
sadly it's not the same as @flyproductions ROM we have been testing with.
Is the card's PC-ROM the same that i have? (attached)

Is the memory of the card BGA or TSOP?

Edit:Looks like the BGA-ROM. The one for the TSOP-card has a lot more differences to the one you posted.
 

Attachments

  • 6200PCI.ROM.zip
    42.8 KB · Views: 65
Last edited:
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.