UFE Write Access Working
Posted by retromaster on May 17, 2010
The last crucial piece of main UFE functionality, write support, is now working (no pictures this time as it’s a little difficult to document that way).
In XCopy, I am able to copy floppies successfully. I am able to read a floppy in (also emulated by UFE), then mount an empty image in UFE (filled by zeros), and let XCopy write onto this image. At this point, the written floppy resides in the SDRAM, and works just like a normal floppy image. I can do a checkdisk in XCopy, or boot from this copied image. I can also dump it to the SD Card in raw MFM format.
I’ve tested this with a few ADFs and there are no apparent problems. I have not tested with any program other than XCopy yet, so I am unable to say anything about compatibility, although I do not think this will be a big issue.
At the moment, the UFE firmware does not do the conversion to ADF when writing to the SD card, but this should not be a problem, either. I plan to have the SD Card writes be performed automatically and transparently: Once the host turns the drive motor off, the data in SDRAM (modified tracks only) will be written automatically to the SD Card. One of the LEDs on the UFE board will be used to warn the user that a write operation is in progress, just like the activity light on a real floppy drive. It should not take more than a few seconds to write the whole floppy image to the SD card.
Yesterday, I also investigated the idea of having one UFE to emulate two drives (i.e. on the Amiga, having DF0 and DF1). This seems to be possible in theory, as there is enough space in SDRAM to hold up to four DD MFM images. I am not sure that four drives can be supported though, and maybe it’s not practical anyway, as internal floppy connectors on most systems have only two select lines. In any case, it seems that the Amiga I am using for the tests has a hardware issue as it’s unable to pull the SEL1 line down. I am going to see what can be done with multiple drive emulation once I fix this issue.