Skip to content

Commit

Permalink
Updated to 1.45
Browse files Browse the repository at this point in the history
  • Loading branch information
geraldholdsworth committed Mar 3, 2023
1 parent 380feaf commit 72f5d0c
Show file tree
Hide file tree
Showing 51 changed files with 4,062 additions and 3,125 deletions.
23 changes: 20 additions & 3 deletions Documentation/Changes.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Changes History
---------------

Original version begun life on 6th December 2018.
The original concept started out life within Repton Map Display. It became a project in it's own right on 6th December 2018.

1.05 8th December 2020
----------------------
Expand Down Expand Up @@ -922,14 +922,31 @@ Bug fixes
* 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.

1.45
-------------------------
1.45 - 3rd March 2023
---------------------
New or improved features
* Removed the file type filter from the 'Add Files' dialogue box.
* Rewrote the function to reconsolidate the ADFS Old Map Free Space Map, sorting entries into order and removing unused ones.
* Styled the application more towards RISC OS style.
* Changed the toolbar on the main window to tabbed toolbars, as the 'coolbars' were not scaling correctly.
* Now creates an 'inf' file for the root directory when extracting to the host system.
* The 'inf' file created for directories now includes an extra field for the directory title.
* Made the scroll bars for the directories display now automatic. Now, they only appear when required.

Bug fixes
* Adding files to an ADFS Old Map would sometimes result in a 'Bad FS Map' when read by the MOS.
* When displaying an ADFS disc, the root directory title would be replaced with the disc name instead.
* When displaying BBC BASIC files, line numbers (after GOTO, RESTORE, GOSUB, etc.) were not getting displayed.
* Ignored the attribute setting, from an 'inf' file, when importing directories.
* Defrag would lose all the sub-directory's entries.
* Updating the free space map of an old map ADFS would blank off the root directory's 'StartSeq' number thereby causing a Broken Directory for the root.
* Deleting objects, from Old Map ADFS, did not update the Free Space Map correctly all the time. This was mostly noticable on Defrag when many files got lost because of lack of space.
* Deleting a directory, in ADFS, did not remove the reference from the internal array. The resultant image was usually unaffected.
* After a defrag, the application would sometimes crash for no apparent reason.
* The modified icon on the Image Details status bar was not being scaled correctly.
* The Image Details status bar was not getting fully repainted after a non-saved image was closed.
* The application would crash if an ADFS image had zero free space.
* Creating a 640KB ADFS L image, then adding a DOS partition would not result in the partition being visible.

Platform History
----------------
Expand Down
4 changes: 3 additions & 1 deletion Documentation/ToDo.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ General - Ideas which are maybe possible
* 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.
* AFS: Consolidate the JesMap fragments which are concurrent (as per Old Map ADFS).
* 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).
Expand All @@ -38,4 +39,5 @@ General - Ideas which are maybe possible
* 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.
* Function (and button) 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.
* Function (and button) to consolidate the free space map for ADFS and AFS (using the functions built into the class).
Binary file added Graphics/Misc/RISC OS Border Lowered.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/RISC OS Border Raised.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
87 changes: 3 additions & 84 deletions LazarusSource/AFSPartitionUnit.lfm
Original file line number Diff line number Diff line change
Expand Up @@ -3,104 +3,23 @@ object AFSPartitionForm: TAFSPartitionForm
Height = 156
Top = 272
Width = 355
BorderIcons = [biSystemMenu]
BorderIcons = []
BorderStyle = bsDialog
Caption = 'Partition Size'
ClientHeight = 156
ClientWidth = 355
Color = 15527148
OnCreate = FormCreate
OnPaint = FormPaint
Position = poMainFormCenter
LCLVersion = '2.2.0.4'
object PartitionSize: TTrackBar
Left = 0
Height = 37
Top = 0
Width = 355
OnChange = PartitionSizeChange
Position = 0
TickMarks = tmBoth
TickStyle = tsNone
Align = alTop
TabOrder = 0
end
object PartitionSizeLabel: TLabel
Left = 0
Height = 16
Top = 37
Top = 0
Width = 355
Align = alTop
Alignment = taCenter
Caption = 'PartitionSizeLabel'
end
object CancelButton: TBitBtn
Left = 128
Height = 30
Top = 120
Width = 100
Caption = 'Cancel'
Color = 15527148
ModalResult = 2
TabOrder = 1
end
object OKBtnBack: TPanel
Left = 244
Height = 30
Top = 120
Width = 100
BevelColor = clYellow
BevelInner = bvLowered
BevelOuter = bvLowered
BevelWidth = 4
ClientHeight = 30
ClientWidth = 100
Color = clYellow
ParentColor = False
TabOrder = 2
object OKButton: TBitBtn
Left = 0
Height = 30
Top = 0
Width = 100
Caption = '&OK'
Color = 15527148
ModalResult = 1
TabOrder = 0
end
end
object rad_type: TRadioGroup
Left = 0
Height = 56
Top = 53
Width = 355
Align = alTop
AutoFill = True
Caption = 'Partition Type'
ChildSizing.LeftRightSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 37
ClientWidth = 345
ItemIndex = 0
Items.Strings = (
'Acorn File Server'
'DOS Plus'
)
OnClick = rad_typeClick
TabOrder = 3
end
object FromFileButton: TBitBtn
Left = 8
Height = 30
Top = 120
Width = 100
Caption = 'From File...'
Color = 15527148
Enabled = False
TabOrder = 4
end
end
72 changes: 63 additions & 9 deletions LazarusSource/AFSPartitionUnit.pas
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,21 @@ interface

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

