; NULU 1.0 (10/01/84) -- Introduction -- -------------------- Commands -------------------- C - Credits 1 - Operation 5 - Commands (M,N,O,P,Q) E - Error Messages 2 - Commands (A,B,C,D,E) M - Menu F - Filespecs A - Add Members N - Rename Members I - Introduction B - Brief Mode O - Open Library R - Redirection C - Close Library P - Print Members < Input D - Delete Members Q - Unsqueeze Members > Output E - Extract Members 3 - Commands (F) 6 - Commands (R,T,U,V,X,Y) F - File Sweep R - Replace Members 4 - Commands (G,K,L) T - Replace/Add Members G - Get Filespec U - User/Drive Change K - Krunch Library V - View Members L - List Members X - Exit Y - Directory Display :C NULU Version 1.0 as of 10/01/84 NULU.COM and NULU.DOC are both Copyright 1984, by SYSTEM SOLUTIONS, P.O. Box 35972, Dallas, TX 75235. Both may be used freely for non-commercial purposes, but neither may be sold, included in a package for sale, or used as an incentive to buy, by any person, organization or corporation without prior arrangement with the copyright holder, SYSTEM SOLUTIONS, or the author of this version, Martin Murray. Furthermore, neither SYSTEM SOLUTIONS nor Martin Murray will bear any responsibility for losses resulting from the use or inability to use this program. NULU.COM may not be distributed without NULU.DOC, nor may the copyright messages be removed from either file nor caused to not be displayed. ACKNOWLEDGEMENTS This program would not have been possible were it not for the elegant work of Gary P. Novosielski and those others working with the LU library structure. REPORTING BUGS Please report any bugs or problems to Martin Murray, P.O. Box 35972, Dallas, Tx 75235 or call (214) 351-6117. :I INTRODUCTION NULU is offered as a complete replacement for LU and LSWEEP. Weighing in at 14k, it includes nearly all features of both programs and then some. It features: Two operation modes with a full menu for each Viewing and printing of member files, unsqueezing when necessary Extraction of member files with an option to unsqueeze where appropriate Bigger libraries, up to 800 members or more depending on available memory Automatic member sorting, all members kept sorted at all times Faster reorganization Enhanced error handling Access to deleted members Optional read only mode General compatibility with LU and NSWEEP syntax DIFFERENCES BETWEEN NULU AND LU I am aware of only one thing that LU does that NULU does not do. LU maintains a CRC for each member file and for the library directory as a whole. NULU doesn't do this at all. In fact, NULU changes these CRC bytes to 00 as soon as it gets the chance. In case you still want or need to run LU on a library modified by NULU, LU will simply regard it as a library created by an earlier LU version and will promptly set CRC's for the various members. :F AN ASIDE CONCERNING FILESPECS When specifying a filespec, wildcards may be used freely, however, unlike most programs, NULU doesn't insist that a "." separate the filename from the filetype. For example, the filespec "**" means the same thing as "*.*" to NULU. On the other hand, the filespec "FRED.TXT" should be typed in just like that. "FREDTXT" would make NULU think that no filetype had been specified. The rule is simple: use a dot any time you like, but it is only strictly necessary when it is needed for clarity. When specifying a drive and/or user area the syntax is very liberal. "A15:**" means the same as "15/A:*.*", as does "1A5:**". The colon is absolutely necessary. If a different user area is desired for the default drive, the drive specifier may be omitted, as in "15:**", just as the user area may be omitted as in "A:**". If a drive/user specification is made, but no filespec is indicated, a filespec of ????????.??? is generated. Therefore to indicate the default drive, current user area, and a filespec of ????????.???, just type a colon by itself (e.g., ":") ! :1 NULU OPERATION NULU may be invoked with or without a command tail. A command tail can consist of any combination of valid NULU operators up to 128 characters (the limit imposed by the CCP. Once NULU is running, command lines can be as long as 254 characters.) As in LU, all NULU commands are preceded by a dash. This is a copy of the menu for the command mode of operation: -A Add members -B Brief toggle -C Close the library -D Delete members -E Extract members -F Filesweep mode -G Get filespec -K Krunch the library -L List members -M Menu -N Rename members -O Open a library -P Print members -Q Unsqueeze members -R Replace members -T Replace/Add members -U Drive/User change -V View members -X Exit NULU -Y Disk directory -< Redirect input -> Redirect output Commands may be strung together, each terminated by a space. They are processed left to right. All characters are converted to upper case. The default drive/user area are displayed along with the name of the current command mode each time the console is prompted for input. The commands will be explained in order of their appearance above. All items in [square brackets] indicate optional parameters. Filespec parameters enclosed in (parenthesis) indicate references to deleted member files. Three dots ("...") after a parameter indicate infinite repetition. :2 -A ADD MEMBERS Syntax: -a filespec[ filespec...] Use this command to add files from disk to the current library. NULU will make a series of passes through the directory, adding files as it goes, until the list of matching files is exhausted. If matching filename already exists as an active member in the library, its name will be displayed and the file will not be added. In all file addition and replacement operations, if a deleted entry of identical size can be located, that disk space and directory entry will be used rather than allocating new space for the file. This means that it will be necessary to reclaim wasted disk space less often. -B BRIEF TOGGLE Syntax: -b This toggles the prompting mode. The release version of NULU is setup to print the full name of the current mode for a prompt, as in "-ADD MEMBERS A0:>". If BRIEF is turned on the user will simply see "-A A0:>". NULU may be permanently patched to default to BRIEF ON or OFF. See NULU MODIFICATION. -C CLOSE THE LIBRARY Syntax: -c This command closes the current library, writing its directory to disk if any changes have been made to the directory. The library directory is NEVER written except when the library is closed, so be sure to do it. If you forget to do so and remove the disk, NULU will prompt you for the disk again and will attempt to recover, but no guarantees! Some other operations that cause the current library to be closed are: -k, -o, -x -D DELETE MEMBERS Syntax: -d filespec[ filespec (filespec)...] Member files matching the given filespec will be given deleted status in the library directory, except when the filespec is enclosed in parenthesis. In that case matching deleted members will be given active status. That is, they will be undeleted. If the filename of a matching deleted member file already exists as an active member, the filename will be displayed and the file will not be undeleted. -E EXTRACT MEMBERS Syntax: -e filespec[=newfilespec filespec...] Use this command to extract active member files. If extraction to the current drive/user area is desired, no further syntax is necessary. To indicate another drive, however, a destination filespec may be included following an equals sign. Example: -e **=a5: would extract all active members to drive A, user area 5. Files may be renamed as well as redirected by indicating a filespec along with, or in place of, a drive user specification. Examples: 1. -e *asm=*bak 2. -e *asm=5:*txt 3. -e fred.txt=sam.txt jane.inf=c8:girls.dbf The examples would produce the following results: 1. Extract all files with a type of .ASM to the default drive/user renaming them with the filetype of .BAK. 2. Extract all files of type .ASM to user area 5 of the default drive, renaming each with the .BAK filetype. 3. Extract the member file FRED.TXT to the default drive/user under the name of SAM.TXT, and extract the member file JANE.INF to user area 8 of drive C: with the filename GIRLS.DBF. The only rule to remember is that if a destination filespec is entered it cannot be any less ambiguous than the source filespec. That is, "*asm=*bak" is valid while "**=*bak" is not valid. :3 -F FILESWEEP MODE Syntax: -f This command places NULU in its second operational mode: the filesweep mode. This allows the user to move through the directory of active member files as if they were individual files being examined by a program like NSWEEP. The filesweep mode's command list is as follows: A Next member B Previous member C Close the library D Delete member E Extract member L Log new library P Print member Q Unsqueeze member R Rename member U Drive/User change V View member W Wildcard rename X Exit NULU Y Disk directory Z NULU command mode ? Menu Because of the extreme similarity between these commands and the commands of NULU's command mode, only a short description of each command will be given. A -- Advance to next member (spacebar, cr, or lf will produce the same result) B -- Back up to previous member C -- Close the current library D -- Delete current member file E -- Extract current member file (prompt allows redirection) L -- Logon to new library (closes the current library) P -- Dumps the current member file to LST: (unsqueezes if needed) Q -- Extract current member file, unsqueezing if necessary (prompt allows redirection) R -- Rename current member file U -- Change drive/user defaults (returns file pointer to the top of the file list) V -- View current member file (unsqueezes if needed) W -- Wildcard rename of members (prompts for both oldname and newname) X -- Exit NULU (closes all files) Y -- Get disk directory for default drive/user (returns file pointer to the top of the file list) Z -- Return to NULU command mode (current library remains open) ? -- Print the filesweep mode menu (returns file pointer to the top of the file list) If, when the filesweep mode is entered, or after a library has been closed, there is not a library currently open, the filesweep mode will prompt with: No library open. and will accept only the following commands: L,U,X,Y,Z,? Likewise, if a library is open but only has a directory with no other active members, the message No member files. will be printed and only the commands listed above will be accepted. During the filesweep mode operation, each file will be listed in the order in which it is found in the directory, along with the size in K that the file would occupy if it were extracted to the default drive. If the filesweep mode is terminated by a return to the NULU command mode, any commands that followed the -F command on the previous NULU command line will be executed. :4 -G GET FILESPEC Syntax: -g filespec NULU will search for the filespec indicated. If it is found, processing continues. If not, the user is prompted to insert the disk containing that filespec. The drive is then reset and search again. The program will prompt forever until it receives the proper filespec or until a cntrl-c is entered, forcing NULU to continue without the filespec being found. This command can be useful when attempting to control NULU through a submit utility like DRI's SUBMIT.COM. For example, one might type: nulu -o a:asm -g b5:-work.005 -e **=b10: -g a0:-5.005 -x After loading, NULU would open a library called ASM.LBR on drive A: in the current user area. Next it would search user area 5 of drive B: for filespec -WORK.005 until it was found. Then all active member files would be extracted to user area 10 of drive B:. Finally, NULU would search user area 0 of drive A: for a filespec called -5.005 until found. Then NULU would terminate. Notice here that the ASM.LBR didn't have to be closed before the search for the final filespec because no change had been made to the library directory. If a change had been made, after the new filespec had been loaded, NULU would have demanded the disk with ASM.LBR back so it could update the directory. Therefore the GET operation would be effectively negated. -K KRUNCH THE LIBRARY Syntax: -k[ REDIRECT OUTPUT Syntax: -> filename Syntax: -> With the first form of this command, NULU output will be sent to the filename indicated. If the file already exists, it will be deleted. All special characters that the user may have patched into NULU (see below, NULU MODIFICATION) will be sent to the file as well, with the exception of the EOF character, 26 (1ah). The only output not echoed to the file will be output caused by viewing or printing a member file. The filename passed must be unambiguous. Under the second form of this command, the current output file, if any will be closed. When NULU is caused to terminate, the current output file is closed along with the current library, if any. :E ERROR MESSAGES All NULU error messages are of the form: ERROR XX: Explanation where "XX" is some number from 0 to 255 and "Explanation" is a clue as to the nature of the error. Each error message is listed below, along with an explanation. Suggestions about ways to handle the error are given when appropriate. ERROR 63: ambiguity error Problem: This means that you entered an ambiguous filespec where an unambiguous filename was required. ERROR 68: disk full Problem: The library disk became full during file addition or KRUNCHing or the destination disk of an extraction command became full. Solution: If the error occurred during KRUNCHing, NULU should have recovered by itself, reopening the old library. If it did not recover, then you removed the original disk before the KRUNCH was complete or a serious read error occured. If the error occurs during file addition to the library, operation should not be impaired, but no files that required additional disk space can be added to the library. Note that deleted entries can still be overwritten by incoming files as long as the file sizes match. The original file that caused the error will be recorded in the library directory as a deleted entry. If the error occurs during file extraction or unsqueezing the destination file is deleted because it is an incomplete file. Extraction can continue as before. ERROR 73: invalid drive Problem: An invalid drive for your system was chosen (see below, NULU MODIFICATION) or a letter higher than "P" was indicated. Solution: Choose another drive or re-patch NULU. ERROR 77: not enough memory Problem: An attempt was made to open a library with a directory too large to be accounted for with available memory. Solution: Open the library on a computer with a larger TPA and reorganize it so it can be handled by the smaller system. ERROR 78: user cancel Problem: No problem. NULU is simply letting the user know why an OPEN LIBRARY or KRUNCH operation has been cancelled. ERROR 83: no directory space Problem: An attempt was made to create a file on a disk with no free directory entries. ERROR 85: file not found Problem: The filespec indicated for some operation could not be located. ERROR 86: CP/M 2.x or higher required Problem: An attempt was made to run NULU on a system with an CP/M version number of less than 2.0. ERROR 88: seek to unwritten sector Problem: A sector required to gain access to a file is indicated by CP/M to be unwritten. Solution: The library directory or perhaps the library itself has become trashed at some point. Deleting the entry and KRUNCHing will probably render it harmless, but the safest course to take is to obtain a fresh copy of the library. ERROR 100: bad library directory Problem: The file specified could not be opened as a library file. Solution: The directory could be bad, but most likely the file simply isn't a library. Check it out with some disk editor like SPZ or EDFILE. ERROR 115: bad syntax Problem: Improper syntax was user to attempt some operation. ERROR 116: squeeze decode table Problem: A file has a squeeze decoding table, but at some point the table is trashed or perhaps is missing. Solution: None really; get a new copy of the file. ERROR XX: undefined Problem: Unknown. Solution: Write down all information presented on the terminal. The number following the word ERROR is especially important. Get the information to me. Mail it or call and I will try to help.