First of all, thanks to Bret for all the work to date (and hoping there's more).
For expedience, this is a straight copy and paste of my post to the FreeDOS users list:
I'm working now with FreeDOS 1.1 on an old machine with a DFI P5BTX/L motherboard with Intel 82430TX chipset, AMD K6/233, and 64MB.
It has a USB 1 implementation, so I thought I would see if I could get some functionality out of it.
Locating FreeDOS documentation on its USB support was a bit difficult. Searches tend to bring up outdated information. There is an index of Technotes at http://www.freedos.org/wiki/index.php/Technotes, but most of those entries have just an article number with no title/subject. There is a 1-paragraph summary at https://en.wikipedia.org/?title=FreeDOS#Universal_Serial_Bus that provides some bare leads. The most definitive leads came from http://www.freedos.org/wiki/index.php/Printer. For my purposes I was only interested in open source, which narrowed the field down to one candidate: Bret Johnson's UsbDOS software at http://bretjohnson.us/
His last update was in 2010, but there is some activity in the forum. His own assessment is that the overall state of the software is alpha/beta quality, depending on which program in the suite you're looking at.
The suite includes some testing and support tools, and also a UHCI driver and drivers for other common hardware: keyboard, mouse, joystick, printer, and hard/flash drives.
One tool (USBHOSTS) identifies your host controllers so that you will know whether his software supports them. His USBUHCI/L drivers support older Intel and Via UHCI controllers.
Another tool (IRQ) aims to survey the current usage status of all IRQ's, whether each IRQ is enabled and what is (or commonly would be) using it. Perhaps I didn't try hard enough to understand it, but I found the results a little less than definitive. [I would, in fact, very much like to find a good tool for identifying used/free IRQ, I/O and DMA resources.]
I read through most of the informative and well-written USBINTRO.DOC. Though it was 186 pages and somewhat exhausting, I would much rather have this state of affairs than the slim and spotty documentation that often comes with open source software, especially when it is in earlier development.
One usage note that I don't remember reading in the DOC: For the drivers I was using, it was insufficient to simply put the program directory in the PATH. It wouldn't work for me unless I did a CD into the directory before running anything.
Speaking of running anything, the drivers are TSR's rather than boot-time only. So you can load and unload them as needed.
And since my current first interest was in using flash drives, that approach suits me well. He also notes that doing USB in DOS is memory-intensive, so that is another good reason to load as needed.
I got the drivers for the host controller and USB drive running. They both loaded automatically into upper memory. You can, by the way, load drivers first and then insert a flash drive, or insert a drive first then load the drivers. My commands were simply:
USBUHCIL
USBDRIVE /Devices:2 /Disks:2 /Drives:2
Testing with a SimpleTech 1GB FAT16 and a Kingston DataTraveler G3 4GB FAT32: I found that it works, but very slowly. A DIR command takes 10-15s. Copying a 10KB file took perhaps 20-30s. Copying a 500KB file took perhaps 10 minutes.
But the data integrity seemed good. The small and larger file copies both opened fine.
About copy speed: USBDRIVE has a MaximumSectors option which can be set from 1 to 64. By default it is set at 1, the slowest but most reliable level. The developer uses 4 with his drives. I got an error during a copy using 4, but with 3 no error. Set at 3 and doing a more accurate test, I copied a 50KB file in 90 sec.
There is some issue with the DIR command. A DIR of the Kingston 4GB FAT32 took 16 sec, but a DIR of the SimpleTech 1GB FAT16 never finishes. It lists all the files and directories, then summarizes xx File(s) and xx Dir(s), but then hangs there and never returns to the command prompt. A reboot is required.