-------------------- 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
