VOGONS


First post, by LaF0rge

User metadata
Rank Newbie
Rank
Newbie

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.

Reply 1 of 6, by BitWrangler

User metadata
Rank l33t++
Rank
l33t++

This? http://arstech.com/install/ecom-prodshow/usb2isar.html

Unicorn herding operations are proceeding, but all the totes of hens teeth and barrels of rocking horse poop give them plenty of hiding spots.

Reply 2 of 6, by cyclone3d

User metadata
Rank l33t++
Rank
l33t++

Yep, I have a few of their 3-slot cards. Arstech has a custom build and source avalable for DOSBox for use with it.

A better link to their USB stuff is this:
https://arstech.com/install/index.php?app=eco … show&ref=usb2.0
They support up to 7-ISA slots which is very nice.

The only caveats are that it will require some work to get it working with newer OSes.

XP and below allows direct access to the hardware. Vista and above does not.

Because of this, it requires their middleware and fiddling around to get stuff working. I'm not sure how much of a problem, if at all, the middleware is going to cause as far as latency goes.

The USB 2.0 interface should be fine for most ISA cards though.

The ISA bus noise with these adapters is also quite horrid. Something I plan on addressing if I ever have time to spend to do a mod for DOSBox so I can pass sound as well as OPL with DOSBox.
I'm not sure if it is just poor filtering or their arguably crappy power supply that they sell for a crazy price.

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

Reply 3 of 6, by LaF0rge

User metadata
Rank Newbie
Rank
Newbie

Thanks, I was aware of Arstech, but at least last time I checked I thought at least some of their driver/middleware parts were not released as open source, which is a bit of a no-go for me.

I've just seen another thread referencing https://github.com/Manawyrm/ISASTM which is basically doing exactly what I was thinking of, with the exception that I wouldn't have started with full-speed USB, due to the slow throughput as well as the high latencies created by the 1ms frame interval. But then ,that hardware/firmware exists, and I'm just talking about vapourware at this point, so kudos to Manawyrm and TobleMiner for creating it.

Reply 4 of 6, by Jo22

User metadata
Rank l33t++
Rank
l33t++
LaF0rge wrote on 2022-01-27, 21:58:

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?

Hi! I'm not entirely sure, but I assume that it comes down to this:
- Fascination about x86 and low-level tech
- Knowing that you're working with the "real" deal.
I for one have a soft spot for classic, small incandescent lamps.
I don't want my vintage gear to be upgraded with blue LEDs. I want to keep using those warm, power hungry and romantic lamps.
- The desire to be able to continue applying existing experience (DOS etc) when working with modern PCs. Aslong as I can do this, I don't feel old, obsolete, useless (like Scotty in that TNG episode) .

Emulation is great, but it also feels like living in a habitat.
It's like being an indian native forced to live under a giant glass dome. Or a force field. There was an episode in Star Trek Voyager with Seven of Nine that was similar..

Another comparison would be Matrix, 13th Floor or World On A Wire.
People always want to escape the simulation (emulation). 😉

cyclone3d wrote on 2022-01-28, 01:06:

XP and below allows direct access to the hardware. Vista and above does not.

I'm speaking under correction, but I think it might if it uses the same drivers like XP.

If 32-Bit Vista uses XPDM graphics drivers, it should be able to run many DOS programs.

Exception: Late XPDM drivers (Intel GPUs? ) do lack support for VGA access..

Vista's NTVDM is crippled, though.
Vista has EMS issues, an external EMS driver (EMS Magic) must be used for better compatibility.

Also, Windows programs from the Win95 days can do perform port access under NT/XP.
If Port Talk driver is installed. It makes accessing the parallel port possible, too.

https://brain.cin.ucsf.edu/~idl/software/Port … ce%20Driver.htm

Another cool thing is PORT.DLL, written in Delphi.
It's been used by VB6 programmers for many years.
It allows direct control over status lines on COM ports.
https://www.b-kainka.de/schnfaq.htm

Edit: I don't mean to sound like a know-it-all, it's just that I tried these things in the past.
I had been a VB programmer since the ~late 90s.
And I do still love tinkering with serial and parallel ports, too.
Yeah, we VB Classic programmers are all a bit mental, I guess. 😅

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 5 of 6, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Hi again. Wouldn't it be possible to make a an ISA to LPT port bridge? It's just a thought experiment. 😄

Here's a classic that I thought of. It uses the parallel port like an old user port (kind of).:

https://www.raphnet.net/electronique/adlib/adlib_en.php

If we used port expander chips (MCP23017-E/SP etc), we could have extra pins to handle 16-Bit I/O, DMA I/O ports and some interrupts?
I remember such chips from EPROM reader projects in VB/Win95.
Before USB was a thing and SCSI (or IDE) the only real alternative to using the LPT port.

Since modern PCs running Windows usually have ECP and EPP capable LPT ports, we' re nolonger limited to reading back nibbles via status registers or the need to 'overdrive' the output pins (data) of ancient LPT cards to make them read values.

Also, there are real USB Parallel adapters that are not limited to printers (use wayback if you encounter trouble). Maybe they could be used in conjunction?

https://www-user.tu-chemnitz.de/~heha/basteln … PT/ul-17.en.htm

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 6 of 6, by BitWrangler

User metadata
Rank l33t++
Rank
l33t++

Yah, and if you've only got a serial port, you could use a serial to PS/2, PS/2 to USB and then the USB to parallel adapter 😉

Unicorn herding operations are proceeding, but all the totes of hens teeth and barrels of rocking horse poop give them plenty of hiding spots.