French Department, UCLA
Los Angeles CA, 90024-1550
Fixed bug that corrupted interrupt table when programs
removed themselves from memory.
Extends 22h-24h exception to Clear routine.
Gets filename from environment in DOS 3.x
Remove routine no longer checks interrupts 22h - 24h (reset
by DOS on exit.
Modified dummy interrupt (7F) routine for compatibility with
Word Perfect 5.0; fixed bug in hot-key change routine.
Will remove EXE files using over two segments from memory.
A few minor changes.
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
* * *
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
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 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-
RESPRO occupies about 11 K of memory, largely for buffers to hold
interrupt data. It requires DOS 2.0 or higher.
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
(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
(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.
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 *!*!*
The D, A, R and C commands may be used on 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
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.
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
respro /u (formerly 'respro u') will change the keys for
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.
If you use RESLOG along with RESPRO, you should be sure to load
RESPRO first. RESLOG will continue to operate even if RESPRO is
I hope you enjoy using RESPRO.