Eric Gans French Department, UCLA Los Angeles CA, 90024 RESPRO.DOC v1.2 03/19/86 Version 1.2: Enabled command-line operation. Fixed bug that allowed loading a second copy of RESPRO. RESPRO now checks specifically for the presence of SideKick; it disables itself if there are over 24 memory-resident programs loaded. Version 1.1: Added "C" command to clear memory, options to change "hot keys." RESPRO now checks for programs removed from memory. Also a few minor changes to handle troublesome cases like Sidekick. * * * If like most DOS users you have filled your RAM with memory resident programs, RESPRO is for you. RESPRO will handle up to 24 memory-resident programs. It allows you to disable and reactivate them at any time, from within any application. You can clear your memory of all resident programs, or remove the last program loaded regardless of what it says in its user manual or DOC file. RESPRO also includes an "uncrash" feature that allows you to exit a hung program under most circumstances without having to reboot your computer. How Do Memory-Resident Programs Work? Memory-resident programs are loaded like any others; they remain resident because DOS allows them to keep the memory originally allocated to them. If you load a series of such programs, they fill your RAM from the bottom up. But residing is only useful if these programs can remain active. They accomplish this by capturing "interrupt vectors" used by various computing activities. Most resident programs look at one or both of the keyboard interrupts (9 and 16h) to see if you have typed the particular combination of characters that triggers their operations. If not, control is passed to the next program down the list, and eventually to the BIOS that prints the character on the screen. How Does RESPRO Work? RESPRO itself operates by capturing interrupt vectors and using its time of control to record information concerning the interrupts used by other memory-resident programs. RESPRO records all changes that follow the loading of new resident programs. This allows it to disable/reactivate memory-resident programs by bypassing/restoring these programs' captured interrupts. RESPRO 1.1+ also checks to see if a memory-resident program has been removed independently of its own operations. If the removed program was not the last loaded, RESPRO gives a warning message when you attempt to use it to disable, activate, or remove other programs. Set-Up and Memory Requirements To use RESPRO effectively, you should load it before any other memory-resident programs (including those that tell you they should be loaded first). RESPRO will only "see" programs loaded after it; it will always appear as #1 on its list of memory- resident programs. RESPRO occupies about 11 K of memory, largely for buffers to hold interrupt data. It requires DOS 2.0 or higher. RESPRO Operation RESPRO is evoked by typing Alt ` (grave accent). (See below for how to change this.) On evocation, and after any command, it displays a list of memory-resident programs, their load addresses and the number of bytes they occupy. The resident command menu permits the following operations: (V)erbose toggle: Entering "v" toggles a mode that displays the interrupts captured by each resident program and their addresses (segment:offset). This is chiefly of use to programmers. (R)emove last: This will remove the last resident program from memory, freeing the memory for other applications. RESPRO will not allow you to perform this operation from within an application that has changed some of the interrupt vectors used in the program(s) you wish to remove, since on exiting these vectors will be reset to locations in the killed program that will eventually be overwritten. (It makes an exception if Sidekick has "recaptured" the interrupt, as it does in certain cases if you load a resident program after it.) Because RESPRO cannot check for the future memory demands of your applications, this command should always be used with caution from within other programs. (C)lear memory: This will remove all memory-resident programs above RESPRO itself. If your current application has reset any interrupt vectors you will be required to exit it before using this command. (D)isable #: Entering "d3" will disable program #3. This operation may be performed without danger at any time, since it does not remove the program from memory. A disabled program will not use processor time or perform any other function. Any program thus disabled can be reactivated with the (A) command. (A)ctivate #: Enter "a3" to reactivate the program you disabled with "d3". This operation too can be performed safely at any time. Type to exit. (No CR is necessary.) If you disable RESPRO it will remain in memory but no longer be operative, and you will no longer be able to call up its screen. This is the one (obvious) exception to the rule that all disabled programs can be reactivated. A few applications (like Xywrite) that capture the keyboard interrupts for themselves will not let you call up RESPRO while they are running. This will not be the case for most word- processors, spreadsheets, database programs, or BASIC. *!*!* Command-line Options *!*!* Version 1.2 allows the use of the D, A, R and C commands from the DOS command line. RESPRO must be already in memory for the switches to function; it cannot be loaded if any switches are included in the command line. The chief value of these options is to allow the use of RESPRO in application-specific batch files. You can choose which resident programs are to be active while running a given application, disable the others, and reactivate them on exit; or you can remove and reload them. Syntax: respro [/?][/r][/c][/d fn.ft][/a fn.ft] [/k][/u] The '/?' switch gives a brief help message and exits the program. The '/r' and '/c' switches perform the same operations (remove last program and clear) as entering 'r' or 'c' from the resident command menu. The disable/ enable functions take a filename rather than a number. The filename must include the extension. The '/k' (formerly 'c') and '/u' switches are used for changing hotkeys (see below). Any combination of switches is allowed on the command line. If you wish to disable or activate several programs, each filename must be preceded by the appropriate switch. Switches will be acted on from left to right. Spaces are recommended for clarity, but no space is allowed between the '/' and the switch letter. NB - The '/c' switch (like the 'c' command) removes all programs above RESPRO. If you want to remove RESPRO as well, enter: respro /c /r To remove the last three resident programs loaded, enter: respro /r /r /r The /k and /u switches are interactive and therefore not suited to automatic batch file operation. Uncrash Feature Since RESPRO keeps interrupt tables, it can handle this function more gracefully than other such programs. If you get caught in an endless loop but your keyboard is still alive, you can exit to DOS or the "parent" process (e.g., DEBUG) by simultaneously pressing the CAPS LOCK and the SCROLL LOCK keys. (This operation is independent of the current status of these keys; see below for how to change them.) We can't absolutely guarantee that everything will be all right on exit, but this procedure may allow you to save files that would otherwise be lost. Changing Hot Keys The key combinations used to evoke RESPRO may be changed by using the following command-line switches: respro /k (formerly 'respro c') will change the keys for normal operation respro /u (formerly 'respro u') will change the keys for "uncrash" operation These switches may be combined with each other and with any of the other command-line switches. Normal operation uses an ASCII key plus a combination of shifts (Ctl, Alt, Lshift, Rshift). The uncrash feature requires a combination of Ins, Caps Lock, Num Lock, Scroll Lock and/or SysReq (for AT users). Hold the shift keys down an instant until the program registers the new values. These changes will be recorded on disk, so RESPRO should be in the current directory when running these commands. They will take effect the next time RESPRO is loaded into memory. RESLOG Compatibility If you use RESLOG along with RESPRO, you should be sure to load RESPRO first. RESLOG will continue to operate even if RESPRO is disabled. I hope you enjoy using RESPRO.