TRACKDOS V1.10 by Nic Wilson ---------------------------- Any questions, bugs, suggestion or spare money, send or write to Nic Wilson Nic Wilson Software 138d South Street Toowoomba Queensland 4350 ph (076) 358384 work & fax (076) 358539 home EMAIL {cbmvax|cbmehq}!cbmaus!wilson!nic@uunet.uu.net This program is copyright Nic Wilson Software and MAY NOT be freely distributed without the written permission of Nic Wilson Software. It may not be used for any commercial construction or transferral of data without written permission of Nic Wilson Software. To obtain permission write to the address at the end of this file. TrackDos is a program that allows easy transfer of data between the three main areas on an Amiga. DOS, Memory and trackdisk.device. DOS means the data contained within a file, Memory means the data contained anywhere within the memory map and trackdisk.device means data stored on a disk not accessable with DOS (eg. bootblocks special loader disks etc.). The transfer of data between these three areas is not normally easy or convenient. TrackDos was written to overcome this. HISTORY ------- V1.10 Fixed a bug in DOS to Trackdisk that caused program failure. V1.00 first version assembled with Macro68 V1.08 Last version assembled with Devpac. V1.0x Before documented history. Once the program loads you will see a credits window and a prompt to click the mouse button. This will take you to the main menu, which is a set of eight gadgets as shown below. Trackdisk to DOS DOS to Trackdisk Memory to DOS Memory to Trackdisk DOS to Memory Trackdisk to Memory Format Tracks String Search PROGRAM SUMMARY --------------- The above are the main functions of TrackDos. When any one of the gadgets is clicked on, another window will open for that particular function and will prompt via string gadgets for inputs. At the bottom of each window you will notice two gadgets 'OK' and 'EXIT'. The 'OK' gadget will attempt to perform the function and 'EXIT' will return to the main menu. There is one exception to the above, that is, in the Format Tracks function there is an extra gadget labeled 'INIT' this gadget performs a quick format the same as the DOS 1.3 'QUICK' parameter of the format command. This will of course blank any disk and all files will be lost. The INIT gadget only looks for the device and ignores the start and end track string gadgets. If a disk is accidentally 'INITted' then the diskdoctor command will rectify this as the INIT function only rewrites the Root block and the Bootblock of a disk to make it appear blank. Errors or prompts will be shown in the rectangular box at the extreme bottom of each window. Once the function has been performed the program will stay within that function incase another is required. If not then 'EXIT' can be clicked. Every function only supports disk data in the normal range of sectors 0 to 1759 or tracks 0 to 79. Any attempt to read or write outside this area will generate an error message. This was done as tests have shown that reading or writing to tracks 80 to 83 is only a rumour and no proof has been seen to support the conclusion that this is at all possible. This will be changed if conclusive evidence to the contrary is supplied to me. FORMAT FOR INPUT OF PARAMETERS ------------------------------ All numerical inputs can be given in decimal or hexadecimal. If you supply in hexadecimal then the number must be preceded by a dollar sign. This format is the same for those paramters that have other prefixes(ie. '#' and '+'). Numbers can be input as binary by preceding with a percent (%) but I do not forsee this being used a great deal. This was included as my ASCtoInt macro just happens to do it anyway. INPUT EXAMPLES -------------- To input the offset 1024 in decimal -----> 1024 To input the offset 2c00 in hex -----> $2C00 To input 40 (decimal) cylinders -----> #40 To input A (hex) cylinders -----> #$a To input 2 (binary) cylinders -----> #%10 To input root block offset (decimal) -----> #880 To input root block offset (hex) -----> #$370 To input a length of 5000 (decmal) -----> 5000 To input a length of ABCD (hex) -----> $ABCD To input desintation address $20000 -----> $20000 To input a destination as a length -----> +$200 To input a start cylinder of 10 -----> 10 To input drive zero as a device -----> DF0: To input drive one as a device -----> df1: To input an example path/file -----> DH0:c/name NOTE: The above examples show upper case characters, but either upper or lower or both is allowed. WRITING BOOTBLOCKS ------------------ Any data written to the first two sectors of a disk will be automatically checksumed, and in this current version this cannot be disabled. WRITE ERROR HANDLING -------------------- When any of the trackdisk.device write functions encounter a hard error on the destination disk, the offending areas will be formatted, one attempt to rewrite the data will be performed. Failure or any other trackdisk error will cause the particular function to be aborted and a trackdisk error message displayed. INPUT PARAMETERS ---------------- Below is an explanation of all parameters used by the different functions. Each function will use some of the following parameters. offset Byte sized offset to start the read from. This offset must be block aligned else an error message will be generated. The offset is the same as would normally be placed in the IO_OFFSET field of an IO_REQUEST block to perform a CMD_READ or CMD_WRITE through trackdisk.device. This field can also be entered as a block number instead of an offset if so desired. To enter as a block the number must be preceded with a hash sign (#). Note that the prefix for hex or decimal still applies as shown in the examples. Once the 'OK' gadget has been clicked the block number in the string gadget will be replaced with the calculated byte sized offset for your reference. If this field is set to -1 then the offset will be zero and full disk of 1760 blocks will be used. length Byte sized length to read/write. Must be increments of 512 and the minimum allowed is 1 sector. If a number is supplied incorrectly is will be rounded up to the nearest sector. If this length parameter is in a trackdisk reading function, (ie. Trackdisk to DOS or Trackdisk to memory) it can be input as a cylinder length (ie. number of cylinders to read) by inserting a prefix character hash (#) before the cylinder value. When the 'OK' gadget is clicked the string gadget will be replaced with the calculated byte sized length for your reference. path/file Path and filename. Data will be read from, or written to this place and name. It can be any valid path and name that you can normally use in CLI. device The device that the data is to be read from or written to. This device must be a floppy device from DF0 - DF3, and entered as the full device string (eg. DF0:). Full error checking for invalid or illegal devices is performed, so it will not accidentally try to write to your hard disk. buffoff Byte sized value into the file to start the write from. This allows you to skip over an amount at the beginning of a file and only write out the remainder. Very useful for skipping over the file header of an executable file. source address Memory address to start the write from. This area can be Fast memory or Chip memory. This source address is inclusive. end address Last memory address to write. This end memory address is inclusive. This parameter can be input as a length instead of a destination address by inserting a prefix character plus(+), before the length. the length of course can still be in decimal or hex as long as the format is followed as shown in the examples. When the 'OK' gadget is clicked the string gadget will be changed to display the calculated end address for your reference. preferred area Your preferred area that you would like the data placed. If this is left blank the area will be chosen for you and the result address will be displayed in the box at the bottom of the window. If your preferred area is not available then an error msg will be generated and displayed in the same box. This memory area will only remain allocated while the program is running and will be freed up when you exit the program completely. Trackdos when loaded will spawn its own process and return the command line for you so you can launch another program to examine or modify the memory without needing another CLI window open. The DOS to Memory function has a slight difference in that you can force it to use a certain area, by placing a 'b' before the address. start track This parameter is only found in Format Tracks. It is the starting track for the format. Note that this does not mean cylinder. Amiga drives have a total of 160 tracks, starting at 0 and ending at 159. (eg.Cylinder zero holds tracks 0 and 1, cylinder one holds tracks 2 and 3 and so on). This track parameter is inclusive to the format end track As above except that this is the last track to format. This track is inclusive to the format. Maximum number for this parameter is of course 159. FUNCTIONS --------- Trackdisk to DOS ---------------- FUNCTION Transfer data from disk sectors to a file. PARAMETERS offset, length, path/file, device. DOS to Trackdisk ---------------- FUNCTION Transfer data from a file to disk sectors. PARAMETERS offset, buffoff, length, path/file, device Memory to DOS ------------- FUNCTION Transfer data from memory to a file. PARAMETERS source address, end address, path/file Memory to Trackdisk ------------------- FUNCTION Transfer data from memory to disk sectors PARAMETERS source address, end address, offset, device DOS to Memory ------------- FUNCTION Transfer data from a file to memory PARAMETERS length, preferred area, path/file Trackdisk to Memory ------------------- FUNCTION Transfer data from disk sectors to memory PARAMETERS offset, length, preferred area, device Format Tracks ------------- FUNCTION To format one or more tracks and optionally initialise the disk. Note that if a disk is initialised then the disk will be blanked and any DOS files that were on the disk will disappear. To format a single track put the same number in start and end tracks. (ie. to format track 90 put that number in both start and end). The disk will NOT BE initialised via the 'OK' gadget. If you require the disk to be initialised then the 'INIT' gadget must be clicked after the formatting has finished. PARAMETERS start track, end track, device INIT This gadget will initialise or quick format a disk in the drive specified by the device string gadget. The disk of course must be already formatted. String Search ------------- FUNCTION To search for a particular string in memory. Many users have requested this function so that they can easily find a lost document in memory and then save it to a file using one of the other functions. When OK is clicked the string will be searched for and if found the Start string will be updated to start at the next address after the find, so that if the one it found is not the correct one you can just click OK again to continue the search. This allows you to write down every possibility and save a range of memory locations. PARAMETERS start address, end address, string