type

{ TAFSPartitionForm }

TAFSPartitionForm = class(TForm)
CancelButton: TBitBtn;
FromFileButton: TBitBtn;
OKBtnBack: TPanel;
OKButton: TBitBtn;
PartitionSizeLabel: TLabel;
PartitionSize: TTrackBar;
rad_type: TRadioGroup;
PartitionSize: TGJHSlider;
rad_typeAFS,
rad_typeDOS: TGJHRadioBox;
FromFileButton,
OKButton,
CancelButton: TGJHButton;
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure PartitionSizeChange(Sender: TObject);
procedure rad_typeClick(Sender: TObject);
Expand Down Expand Up @@ -54,8 +55,8 @@ procedure TAFSPartitionForm.PartitionSizeChange(Sender: TObject);
{------------------------------------------------------------------------------}
procedure TAFSPartitionForm.rad_typeClick(Sender: TObject);
begin
if rad_type.ItemIndex=0 then PartitionSize.Max:=maxAFSSize;
if rad_type.ItemIndex=1 then PartitionSize.Max:=maxDOSSize;
if rad_typeAFS.Ticked then PartitionSize.Max:=maxAFSSize;
if rad_typeDOS.Ticked then PartitionSize.Max:=maxDOSSize;
end;

{------------------------------------------------------------------------------}
Expand All @@ -66,5 +67,58 @@ procedure TAFSPartitionForm.FormPaint(Sender: TObject);
MainForm.FileInfoPanelPaint(Sender);
end;

{------------------------------------------------------------------------------}
//Create the form
{------------------------------------------------------------------------------}
procedure TAFSPartitionForm.FormCreate(Sender: TObject);
function CreateRadioBox(text: String): TGJHRadioBox;
begin
Result:=TGJHRadioBox.Create(AFSPartitionForm as TControl);
Result.Parent:=AFSPartitionForm as TWinControl;
Result.Top:=PartitionSize.Top+PartitionSize.Height;
Result.Visible:=True;
Result.Caption:=text;
Result.OnClick:=@rad_typeClick;
end;
var
ratio : Real;
begin
ratio:=PixelsPerInch/DesignTimePPI;
//Create the slider
PartitionSize:=TGJHSlider.Create(AFSPartitionForm as TControl);
PartitionSize.Parent:=AFSPartitionForm as TWinControl;
PartitionSize.Top:=PartitionSizeLabel.Height;
PartitionSize.Align:=alTop;
PartitionSize.Orientation:=csHorizontal;
PartitionSize.Height:=Round(30*ratio);
PartitionSize.Min:=0;
PartitionSize.Max:=10;
PartitionSize.Pointers:=False;
PartitionSize.Outline:=csOutInner;
PartitionSize.OnChange:=@PartitionSizeChange;
//Create the radio boxes
rad_typeAFS:=CreateRadioBox('Acorn File Server');
rad_typeDOS:=CreateRadioBox('DOS Plus');
//Create the buttons
FromFileButton:=MainForm.CreateButton(AFSPartitionForm as TControl,
'From File...',False,Round(8*ratio),
rad_typeAFS.Top+rad_typeAFS.Height+Round(8*ratio),
mrNone);
FromFileButton.Enabled:=False;
CancelButton:=MainForm.CreateButton(AFSPartitionForm as TControl,'Cancel',
False,
FromFileButton.Left+FromFileButton.Width+Round(8*ratio),
FromFileButton.Top,mrCancel);
OKButton:=MainForm.CreateButton(AFSPartitionForm as TControl,'OK',True,
CancelButton.Left+CancelButton.Width+Round(8*ratio),
FromFileButton.Top-Round(4*ratio),mrOK);
Width:=OKButton.Left+OKButton.Width+8;
//Adjust the radio button positions
rad_typeAFS.Left:=Round(8*ratio);
rad_typeDOS.Left:=Width div 2;
//Adjust the form height
Height:=OKButton.Top+OKButton.Height+Round(8*ratio);
end;

end.

2 changes: 1 addition & 1 deletion LazarusSource/AboutUnit.pas
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
unit AboutUnit;

{
Copyright (C) 2018-2022 Gerald Holdsworth [email protected]
Copyright (C) 2018-2023 Gerald Holdsworth [email protected]
This source is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public Licence as published by the Free
Expand Down
Loading

0 comments on commit 72f5d0c

Please sign in to comment.