**************************** * * * LIBRARY and LINKER * * * * UTILITY * * * **************************** Gary LaRonge 11436 Littlerock Rd. S.W. Olympia, Washington 98502 -INTRODUCTION- This program is a utility for Microsoft's (tm) LIB.EXE and LINK.EXE, two utilities published by Microsoft Corporation that create and modify library files used with the linker and to chain library files together, respectively. Those of you that have used either LIB.EXE or LINK.EXE will already understand the need for "another way", particularly in the case of LIB.EXE. For those of you that haven't used LIB.EXE, try it and then you too will see what a problem it is to use. After typing in 50 or 75 filenames to be included in your library only to have LIB.EXE crash can be depressing. Hopefully LIB&LINK will solve those types of problems. The LIBRARY module of LIB&LINK is used to create a library, add files to, delete files from, or replace files within an existing library, while the LINK module is used to create an [.EXE] file using the [.OBJ] files contained within your library. I must emphasize that LIB&LINK is only a maintenance tool and will not create libraries or perform any linking functions without access to Microsoft's LIB.EXE and LINK.EXE. If you have those files available, LIB&LINK will save you a lot of time and frustration. LIB&LINK was written with Microsoft (tm) QuickBASIC programmers in mind, however it is possible that it may be of some value to other highlevel language programmers and perhaps those that believe in the nitty-gritty, the MASM group. Programmers using other than QuickBASIC might find the lack of access to the linker switches a problem. If not, it may also be of value to you. If it is discovered that some changes will increase this programs useability, I would appreciate being made aware of the desired changes. -CREDITS- The window routines in this program were written by Dave Evers and may be found in his package BASWIND. If you program in QuickBASIC and have need for a number of various handy routines, I suggest you take a look at Dave's work. As someone said, there is no need reinventing the wheel. Dave's routines are available on many local bulletin boards as well as most of the major on- line services. -1- SETTING UP HARD DISK Users- It is easiest to place all needed files in the same directory and generate your libraries and execute the linking operations in the same directory. The required files are; LIB&LINK.EXE LIB.EXE LINK.EXE BCOMxx.LIB SOURCE.OBJ files that are to be included in the library. Any USERLIB's that have already been created. The [.OBJ] file created from the QuickBASIC source code. FLOPPY DISK users- Three diskettes are required to contain the necessary files. Two of the diskettes, the two that are designated to be used in drive A: will also need to be formatted with the /S option because the system files are also required. The files on a given disk will be determined by the desired action, LIBing or LINKing. Case 1- Library creation and/or maintenance; Drive A Drive B COMMAND.COM BCOMxx.LIB LIB&LINK.EXE USERLIB's LIB.EXE SOURCE.OBJ files to be included in library. NOTE- The USERLIB's are written to Drive B Case 2- Linking; Drive A Drive B COMMAND.COM The same diskette LIB&LINK.EXE used above LINK.EXE SOURCE.OBJ (for the [.EXE] file) NOTE- The [.EXE] file is written to Drive A The diskette file assignments were selected to provide the best use of diskette space. When the file operations are completed, you may copy them to a more appropriate diskette and erase them from your LIB and LINK diskettes regaining the space for future use. -2- FEATURE DESCRIPTIONS USING THE LIBRARIAN MODULE When LIB&LINK is invoked, a menu will be presented that provides the following options; Select [.LIB] drive Create or Select [.LIB] Replace [.OBJ] file(s) List files in [.LIB] Add [.OBJ] files Delete [.OBJ] files Create [.EXE] file End LIB&LINK When the first menu selection is completed, the current drive/directory is checked for the presence of LIB.EXE, if it cannot be found a message will so indicate. The program returns to the menu allowing an orderly exit to put the missing file in it's proper place. SELECT [.LIB] DRIVE- This selection expects a single keystroke entry defining the drive in which the library files may be found. indicates the current directory/drive. The floppy disk folks would normally enter B, because the diskette with the [.LIB] files is not supposed to be in drive A:. In the event an "A" is entered as the [.LIB] drive, the program will point out your error. REATE OR ELECT [.LIB]- If elect is the choice, a pop-up window will display all library files found in the designated directory/drive. Simply tag the library of interest and press . You are not allowed to tag "BCOM" or "BRUN" libraries or to tag more than one library. If no files are tagged, a message will be displayed and back to the menu we go. File operations will not be allowed until a library is elected or reated. REPLACE [.OBJ] FILE(S)- Assuming you have already created a library and have since modified one or more of the [.OBJ] files contained within the library, this choice will allow the library to be updated. Again, a pop-up window will display all [.OBJ] files in the current directory/drive. Tag the files to be replaced and press . Only the files tagged will be replaced in the chosen library. No files selected will display a message and return to the menu aborting this operation. -3- LIST FILES IN [.LIB]- The list of files contained in the file .FIL, which was written when the library was created, will be printed on the screen along with a total of the number of files in the library. The file .FIL must always be available with .LIB. When libraries are copied to another diskette, make sure the related [.FIL]'s are copied with them. ADD [.OBJ] FILE(S)- You will be here when creating a library or when you have obtained new [.OBJ] files that you wish to include in a previously created library. The window will return displaying the available [.OBJ] files and again you simply tag the files to be added. If a tagged file is found to be in the library, you will be so advised and the duplicate file will be ignored. The remaining tagged files will be included in the library. If you would like a [.MAP] file written, answer "Y" at the next prompt, otherwise "N". If your choose "Y", you will need to enter a [.MAP] filename or press for the same name as the library. Filename entries are limited to eight (8) characters and do not require and will not accept an extension. A data file is now written and passed to LIB.EXE for final processing. DELETE [.OBJ] FILES- Yep, this one takes them out of a previously created library. Just Tag the [.OBJ] files you would like removed. If all [.OBJ] files are deleted from the library, the library and all related files are erased from the disk and the program resumes at the menu. END LIB&LINK- End of business. Exits to DOS...... WARNING !!!!!!! If for some reason LIB.EXE should crash before successful completion of it's designated task, the file .FIL will NOT be accurate and therefore it's contents should be ignored. Determine the cause of the crash and restart the process. I have taken many precautions to prevent such a happening but you know MURPHY and his laws! If it can happen, it probably will. -4- FEATURE DESCRIPTIONS USING THE CREATE [.EXE] MODULE It is this module that uses LINK.EXE to create executable files from the source [.OBJ] file and the [.OBJ] files contained in your library. The required data entries are relatively few. This routine isn't the time saver that the library module is, it's just very convenient. As with the other LIB&LINK options, you may go directly to "Create [.EXE] file". If the [.LIB] drive has not yet been defined, you will be asked to do so. The next information needed is the "name of the .OBJ" file. Here we are talking about the file that you compiled from the source code for the purpose of linking to an [.EXE] file and not any of the [.OBJ] files residing in the library. Again, no filename extension is required and will not be accepted. "Would you like to add additional [.OBJ] files?" is the next question. This option is included if you want to use smallerr.obj for example. The normal response will "N". If you answer "Y", just tag the appropriate files and press . "Enter run time [.EXE] file name". to use source filename or type in the name of your choosing. "Change disks before writing the [.EXE] file?". The run time file will be written to the current directory/drive. In the case of the floppy users this will be drive A. The change disk option allows the disk in drive A to be changed before the file is written in case the original disk in drive A is short of space. "Would you like to write a [.MAP] file?". If you choose "Y", press to use the source filename or enter the name of your choice. Now it's a simple matter of tagging the run time library you wish to use and as with the library module, a data file wll be written and passed this time to LINK.EXE for processing. I have found LIB&LINK to be worth the time and effort required to write it. My hope is that others of you will feel the same. For those of you wishing to contribute $5.00 for it's use, I would like you to know that it will be accepted with sincere appreciation. Gary LaRonge 11436 Littlerock Rd. Olympia, Washington 98502 -5- REGISTRATION Gary LaRonge 11436 Littlerock Rd. S.W. Olympia, Washington 98502 Program: LIB&LINK.EXE ($5.00) Received from: (Name of BBS or?)________________________________ Date: ______________ Name: _______________________________________________ Address: ____________________________________________ City, St., Zip: _____________________________________ Comments and/or suggestions: ___________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________