Skip to content

Commit

Permalink
Updated to 1.44
Browse files Browse the repository at this point in the history
  • Loading branch information
geraldholdsworth committed Dec 18, 2022
1 parent 502b64f commit cc0a1e4
Show file tree
Hide file tree
Showing 47 changed files with 3,035 additions and 1,663 deletions.
37 changes: 37 additions & 0 deletions Documentation/Changes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -884,6 +884,43 @@ Bug fixes
* 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.

1.44 - 18th December 2022
-------------------------
New or improved features
* Added a new class for accessing the registry.
* Added an option, when creating ADFS hard drive images, to add the 512-byte 'emulator header'.
* Changed some of the internal procedures so that they return a Boolean, instead of a structure, to make it easier to add multi-partition support.
* MMFS support has been temporarily removed.
* Added an option, when creating ADFS hard drive images, whether it will be an IDE drive or not. This fixes an issue where the resultant drive could not be read by RISC OS 3.11 in Arculator.
* ADFS Directories which have not been read in for reasons other than the flag not being set, are now reported as broken.
* ADFS broken directory error codes have been expanded. Now checks for non-sector aligned directories, invalid Start or End names (i.e. not 'Hugo' or 'Nick'), and any other reason it is found to be broken.
* When adding multiple files to an image, no format checking is done and the files are just added.
* When adding directories to an image, the progress indicator is shown.
* When IDing DFS images, any image over 400KB (200KB double sided) is rejected.
* Added the address of the file to the CSV output.
* Extra range checking when updating ADFS New Map fragments, and if any part fails, the original is restored from the backup.
* Moved the 'Waiting' and 'Progress Update' labels on the Progress dialogue window.
* Performed some code optimisation on ADFS New Map.
* Writing objects to ADFS New Map will now create, or re-use, shared fragments.
* When outputting a CSV file of the contents, a dialogue box is now presented to select which columns, with some options, are to be included.
* CSV output now prefixes all hex numbers with '0x' for easier importing into Excel/Numbers/etc.
* Added 'Show Report' button and window.
* Image report can also be included in the CSV output.
* ADFS Hardware information is now saved into hard drive images (ADFS New Map).

Bug fixes
* In ADFS and Acorn FS, if a file had the same sector as the root then the filename would be blank. This would usually happen with New Map ADFS (usually an 'E' floppy) where the root was addressed directly, but the files were addressed indirectly.
* Changing time/date on a file now updates the 'unsaved' icon in the status bar.
* Some ADFS New Map fragment IDs were being used more than once, so the checking on unique IDs has been tightened up.
* The ADFS disc size was being read in as the root size.
* The heads and sectors per track fields were not being read in with ADFS New Map.
* Sometimes the root on ADFS New Map was not being found, so this has been improved.
* Renaming a directory in ADFS caused issues when then adding files to it as it kept it's old name.
* Sometimes when writing a file on ADFS New Map, two (or more) files would have the same indirect address (fragment ID).
* When writing a file to ADFS New Map, the end of free space marker on a zone would be beyond the zone and trample the following zone. When subsequent files where then written, this would continue into the following zone(s).
* On ADFS New Map, the free space would sometimes be incorrectly reported meaning that some files were stored where there was not enough space to store the file.
* On ADFS New Map, the smallest possible space to contain a fragment ID and the stop bit was not taken into consideration, meaning that a file stored could then not be retrieved.
* Some ADFS New and Big directory object's attributes, that only had a single attribute, where having '00' appended to the end.

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.
Binary file modified Documentation/Guide To Disc Formats.pdf
Binary file not shown.
44 changes: 18 additions & 26 deletions Documentation/ToDo.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,44 +4,36 @@ In no particular order

