feipoa wrote on Today, 13:11:This is an awesome idea and it looks like you've spent countless days working on this. […]
Show full quote
This is an awesome idea and it looks like you've spent countless days working on this.
One of the major annoyances of working with pre-USB computers is moving files from your modern computer onto your vintage computer without removing the case. CD-RW was slow, cumbersome, and prone to failure; CF/SD needs reboot, case removal, and adding the CF as a HDD in the BIOS; floppy diskette size is often too low; ZIP/Jazz/LS120 is OK, but requires special drives to be installed on every computer; ethernet is OK if you have an available ethernet cable near you and have networking setup on every computer. Your solution looks to resolve much of these extra steps and is very portable - most vintage PC's had a parallel port.
A few questions:
1)
Did you have any issue with the hot-swappability of the USB flash drive? That is, can the USB card be inserted and written/read to without needing to reboot the computer?
2)
Do you need to have the USB flash drive setup as a 100 MB FAT partition?
3)
With a faster MCU, how close could you get to the to max ECP/EPP transfer rates? I think the protocol limit is ~2 MB/s for ECP. Maybe 4 MB/s for some EPP implementations?
4)
What are the chances that this design could be scaled to include ZIP 250 and ZIP 750?
Hi,
I spent a total of 3 months on it, during the night and at weekends. See my answers to your questions below
(1) and (2)
In my design, the USB thumbdrive just stores the disk images so it need not be formatted as 100MB FAT. In fact, FAT12/FAT16/FAT32 filesystems are supported. Multiple disk images, up to 2GB each, can be stored on the thumbdrive. You can select which image to present to the host OS by using the push buttons and LCD display.
For DOS 6.22 to recognize the disk drive, the image itself has to be formatted as FAT16. FAT32 is supported in Windows 98. In Windows XP, NTFS is supported as well.
Changing the disk image while the system has already assigned a drive letter is supported, provided that nothing is using the ZIP at the time. In MS-DOS, the free space count (in DIR command) might be cached for a while, so switching the image might result in the wrong free space count display. Otherwise, I have not noticed any other issues.
Hotswapping the USB is supported, although in my final version I disable hotswap. Microchip's implementation of USB hot-swap involves repeatedly scanning the bus looking for changes, and this slows this down. Disabling hot swap helps save some precious CPU cycle and allows the ZIP state machine to run faster.
(3)
I believe bidirectional parallel port speed is capped at 200KB/s. During testing on Windows 98 on DOSBox-X, I got around 50-60KB/s using my implementation. To get it to 2MB/s (or even 4MB/s) you will need a faster MCU, implement ECP/EPP, and a much more efficient state machine implementation. Certainly not one with thousands of lines containing if/else/goto. With the current code, I do not believe I can make it so fast even with the Teensy at 600MHz. But perhaps I can with something like the Banana PI (with 5V tolerant pins) running at GHz or an FPGA.
On my working IOMEGA ZIP100 drive, the max speed is only around 700KB/s, even in EPP mode. Perhaps it could do 2MB/s years ago when it was still new.
(4)
Although the IOMEGA driver sends SCSI ENQUIRY to query the device LUN string and retrieve the disk model (ZIP100, ZIP250, ZIP750), this is only for display on screen during initialization (and within SCSIUTIL.EXE). Once that is done, the model number is not cross-checked against the disk capacity and the driver will just pass DOS sector read/write commands to the disk drive.
The PALMZIP driver, designed for DOS, uses 6-byte SCSI commands, so the size limit would be around 1GB (assuming 512 sector size)
IOMEGA driver sends 10-byte SCSI commands, which are internally converted to 6-byte by my implementation, so the size limit is still 1GB. I presume the limit would be much higher if I had not performed the conversion, but I did not test this.
In reality, I did not have any issues with 100MB, 250MB or 750MB disk images. My firmware would also return the closest model (ZIP100, ZIP250, ZIP750) to the selected image size.
Building software & hardware: http://www.toughdev.com/