v0.94 attached.
A lot of bugfixes and changes in this update as I work towards a v1.00 release. I've tested this against SCSIFS/SDFS on a Pi, ZIDEFS/IDEFS on Baildon Podules and ADFS on a RiscPC. ST506 support has been tested under Arculator emulation.
Although I've tested many variations of drive partitioning over the past week, I obviously can't test every combination so please report any issues and post DEBUG/TXT files to help me get this finalized.
The main change in this build is it will detach known logical drives on any physical drive being modified, then restart the filesystem and its Filer after changes are written. This avoids a reboot after disk changes, but is experimental. I have noticed that after a Filer is restarted, the RAMFS Filer fails to show if you drag it's size from 0; but if you then drag it back to 0, then up again the Filer icon appears. I think this might be due to a bug in RAMFS's Filer as it doesn't appear to follow the OS documentation on how to handle a Filer restart request.
On ST506 drives, it will attempt to programmatically work out the drive CHS geometry, but as I don't have a working ST506 I can't test it. I've also been unable to find any documentation on how an ST506 handles reads beyond CHS limits or how ADFS handles address to CHS translation so its highly experimental at the moment.
The other notable change is it will attempt to work out if a drive is using CHS or LBA addressing and adjust the DiscOp's accordingly. This is primarily to work around issues in ICS IDEFS, which doesn't fully support LBA addressing.
Changes:
- ZIDEFS drive identification could result in an error being reported
- ZIDEFS wasn't setting the partition limit for secondary drives
- ZIDEFS was starting the first partition at LBA 0 to mirror the OEM. The first partition now starts at the second cylinder to avoid FileCore overwriting the partition table
- ZIDEFS partition starts are now rounded up to the next cylinder to avoid overlapping the previous partition
- added FNalign_partition_* to allow ZIDEFS to align new partitions to cylinders
- ZIDEFS wasn't correcting the sector address to +1 when performing low level disc ops
- Added FNcylinder_size(<drive>) to !RunImage for general use
- Added Drive_Info%(<drive>, D_Addressing%) to track if a drive prefers CHS or LBA addressing. Modified FS.ZIDEFS and Formats.FileCore accordingly
- Moved FNdecode_IDENTIFY into !RunImage and made it general use as its used by several filesystems that need to decode IDE IDENTIFY DEVICE
- FS.ADFS, FS.HDFFS, FS.IDEFS, FS.ZIDEFS modified to use FNdecode_IDENTIFY
- Adjusted the progress bar code to see if it now updates correctly
- Deleting an ICS partition was failing to clear the partition table entry correctly
- ICS partitioning wasn't allowing FAT partitions to be created
- Added low-level IDE commands for ATAFS, which needs testing. It might identify drives and provide debug info to work out the partitioning scheme
- Update Partitions.* to use PROCadd_unallocated_space
- Moved the Partitions.ATAFS/IDEFS/ZIDEFS code into their FS.* files to avoid them being loaded if the filesystem isn't present
- Added PROCadd_unallocated_space and modified all the partition code to use it to add any unused or inaccessible areas to the GUI
- Added FNcmp64() to compare two unsigned 64bit values
- FNvalid_range wasn't checking the range correctly
- Reinstated the ADFS code that attempts to work out the size of ST506 drives
- added PROCdismount_logical_drives() and modified all FNdetach_* to use it to dismount partitions before modifying a drive
- added PROCrestart_filesystem() and modified all FNattach_* to use it to restart the Filesystem and Filer Wimp task
- Formatting small FAT (10MB was the test) would attempt to write a negative sized block to the last FAT
- FileCore no longer scans ADFS floppy discs when searching for a partition's logical drive name
- Progress bar now refreshes the whole area to avoid stale Wimp updates
- Added PROCadd_drives_progress() and modified all FS.* to use it
- ZIDEFS *Configure ZIDEFSDrives now performed when the drives are reattached
- ZIDEFS wasn't ignoring partitions that were 0 cyliders in size
- ZIDEFS and ICS partitioning were not adding unallocated space between partitions correctly and were not allowing the area to be formatted
- Modified the IDEFS read partition code to handle a bug in ICS IDEFS where later versions will report a drive failure if IDEFS fails to a valid partition table
- Modified the FileCore partitioning code to always write a valid LBA 6 to work around a fatal bug in some versions of ICS IDEFS
- ADFS based ST506 now use CHS addressing
- MBR partition range validation altered to size-1 to work around some 3rd party MBR partitions ending one LBA beyond the drive limit
Hold ALT while launching to create a debug/txt file.
WARNING: Do not use this build to add a volume after a Pi's MBR partition's as it will erase the partition table. It will be fixed in the next build