VOGONS


First post, by Hamby

User metadata
Rank Member
Rank
Member

In the list of hardware projects
List of open-source PC hardware projects
I noticed several that were ISA cards, such as an 8-bit ISA ROM card.

How difficult is it to "talk" to ISA or PCI? Or I guess more accurately, how does one go about talking to an ISA or PCI bus?

The ROM card interests me, but the idea popped into my odd head, "could one put an arduino or raspberry pi on an ISA or PCI card?
One of the projects is an ISA backplane, so of course my next thought was, "could you put the pi on an ISA card, connect it to the ISA backplane, and then try to get it to talk to ISA peripherals?
Why you would want to do that I can't imagine.

But the process did start me wondering what all is involved in creating an ISA or PCI card nowadays.

Hmm... putting a pi on a 16-bit ISA card, giving it a glide wrapper for its gpu... modern 3D acceleration for old computers. Hey, people are using PIs for display adapters for Amigas and Macs and other old computers already...

Reply 1 of 6, by spiroyster

User metadata
Rank Oldbie
Rank
Oldbie
Hamby wrote on 2021-09-04, 19:22:

How difficult is it to "talk" to ISA or PCI? Or I guess more accurately, how does one go about talking to an ISA or PCI bus?

In DOS, not difficult, ISA has direct access, PCI there is a layer between iirc, but DOS applications are pretty close to the metal. In windows ths is no longer the situation as the OS abstracts this away from any application and requires a 'driver' to communicate.

Having a PI on a peripheral card like this could make it one bad-ass co-porocessor for an old system, however the problem would be the same problem as back then, bandwidth of the BUS. This would severely limit the usefulness of certain applications.

Hamby wrote on 2021-09-04, 19:22:

Hmm... putting a pi on a 16-bit ISA card, giving it a glide wrapper for its gpu... modern 3D acceleration for old computers. Hey, people are using PIs for display adaptors for Amigas and Macs and other old computers already...

Unfortunately it doesn't work like this. On the Amiga, the PI communicates via the GPIO (I say communicate, it's just the Amiga sending the same information as it always did, so one-way communication), then the PI converts the RGB singal to HDMI (software running on the pi) which is then displayed using the PI's HDMI. So it literally acts like a converter/up-scaler and provides a 'modern' display interface. The Amiga is none the wiser.

Providing 3D acceleration is a whole other ball game. In order for applications to use 3D, they need to use an API which is provided (or at least the implementation is provided) by the device driver which is software, running on the host machine which deals with the device communication. This is what the 3dfx driver does, and is what doesn't need to be done when programming directly to VGA. You might have access to the LFB (Linear frame buffer), however this simply means the ISA PI is nothing more than a dumb framebuffer (display adaptor).

In the case of glide, the host CPU performs the triangle setup and transform (so the PI won't help). Voodoo in this regard is literally just a rasterizer with memory to store the framebuffer and textures and active vertex lists to mitigate having to transfer this data to the card each frame. Of course you don't want to transfer each texture over the BUS each frame (although this still needed to happen when texture requirement outpaced VRAM size... this is known as texture thrashing) as it was bottle-necked by the bandwidth of the BUS and manifested as stuttering/reduced framerates).

So not only would you need to write drivers for the 'new' ISA 3D accelerator, all current software using glide would also need to be rewritten to use it, so you are effectively creating an entirely new graphics subsystem for 3D, using an old API, which no software written for that API would ever work with 🙁.

It's not all doom and gloom though since there were '3D accelerators' using ISA... TM34XXX cards (TIGA), IrisVision etc... so a possible application could be to have a PI emulate these cards, but it wouldn't be able to introduce much more speed-up and any increase in VRAM probably wouldn't be usable as 3D applications written back then were written with the hardware in mind. Although card capability increases, the software then becomes the bottleneck since it probably wasn't written in a way that could capitalise on any performance increase by the ISA device.

Could be a fun little project, but a lot of effort, and given the limited number of applications using IrisGL and TIGA, it would be very very niche, even within the realms of the already niche 'retro' scene.

Reply 2 of 6, by rasz_pl

User metadata
Rank l33t
Rank
l33t

this should get you started https://www.smbaker.com/raspberry-pi-virtual- … -xtat-computers
tldr: ISA cards directly memory map + they can decode port accesses (inb/outb)

Open Source AT&T Globalyst/NCR/FIC 486-GAC-2 proprietary Cache Module reproduction

Reply 3 of 6, by cyclone3d

User metadata
Rank l33t++
Rank
l33t++

I was under the impression that up to XP, you can access pretty much any hardware directly as long as you know the addresses, IRQ, DMA.

Yamaha modified setupds and drivers
Yamaha XG repository
YMF7x4 Guide
Aopen AW744L II SB-LINK

Reply 4 of 6, by drosse1meyer

User metadata
Rank Member
Rank
Member
cyclone3d wrote on 2021-09-05, 23:18:

I was under the impression that up to XP, you can access pretty much any hardware directly as long as you know the addresses, IRQ, DMA.

Win9x works in protected mode but apparently you could modify CR0 register to allow kernel access without it complaining...

P1: Packard Bell - 233 MMX, Voodoo1, 64 MB, ALS100+
P2-V2: Dell Dimension - 400 Mhz, Voodoo2, 256 MB
P!!! Custom: 1 Ghz, GeForce2 Pro/64MB, 384 MB

Reply 5 of 6, by Gmlb256

User metadata
Rank l33t
Rank
l33t
cyclone3d wrote on 2021-09-05, 23:18:

I was under the impression that up to XP, you can access pretty much any hardware directly as long as you know the addresses, IRQ, DMA.

Windows XP is based on the NT kernel. The direct hardware access was only due to Windows 9x family being actually a hybrid 16/32-bit operating system.

VIA C3 Nehemiah 1.2A @ 1.46 GHz | ASUS P2-99 | 256 MB PC133 SDRAM | GeForce3 Ti 200 64 MB | Voodoo2 12 MB | SBLive! | AWE64 | SBPro2 | GUS

Reply 6 of 6, by Tiido

User metadata
Rank l33t
Rank
l33t

Win9x direct hardware access depends on whatever the drivers do. By default all IO is open but drivers can trap the IO accesses and take over things and many drivers do as part of hardware virtualisation. Timer, IRQ and DMA controllers are handled this way aswell as video stuff. Some sound card drivers such as Yamaha's also traps writes and makes stuff like port 388 (Adlib) writes go through the driver first.

NT line disables all IO by default. There are things such as UserPort that allow you to open up ports of your choosing.

T-04YBSC, a new YMF71x based sound card & Official VOGONS thread about it
Newly made 4MB 60ns 30pin SIMMs ~
mida sa loed ? nagunii aru ei saa 😜