Skip to content

Commit

Permalink
Updated to 1.43
Browse files Browse the repository at this point in the history
  • Loading branch information
geraldholdsworth committed May 4, 2022
1 parent b58a324 commit ec0f088
Show file tree
Hide file tree
Showing 27 changed files with 2,022 additions and 403 deletions.
47 changes: 36 additions & 11 deletions Documentation/Changes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -830,15 +830,15 @@ Bug fixes
----------------------
New or improved features
* SparkFS images are now fully writable:
* Can now write files to a SparkFS image.
* Can now create a blank directory on a SparkFS image.
* Can now rename files and directories on a SparkFS image.
* Can now move and copy files and directories on a SparkFS image.
* Can now change the timestamp on files and directories on a SparkFS image.
* Can now change the filetype on files on a SparkFS image.
* Can now change the load and execution addresses on files on a SparkFS image.
* Can now change file and directory attibutes on a SparkFS image.
* Can now delete files/directories from a SparkFS image.
* Can write files to a SparkFS image.
* Can create a blank directory on a SparkFS image.
* Can rename files and directories on a SparkFS image.
* Can move and copy files and directories on a SparkFS image.
* Can change the timestamp on files and directories on a SparkFS image.
* Can change the filetype on files on a SparkFS image.
* Can change the load and execution addresses on files on a SparkFS image.
* Can change file and directory attibutes on a SparkFS image.
* Can delete files/directories from a SparkFS image.

Bug fixes
* SparkFS failed to extract the file data if it was the first file in the archive.
Expand All @@ -847,17 +847,42 @@ Bug fixes
* A bug had crept in, at some earlier version, that crashed the application when the filetype was clicked on.
* When editing the date/time stamp, clicking on a field during editing would instead commence editing the selected node on the directory tree for renaming.

1.43
----------------------
1.43 - 4th May 2022
-------------------
New or improved features
* Reports number of items in a directory in the File Details pane.
* Added more sanity checks on ID-ing a DOS or DOS+ image.
* Changed the order of ID-ing a format and moved DFS to the end.
* The Image Details dialogue now opens, with Free Space Map display, for AmigaDOS images.
* Attributes are now shown for files on an AmigaDOS image.
* Can now retitle an AmigaDOS image.
* CRC32 is no longer reported for directories.
* Improved the file extraction function for AmigaDOS images, and made it FFS compatible.
* TimeDate stamp is now reported for Amiga files and directories.
* Can create blank Amiga DD and HD floppy images, and blank hard drive images.
* Can create new directories on AmigaDOS images.
* Can write files to an AmigaDOS image.
* Can update the protect attributes on an AmigaDOS file/directory.
* Can date/time stamp an AmigaDOS file/directory.
* Can delete files/directories from an AmigaDOS image.
* Can move files/directories around an AmigaDOS image.
* Can rename files/directories in an AmigaDOS image.
* The file relating to the currently open DOS partition is now marked in green in the directory tree, and cannot be deleted.
* DOS Partitions will now only be searched for on Old Directory ADFS hard drives.
* Added an option to specify whether to automatically open DOS partitions on ADFS hard drives.
* Added an extra command line parameter to create DOS hard drive: DOSHDD|<size>
* Added an extra command line parameter to create Amiga hard drive: AmigaHDD|<size>
* Added extra command line parameters for creating DOS floppies: DOS+640, DOS+800, DOS360, DOS720, DOS1440, and DOS2880.
* Added a command line option to change the configuration options: --config or -cf.

Bug fixes
* When looking for a DOS partition on an ADFS hard drive, the drive was split as two separate drives. However, the DOS partition is a file held within the ADFS file structure and not a separate partition.
* The custom filetype entry box was not positioned correctly in the filetype dialogue.
* ADFS Filetypes and timestamps were getting reported for non ADFS formats and ADFS Old Directories.
* Sometimes reading a file off an AmigaDOS image would hang the application.
* During copy/move operations, the directory being hovered over expanded instantly which could cause issues. There is now a 1 sec hover delay before expanding.
* A failed delete, or the user clicking on 'No' to confirm a deletion, would leave the confirmation window open until it was a successful delete, or the user clicked 'Yes'.
* The configuration option to compress UEF images did not get saved to the registry.


