-------------------- AmigaOS 3.1.4.(1) project ----------------------- Changes for 45.2 (29.4.2017) Added support for DOS\8 (long file names) Changes for 45.3 (12.8.2017) -Fixed a hit due to a TextAttr not being long-lived enough. -Fixed checkbox dependency for various file systems. Changes for 46.1 (12.8.2017) - Added support for DOS/7 and DOS/6. Changes for 46.2 (6.12.2017) - The size computation did not support large volumes. - The non-quick format could have overwritten data from other partitions by not using a 64-bit clean IO operation. In such a case, Format now reverts to quick format which is sufficient and faster. Changes for 46.3 (18.12.2017) - Fixed an off-by-one error in the computation of the volume name. Changes for 46.4 (22.1.2018) - The computation of the precentage level was correct.... up to the last step where the correct result was thrown away and replaced by the old formula. Bummer! Changes for 46.5 (23.1.2018) - Format now gives up with the fill level computation if the environment indicates a device with more than 2^32 blocks. No Amiga file system I am aware of can handle such devices anyhow. Changes for 46.6 (24.3.2018) - Format will now keep silent when looking for the locales and will not request ENV:. Changes for 46.7 (20.6.2018) - Due to an oversight, Format never used DirectSCSI nor the TD64 command set. Changes for 46.8 (28.7.2018) - Dependencies between the various file system options where not yet quite right. Long file names always imply no directory cache and international mode. This got fixed. Changes for 46.9 (4.9.2018) - Changed the startup code such that Format can be made resident again. - Ensured that the infoData structures are all aligned by placing them on the heap. - In case the file format uses for Info() a different bytes per sector than requested in the environment vector, Format would have printed nonsense for the volume size and usage information. The size computation algorithm is now really paranoic and checks for such cases. Changes for 46.10 (8.9.2018) - Changed the paranoia check for the capacity computation once again to make it more robust. Changes for 46.11 (23.9.2018) - The format command now checks the version number of any file system that claims to support FFS. If the version number is >= 46, it is assumed that DOS\6 and DOS\7 work. Otherwise, long file name support is greyed out or will fail-fast on the command line. Changes for 46.12 (17.12.2018) - The format command did not check whether the resident node it was looking for could actually be found for checking whether long file names are supported, and run into a MuForce hit in case it was not. - The FileSystem.resource is now also used to hunt down the version of the file system such that we can enable or disable long file names. Changes for 46.13 (25.4.2019) - The check for sensible disk geometry was too conservative and also refused to format a partition in case ACTION_DISK_INFO returned zero blocks used, which could happen for the CrossDos in case the disk was not formatted at all. Changes for 46.14 (14.5.2019) - Changed the button of the Quick format warning to "Continue" instead of "Cancel" since there is nothing to cancel at this point, and not a choice to cancel anything. ----------------------- AmigaOS 3.2 project -------------------------- Changes for 47.1 (8.6.2019): - Made the GUI scalable. Changes for 47.2 (10.6.2019): - Optimized GUI scaling for better layout with different fonts. Alow use of 7 pixel wide fonts (eg. XEN/11) Changes for 47.3 (13.6.2019): - Fixed a race condition when opening fonts. Changes for 47.4 (15.11.2019): - Added a delay after disk insertion to give the file system a chance to settle down. - Determines now whether quick formatting is possible by attempting to read a block from the device. Changes for 47.5 (9.8.2020): - Added a cosmetic linefeed after initialisation message in command line mode. Changes for 47.6 (19.09.2020): - There can be a race condition if Format begins formatting before the filesystem has completed a previous operation (such as a copy) meaning that a newly QUICK initialised disk can still see the old files that were on the disk before formatting. Format now ensures a flush is carried out before formatting. format 47.7 (18.10.2020) - Cleaned up the list of header files which are needed to build the Format command. This can be a shorter list. - The fall-back for a failed ACTION_FORMAT operation involves writing a standard OFS/FFS, etc. root directory block to where it's supposed to be. However, for this to work the block size must be exactly 512 bytes and the file system type must be one of the DOS0..DOS7 variants. There is now a test which makes sure that this is the case. If the block size is larger or the file system type does not match, then the Format command will give up with ERROR_ACTION_NOT_KNOWN. - Preparations for formatting a file system device are a bit more paranoid when checking the device configuration information. - The file system device name is derived from a BCPL string and therefore must hold up to 255 characters plus termination. 30 are not enough. - The Format command did not actually verify that the track data was written correctly to the medium, it just reread the block and that was good enough. We now do the right thing: flush the track to the medium, clear the track read cache, read the track back from the medium and check if the track's contents match what was written. If the data looks different, we flag this as an error. - If you're not going to use the GUI, then you don't require gadtools.library V47 to to be available. Format now works with Kickstart 3.0 again... - Added a buffer overflow check for the volume name which will be handed over to the ACTION_FORMAT command, or copied to the root directory block. - A single read/write error is now sufficient for the format operation to fail. Previously, four such errors were required to consider formatting to have failed. - Now uses va_start() .. va_end() to access varargs parameter lists. - After ACTION_INHIBIT has succeeded, we now ask the disk device to really write any unwritten data back to the disk before we proceed. - Once the format operation has concluded and the file system has taken control of the medium, Format waits for the file system to report that the medium is now safe to write to. It will wait up to 25 seconds. You can now hit Ctrl+C to stop waiting (with side-effects, of course). And if no trashcan icon needs to be written to the disk, then there is no need to wait anyway. format 47.8 (18.10.2020) - The file system startup message has to be valid 32 bit address after all... Oops :-( format 47.9 (19.10.2020) - No need to access ExecBase library structure members. - Wrapped the SAS/C-specific code into #ifdef..#endif sections. - Replaced __aligned data structure use with the D_S() macro which is portable. - Replaced the SAS/C-specific __emit__() with an old hack, namely a string passed to RawDoFmt() which contains the same opcodes. - User input from windows now processes all the incoming IntuiMessages in a loop instead of calling WaitPort() for every single message. - Replaced calls to EasyRequestArgs() with EasyRequest() where it simplified the code and made it more readable. format 47.10 (20.10.2020) - When constructing a standard 512 byte root directory block the maximum length of the volume name is now truncated to 30 characters because there just isn't more room. Previously, 40 characters were permitted which would have corrupted the root directory for good. - icon.library is now opened on demand only and failure to open it is no longer considered a good reason for exiting quietly without even saying what went wrong. This means that an old-fashioned "format drive: name whatever quick" will no longer prompt you to reinsert your boot disk so that icon.library could be opened. - Failure to allocate memory in the device I/O setup is now a reason to accept that it didn't work at all. Previously, the respective code would have just soldiered on, making assumptions about the medium which would have led to trouble later. Format 47.11 (08.03.2021) - Added localization to KB, MB, GB.... strings - Added missing PB before EB