shroom.doc - readme file for Shell Room Utility Copyright (C) Davis Augustine 1990-1992. All rights reserved. Last Modified: 26nov93. Version 2.4b Files ----- SHROOM.COM - The program. SHROOM.DOC - This documentation file. Description ----------- SHROOM is a utility that gives a DOS application's shells more room. It does this by intercepting the shell operation, swapping out the application program, freeing up the memory, and then performing the shell operation. It also intercepts the exit from the shell, so that it can swap the application back in before returning to it. The program is none the wiser. Features -------- o Easy to use. o Detects swap file overflow (disk full) and asks whether you want to abort back to the application or continue with a partial swap. o Detects TSR loading and unloading during the shell. Frees the TSR's resources and puts a warning message. o Small resident size (about 6k). Frees nearly all of the memory. o Allows you to increase COMMAND.COM's environment size. o Works with all major DOS applications. o Fully user specifiable swap file path. Ie., you can put it on a virtual disk. o Swaps allocated memory only, avoiding unnecessary writes and reads of free memory. o Intelligent command line parsing. Searches DOS's PATH for program to load, allows passing of args to the program. Automatically tries .COM and .EXE extensions if not specified by user. o Verbose mode for inquisitive users. o Quiet mode for apathetic users. o Uses DOS "make temp file" facility to prevent network clashes. Installation and Operation -------------------------- o To install, just copy SHROOM.COM into a directory in your PATH or the directory from which you will run the application. o For help, use the question mark switch, eg. "shroom -?". o To load, just type the normal command used to invoke the application, with "shroom " prepended. Eg, if the application is called "edit", then you would use the command "shroom edit". Arguments are passed to the application just as before, so eg. you can say "shroom edit letter.doc". o To shell out, use whatever shell command is provided by the application. You will see a message from Shroom saying that it is swapping the program out, after which the normal shell prompt and actions will appear. When you exit the shell, you will again see the "swapping" message from Shroom and then be deposited back into the application as usual. Help Screen - Displayed by the "-?" switch: ------------------------------------------- Usage: shroom [Switches] [@SwitchFile] Program [Args] -?h : Print this help message. -L : Display shareware license. -n : Display program notes (more detailed help). -p : Proceed (without asking) with partial swap if disk full. -q : Quiet mode - display error messages only. -u : Use Shroom's PSP during swapping (else use app's). -v : Verbose mode - provide running commentary. -w : Netware workaround - prevent Novell from closing files. -c List : Swap if List arg is in command line (-xc: swap if NOT in it). -e # : Set ERRORLEVEL returned if unable to load prog (default = 254). -m # : Swap a maximum of # kbytes. -o File : Specify file to direct Shroom output messages to. -s Path : Specify DRIVE:DIR in which to create swap file. -t List : Swap if program is in List (-xt: swap if prog is NOT in List). -z # : Specify environment size for COMMAND.COM. SwitchFile can hold switches that don't fit on the DOS command line. Program and Args are your application and the command line passed to it. Notes Screen - Displayed by the "-n" switch: -------------------------------------------- (Omitted to save file size. Please type "shroom -n" for detailed help notes.) Shareware License - Displayed by the "-L" switch: ------------------------------------------------- ********** SHROOM SHAREWARE LICENSE ********** This is a copyrighted software work which is distributed as shareware. Under this license agreement you are granted the right to use Shroom on all machines and environments that it supports. You are also free (and encouraged) to pass copies of this shareware on to others as long as it is not for payment and not bundled with anything else that is for payment. The shareware registration fee is $25 for single users, $95 for groups (up to 12 users). For checks from non-US banks, please add $8. To receive a diskette, please add $15 for shipping/handling and specify diskette type. Send check or money order to: Davis Augustine P.O. Box 610 Sausalito, CA. 94966-0610 Please include your name and postal or email address. Also please mention the Shroom version you are registering and how you obtained it. Commercial distribution licenses, source code and customized versions are also available at reasonable rates. Please write to the above address or send me email at CompuServe id 72230,3053. I would also appreciate any comments, questions, suggestions or bug reports. The latest Shroom release can always be found in CompuServe forums IBMSYS, lib 3 and TAPCIS, lib 2. ---------------------- | REVISION HISTORY | ---------------------- Changes in v2.4b (26nov93) -------------------------- Add -u switch to force use of Shroom's PSP during Dos calls. Changes in v2.4a (14nov93) -------------------------- Add -c and -xc to turn swapping on and off based on the contents of the command line being shelled. (Thanks, user DJ). Fix a bug where it didn't return CY on failed exec calls. Could cause app to think the shell succeeded when it really didn't, so it might not try another path. Changes in v2.3a (26feb93) -------------------------- Add @file switch to allow command line extension. (Thanks to users RTI and ML). Add -x switch for excluding shell programs from the swap list. (Thanks to user ML). Improve error detection when figuring what to swap (not a bug). Changes in v2.1a (30aug92) -------------------------- Add help notes on stdout redirection. Say "swapping in" or "swapping out", not just "swapping". Have application (rather than Shroom) spawn the shell, if possible. Allows i/o redirection and exit code checking by app to work better. Changes in v2.0a (24jun92) -------------------------- Add -w switch for Novell Netware workaround. Keeps Novell from closing network files that were opened by the swapped application(s). Add -m N switch to set maximimum swap file size to Nk. (Thanks to user MGZ). Change 'k' to mean 1000x, not 1024x. On partial swap, show actual size swapped back in, not the attempted size. Changes in v1.9d (26may92) -------------------------- Change to new mailing address. Lower diskette shipping charges from $25 to $15. Changes in v1.9c (7mar92) -------------------------- Change nonsensical swap file names to app_###.OOM. (Thanks to users ML and RMB). Make swap file readonly. (Thanks to users JB, ML, et al). Show DOS error codes in decimal instead of hex. Changes in v1.8k (15dec91) ------------------------- Fix shroom's exit code when -v switch used. Was always exiting with ERRORLEVEL 0 when -v was given. (Thanks to user B). Changes in v1.8j (30oct91) ------------------------- Allow tilde in target list to indicate COMSPEC file. Add -o F switch to redirect output to a file. (Thanks to user RE). Changes in v1.8g (14sep91) ------------------------- Use TEMP environment string as default swap file location. Previously we used the current directory. You still use the "-s PATH" switch to override the default. (Thanks to users LC, ML). Start application with full path name, not just command name given (eg. C:\BIN\COOLPROG.EXE, not COOLPROG.EXE). Makes Clipper work (was giving "overlay not found" error). (Thanks to user LM). Make it work better with systems (such as MKS) where / (slash) is the path separator, instead of backslash. Wasn't finding app if it was in same dir as Shroom. Detect and warn user when interrupts used by the application have been changed in the Shell, apparently by unloading a TSR. Improve TSR detection and deciding when to unload it and when not. Changes to interrupt handling to work better with PC NFS and some other software. Fix application startup so it is not fooled by APPEND. If a directory containing app was APPENDED, Shroom would think app was in the current directory. (Thanks to user DG). Add sections on TSR's and reporting bugs to notes. Make -q suppress startup message, too. (For user ML). Show command being passed to app, besides app name (unless -q). If verbose, show exit codes from shells and from app. Also if verbose, show swap file location at startup. Changes in v1.7d (14aug91) -------------------------- Fix problem with -z # switch when comline is not empty. Was overwriting existing comline instead of inserting in front of it. (Thanks to user LH). Changes in v1.7b (6aug91) -------------------------- Fix problem with Fortran programs. Was causing "Floating point not loaded" error at application load time. Hey, don't blame me, the bug is in the Fortran startup code! (Thanks to users RS and DF). Disable control-C during swapping. Would cause system hang and other strange behavior (especially by the user!). Bring back group shareware registration, by popular demand. Changes in v1.6d (21jul91) -------------------------- Fix state saving and restoring to work better with other TSR's. With a few TSR's, system would reliably hang when you exited the application back to DOS, if a shroom swap occurred in the application. (Thanks to user ML) Changes in v1.6c (22jun91) -------------------------- Get default target list from the COMSPEC environment string. So, if you use a shell other than COMMAND.COM, Shroom will automatically recognize it. (Thanks to user MB) Fix problem in 1.6b, where swapping may have not been done with some applications. Was failing to handle lowercase shell names correctly. Changes in v1.6b (14jun91) -------------------------- Only swap out specified shell programs. Default list is COMMAND.COM. Add -t switch to specify others. (Thanks to user LH) Add -z switch to allow increasing the environment space of COMMAND.COM. (Thanks to user DM) The -v switch as part of its verbosity shows the shell program being executed and its command line. Changes in v1.5d (3may91) -------------------------- Search for the application in Shroom's home directory, too. (Thanks to user CS) Changes in v1.5c (26apr91) -------------------------- Fix a bug in 1.5b, when checking for unswappable blocks. Caused some applications to swap zero bytes. (Thanks to user JG) Mention CompuServe home library in license. Changes in v1.5b (29mar91) -------------------------- Fix a bug in swapping. Leave alone any high blocks that are allocated by TSR's. This caused shells to hang when Shroom was used with some software (such as QCache). (Thanks to user RM) Changes in v1.5a (24mar91) -------------------------- Add -q switch for quiet mode. Suppresses the "SHROOM: swapping..." messages but still lets error messages through. Add -p switch to force partial swaps. If Shroom is unable to swap all of the application out, it normally asks you whether you want to proceed with the shell or return to the application. With the -p switch, it always proceeds with the shell without asking you. Add -e errorlevel switch to allow you to specify the exit value returned by Shroom if it is unable to load the application. This allows you to choose a value which does not conflict with those returned by your other applications. This feature is only useful to those who make serious use of "if ERRORLEVEL..." statements in DOS batch files. (Thanks to user WB) Add -n switch to show program notes, and add more information to the notes. There is now a help screen (-h), a shareware license screen (-l) and a notes screen (-n). Properly delete the temporary swap file when the user aborts the shell on disk full error (ie. when you pick 'A' to return to the application). In previous versions of Shroom, the file was never deleted, thus leaving temporary files with names like "0A982331" lying around. Changes in v1.4d (14mar91) -------------------------- Shroom returns the ERRORLEVEL of the application program which was executed. If the application fails to execute, then Shroom returns an ERRORLEVEL of 2. Previously, Shroom always returned ERRORLEVEL 0 if the application was successfully executed. -end-