Bugs
* Scaling - there is a report that icons 'grow' on scaled screens. I have been unable to reproduce this.
+ This appears to happen on Windows (and probably Linux), with single screen only (dual or more it does not do this), resolution of 1400 by anything (or more), and scaled to more than 100%. The icons in the Directory Listing grow as the mouse moves. - TO BE TESTED
+ This appears to happen on Windows (and probably Linux), with single screen only (dual or more it does not do this), resolution of 1400 by anything (or more), and scaled to more than 100%. The icons in the Directory Listing grow as the mouse moves. - UNABLE TO REPLICATE. This may have been fixed by the upgrade to Lazarus 2.2.0.
* 'Bad FS Map' from BeebEm when loading an ADFS/AFS hybrid image after making a change to the ADFS partition. - UNABLE TO REPLICATE
* Some SS DFS images are IDed as DS images when 'Allow zero sectors' is selected in the preferences.
* Some SS DFS images are IDed as DS images when 'Allow zero sectors' is selected in the preferences. - UNABLE TO REPLICATE
* 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
General - Ideas, currently unlikely to be added
* 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.
* Extend drag and drop copy/move to multiple selection.
* Application to application communications.
* Copy entire files onto clipboard? And then paste from clipboard? - as Drag and Drop, this will need to be done using 'code-per-platform' directives.

General - Ideas which are maybe possible
* Ask to force overwrite if many files are getting written.
* Export the contents of an open image to another image, or set of images if the selected format is too small or are more directory entries than the format allows.
* Cancel button for progress display?
* Open multiple images at the same time and allow interaction between them (e.g. copying files from one to another).
* For macOS, change the settings being saved to the registry to being saved in a plist file, or within the application directory itself.
* Ablity to add/remove/delete partitions using the command line.
* Allow for multiple (>2) partitions - i.e. two or more DOS partitions on an ADFS structure, or ADFS/AFS/DOS hybrid.

DFS

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

Spectrum/Amstrad
* Write entire module - REQUIRE MORE INFO ON SPECTRUM FORMAT.

MMFS
* Rewrite/rethink entire MMFS idea. Possibly remove from Disc Image Manager.

SparkFS

