I am one of the FreeDOS kernel developers. There was a problem with the BPB to DPB translation in FreeDOS for non-builtin FAT32 devices. Other drivers, when not loaded via config.sys, often build the DPB using int21/AH=53, but USBDRIVE relies on the fact that DOS will build the DPB anyway when the drive is first accessed. During that first build FreeDOS used the uninitialized DPB to check for FAT32 and thought it was FAT16. This problem is now corrected in the FreeDOS kernel SVN repository.
However, there is still another issue: USBDRIVE uses FAT16 DPBs but FAT32 DPBs are bigger -- I think they may overflow in memory if you use two FAT32 drives for F: and G:, for instance. The extended DPB format is given by Ralf Brown in table 1787 under INT21/AX=7302.
Yet another issue is that I, randomly (!) got garbage from my KINGSTON 4GB Data Traveller stick. However this was not FreeDOS specific, it also happens with MSDOS 7.1 (but not with Windows XP/Vista and Linux). Sometimes the data was valid, sometimes there was random garbage containing the string "USBC" at regular intervals.
Bret wrote:EDIT: Is there an easy, valid way for USBDRIVE to verify that it is in fact running FreeDOS (as opposed to some other DOS), and also verify that the kernel has the correct patch? If so, I would like to add that test into USBDRIVE so that it will not load FAT32 support unless it's running a valid OS.
Yet another issue is that I, randomly (!) got garbage from my KINGSTON 4GB Data Traveller stick. However this was not FreeDOS specific, it also happens with MSDOS 7.1 (but not with Windows XP/Vista and Linux). Sometimes the data was valid, sometimes there was random garbage containing the string "USBC" at regular intervals.
The "USBC" is part of the header data (called a USB Command Block Wrapper) that is included in all SCSI requests to the drive. The fact that you're seeing the USBC's indicates that the drive is not responding like it's supposed to all the time.
If you wouln't mind, try using the X:1 option with USBDRIVE and see if the disk still gives you the same random errors. If that fixes the problem (and I think it will), I may need to change the default value in USBDRIVE from 4 to 1. This will make the data transfer rate slower, but will make the drives more reliable.
It seems that the biggest problem was the default X:4 option. Now when default is X:1 it works fine but when I try to set on command line X:4 it behaves like before.
However - the USBDOS/USBDRIVE is remarkably slower than Georg Potthaust DOSUSB. Espetially reading the content of the directory. Has it something to do with this option and can it be improved?
Second problem is assigning the multiple drive letters. USBDRIVE mounts not only F: drive but also G:, H: and so on until LASTDRIVE variable. Why?
And third thing - how can I disable the message and question "Do you want to install it (Y/N) ?" When starting DOSUHCI/DOSUHCIL?
I would like to place it into my AUTOEXEC.BAT and such messages and need for confirmation is not comfortable.
Users browsing this forum: No registered users and 1 guest