::::::::::::::::::::::::::::::::::::::: :::::: NEW RELEASE! VERSION 4.00 :::::: ::::::::::::::::::::::::::::::::::::::: ================================================== I I I I I The FreeSoft Company Presents: I I I I ---> The Ultra Utilities <--- I I "The Wizard's Apprentice" I I I I User's Manual And Guide To Operation I I 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... Ultra-Ultility Warranty 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 service. 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 Introduction.................................................. 1 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 Registration Form.............................................18 Invoice.......................................................19 Appendix B: A Brief Discussion Of Diskette Formats............20 Appendix C: Version changes and additions.....................21 (1) Introduction ------------ 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 (base 10). 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 (2) 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: 17 (decimal) &H11 (hexadecimal) &O21 (octal) 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 BASIC operation. 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- protected diskettes. 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 (3) 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" arrangement. 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 (4) 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 column. 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 (5) 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. (6) 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. (7) 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 Ultra-Format program. 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 Ultra-Format. (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 formatted sectors. 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 (11) 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 function. 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 question mark. 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 first. 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 directory info. 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 orphan lumps. (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 doom (ouch!).