Słomkowski's technical musings

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

USB mass storage on MS-DOS


For successfully reading files from MFM hard-disk I needed some other drive where I can copy them to. USB stick would be the most convenient. Although DOS lacks built-in 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.

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

You ought 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. First things first, you will need to create 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 high-level SCSI driver which detects the hard drive (or in our 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 hard drive in your system, the USB mass storage should be visible as D: drive. I formatted it with format D: and it became ready to go!