Słomkowski's technical musings

Playing with software, hardware and touching the sky with a paraglider.

USB mass storage on MS-DOS


To successfully read files from an MFM hard disk, I needed another drive where I could copy them to. A USB stick would be the most convenient choice. Although DOS lacks built-in USB support, some unofficial drivers are available that leverage the fact that USB mass storage devices use the SCSI command set. SCSI hard drives were readily available during the golden years of MS-DOS, and the USB driver simply emulates a SCSI adapter.

SCSI adapter drivers are commonly associated with the acronym ASPI, which stands for Advanced SCSI Programming Interface. Therefore, USB drivers are often named USBASPI. Several implementations exist, and they are gathered on hiren & pankaj’s website. I also include them here in case the aforementioned website goes down: the ZIP archive.

You should check which USB host controller interface specification (OHCI or UHCI) your controller conforms to. I’ve got a PCI USB controller based on the D720100AGM chipset that conforms to OHCI and EHCI specifications. First, you need to create a bootable MS-DOS 6.22 floppy.

To load the driver, add entries in config.sys in the following manner:

device=usbaspi[X].sys [options]
device=NJ32DISK.SYS

Where [X] and [options] are from the list below. You should try some drivers from this list and find out which one works for you. NJ32DISK.SYS is a high-level SCSI driver that detects the hard drive (or in this case, USB flash drive) and makes it visible in DOS.

My own config.sys:

DEVICE=HIMEM.SYS /testmem:off
FILES=30
BUFFERS=20
device=USBASPI2.SYS
device=NJ32DISK.SYS

After successful boot-up the driver should display some information on the screen:

If you already have a hard drive in your system, the USB mass storage should be visible as the D: drive. I formatted it using format D: and it became ready to go!