Platform History
Expand Down
Binary file modified Documentation/Disc Image Manager User Guide.docx
Binary file not shown.
Binary file modified Documentation/Disc Image Manager User Guide.pdf
Binary file not shown.
7 changes: 2 additions & 5 deletions Documentation/ToDo.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Bugs
* Some SS DFS images are IDed as DS images when 'Allow zero sectors' is selected in the preferences.
* Access violation has been reported when creating an ADFS HDD image (default options) on Windows. - UNABLE TO REPLICATE
* Does not work on Windows 11. - UNABLE TO REPLICATE
* Changing time/date on a file does not update the 'unsaved' icon in the status bar.

General
* Drag and Drop facilities out of the application...currently looking unlikely for cross platform. This will need to be done using 'code-per-platform' directives.
Expand All @@ -26,18 +27,14 @@ General
DFS

ADFS
* Import an existing AFS or DOS image into ADFS as a new partition.
* Import an existing AFS or DOS image into ADFS as a new partition (importing DOS image as parition is as easy as just adding a DOS Image file).

AFS
* AFS0 images do not get created correctly (in particular the free space allocation maps) - AWAITING MORE INFO ON AFS FORMATS.
* Add option to new Level 3 images for pre-1988 or post-1988 format - AWAITING MORE INFO ON AFS FORMATS.
* When extracting the AFS partition, remove the ADFS partition and re-address all the objects, instead of just blanking out the ADFS part - IN PROGRESS.

Amiga
* Write/Delete/Rename files/directories to Amiga images.
* Create blank Amiga images.
* Create Free Space Map for Amiga.
* Show file attributes in the File Details panel.

