ST Tools Version 1.93
Table of Contents
Introduction
Copyright
Program Overview
Requirements
Limitations
Technical Notes
Using ST Tools
Icons
Windows
Drop-Down Menus
Desk Menu
About ST Tools
Desk Accessories
File Menu
Save Configuration
Open Log File
Suspend/Continue Log File
Close Log File
Touch File(s)
UnDelete File(s)
Quit
View Menu
Names Compressed
Names with Periods
Names with Spaces
Names Unchanged
View as Large Text
View as Small Text
Sort Menu
Sort Items by Name
Sort Items by Date_Time
Sort Items by Size
Sort Items by Extension
No Sort
Function Menu
List Disk Information
List/Edit FAT Entries
HexDump File
HexDump Sector
HexDump Memory
Search File
Search Sector
Search Memory
Check File Structure
Repair File Structure
Optimize File Structure
Repair and Optimization Warnings
Options Menu
Single Tree
Double Tree
View Window On/Off
Start/GoTo Location Dialog Box
Search String Dialog Box
Edit Dialog Box
Introduction
Copyright
ST Tools is copyright 1991, 1992, 1993, 1994 Stephen Cornio. All Rights
Reserved. This program is being distributed as shareware with a $10 suggested
contribution. This program may be posted on any public BBS as long as it is
not modified and the documentation is included. Any comments and/or
suggestions would be appreciated. I can be reached on CompuServe (73637,2527),
or send me mail.
Stephen Cornio
P.O. Box 1734
Woodbridge, VA 22193
Program Overview
ST Tools is reminiscent of PC Tools for MS-DOS computers. The main display
includes a directory tree and a listing of files by directory. As the name
implies, the program is a set of tools for use on the Atari ST. Current
functions include listing/editing of File Allocation Tables, Hex dumping of
files, sectors or memory, searching files, sectors or memory, check, repair
and optimize file structure. The program is entirely GEM based, with the
standard drop-down menus, scrollable windows and dialog boxes.
Requirements
ST Tools requires a minimum of 450K of free memory to execute. The program
will perform disk optimization more efficiently if there is more memory
available. The program will run in both High and Medium resolutions and has
been tested with versions 1.2 and 1.4 of TOS.
Limitations
ST Tools has the following known limitations. Disks are limited to a
maximum of 512 directories and sub-directories in the tree window. Each
directory is limited to 512 files in the file window. There is a maximum of 9
levels of directories, including the drive. There is no limit on the size of
the disk. The program has support for BGM partitions with sectors up to 8K in
size.
Technical Notes
ST Tools is written almost entirely in FORTRAN using Prospero FORTRAN for
GEM, along with the Prospero Developers Toolkit, specifically its Make facility
and macro assembler. Assembly language is used to process the File Allocation
Tables, perform logical bit functions and other operations not easily performed
by FORTRAN.
Using ST Tools
Icons
Disk icons representing each floppy disk and hard-disk partition as well as
any RAM-disk are displayed across the bottom of the screen. The current disk
will be indicated by a highlighted icon. To make a different disk be the
current disk, simply click on the desired icon. To re-read the directory tree
for a disk, hold the Shift key while clicking on the disk icon. This is
particularly useful on a system with a single floppy drive to change floppies.
Windows
The main display consists of two windows. The left window is a directory
tree of the current floppy or hard-disk partition with the current directory
indicated by a highlighted line. The right window is a list of files,
including directories, found in the current directory with the current file
indicated by a highlighted line. When the program starts, the left window is
active. To make the file window active, simply click in the right window or
press the right arrow key. To return to the directory window, either click in
the right window or press the left arrow key. To change the current directory
when in the left or directory window, you can click on the desired directory or
use the slider or use the up and down arrow keys. The same methods will work
to change the current file when the right or file window is active. Note that
clicking on a file will cause that file to be selected. This will be indicated
by an asterisk (*) in front of the file name. To deselect a file, simply click
on the file a second time. Selected files are important whenever a file
function is performed. If no files are selected, then the function starts at
the current file and all files in the directory are accessible. If any files
are selected, then only those files are accessible by the function, in the
order that they were selected.
Normally the file window will show the filename, size, date, time of last
modification and file attributes. By clicking on the full window button, the
file window will be expanded to cover the directory window and the first
cluster and sector of the file will also be displayed. Click again on the full
window button to return to normal size file window.
Drop_Down Menus
Across the top of the screen is found a standard menu bar. All of the
program's features and functions are accessed by using the drop-down menus
contained on this menu bar.
Desk Menu
About ST Tools
Clicking on the "About ST Tools" entry in the Desk menu will display
copyright information about the program, along with my name and address.
Desk Accessories
Desk accessories will work within ST Tools, including MultiDesk. The desk
accessories are selected in the normal manner, by clicking on them.
File Menu
Save Configuration
The "Save Configuration" entry will cause the standard file selector to be
displayed with the standard name 'ST_TOOLS.CFG' listed as the selection. Click
on the "OK" button to save the current configuration to this file. This file
is used on program startup to alter the standard initial Name, View, Sort and
Option defaults.
Open Log File
The "Open Log File" entry will cause the standard file selector to be
displayed with the standard name 'ST_TOOLS.LOG' listed as the selection. Click
on the "OK" button to open this file for logging output. Note that this file
will be overwritten and not appended to. When the log file is open and not
suspended, the data displayed by the functions will be output to the log file.
Each standard display will occupy 22 lines, so that 3 displays will fill a
printed page of 66 lines. It is NOT recommended to have a logfile open on a
disk if you plan on performing any directory or FAT modifications, since GEMDOS
doesn't update the directory and FAT until after the logfile is closed and ST
Tools can not see what GEMDOS has in its buffers.
Suspend/Continue Log File
The "Suspend/Continue Log File" entry is used to temporarily suspend and
then continue writing to the log file. When a log file is opened, the entry
will read "Suspend Log File". If this option is selected, the entry will be
changed to read "Continue Log File".
Close Log File
The "Close Log File" entry will cause the log file to be closed.
Touch File(s)
This entry will allow the user to "Touch" files in the current directory.
This will cause the Archive bit to be set and the Date/Time to be updated.
UnDelete File(s)
This entry will allow the user to "UnDelete" files from the current
directory. The 'UnDelete' button will only be enabled for those files where
enough contiguous free blocks are found where the file was before being
deleted. There is no guarantee that these blocks have the same contents as
before the file was deleted.
Quit
Clicking on the "Quit" entry will cause the program to terminate
immediately.
View Menu
The "View Menu" is broken into two sections. The top section is used to
select the "Name" option, which determines how the names found in each
directory are listed. The bottom section is used to select the "View" option,
which determines the number of directories or files that can be listed in each
window. This section is only of use in high resolution.
Names Compressed
The "Names Compressed" entry will cause the file names to be listed with a
period between the main part of the name and its extension with any embedded
blanks deleted as in 'NAME.EXT'.
Names with Periods
This entry is similar to the one above except that the embedded blanks will
be included as in 'NAME .EXT'.
Names with Spaces
This entry will cause the file names to be listed with a space between the
main part of the name and the extension with embedded blanks included as in
'FILENAME EXT'.
Names Unchanged
This entry will cause the file names to be listed exactly as they are in
the directory itself as in 'FILENAMEEXT'.
View as Large Text
The "View as Large Text" entry will cause the font appropriate for the
current screen resolution to be used, resulting in 19 directories and files to
be listed in each window.
View as Small Text
This entry which is only available in high resolution (monochrome) mode,
will cause the medium resolution character font to be used, resulting in double
the number of directories and files to be listed in each window.
Sort Menu
Sort Items by Name
The "Sort Items by Name" entry will cause files listed to be sorted by
name, with directories first.
Sort Items by Date-Time
This entry will cause the files listed to be sorted by Date and Time of
last modification, with directories first.
Sort Items by Size
This entry will cause the files listed to be sorted by size of the file,
with directories first.
Sort Items by Extension
This entry will cause the files listed to be sorted by their extensions,
with directories first.
No Sort
This last entry will cause the files listed to not be sorted at all, but
instead shown in the order as defined in the directory.
Function Menu
List Disk Information
The "List Disk Information" entry will cause various pieces of information
about the current disk to be listed. This information includes FAT size, the
total number of sectors on the disk, the number of usable clusters on the disk,
and any volume label, including a NeoDesk label if it exists.
List/Edit FAT Entries
This entry will allow the listing and editing of FAT entries for the
current disk. A starting FAT entry dialog box will first be presented in order
to allow the user to select the FAT to start listing at. After the "List"
button is clicked, the selected FAT will be displayed in hexadecimal. For
floppies, the pointer is usually 12 bits which translates to 3 hexadecimal
digits. For hard disks, the pointer is normally 16 bits or 4 hexadecimal
digits. To indicate end-of-file, negative one is used, 'FFF' for floppies or
'FFFF' for hard disks. Seven buttons are displayed in this dialog box.
"First" will display the first set of entries. "Prev" will display the
previous set of entries. "Edit" will allow the user to edit the FATs displayed
on the screen. "Exit" will cause this dialog box to exit. "GoTo" will present
a go to FAT dialog box to allow the user to select a FAT to go to. "Next" will
display the next set of entries. "Last" will display the last set of entries.
HexDump File
The "HexDump File" entry will cause the selected files, or current file if
no files are selected, to be dumped to the screen in a dialog box. The dump is
both in hexadecimal and in Ascii. The file name, sector number and cluster
number within the file, and absolute disk sector will be displayed at the top
of the dialog box. Eight buttons are displayed at the bottom of the box.
"Prev File" will cause the previous file to be dumped. "First" will dump the
first sector of the current dump file. "Prev" will dump the previous sector of
the current dump file. "Edit" will allow the user to edit or modify the data
displayed on the screen. "Exit" will cause this dialog box to exit. "Next"
will dump the next sector of the current dump file. "Last" will dump the last
sector of the current dump file. "Next File" will cause the next file to be
dumped.
HexDump Sector
This entry will allow any sector of the current disk to be dumped to the
screen in a dialog box. A starting sector dialog box will first be presented
in order to allow the user to select the sector to start dumping at. Once the
starting sector is selected and the "Dump" button is clicked, the sector will
be dumped in both hexadecimal and Ascii. The sector number and type of sector,
Boot, FAT, Root or Data will be displayed at the top of the box. Seven buttons
are displayed at the bottom of the box. "First" will dump the first sector of
the disk or Boot sector. "Prev" will dump the previous sector of the disk.
"Edit" will allow the user to edit the current data on the screen. "Exit" will
cause this dialog box to exit. "GoTo" will present a go to sector dialog box
to allow the user to select a sector to go to. "Next" will dump the next
sector of the disk. "Last" will dump the last sector of the disk.
HexDump Memory
This entry will allow any block of memory to be dumped to the screen in a
dialog box. This can be RAM, ROM or hardware chips such as DMA, video or sound
chips. A starting memory dialog box will first be presented which will allow
the user to select the memory to start at. Once this is done and the "Dump"
button is clicked, the standard dump screen will be displayed. The actual
address of memory dumped is listed to the left. Six buttons are displayed at
the bottom of the box. "First" will dump the first block of memory. "Prev"
will dump the previous block of memory. "Edit" will allow the user to edit the
data on the screen. "Exit" will cause this dialog box to exit. "GoTo" will
present a go to memory dialog box to allow the user to select the memory to go
to. "Next" will dump the next block of memory. "Last" will dump the last
block of memory. Note that if the memory displayed is not RAM, then the "Edit"
button will be disabled.
Search File
The "Search File" entry will cause the selected files, or current file if
no files are selected, to be searched for a 16 character long string. The
string may be input in either hexadecimal or Ascii. The search may be case
sensitive of insensitive. The search may be in a forward or backward
direction. While the files are being searched, their names will be displayed
at the top of the search dialog box. The search may be stopped at any time by
clicking on the "Stop" button or pressing the Return key. Once the string has
been found, the dump file screen will be displayed with the search string
indicated by reverse video on monochrome and green text on color systems. Six
buttons are displayed at the bottom of the box. "Search Prev" will search for
a previous instance of the string. "Prev Block" will dump the previous block
of the file displayed. "Edit" and "Exit" work as usual. "Next Block" will
dump the next block of the file displayed. "Search Next" will search for the
next instance of the string.
Search Sector
This entry will allow the searching of disk sectors. The starting sector
dialog box is displayed followed by the search dialog box. Once the search is
started, the sectors being searched will be displayed at the top of the search
dialog box. When the string is found, the dump sector screen will be displayed
with the same six buttons found on the "Search File" dialog box, plus a "GoTo"
button to allow the user to go to a particular sector.
Search Memory
This entry will allow the searching of memory. The starting sector and the
search dialog boxes will be displayed to determine the starting memory and the
string to search for. When the string is found, the dump memory screen will be
displayed with the same seven buttons as above.
Check File Structure
This entry will allow the user to check the file structure of the current
disk. Each file on the disk is checked for various problems. The file
currently being checked will be displayed. Whenever an error occurs, a message
describing the error will be displayed and the user can either continue
checking or cancel. Even when no errors occur, the user can stop at any time
by clicking on the "Stop" button or pressing the Return key. A single press of
the Return key works better since the keyboard controller will buffer the
keystroke, whereas the mouse click must occur during the short period of time
that is waited between each file.
The file '.' in each directory is checked to verify that it points to the
current directory. The file '..' in each directory is checked to verify that
it points to the directory's parent directory. The clusters of each file are
traced to check for unused and illegal clusters in the path. Collisions
between a file and itself or between one file and another file are tested for.
The size of the file is compared with the number of clusters assigned. After
all of the files have been checked, the File Allocation Table is scanned to
check for orphan files, that is files beginning at clusters marked as used but
not pointed to by a directory entry. If any orphan files are found, each of
them is traced in the same way as normal files. Once the checking process has
completed, a display will be presented showing the results. One of two
functions will be enabled depending on the results of the file check. If any
errors exist, the user may Repair the file structure. If no errors exist, the
user may Optimize the file structure. In either case, the user may Exit after
viewing the results. The following statistics will be displayed.
Total FAT Clusters - The total number of usable clusters on the disk.
Total File Clusters - The total number of clusters assigned to files,
both normal and Orphan.
Total Free Clusters - The total number of unused clusters on the disk.
Free Cluster Fragments - The number of parts of contiguous free clusters.
Ideally this should equal 1. The higher the
number, the more fragmented free space is.
Total Files - The total number of files (including directories)
referenced by entries in directories.
Zero Length Files - The number of these files of size 0 with no clusters
assigned.
Contiguous Files - The number of these files where all file cluster are
contiguous on disk.
Fragmented Files - The number of these files where at least one file
cluster is not contiguous with the previous cluster.
Total Good Files - The number of these files that have no problems.
(I.E. zero length, contiguous and fragmented files)
Directory File Starts - The number of files pointed to by a directory
entry (must have at least one cluster).
FAT File Starts - The number of clusters marked as in use, but not
pointed to by another cluster.
FAT File Endings - The number of clusters marked as EOF.
Orphan File Starts - This is the number of FAT file starts that have no
corresponding Directory file start.
Invalid File Endings - This is the number of files, both normal and
orphan, that end in an unused cluster or an illegal
cluster or have the wrong number of file clusters
assigned based on file size.
File Collisions - The number of files that collide with themselves or
with another file.
Invalid Current Dirs - The number of current directory files, '.', that
don't point to the correct cuurent directory.
Invalid Parent Dirs - The number of parent directory files, '..', that
don't point to the correct parent directory.
Total Errors - This is the sum of the five previous numbers, which are
all considered to be errors.
Repair File Structure
This function is only reachable from within the Check File Structure
function. If the number of errors from the Check File Structure is not 0, then
the "Repair" button will be enabled on the File Statistics display. If the
user clicks on this button a warning will be displayed allowing the user to
change their mind. If the "Continue" button is selected, the repairs will be
performed automatically. The file path of each file being repaired along with
the type of error will be displayed. The user may stop at any time by clicking
on the "Stop" button or pressing the Return key. As in the Check function
above, the Return key is more reliable than clicking. The program will stop
after the current repair is finished. Once stopped, the user may cancel the
function or continue the repairs. During repairs, file starting clusters, file
sizes and date-time stamps may be changed. If there are any Orphan files, an
Orphan directory will be created in the Root directory to hold them. If two
files are in collision, the clusters shared by the two files will be duplicated
so that both files contain the contested data. After all repairs have
finished, the disk directory tree is read again to ensure that any files
created or deleted are properly indicated. Once any disk is repaired, the
program will re-boot the computer when "Quit" is selected from the File menu.
Optimize File Structure
This function is only reachable from within the Check File Structure
function. If the number of errors from the Check File Structure is 0, then the
"Optimize" button will be enabled on the File Statistics display. When the
"Optimize" button is selected, an Optimization Options display will be
presented to allow for a choice of option. The first option is to delete zero
length files. The second option is to move directories to the front of the
disk. If this option is selected, then all directories will be moved in the
order they are listed in the directory tree window. The third option is to
compress directories. This option will cause any deleted file entries to be
erased from the directory and, if possible, delete any un-needed clusters from
sub-directories. This display has a "Continue" and a "Cancel" button. If the
user clicks on the "Continue" button, a final warning will be displayed
allowing the user to change their mind. If the "Continue" button is selected,
the optimization will be performed automatically. First, all zero length files
will be deleted if that option was requested. Secondly, any fragmented files
are moved to contiguous free blocks at the end of the disk. The file path of
each file deleted or defragmented will be displayed. The user will be notified
of any files which are not able to be defragmented due to not enough contiguous
free clusters at the end of the disk. These files will most likely be
defragmented as part of the free cluster bubble up process. Next, if the
compress directories option was selected, all directories will be compressed.
If the move directories option was selected, this will be done next. Lastly the
free clusters are bubbled to the end of the disk by moving files towards the
front of the disk. The user may stop at any time by clicking on the "Stop"
button or pressing the Return key. As in the Check function above, the Return
key is more reliable than clicking. The program will stop after the current
file action is finished. Once stopped, the user may cancel the function or
continue the optimization. Every time a file is moved, the file starting
cluster will be changed. After the optimization process is completed, the
directory tree is processed again to ensure that any files deleted are properly
indicated. Once any disk is optimized, the program will re-boot the computer
when "Quit" is selected from the File menu.
Repair and Optimization Warnings
Please note that the disk repair and optimization functions perform a great
deal of modification to the directory and FAT sectors of the disk. Disk
backups should be performed before either of these functions is selected. The
author of ST Tools is not responsible for any damage caused by the use or
misuse of this program. If any disk I/O errors occur during these functions,
the function will be stopped immediately to minimize any damage caused. A log
file can not be opened on a disk being repaired or optimized or on any disk
already repaired or optimized during this session. This is to ensure that the
operating system doesn't conflict with the repair or optimization process. A
log file may be open on a disk not being repaired or optimized. If a log file
is open, any errors found during the check process will be written to it along
with the error message. Also all files repaired, deleted or defragmented will
be listed on the log file.
Options Menu
Single Tree
This entry, which is only enabled when in double tree mode, will switch the
display to the normal single pair of windows. If the two sets of windows are
displaying different disks when this option is selected, then the disk on the
active pair of windows when this entry is selected will become the disk
displayed in single tree mode.
Double Tree
This entry, which is only enabled when in single tree mode and the view
window is not active, will cause a copy of the two windows to be opened below
the original pair of windows. The directory tree window of this set of windows
will become the active window. Once opened, this second set of windows is
totally independent of the first set of windows. Different directories on the
same disk or different disks may be displayed in each set of windows.
View Window On/Off
This entry, which is only enabled when in single tree mode, will toggle the
opening and closing of a view window below the directory and file windows. The
current file will be displayed in this window in both hexadecimal and Ascii
similar to the hexdump displays. A vertical scroll bar is present which will
allow scrolling through the file.
Start/GoTo Location Dialog Box
The Start location dialog box is used any time the List/Edit FAT Entries
function or a dump or search of disk sectors or memory is requested from the
"Function" drop-down menu. The title of the box will reflect the function
requested. For FAT functions, the maximimum FAT of the current disk is
displayed. For disk sector functions, the maximum disk sector on the current
disk is displayed. For memory functions, the maximum memory (FFFFFF or 16
megabytes) is displayed. By clicking on the '+' and '-' buttons, each digit of
the starting FAT/sector/memory can be increased or decreased. A "Cancel"
button is provided to cancel the requested function. The other button will be
"List", "Dump" or "Search" to reflect the type of function to be performed.
Clicking on this button will cause the program to proceed to the next step.
For FAT functions the desired FAT will be listed. For "Dump" functions the
desired sector or memory will be dumped. For "Search" functions, the Search
String dialog box will be displayed and processed. From within FAT lists, and
sector and memory dumps, a "GoTo" button will be available for selection.
Selecting this button will cause the GoTo location dialog box to appear. This
dialog box functions the same as the Start location dialog box.
Search String Dialog Box
This dialog box is used any time a search of files, disk sectors or memory
is requested from the "Function" drop-down menu. The title of the box will
reflect the type of string being searched for, hexadecimal or Ascii. The type
of string may be toggled by clicking on the desired search type. The case of
the search may also be selected, sensitive or insensitive. The case only
applies to the letters A-Z whether the search type is hexadecimal or Ascii. A
"Cancel" button is provided to cancel the search function. When doing a
hexadecimal search, the input digits must be between 0-9 and A-F. An error in
the search string will be indicated by grey text on monochrome systems and red
text on color systems. Once the desired string has been entered, the search
direction is selected by clicking on the "Search Forward" or "Search Backward"
button as desired. While the search is proceeding, the "Cancel" button will be
relabelled as a "Stop" button. Clicking on this button will cause the search
to stop and two additional buttons to appear. They are used to indicate the
point at which to continue the search from. "Start Point" will cause the
search to be restarted from the original starting point. "Current Point" will
cause the search to be restarted from where it was stopped.
Edit Dialog Box
This dialog box is used any time the "Edit" button is clicked from a
display. Two buttons are displayed at the bottom of the dialog box. "Do It"
will cause any changes made to the current screen to be written to disk or
memory. Each hexadecimal digit will be checked for validity first and any
errors will be flagged with grey text on monchrome systems and red text on
color systems. A "Cancel" button is provided to allow the user to cancel the
edit function with no changes being made to disk or memory.