1517 postsMost USB floppy drives are funny beasts; apparently they handle a lot of the “disc control” stuff themselves instead of leaving it up to the OS. A typical USB drive connected to a Windows PC will not read Microsoft’s 1.7 MB “ DMF” format, likewise a drive connected to a Mac will not read Apple’s 800 kB or 1.6 MB formats.
![]() ![]()
YE-DATA YD-8U10 1.44MB 3.5' Usb External Slim Floppy Disk Drive Black Mac Or Pc. Adds functionality and versatility to your USB enabled Mac or PC computer. Apple Special Delivery Software C2B0010 Master and Backup Floppy Disk.
![]()
Presumably Acorn’s similar formats would run into the same issue.Theoretically DOSFS should work, but perhaps it doesn’t have the necessary code to handle a USB drive. 1886 postsI’m wondering if the drive isn’t handling the disc stuff itself and presenting itself as some weird sort of removable media device?Think of them as the hardware equivalent of ADFS, you’d need a FileCore level driver to interact with them as the FDC in the USB drive isn’t directly accessible. However, it might be possible to add a USB driver into my ADFS shim Module that comes with ADFFS for RO5, providing support for at least 1.44MB. Other sizes would be dependent on what the floppy drive supports.I suspect there’s either a floppy standard in the USB 1.1 specs, or they present themselves as a generic removable media of fixed size, based on what the FDC initially identified the floppy size as.What would be more useful is a Kryoflux driver. I’ve just for the Kryflux driver source. 1382 postsIt is a really long time since I read that USB class stuff, but I seem to remember that RISC OS mass storage driver (USBSoftSCSI) supports only the HD/CD/ DVD typical classes (class-subclass-protocol) like 8-6-50 ( SCSI passthrough) and 8-2-50 ( MMC), both “bulk only” (i.e. Both commands and data are transfered via bulk endpoints).Jon’s device above reports 8-4-0, which is UFI Control/Bulk/Interrupt – confusingly, I cannot see the typical control endpoint for itI don’t think there is any code in RISC OS that would translate typical floppy track/sector addressing into logical blocks as expected by SCSIFS to then put ’em through to DOSFS.Didn’t Dave Higton have a pseudo filing system for Fat32 for USB sticks some long time ago?
Maybe this could be souped up easily. Or have a small utility that transfers the whole floppy image, which should then be easily readable with DOSFS image fs capability. 1981 postsDidn’t Dave Higton have a pseudo filing system for Fat32 for USB sticks some long time ago? Maybe this could be souped up easily.I did have a sort-of filing system (read only) for FAT32 and FAT16, I think, but it was all predicated on being able to read any chosen block from the device. This was a long time ago, so please forgive the fact that I can no longer remember much about it (it was soon obsolete because an enormously more capable alternative came along).The first challenge is to be able to read blocks off any device, and I don’t think anyone has done that yet for a USB floppy.How much use would it be anyway, to be able to read data from a DOS-formatted floppy disc? 1886 postsModify scsisoftusb by translating the SCSI commands to UFI commands so that the floppy is handled by SCSIFSAccording to the spec “The UFI Command Set is based on the SCSI-2 and SFF-8070i command set”, so SCSISoftUSB may not need major changes to support floppies.I’ve tried RMKilling SCSISoftUSB and still can’t get the floppy to respond, so I’m not sure I’m sending the commands to it correctly. Essentially I’m sending TEST UNIT READY via an ADSC block to endpoint2 and waiting for the response on endpoint1, which never appears.
1952 postsYou send the ADSC over the control interface (usbmsccbi1.1.pdf 4.1) – below is a BASIC function to do a control request. Any responses are via the bulk IN endpoint – I think. DEF PROCusbcontrol(usb$,bmRType%,bRequest%,wValue%,wIndex%,wLength%,buf%)SYS 'XDeviceFSCallDevice',(1. 1886 postsYou send the ADSC over the control interface (usbmsccbi1.1.pdf 4.1) – below is a BASIC function to do a control request.Thanks, the documentation bares very little relation to reality. Ironically, I did originally code it that way but was confused by the documentation.Using your example, I do now have it reading sectors so now need to figure out:. how to scan the USB devices to find the floppy. how to find the file handles of the endpoints that SCSISoftUSB has opened for the device.
1952 posts2) Get SCSISoftUSB changed – or change it and supply a softload version. You never know what SCSISoftUSB is doing to the endpoints.1) SYS 'OSServiceCall',1,&D2,0 TO,usblist%The format of the returned usblist is given it’s a list of USBServiceAnswer structures containing the usb descriptors for each device. When you have finished with the list you need to delete it with. DEF PROCusbdeletelistLOCAL item%WHILE usblist% 0item%=!usblist%SYS 'OSModule',7,usblist%usblist%=item%ENDWHILEENDPROCYou need to traverse the usbdescriptors looking for an interface descriptor with bInterfaceClass=8, bInterfaceSubClass=4 – names are from my usbdescriptors program which you showed output from earlier. All the values in that output come from the USBServiceAnswer list. Note that all the descriptors have length values so you can work out where the next descriptor in the list is.
Once you find the USBServiceCall containing the UFI interface USBServiceCall.devname is the USB device.I could knock up a BASIC program to find the device if you would like?
![]() Comments are closed.
|
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
January 2023
Categories |