DOS Plus
* ADFS: When a DOS image file is added to an ADFS image (and the "Open DOS Partition" setting is set), automatically open as the second partition (if there isn't one already).
* AFS: AFS0 images do not get created correctly (in particular the free space allocation maps) - AWAITING MORE INFO ON AFS FORMATS.
* AFS: Add option to new Level 3 images for pre-1988 or post-1988 format - AWAITING MORE INFO ON AFS FORMATS.
* AFS: 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: Add in support for Rigid Disks (multi-partition hard discs) - NEED TO IMPLEMENT MULTI-PARTITION SUPPORT FIRST.
* Amiga: Add in support for Professional File System - AWAITING FORMAT DETAILS AND SAMPLE(S).
* Amiga: Add in support for Smart File System - AWAITING SAMPLE(S).
* Spectrum/Amstrad: Write entire module - REQUIRE MORE INFO ON SPECTRUM FORMAT.
* MMFS: Rewrite/rethink entire MMFS idea - might be more viable once multi-partitions are implemented.
* DOS: Add in support for partitioned hard drive images - NEED TO IMPLEMENT MULTI_PARTITION SUPPORT FIRST.
* Have different TImageList components for each format.
* File Viewer: ability to export contents in a different format (e.g. BASIC -> Text, or Sprite -> PNG).
* Function to check every file and directory on a volume and produce a report detailing number of files with error (CRC32) and number of broken directories (ADFS), and list them, with option to save to a text file.
Binary file added Graphics/Buttons/Show Report/Show Report.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Graphics/Misc/Marble_Tile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added LazarusSource/.DS_Store
Binary file not shown.
2 changes: 1 addition & 1 deletion LazarusSource/AboutUnit.lfm
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ object AboutForm: TAboutForm
Align = alTop
Alignment = taCenter
BorderSpacing.Bottom = 4
Caption = 'http://www.geraldholdsworth.co.uk'
Caption = 'https://www.geraldholdsworth.co.uk'
Font.Color = clNavy
Font.Height = -16
Font.Name = 'Tahoma'
Expand Down
171 changes: 171 additions & 0 deletions LazarusSource/CSVPrefUnit.lfm
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
object CSVPrefForm: TCSVPrefForm
Left = 632
Height = 309
Top = 378
Width = 225
BorderIcons = []
BorderStyle = bsDialog
Caption = 'CSV Preferences'
ClientHeight = 309
ClientWidth = 225
OnPaint = FormPaint
Position = poMainFormCenter
LCLVersion = '2.2.0.4'
object cb_IncDir: TCheckBox
Left = 40
Height = 18
Top = 32
Width = 129
Caption = 'Include Directories'
TabOrder = 0
end
object cb_Parent: TCheckBox
Left = 40
Height = 18
Top = 112
Width = 59
Caption = 'Parent'
Checked = True
State = cbChecked
TabOrder = 3
end
object Label1: TLabel
Left = 32
Height = 16
Top = 88
Width = 53
Caption = 'Columns'
end
object cb_Filename: TCheckBox
Left = 40
Height = 18
Top = 130
Width = 73
Caption = 'Filename'
Checked = True
State = cbChecked
TabOrder = 4
end
object cb_LoadAddr: TCheckBox
Left = 40
Height = 18
Top = 148
Width = 100
Caption = 'Load Address'
Checked = True
State = cbChecked
TabOrder = 5
end
object cb_ExecAddr: TCheckBox
Left = 40
Height = 18
Top = 166
Width = 127
Caption = 'Execution Address'
Checked = True
State = cbChecked
TabOrder = 6
end
object cb_Length: TCheckBox
Left = 40
Height = 18
Top = 184
Width = 62
Caption = 'Length'
Checked = True
State = cbChecked
TabOrder = 7
end
object cb_Attributes: TCheckBox
Left = 40
Height = 18
Top = 202
Width = 78
Caption = 'Attributes'
Checked = True
State = cbChecked
TabOrder = 8
end
object cb_Address: TCheckBox
Left = 40
Height = 18
Top = 220
Width = 69
Caption = 'Address'
TabOrder = 9
end
object cb_CRC32: TCheckBox
Left = 40
Height = 18
Top = 238
Width = 62
Caption = 'CRC32'
Checked = True
State = cbChecked
TabOrder = 10
end
object Label2: TLabel
Left = 32
Height = 16
Top = 8
Width = 47
Caption = 'Options'
end
object CancelButton: TBitBtn
Left = 8
Height = 30
Top = 272
Width = 100
Cancel = True
Caption = 'Cancel'
Color = 15527148
ModalResult = 2
TabOrder = 11
end
object OKBtnBack: TPanel
Left = 112
Height = 30
Top = 272
Width = 100
BevelColor = clYellow
BevelInner = bvLowered
BevelOuter = bvLowered
BevelWidth = 4
ClientHeight = 30
ClientWidth = 100
Color = clYellow
ParentColor = False
TabOrder = 12
object OKButton: TBitBtn
Left = 0
Height = 30
Top = 0
Width = 100
Caption = '&OK'
Color = 15527148
Default = True
ModalResult = 1
TabOrder = 0
end
end
object cb_IncFilename: TCheckBox
Left = 40
Height = 18
Top = 50
Width = 118
Caption = 'Include Filename'
Checked = True
State = cbChecked
TabOrder = 1
end
object cb_IncReport: TCheckBox
Left = 40
Height = 18
Top = 68
Width = 143
Caption = 'Include Image Report'
Checked = True
State = cbChecked
TabOrder = 2
end
end
59 changes: 59 additions & 0 deletions LazarusSource/CSVPrefUnit.pas
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
unit CSVPrefUnit;

{$mode ObjFPC}{$H+}

interface

uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons,
ExtCtrls;

type

{ TCSVPrefForm }

TCSVPrefForm = class(TForm)
CancelButton: TBitBtn;
cb_IncDir: TCheckBox;
cb_Parent: TCheckBox;
cb_Filename: TCheckBox;
cb_LoadAddr: TCheckBox;
cb_ExecAddr: TCheckBox;
cb_Length: TCheckBox;
cb_Attributes: TCheckBox;
cb_Address: TCheckBox;
cb_CRC32: TCheckBox;
cb_IncFilename: TCheckBox;
cb_IncReport: TCheckBox;
Label1: TLabel;
Label2: TLabel;
OKBtnBack: TPanel;
OKButton: TBitBtn;
procedure FormPaint(Sender: TObject);
private

public

end;

var
CSVPrefForm: TCSVPrefForm;

implementation

uses MainUnit;

{$R *.lfm}

{ TCSVPrefForm }

{------------------------------------------------------------------------------}
//Tile the form
{------------------------------------------------------------------------------}
procedure TCSVPrefForm.FormPaint(Sender: TObject);
begin
MainForm.FileInfoPanelPaint(Sender);
end;

end.

Loading

0 comments on commit cc0a1e4

Please sign in to comment.