Słomkowski's technical musings

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

USB mass storage on MS-DOS


For reading data from MFM hard-disk I needed some other drive where I can copy files to. USB stick is most convenient. Despite the fact that DOS lacks architectural USB support, some unofficial drivers are available. They leverage the fact that USB mass storage uses SCSI command set. SCSI hard drives were readily available during golden years of MS-DOS. The USB driver simply emulates SCSI adapter.

Drivers for SCSI adapters are commonly associated with acronym ASPI which stands for Advanced SCSI Programming Interface. Therefore USB drivers come with name USBASPI. Several implementations exist, they are gathered on hiren website. I also include them here in case aforementioned website goes down: the ZIP archive.

For the demonstration I used MS-DOS 6.22 bootable floppy. First you have to check which USB host controller interface specification (OHCI or UHCI) your controller conforms to. I’ve got PCI USB controller based on chipset D720100AGM that conforms to OHCI and EHCI specifications.

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

device=usbaspiX.sys [options]
device=NJ32DISK.SYS

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

My own config.sys:

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

After reboot the driver should display some information on the screen:

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