Contents of the DOC41.TXT file
:::::: NEW RELEASE! VERSION 4.00 ::::::
I The FreeSoft Company Presents: I
I ---> The Ultra Utilities <--- I
I "The Wizard's Apprentice" I
I User's Manual And Guide To Operation I
Copyright (C), 1983 by The FreeSoft Company. All rights reserved
Version 4.00, First Release: January, 1984
This manual and the accompanying programs U-ZAP.EXE, U-FORMAT.EXE and
U-FILE.EXE may be copied and shared freely as long as certain
duplication rules are adhered to. Please see Appendix A of this
manual for the FreeSoft duplication policy. Anyone found duplicating
any part of this manual or the programs mentioned above not according
to the policies in Appendix A of this manual will suffer from guilt
for eternity. Think about it...
The programs U-ZAP.EXE, U-FORMAT.EXE and U-FILE.EXE and this manual
are provided on an "AS IS" basis without warranty of any kind,
expressed or implied, including but not limited to the implied
warranties of merchantability and fitness for a particular purpose.
The entire risk as to quality and performance of these programs and
this manual rests solely with the user. Should any part of these
programs or this manual prove defective, the user will assume the
entire cost of all necessary repair, servicing, and correction. In
no event will The FreeSoft Company be liable to you for any damages,
including any lost profits, lost savings, or other incidental or
consequential damages arising out of the use or inability to use
these programs or this manual, even if The FreeSoft Company has been
advised of the possibility of such damages. This warranty gives you
specific legal rights, and you may have other rights which may vary
from state to state. Some states do not allow the exclusion of
implied or consequential damages so parts of the above may not apply
to you. By operating any of the above programs or using any part of
this manual, you acknowledge that you have read this agreement,
understand it, and agree to be bound by its terms and conditions.
You further agree that it is the complete and exclusive statement of
the agreement between us, which supercedes any proposal or prior
agreement, oral or written, and any other communications between us.
If you have registered, feel free to write us with any questions you
might have concerning our products. If there seems to be a need for
it, we may open up a telephone hotline or bulletin board for fast
WE WILL OFFER ABSOLUTELY NO SUPPORT TO UNREGISTERED USERS. IF YOU DO
NOT CHOOSE TO REGISTER, YOU ARE COMPLETELY ON YOUR OWN! ANY LETTERS
OR QUESTIONS FROM UNREGISTERED USERS WILL BE IGNORED. SO THERE!
Table Of Contents
Section I: Ultra-Zap
Display/Modify Disk Sectors................................... 2
Display/Modify File Sectors................................... 4
Copy Disk Sectors............................................. 5
Fill Disk Sectors............................................. 5
Search For Bytes In Disk Sectors.............................. 5
Search For Bytes In File Sectors.............................. 6
Modify Sector Fill Byte....................................... 6
Modify Display Radix.......................................... 6
Interrogate Disk Sectors...................................... 7
Toggle Menu Alert Tone........................................ 8
Display/Modify Disk Parameters................................ 8
How To Display/Modify Non-Standard Sectors.................... 9
Section II: Ultra-Format
Format A Standard Track.......................................10
Re-format A Standard Track Without Erasing Old Data...........10
Format A Non-standard (Copy-Protected) Track..................10
Display/Modify Disk Parameter Table...........................11
Modify Display Radix..........................................11
Section III: Ultra-File
Display File's Directory Information..........................12
Assign Or Remove System Status................................12
Assign Or Remove Hidden Status................................12
Display List Of Sectors Allocated To File.....................12
Build A File From Scratch.....................................13
Attempt To Restore An Erased File.............................13
Produce A Map Of Diskette.....................................13
Selectively Purge Files.......................................14
Section IV: Appendices
Appendix A: The FreeSoft Duplication Policy...................15
Appendix B: A Brief Discussion Of Diskette Formats............20
Appendix C: Version changes and additions.....................21
The Ultra-Utilities are a powerful collection of programs that will
allow you complete access to the power of your IBM-PC's disk drive
controller circuitry and PC-DOS disk operating system. With this
power also comes the abilty to do terrible damage to your diskettes
if you make a mistake at the wrong time. To avoid this:
A) Make a copy of the Ultra-Utilities and keep the originals in a
safe place. When using the copies, remove the diskette
containing the Ultra-Utilities after the desired program has
loaded. It is not necessary for this diskette to remain in the
disk drive after the program has begun execution.
B) When working on other diskettes, ALWAYS WORK ON A COPY! The
time it takes to backup a diskette is well worth it effort. If
you are working on a diskette that you are unable to yet make a
copy of, at least place a write-protect tab on it and work
slowly and cautiously.
To use these programs properly you will need:
1) IBM-PC with at least 64K RAM, one single or double-sided disk
drive, and an 80-column display. Because of the wide variety
of IBM-PC configurations and the varying levels of
"compatibility" with PC clones, we cannot and do not support
questions concerning support of other equipment configurations.
Additional memory may be needed if you boot under DOS 2.00.
2) DOS 1.10 or 2.00: Again, if you try to use other versions of
PC-DOS, you are on your own. These programs have been tested
only on PC-DOS versions 1.10 and 2.00.
You do not have to be a "hacker" or be able to multiply four digit
hexadecimal numbers in your head to be able to use the
Ultra-Utilities. If you are more technically inclined, you'll no
doubt find many uses for the powerful features of these programs. If
you're not so technically inclined, you'll probably use these
programs for "snooping" and educational purposes, and will first want
to read the chapter on Modifying The Display Radix. When first
executed, the Ultra-Zap and Ultra-Format programs display all numbers
in hexadecimal format (base 16). If you are not comfortable using
hex values, use that function to change all printed values to decimal
Features of the Ultra-Utilities
1) The Ultra-Utilties use a special input procedure that allows you
to only enter in characters appropriate to the question being
asked. In most cases, a number of small boxes will appear next to
a question. These boxes tell you that the program is waiting for
your response, as well as the maximum number of characters you may
type to answer the question. If no boxes are displayed, a single
key press is all that's needed, and it is not necessary to press
the key afterwards.
2) Although the Ultra-Utilities will display numeric values in the
format specified by the display radix, you can input numbers using
any of three allowable radices without regard for the display
radix. Decimal numbers should be entered normally, without any
prefix. Octal numbers should be entered using the prefix &O, and
hexadecimal numbers should be entered using the prefix &H. This
is in keeping with the standard numeric entry procedures of IBM
BASIC. Example: the decimal number 17 could be entered as:
3) If you have a lineprinter installed and selected, you can obtain
a hardcopy of the screen at any point by pressing the "PrtSc" key
while holding down the key. This is also in keeping with
4) The Ultra-Utilities are completely menu-driven. This means you'll
never have to guess which cryptic command the computer is waiting
for: all of your available options are displayed on the screen.
Although some folks prefer non-menu-driven programs, we feel it is
a necessary deterrent to possibly catastrophic mistakes made by
the wrong guess with these programs.
5) Ultra-Zap will allow you to display and modify sectors of any
length or name (such as those used in copy-protected software).
Although this is by no means meant to be a "pirate" program, it
is of great educational use for the novice "zapper". It can be
used in conjunction with Ultra-Format to create your own copy-
6) IN MOST CASES, answering a prompt with the single letter "Q"
followed by the key will CANCEL THE CURRENT FUNCTION and
RETURN YOU BACK to the main menu.
GET READY TO "ZAP" AWAY YOUR TROUBLES!
Hopefully, you have restrained you anxiousness to get started with
the Ultra-Utilities and have taken at least a few moments to scan
this manual. We hope that you have fun with these programs and that
they earn a permanent home in your software library. Don't forget to
look over the duplication policy in Appendix A of this manual. It
explains how the Ultra-Utilities can even earn you a few extra bucks
just for spreading it around.
Whenever you are finished with an Ultra-Utility program, always exit
by choosing the Q>uit function from the main menu. The
Ultra-Utilities change some important tables in memory that DOS
expects to be present and correct, and the "Q" function restores them
to their original values.
One last caveat... this manual is by no means meant to be a tutorial
on the diskette storage techniques of the IBM-PC and PC-DOS. We
recommend for further study the PC-DOS manual, the IBM Technical
Reference manual, and Peter Norton's "Inside The IBM-PC" published by
Robert J. Brady.
Display/Modify Disk Sectors
This function, along with the Display/Modify File Sectors function is
the real meat of the Ultra-Zap program. It gives you the ability to
"snoop" around your diskettes, modify bytes or characters, and
encrypt or decode encrypted sector data.
When you select this function, you'll first be prompted for the side,
drive, track and sector number of the first sector you wish to look
at. Remember, if you only have a single-sided disk drive, you will
always specify side 0. If you are unclear what to enter, take a
moment to peruse Appendix B of this manual.
Once you have entered the above info, you will be instructed to mount
the diskette on the appropriate drive and press any key. Once you
have done so, the disk drive should come to life and you will enter
what we call the "search mode".
The search mode displays a straight dump of the ASCII characters in a
sector, allowing you to find the information you're looking for in a
hurry. Only those characters with ASCII codes between 32 and 127
(decimal) will be displayed. The rest will be displayed as periods.
There are several command keys active in the search mode:
UP ARROW - increments the track by one and displays that sector.
DOWN ARROW - decrements the track by one and displays that sector.
RIGHT ARROW - increments the sector by one and displays that sector.
LEFT ARROW - decrements the sector by one and displays that sector.
"5" KEY ON NUMERIC KEYPAD - switches from Side 0 to Side 1 and vice-
versa (if you have double-sided drives) and displays that sector.
"M" key - enters "modify" mode.
"Q" key - returns to Ultra-Zap main menu.
In the "modify mode" the sector information will be displayed a bit
differently. Select a random sector and let's go through the display
together. The top line reiterates the current side, drive, track,
and sector number of the sector you are working on, as well as the
current display radix. The second line just identifies what is in
the columns below. The third line is a template for the "ones" digit
of the offset address- we'll come back to this in a moment. The
fourth line starts with the actual sector data. The leftmost column
of these rows show the number of bytes offset into the sector. Then
comes the sector data in numeric form. The rightmost column contains
the ASCII equivalent of the numeric data. If you are using
hexadecimal for the display radix, there will be 16 rows of 16 bytes
each. Decimal uses 20 rows X 10 bytes, and octal uses 16 rows X
8 bytes. If you wanted to find the fifth byte in a sector, you
would go to the row marked with the offset address 0000 and scan
across under the template in line three of the display marked
"5". It's really pretty easy to find an individual byte in a snap
once you get used to this "offset address/template column"
The bottom of the screen tells you your available choices, as well as
the current modify mode for byte replacement (either "NUM" for entry
of numeric replacement bytes, or "ASC" for the direct entry of ASCII
replacement characters from the keyboard). You can toggle back and
forth between ASC and NUM modes by choosing the "C" choice. The "Q"
choice returns you to the search mode. The "I" and "D" choices allow
you to add or subtract a number from each of the bytes in the sector
for either encrypting or decoding encrypted sector data. The "M"
choice takes you into what we call "replacement mode". The other two
choices are "N" and "P". You will notice that all of the bytes in a
standard 512-byte disk sector aren't displayed all at once in the
display screen. What we did is divide the sector into "pages" of
data. Use the "N" key to look at the next higher display "page" of
sector data. Use the "P" key to look at the next lower display page
of data. Depending on the display radix and sector size, each sector
may actually be displayed as several pages.
If you wish to modify the bytes in a sector, you should first choose
the modify mode you wish to use, and the "N" and "P" choices to
display the "page" that contains the bytes you wish to modify. Once
you have done so, select the "M" option to enter the "replacement
mode". In the replacement mode, an inverse cursor will appear in the
first byte of that page. Use the arrow keys to position the cursor
on the byte you wish to modify and then press the spacebar. If you
are in NUM mode, you will be prompted to enter in the new value. For
each byte you wish to modify in the NUM mode, you will have to press
the spacebar as above. However, in the ASC modify mode, you just
press the spacebar once. You can then type in characters from the
keyboard continuously. When you are finished modifying bytes in
either mode, just press the key. Note that in the ASC mode
you can enter in any ASCII character that appears on the keyboard
except the key. If you wish to enter in a character that
does not appear on the keyboard, just hold down the ALT key and type
in the three-digit ASCII code of the character on the numeric keypad,
just as you would in BASIC.
One more note about the "replacement mode": any ASCII characters that
are not between codes 32 and 127 are displayed as dots. This is
because some codes will cause your printer to do weird things if you
try to get a screendump using the -PrtSc combination. If you
wish to look at the actual character for non-alphanumeric characters,
just move the cursor over the byte in the replacement mode. The dot
will be replaced with the actual character in the ASCII equivalent
After you have pressed the key to end replacement, you will
be asked if you wish to update the disk sector with your replacements
or just cancel all changes. Up to now, nothing on the diskette has
actually been changed. Instead, any changes you made were done on a
copy of the disk sector in memory. If you cancel, you will be
immediately returned to the main menu with no changes recorded. If
you select the update choice, your changes will be recorded on the
disk sector permanently (so be careful, for heaven's sake!).
Whew! That's quite a bit to swallow in one reading... My advice is
to read this through, practice on a "scratch" diskette (one you can
afford to destroy) and then re-read this chapter for the finer points
of this powerful feature of the Ultra-Zap program.
Display/Modify File Sectors
This function is used to root around the program and data files that
are on your diskettes. By using this feature, you can do such things
as make easy corrections to data files and change ASCII messages in
the programs. We do not condone people going through and wiping out
an author's name or copyright notices. Such things are not only
childish, they deprive the author and software company of the money
and credit they deserve, and stifle creative folks from producing
better software for us all. However, who can resist going into
COMMAND.COM and changing the sign-on message to "Ed Spread's Garbage
DOS"? Oh well, it's a dilemma for the philosophers. Have fun...
This function operates almost exactly like the Display/Modify Disk
Sectors function with a few exceptions that pertain to disk files.
Once you are familiar with that function, you should have no trouble
with this one. One important difference we will note here is that in
the search mode, the up arrow, down arrow, and "5" key have no
function. The left arrow and right arrows still move backwards and
forwards through the file sectors.
You should also notice that all file sectors are displayed as
physical (we call them logical) sectors. That means that even if you
created a random access data file with a record length of 53 bytes,
each sector in this function will still be displayed as 512 bytes.
You will not be able to use this function on any files that contain
the "HIDDEN" or "SYSTEM" attributes in their directory entry. Use
Ultra-File to remove these attributes.
Copy Disk Sectors
This function is used to copy disk sectors from one part of a
diskette to another, or between diskettes. Copying is not done with
regard to the prior contents of the destination sectors, and any old
data will be destroyed.
Use of this function is pretty straightforward. If the specified
drives for the source and destination diskettes are the same, the
program will ask you if the source and destination sectors are on the
same diskette, if they are not, you will be prompted to mount the
appropriate diskette during the copying process. Sectors are copied
consecutively, according to the progression order described in
Appendix B of this manual.
Fill Disk Sectors
This function is used to fill one or more sectors entirely with a
repeating single byte value. This byte value is selected using the
Modify Sector Fill Byte function and has a default value of &HF6 (246
decimal) upon program execution. This is the same as the default
value used in formatting fresh sectors by the DOS FORMAT program.
Again, this function is pretty straightforward. Sectors are filled
consecutively according to the progression order described in
Appendix B of this manual.
Search For Bytes In Disk Sectors
This function is used to quickly locate the position of a specified
sequence of bytes or ASCII characters in disk sectors. The sequence
of desired bytes or characters may be up to 15 long. You will first
be asked if the sequence is numeric or ASCII. Once you have chosen,
the program will ask you how many bytes or characters long the
sequence is. Next, you will be prompted to enter the bytes or
characters for the search sequence in order one at a time.
Next, you will enter the side, drive, track, and sector number for
the start of the search, as well as the number of sectors to search
through. Then the search begins, moving consecutively through
sectors as described in Appendix B of this manual.
If the sequence is found in a searched sector, a message will be
displayed telling you the side, drive, track, and sector number
containing the sequence as well as the offset address of the sequence
within that sector. When each match is displayed, you have the
ability to abort the search or continue from that point. If no
matches are found, a message will be displayed telling you so at the
end of the search.
Search For Bytes In File Sectors
This function is operates just like the above Search For Bytes In
Disk Sectors except that file sectors are searched instead. Again
you won't be able to use this function with files marked in their
directory entries as "HIDDEN" or "SYSTEM" files. Use Ultra-File to
remove these attributes before using this function.
Modify Sector Fill Byte
This function allows you to change the default sector fill byte
value. There are essentially two reasons to do this:
A) For use with the Fill Disk Sectors function
B) Before any disk sector or file sector is read from the disk in the
Display/Modify functions, the memory buffers that will contain a
copy of the sector data are first "flushed" with the sector fill
byte value. If you ever run across a sector with a CRC-type error
(either intentionally formatted or caused by diskette wear/tear)
the Display/Modify functions will report the error. Normally, if
you do not select the re-try function when a disk error occurs,
you are returned to the main menu. In this instance, Ultra-Zap
will allow you to go ahead and look at the contents of the sector.
Some of the data may look funny due to effects of the error, but
at least you'll be able to have a look at where the CRC error
botched things up. We suggest you select a sector fill byte of
zero for this type of work, since it will quickly show you where
the read data ends.
Modify Display Radix
This function is used to present all displayed numeric values in a
form you are most comfortable with. When zapping, some folks
naturally hanker to hexadecimal (base sixteen); others are lost
without good old decimal (base 10).
Still, there are actually those around that cut their milkteeth on a
Sperry-Univac and can't cut it without octal (base eight). Whatever
you folks choose as your strokes, Ultra-Zap is well equipped to make
life easy for you.
If you are a beginning zapper, We suggest the first thing you do upon
executing Ultra-Zap is to choose this function and select the decimal
radix. You Sperry-Univac people can do the same except choose octal.
For those of you who learned to count with sixteen fingers, you won't
need to do anything. Hexadecimal is the default radix for Ultra-Zap.
Interrogating Disk Sectors
So, you just bought a protected diskette and you just can't wait to
find out what makes that thing tick, eh? This function gets into the
guts of a diskette's format and tells you all of its secrets. While
it's great for just snooping around, it's best use will come by being
used in concert with the special formatting abilities of the
This function will ask you to specify the drive, side, starting
track, and ending track of the interrogation. It will then ask you
the lowest and highest sector numbers to search for. If you've got
a 40-track drive (like most of us), the maximum interrogation will be
from track 0 to track 43 (throw in a couple extra tracks for those
tricky buggers), searching for sectors 0 to 255 (all values decimal).
Such an interrogation will take quite a bit of time, which is why we
included the Toggle Menu Alert Tone function.
You can also specify that the output be recorded on your printer to
be used for later reference.
Here's a few tips to get the most out of this function:
A) Try to make a backup of the suspect diskette with DOS's DISKCOPY
program. On the weirdly formatted tracks, the program will report
a read error. Write down these track numbers.
B) Place a write-protect tab on the suspect disk and interrogate all
of the tracks that DISKCOPY threw a fit over. Search for sectors
0 to 255 (decimal).
C) Most often, the protection scheme is to either format one or more
sectors or tracks with sector sizes other than the standard 512
bytes, or to either give one of the sectors a wild sector number
like 214 or just not format a whole track of eight sectors. If
you've got the same VisiCalc master I do, you'll find that sector
8 on track 39 is missing entirely.
The interrogation function will tell you which sector numbers were
found, their size in bytes, and if they were formatted with a CRC
error (another not so fancy trick). Also notice that the
interrogation process can be aborted by pressing the "C" key.
(8) Toggle Menu Alert Tone
This function is used to sound the computer's speaker when a
particularly time consuming function has been completed. Selecting
this function toggles the alert tone on and off, and is most often
used with the Interrogate Disk Sectors function, which returns
directly to the main menu when finished.
Display/Modify Disk Parameters
Even though the IBM-PC uses a standard format for writing data on
diskettes (40 tracks numbered 0 to 39 of 8 sectors each numbered 1 to
8 of 512 bytes each), it has the capability of reading and writing
many other formats. To do so, you'll have to change certain bytes in
a special table kept in the PC's memory called the Disk Parameter
Table. This function displays the current value of these bytes and
allows you to modify them. Note that not all of the values will be
of any use to you.
There are 11 bytes in the Disk Parameter Table:
1) Specify byte #1: the left "nybble" or single digit of this value
when viewed in hex is the step rate time for the disk drive head.
The right "nybble" is the disk head unload time. These values are
best left alone.
2) Specify byte #2: Again, don't fool around with these values. The
left "nybble" is the disk head load time, and the right nybble is
the direct memory access mode select.
3) Wait time until motor is turned off. Not normally of use.
4) Bytes-per-sector value: AH-HAH! If you place a "0" in this value,
The PC expects all sectors to be 128 bytes long. A "1" means a
sector size of 256 bytes, a "2" means 512 bytes (this is the
standard DOS value), and a "3" means 1024 bytes per sector.
5) Highest sector number on a track: This is used for formatting and
tells DOS how many sectors there are on each track.
6) Gap length for diskette reads: this is what you fool around with
if you keep getting CRC errors when you try to read a non-standard
size sector. Normally, you can just leave this alone except when
formatting with Ultra-Format.
7) Data length: This contains the number of bytes in a sector when
the value in table byte #4 doesn't contain a 0, 1, 2, or 3.
8) Number of bytes in the gap between sectors: this is also only used
when formatting special tracks.
9) Format fill byte: When formatting, this is the initialization byte
that will be placed in all new sectors.
10) Head settle time: leave this alone.
11) Motor start time: don't fool with this either.
(9) How To Display/Modify Non-Standard Sectors
The best way we can think of to demonstrate how to use this program
with protected diskettes is to give you an actual example "script".
One fine day, a local marketing manager for a large software company
was in our offices boasting his company's newest product. When we
showed him the Ultra-Utilities, he challenged us that it "won't be
able to touch this disk". We sat him down at our PC and booted up
Ultra-Zap. This first thing we did was Interrogate track 1 of his
diskette, searching for sectors 0 to 255. Like magic, Ultra-Zap told
us that his diskette was formatted as five sectors, numbered 1, 2, 3,
4, and 5, and were 1024 bytes long each. Next, we went into the Disk
Parameter table and changed byte #4 (bytes-per-sector value) to a
value of 3 (meaning 1024 bytes per sector).
Now, we choose the Display/Modify function to look at track 1, sector
1. The first thing this function does is attempt to read the
FAT table on the diskette to determine if is single or double-sided.
When you are working with protected diskettes that do not have a
valid FAT table, or if you change the bytes-per-sector value, this
function will report an error reading track 0, side 0, sector 2. It
will then ask you how many sides are on the diskette (since it
couldn't figure this out from the FAT). We answered 1 side, knowing
that nearly all distribution software comes on single-sided
diskettes. The Display/Modify function worked perfectly, as
evidenced by the look of worry on our friend's face. "You're giving
this thing away for free?", he asked us. We decided it would be best
not to show him how we could make a backup of his disk with
(10) Format A Standard Track
This function is used to lay down a fresh format pattern on a single
track. It will destroy any previous data on that track. If you are
attempting to revive sectors that were marked "damaged" by the DOS
FORMAT program, you will have to also change the corresponding values
in the File Allocation Table (FAT) after getting a successful format.
Refer to the IBM DOS manual for details on the FAT. Our experience
is that the work required is usually not worth the trouble of getting
back a few sectors.
When the sectors are formatted, they are initialized with whatever
byte is in the "Fill byte" parameter in the Disk Parameter Table.
Initially this is &HF6 (246 decimal). If you wish to change this,
see the Display/Modify Disk Parameter Table chapter below.
Re-Format A Standard Track Without Erasing Old Data
This function is used whenever a disk starts to report read and write
errors in normal use. It repairs the diskette by first reading the
sector data into memory, writing a fresh format pattern on the
diskette, and the writing back the old data into the freshly
You may specify how many times the program should attempt to re-read
a sector that reports an error. Depending on the severity of damage
to a sector, it may be necessary to re-read it 50 or more times
before you get a good read. If after the specified number of
re-reads the sector still cannot be read, the program will format a
fresh sector in that location. Depending on the file, this may make
it unusable. If it's a program file, probably so. However, if it's
a data file or BASIC program stored in ASCII format, you should be
able to go in with Ultra-Zap and patch things up. After reading the
old data, you have the option to abort the fresh formatting and
return to the main menu.
Format A Non-Standard Track
This function is used to create a copy-protected diskette track by
placing a format pattern on the diskette that DOS is normally not
able to read except under special circumstances. On the IBM-PC,
there are four sector sizes we can format: 128 bytes, 256 bytes, 512
bytes, and 1024 bytes. These sectors sizes can be read by DOS by
placing the values 0, 1, 2, and 3 respectively into the
byte-per-sector value in the Disk Parameter Table. Now let's discuss
the difference between a logical and physical disk sector as referred
to by Ultra-Format. The normal disk format is 8 sectors of 512 bytes
each numbered 1 to 8. It is possible to give your non-standard
sectors any numeric name you wish. That is, you could format a track
with three physical sectors numbered 12, 20, and 235. This makes it
difficult for someone to copy your disk. Another fancy trick is to
format a standard track 40. Most disk drives are capable of
reading and writing a few extra tracks than the standard 0 through
39. Most copy programs, and DISKCOPY, do not look for such a track.
The "Highest Sector Number On Track" value in the Disk Parameter
Table tells this function how many physical sectors you wish to
format on your non-standard track. It does not dictate what the
highest logical sector number can be. For each physical sector, you
will be asked to enter the logical sector name (0 to 255) and size
value (0, 1, 2, or 3).
Non-standard tracks are usually used to hold special codes that a
program checks for when first executing. To do this, you'll need to
incorporate a short disk sector reading assembly language subroutine
into your program. Study the ROM-BIOS calls in the Technical
Reference manual for disk I/O (interrupt 13H). If this is still over
your head, drop us a line (registered users only) and we'll send you
some ready-to-go sample routines for use in assembly, compiled BASIC,
and regular BASIC programs.
One more thing, when you format a non-standard track, you'll need
to fiddle around with a couple of values in the Disk Paramter Table,
specifically, bytes #6 and #8. Look at the default values for a
standard 8 sector, 512 byte/sector format. If you wanted to format a
track of 256 byte sectors, you might try doubling the standard
value of these bytes. Our first issue of "The Zapper" newsletter
deals with formatting non-standard tracks for copy-protection work.
If you're not a registered user, all we can suggest is
experimentation to come up with formats and Disk Parameter Table
values that do not cause CRC errors.
Display/Modify Disk Parameter Table
This function works exactly like that in the Ultra-Zap program,
please refer to that chapter for instructions on how to use this
Modify Display Radix
This function also works just like the Ultra-Zap Modify Display Radix
function. Please refer to that chapter for more information.
(12) Display File's Directory Information
This function allows you to see everything about a file that is kept
in DOS's directory of files. As with most of the functions in the
Ultra-File program, this starts with a menu of all of the programs in
the directory. Each filename is preceded with a number. After the
filename, a single character (called the "attribute") tells you the
characteristics of a file. These attribute codes are explained at
the bottom of the display. If you have a double-sided diskette,
choose the "M" key to look at the rest of the directory entries. If
you have a single-sided diskette, all available file locations are
displayed at the same time.
To see the directory information on a file, just type in its
corresponding number on the list. Interestingly enough, we have
found that DOS 1.10 has some bugs in the way it sometimes reports a
file's date, time, and size in bytes when you issue the DOS command
DIR. This function displays their correct values.
You'll also notice that on all file lists in Ultra-File, deleted
files (those killed with BASIC's KILL or DOS's ERASE commands, for
example) are shown with the first character of their filename as a
Assign Or Remove System Status
This function allows you to either remove or assign the "SYSTEM"
attribute given to a file. Files given this attribute are not
displayed with DOS's DIR command, cannot be accessed through DOS, and
are not copied with DOS's COPY *.* command.
Assign Or Remove Hidden Status
This function allows you to either remove or assign the "HIDDEN"
attribute given to a file. Functionally, the "HIDDEN" and "SYSTEM"
attributes are alike to DOS. You'll notice though that system files
like IBMBIO.COM and IBMDOS.COM are given both "HIDDEN" and "SYSTEM"
attributes. Hidden files are used a lot by software companies to
keep a program "secret". Backup diskettes made with DISKCOPY still
include hidden and system programs, so it is not a good protection
means on its own.
Display List Of Sectors Allocated to File
You'll notice that Ultra-Zap's Display/Modify File Sectors function
never really tells you where on the diskette the logical file sectors
are located. This function knows all, tells all, about the location
of all sectors allocated to a file. Notice that with double-sided
diskettes, sectors are allocated to a file two at a time (sectors 1
and 2, 3 and 4, 5 and 6, 7 and 8 are considered groups on a
double-sided diskette. We think a good name for this is a "lump".
Just remember there is one sector per lump on a single-sided
diskette and two sectors per lump on a double-sided diskette).
(13) Build A File From Scratch
This function is used for creating a new file, and then taking
specific "lumps" (see section above for definition of a "lump") and
allocating them to this new file. It can also be used when the
Attempt To Restore An Erased File function fails and you have used
Ultra-Zap to find the lumps that belong to a file.
THIS IS A POTENTIALLY DANGEROUS FUNCTION! Always work on a backup if
possible! This function does not care if a lump was allocated to a
different file and can generally screw things up royally if you don't
know what you're doing. If you're trying to restore an accidentally
erased file, always try the Attempt To Restore An Erase File function
This function will ask you to enter in the sectors to allocate to the
file. You must enter these sectors in order! Also, if you are
working on a double-sided diskette, only enter in the first sector of
each "lump" (that is, sectors 1, 3, 5, and 7). If you try to
allocate both sectors 1 and 2 to a file, the disk will be thrown into
an endless loop. You can allocate any sector for single-sided
diskettes since each sector is considered one lump.
Using this function, you can experiment with a variety of neat tricks
including cross-threading files (two files having the same sectors
allocated) and allocating an entire diskette to one file.
Attempt To Restore An Erase File
If you use this function IMMEDIATELY after accidentally erasing a
single file, you stand a near 100% chance of resurrection with this
function. When a file is restored with this function or the Build
File From Scratch function (deleted file), the first character of the
filename will be changed to the letter "Z". You can use DOS's RENAME
command to rename it to its original filename.
If you killed multiple files (ERASE *.TXT type commands are notorious
for this), this function will probably not work. Always use a backup
disk (made with DISKCOPY) before allowing this function to change the
Produce A Map Of Diskette
This function allows you to examine an entire diskette, sector by
sector, in the form of a unique road map. Since the output is
self-explanatory, we will not discuss it here. Suffice it to say
that you'll wish you took the time to make one of these for your most
valued diskettes should you ever experience the hand-spasm that
causes one to type ERASE *.* accidentally. The ORP code means that
a sector is an "orphan", that is, it's been marked as allocated in
the File Allocation Table (FAT) but doesn't belong to any file in the
directory. Running the DOS program CHKDSK will usually fix any
(14) Selectively Purge Files
You'll really appreciate this function on those times you want to
kill about 20 .TXT-type programs but want to keep one. In such a
case ERASE .TXT will wipe them all out. This function allows you to
go through and choose one by one the files you wish to "purge" from
the diskette. Everytime you enter a file's number from the file
list, that file's number will begin to blink. If you make a mistake,
just choose the "Q" function to cancel the purge. If you have a
double-sided diskette, choose the "M" function to look at the rest of
the files in the directory. When you've "marked" all of the files to
be purged, just choose the "P" function to start the hand of diskette