Spectrum/Amstrad
* Write entire module - REQUIRE MORE INFO ON SPECTRUM FORMAT.
Expand Down
31 changes: 27 additions & 4 deletions LazarusSource/DiscImage.pas
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ TFragment = record //For retrieving the ADFS E/F fragment informati
FDFSBeyondEdge, //Check for files going beyond the DFS disc edge
FDOSVolInRoot, //Volume name is stored in the root (DOS)
FScanSubDirs, //Scan sub directories on opening (ADFS/Amiga/DOS/Spark)
FOpenDOSPart, //Open DOS Partitions on ADFS
FDOSUseSFN : Boolean; //Use short filenames, even if there are long filenames (DOS)
secsize, //Sector Size
bpmb, //Bits Per Map Bit (Acorn ADFS New)
Expand Down Expand Up @@ -346,15 +347,35 @@ TFragment = record //For retrieving the ADFS E/F fragment informati
function AmigaBootChecksum(offset: Cardinal): Cardinal;
function AmigaChecksum(offset: Cardinal): Cardinal;
function ExtractAmigaFile(filename:String;var buffer:TDIByteArray):Boolean;
function FormatAmiga(minor: Byte): TDisc;
function ExtractAmigaData(sector,filelen: Cardinal;
var buffer: TDIByteArray): Boolean;
function FormatAmigaFDD(minor: Byte): TDisc;
function FormatAmigaHDD(harddrivesize: Cardinal): TDisc;
procedure FormatAmiga(size: Cardinal);
function WriteAmigaFile(var file_details: TDirEntry;var buffer: TDIByteArray): Integer;
function CreateAmigaDirectory(var dirname,parent,attributes: String): Integer;
function RetitleAmigaDirectory(filename, newtitle: String): Boolean;
function RenameAmigaFile(oldfilename: String;var newfilename: String):Integer;
function DeleteAmigaFile(filename: String):Boolean;
function UpdateAmigaFileAttributes(filename,attributes: String): Boolean;
function UpdateAmigaDiscTitle(title: String): Boolean;
function MoveAmigaFile(filename,directory: String): Integer;
procedure ReadAmigaFSM;
procedure AmigaFillFreeSpaceMap(address: Cardinal;usage: Byte);
procedure ToAmigaTime(time: TDateTime;var days,mins,ticks: Cardinal);
function FromAmigaTime(days, mins, ticks: Cardinal): TDateTime;
function AmigaIntToStrAttr(attr: Cardinal): String;
function AmigaStrToIntAttr(attr: String): Cardinal;
function AmigaCalculateHashValue(filename: String): Cardinal;
procedure AmigaAllocateFSMBlock(addr:Cardinal;used:Boolean;var fsm:TDIByteArray);
function GetAmigaFSMOffset(addr: Cardinal;var bit: Byte): Cardinal;
function AmigaReadBitmap(var fsm: TDIByteArray): TFragmentArray;
procedure AmigaWriteBitmap(fsmlist: TFragmentArray;var fsm: TDIByteArray);
function AmigaFindFreeSpace(filelen: Cardinal): TFragmentArray;
function UpdateAmigaTimeStamp(filename: String;newtimedate: TDateTime): Boolean;
function GetAmigaChain(sector: Cardinal): TFragmentArray;
procedure AmigaAddToChain(filename: String;paraddr,sector: Cardinal);
function AmigaRemoveFromChain(filename: String;paraddr,sector: Cardinal):Boolean;
procedure ValidateAmigaFile(var filename: String);
//Acorn CFS Routines
function ID_CFS: Boolean;
function ReadUEFFile: TDisc;
Expand Down Expand Up @@ -443,8 +464,9 @@ TFragment = record //For retrieving the ADFS E/F fragment informati
'DELDeleted' ,'SEQSequence' ,'PRGProgram' ,
'USRUser File','RELRelative' ,'CBMCBM' );
//Disc title for new images
disctitle = 'DiscImgMgr';
afsdisctitle = 'DiscImageManager'; //AFS has longer titles
disctitle = 'DiscImgMgr';
afsdisctitle = 'DiscImageManager'; //AFS has longer titles
amigadisctitle= 'Disc Image Manager';//Amiga has even longer titles
//Root name to use when AFS is partition on ADFS
afsrootname = ':AFS$';
{$INCLUDE 'DiscImageRISCOSFileTypes.pas'}
Expand Down Expand Up @@ -532,6 +554,7 @@ TFragment = record //For retrieving the ADFS E/F fragment informati
property MapType: Byte read MapFlagToByte;
property MapTypeString: String read MapTypeToString;
property MaxDirectoryEntries: Cardinal read FMaxDirEnt;
property OpenDOSPartitions: Boolean read FOpenDOSPart write FOpenDOSPart;
property ProgressIndicator: TProgressProc write FProgress;
property RAWData: TDIByteArray read Fdata;
property RootAddress: Cardinal read GetRootAddress;
Expand Down
5 changes: 2 additions & 3 deletions LazarusSource/DiscImageManager.lpi
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,9 @@
<VersionInfo>
<UseVersionInfo Value="True"/>
<MajorVersionNr Value="1"/>
<MinorVersionNr Value="42"/>
<RevisionNr Value="1"/>
<MinorVersionNr Value="43"/>
<Language Value="0809"/>
<StringTable CompanyName="GJH Software" FileDescription="Disc Image Manager for Acorn and Commodore disc formats" ProductName="Disc Image Manager" ProductVersion="1.42.1"/>
<StringTable CompanyName="GJH Software" FileDescription="Disc Image Manager for Acorn and Commodore disc formats" ProductName="Disc Image Manager" ProductVersion="1.43"/>
</VersionInfo>
<BuildModes Count="10">
<Item1 Name="Default" Default="True"/>
Expand Down
Loading

0 comments on commit ec0f088

Please sign in to comment.