- MacOS Plus
- Registered: 2015-12-09
- Posts: 89
Stupid experiments with Powermac AGP slots
For many years something had been nagging at me related to the interchangeability of AGP and PCI hardware. AGP is electrically PCI but with a few alterations. I won't go into the differences, but what is important is that AGP is essentially a single-target PCI bus usually running at 66MHz. Early on, there were actually cases where video cards would operate in "PCI Mode" while in an AGP slot.
What got me really curious again lately was fiddling with my two Xserve G4s. The single expansion slot behind the CPU is fed by an AGP 4x controller. There are two alternate slot risers for this bus - A standard AGP (non-ADC) type, and a 32-bit 66MHz PCI type (physically the PCI connector is 64-bit length but will not service the extended data lines). I wondered how it was possible that you could use both types of cards on the AGP bus without any additional logic or detection of the type of riser present. I inspected the two types of risers and found that all the pins are wired through directly and that there is no active logic present nor an apparent riser detection scheme.
The conclusion therefore had to be that it is the target device on an AGP bus which determines whether or not to enable and take advantage of any commands that are specific to the AGP spec. A 32-bit 66MHz capable PCI card will happily occupy the data bus and function properly in the basic PCI operating mode. Everything is a direct and simple pin-for-pin connection.
The next natural question of course was, at least in my twisted mad-scientist mind, if there was absolutely nothing special about the interchangeability of the slot types in the AGP 4x slot of the Xserve G4, shouldn't it work the same in any other 4x or 2x AGP slot also?
Well it turns out it will! I shoved the riser from the Xserve into the AGP slot of a Sawtooth motherboard and then crammed in a 66Mhz PCI video card. Since I don't have any slot extenders this barely fit lying down across the other slots and pressing into the power supply cable - solid enough for testing purposes though. The card sat enough away from the back panel that I could just fit the header of a VGA extension cable on the output. (For additional testing I simply unscrewed the motherboard and moved it forward a bit.) The machine booted up into Mac OS 8.6 and 9.2.2 not knowing any different about the situation! I suspect this results in boosted performance over running the PCI card in any of the other slots because it must be operating at 66MHz in the adapted AGP slot.
Will it also work in an ADC-type G4 motherboard without taping pins like you would with certain non-ADC video cards? I don't know, but probably. After checking that, so long as you stick to a PCI card capable of 66MHz, you should be fine. This takes me back to the earliest inspiration I had for these questions - Is it possible, and so simple, to convert the AGP slot of a G4 Cube to 32-bit 66MHz PCI? I'd have to say yes, but I don't own a Cube so I'll have to leave that experiment to someone else. Conceivably you could fabricate an alternate riser very easily that would allow a PCI card to install in the slot space directly. For someone not necessarily concerned with video performance it would open up options for a lot of alternative video cards, particularly for OS 9.
There is one particularly unfortunate thing that won't work with this config though - a PCI expansion chassis connected via an AGP slot. The single-target device nature of the AGP controller means it can't enumerate multiple devices beyond bridge chips. Knowing that full well, I still went ahead and tested the theory using a Magma host card which I know is supposed to be compatible with 66MHz slots and asynchronous bridging. Connected to a 2-slot expansion chassis with the video card installed there the Mac will chime but then seems to get confused and never initializes video. This is kinda sad for the Cube because it will never be capable of hosting more than one expansion card, but it at least should offer more avenues of exploration for all the 'rabid' Cube hackers out there.
Did anything practical come from this madness? Maybe, but it was certainly a very interesting learning experience. For tower machines I'm thinking the most practical potential application would be a custom vertical slot riser to allow installation of a low-profile PCI card. If video performance is not of much concern in your setup you could have a drive controller operating on the 66MHz bus. I seem to recall from the days of the B&W G3s and Yikes! G4 that this trick was used in the 66MHz PCI slot by moving the video card to a 33MHz slot. Until I get a slot extender to raise the angle-riser out of the way I won't be able to test this config in the AGP slot because all the other slots are blocked.