First post, by LaF0rge
There continue to be a number of folks interested in using a variety of vintage ISA cards. One can do that in vintage mainboards, or with some of the very few retro/industrial mainboards that still have one ISA slot (see the various therads here).
Related [new] boards of course are becoming mroe and more rare as time passes.
As has been discussed here and in other places, transparent PCI-to-ISA bridges are not possible.
I'm wondering why people actually want transparent ISA bus access (with MMIO, PIO and DMA) on modern high-end x86 hardware? Sure, one can run DOS, Win3.11 or OS/2 on a 8-core 64bit x86 processor, but does it really need to be executed natively?
I'd have a different proposal: Use some kind of non-transparent bridge (such as a microcontroller that emulates ISA and passes related transactions (MMIO R/W, PIO R/W, Interrupt signalling,) over High-Speed USB. Of course this would never work for code running _natively_ on the CPU. But isn't it sufficient to attach such a physical ISA bus to a VM, e.g. qemu?
Qemu alrady has infrastructure how ISA hardware can be implemented in software (emulated ISA cards). The same APIs into qemu should be usable to encapsulate the related transactions, encode them in custom USB requests, send them via libusb to the microcontroller who then generates the actual signals on the physical ISA bus towards the physical ISA cards plugged into it.
This kind of approach has the following advantages:
* no dependency on certain EOL or hard to get parts (boards, chips)
* no dependency on any specific interface between the "non-transparent bridge" and the computer
* should even work on different architectures, e.g. running qemu emulating x86 on an ARM board like Raspberry Pi
* rather long term future compatible
* no modification to vintage OS drivers
* possible to integrate with any emulator that has some kind of API for emulation of ISA hardware to the virtual CPU/OS
Did anyone yet do anything in that direction? To me, it somehow looks like a rather obvious approach, but somehow I haven't seen any work or even discussion in that direction. I'm happy about any pointers.
USB of course adds significant latency - but then, we are talking about emulating an ancient slow ISA bus...
Looking forward to the related discussion.
Regards,
LaF0rge
p.s.: I'm doing both system level / OS software development as well as embedded electronics development for 20+ years. I've done plenty of development of peripherals, worked with USB, PCI, PCIe.