ObjTool 2.3 Copyright (c) 1990-1993 Thomas G. Hanlin III ObjTool is designed to manipulate .OBJ files. It can search them, check them for validity, repair checksums, rename or delete symbols, and display stats. ObjTool is protected by copyright, but may be distributed freely provided that it is not altered in any way. Switches can be abbreviated to any extent, as long as there are enough letters for the utility to recognize them. Switches can be repeated, in which case all of the values specified are used. For example: OBJTOOL *.OBJ /DISPLAY=EXTERNAL /DISPLAY=PUBLIC is the same as: OBJTOOL *.OBJ /DISPLAY=EXTERNAL,PUBLIC and might be abbreviated as something like this: OBJTOOL *.OBJ /DISP=EXT,PUB The following switches are supported: /CHECK /DATE condition date /DELETE = LANGUAGE, LIBRARY /DISPLAY = ALL, EXTERNAL, LANGUAGE, LIBRARY, MODULE, PUBLIC, TYPE /EXCLUDE filespec[, filespec] /FILTER = BASIC /HELP or /? /INCLUDE filespec[, filespec] /NOBACKUP /PAGE /REGISTER /RENAME = EXTERNAL, LIBRARY, PUBLIC oldname newname /REPAIR /SEARCH = ALL, EXTERNAL, LANGUAGE, LIBRARY, MODULE, PUBLIC 'name' /SIZE condition size /TIME condition time A "condition" is any of the following: EQ or .EQ. equal GE or .GE. greater than or equal GT or .GT. greater than LE or .LE. less than or equal LT or .LT. less than NE or .NE. not equal /CHECK Each internal record of an .OBJ file is given a checksum when it is created. This switch tells ObjTool to check the checksum and see whether it is still valid. If the checksum isn't valid, the .OBJ has been damaged or tampered with. See also /REPAIR. /DATE condition date This switch allows you to screen files by date. ObjTool will process only files that match your date condition(s). See the first page for a list of valid conditionals. /DELETE = LANGUAGE, LIBRARY This switch allows you to delete the language record and/or default library specification. The language record is for informational purposes only and may be readily deleted to make the .OBJ smaller. The default library record is not necessarily needed if the .OBJ is not the main module, but is quite short and won't make much of a size difference. You should probably leave it be unless you have a different reason for wanting it gone. /DISPLAY = ALL, EXTERNAL, LANGUAGE, LIBRARY, MODULE, PUBLIC, TYPE This switch tells ObjTool what information (besides the file name) to display about the files it processes. /EXCLUDE filespec[, filespec] This switch allows you to exclude files from processing by name. You may use wildcards, but not drive or path specs. /FILTER = BASIC This switch activates an array of filters which configure ObjTool for more convenient handling of compiled BASIC files. It makes sure that any EXTERNALs and PUBLICs you enter are converted to uppercase and screens out BASIC's runtime support routines from the .OBJ's externals list. /HELP or /? This switch provides information on ObjTool. If output is going to the display, a command summary is shown. If output has been redirected, a user manual is generated. /INCLUDE filespec[, filespec] This switch allows you to include files from processing by name. The /INCLUDE switch isn't really necessary, since anything that isn't a switch is presumed to be an include filespec. Filespecs may include full paths and wildcards. /NOBACKUP When requested to alter an .OBJ file, ObjTool normally makes a backup copy of the original, using the extension .0BJ (with a zero, not an "o"). Use /NOBACKUP if you do not want backup files made. This will improve operation speed. /PAGE This switch causes output to be paged. If output is going to the display, you will be prompted to press a key to continue when the screen is full. If output has been redirected, this switch causes a formfeed every 55 rows. /REGISTER This switch provides information on how to register ObjTool. If output is going to the display, registration information is shown. If output has been redirected, a registration form is generated instead. /RENAME = EXTERNAL, LIBRARY, PUBLIC oldname newname This switch allows you to rename an external symbol, a default library specification, and/or a public symbol. It is most likely to be used to resolve naming conflicts between two libraries for which you don't have source code. In such a case, all you need to do is extract the .OBJs from one library into a fresh directory, and use /REN=EXT,PUB to change every occurrence in the library at once. /REPAIR Each internal record of an .OBJ file is given a checksum when it is created. This switch tells ObjTool to create a new checksum for each record based on the current data. In effect, it repairs the .OBJ after modifications have been made to it-- say, if you patched the .OBJ using a binary editor. See also /CHECK. /SEARCH = ALL, EXTERNAL, LANGUAGE, LIBRARY, MODULE, PUBLIC "name" This switch lets you search for a keyword in various parts of an .OBJ file. If the keyword is not found, the file will not be processed by ObjTool. Searches are done by the following rules: EXTERNAL and PUBLIC searches are case-sensitive, unless /FILTER=BASIC is on. LIBRARY searches are not case-sensitive. LANGUAGE and MODULE searches are not case-sensitive, and match if the name is anywhere within the string. The name only needs to have quotation marks around it if it contains a space. /SIZE condition size This switch allows you to screen files by size. ObjTool will only process files that match your size condition(s). See the first page for a list of valid conditionals. /TIME condition time This switch allows you to screen files by time. ObjTool will only process files that match your time condition(s). See the first page for a list of valid conditionals.