Site icon xiphod

USB on x86 ISA (8-bit)

Advertisements

I’ve had success in using a “USB-to-ISA” adapter card on a vintage 80386 based PC system that still had ISA slots. So I do recommend this as a convenient way to exchange files with a legacy system, but there are a few usage issues to be aware of. I had no apparent conflict with other devices (serial/parallel ports, CD-ROM, sound card, XT-IDE, all in use at the same time).

I’ve seen these devices from $10 to $90. Here is an example from NewEgg (as of March 2025), but they are also on AliExpress, eBay, and other such places. I think I got mine at a VCF, but cannot recall which specific one since I had it in storage for over a year (and didn’t have a physical ISA-capable system at the time).

As an example of a retailer with one of these: https://www.newegg.com/p/3C6-018R-00243


This is a regular 8-bit ISA card, so should work on the earliest IBM PC 5150 from 1981, up to around mid-1990s where some 486-based system still had ISA expansion slots (and a few Pentium systems, but increasingly rare). This will work in a 16-bit ISA slot as well.

Here are close-up images of the as-delivered jumper configuration and the IC chips involved. This ended up to corresponding to a port-address of “260” (hex)

I’m not sure what the blank 28-pin socket is for. There is a 5-pin header on the PCB, which I think is just an option to extend the USB connection (labels “V D+ D- G 0”, the 5th pin probably not used).

A mini-CD was included with my device, which I verified contained exactly all the same files as is located here (Internet Archive): Ch375 USB ISA Drivers and info CD : Free Download, Borrow, and Streaming : Internet Archive

The only folder therein that I needed was “CH375 ISA_USB_EN” (other folders seem related to a PCI version of this device).

There are two versions of the driver .SYS file on this CD (version 1.9 and 2.0A).


Initially I was not able to use this device, because I did not see anywhere in the included README.TXT or PDFs about what the default port was. I did eventually find “command line arguments” to the .SYS driver where you would designate the port, interrupt, and a “delay factor” (used to calibrate this device to older/slower systems, as needed).

I got sidetracked into thinking this device “borrowed” the port and interrupt of the serial port (so I kept trying those ports and interrupts), but this was unnecessary. Apparently, there is some advanced mode where if you do put “91” or “92” as the IRQ, it does end up using the serial ports, but I didn’t pursue actually trying this configuration.

NOTE: Specifying an address of “0” is apparently reserved for a PCI version of this card, which can do an “auto-scan” for a port. Whereas this ISA version of the card needs an explicit port number.

Silent700 at ClassicCMP dug up this old article about this device from 2018: USB flash drives on 8-bit ISA bus using CH375 ISA to USB adapter | ToughDev That articles goes into a lot of details, but mainly for me it revealed that default port address of 260h (although I still don’t fully understand how that was determined, nor are the jumpers on the board explained on how to adjust it). The details on the “512MB” limitation seem to be obsolete, possibly either because my version of the device came with a newer ROM or a newer driver (the sticker on the back shows my device being made and “QC”‘d in Feb. 2024). As mentioned, I am using V2.0A of the driver.

NOTE: The article above also explains how to boot using this ISA-USB, but I think that requires advanced knowledge of how to adjust the boards ROM.

As for interrupt to use, I ran CheckIt 3.0 on the system (booted to MS-DOS 6.22), which has a feature that does a decent job of determining what each interrupt on the system is being used for. In my case I have two serial ports, two parallel ports, CD-ROM drive, sound card, XT-IDE, all the normal things on a system like this. CheckIt reported that interrupt 10 was “available” so that is what I chose to use for this USB-IDE device. Here is what my CheckIt SysInfo|Interrupts screen looks like without the ISA-USB adapter inserted.

NOTE: In my case, LPT2 is the second parallel port that is on the MDA (monochrome) video card (which was common in the 1980s, where both MDA and CGA/EGA/VGA video cards can be installed at the same time).

I added this to the MS-DOS CONFIG.SYS. Probably LH (loadhigh) would work also, if HIMEM.SYS / EMM386.EXE is also used (i.e. no conflict in doing so).

DEVICE=C:\DRIVERS\CH375DOS.SYS @260 #10 %2

I chose %2 as a starting speed to try (more on this later). As mentioned, 260h was just the default port configuration of the device as delivered. Since “everything worked” with that setting, I didn’t explore other jumper settings (which I assume would be used to adjust to different port addresses).

BELOW: (all working at the same time)

Formatting the USB

For the 2.0A version of the CH375DOS.SYS driver that I used, I was able to use 2GB USB “thumb drive” or “memory stick.” 2GB is the limit of classic FAT16 and what MS-DOS 6.22 supports.

NOTE: FAT32 is technically limited to 2TB, but in some cases got artificially limited to 32GB. Windows may insist partitions over 32GB be formatted using exFAT or NTFS, but there are workarounds to force it to use FAT32 in those cases. But after 2TB, alternative formats do become necessary. I was not able to verify if we used FreeDOS, would this USB-ISA device support larger than 2GB partitions (i.e. would it automatically support FAT32 as a feature of the host operating system?). But for me, 2GB sticks worked fine, it was not limited to a 512KB drive or partition (perhaps olde/prior versions of the driver were in the past). I did not have a 4GB USB thumb drive to try.

Here is an example showing where I have ~1.2GB written to the USB stick (as well as also individual large files), using this USB-ISA adapter device. These large files were created using the COPY /B command.

COPY /b REPORT + REPORT + REPORT + REPORT 1MB
the above does a "binary copy" of the file "REPORT" (4x times) into a file called "1MB" (then from there you can copy the 1MB file in the same way to make larger and larger individual files for test purposes).  The "REPORT" file done using "DIR /S > REPORT" from the C drive root folder, just to create a file of some large amount of content.

The USB-IDE “driver CD” includes a disk formatting utility that runs on Windows XP (possibly also Win3.1), though I don’t think it is really necessary. I was able to use Win11’s formatter also (just be sure to select “FAT” and not “FAT32” or any other option). This is what the USB-IDE devices included formatter program looks like:

Some important lessons learned:

NOTE: Just to experiment, I did try setting this value to %99, and noticed it then took 40 seconds for the driver to initialize. So be patient, but I suspect even the slowest systems won’t need a delay value past about 20. I also noticed for delay values past 99, the driver seems to have a bug (the readme note say it can go up to value 255, but seems to me it couldn’t go past 99).


This is a nice addition to a vintage system and I wish I had tried it out sooner. For the SDLPT I’ve found that I can’t hot-swap the SD card, I have to reboot between swapping SD cards. This ISA-USB device does seem more robust at allowing hot-swapping of the USB stick, so that’s a nice benefit. Still, I like now having the option to use an SD-card of USB-stick to exchange bulk sets of files with modern equipment.

But since CHKDSK “does weird things” on this USB device, I worry there may be some other file I/O oddities that some software might perform that end up being incompatible with this device. That said, I was able to run a variety of games directly off this USB stick without issue (other than obviously loading things slower than a native IDE CF fixed disk).

The “driver CD” seems to have C (Turbo C 2.0) source code for interfacing with this device, and then PDF schematics of the hardware.

Exit mobile version