Contents of the SINVALID.DOC file
When you run SINVALID.COM ("Say Invalid"), it says the
words "Attention! Invalid input. Please Redo." through the
computer speaker. No extra hardware is required. You can run
this program from DOS, if you like. It is more useful,
however, to run this program from within your own program by
issuing a DOS CALL or SHELL. For example, in BASIC, you would
include the command SHELL "SINVALID" anywhere you wanted the
program to give this error message verbally. This is useful
when you have a program that accepts input from the user, if
some inputs could crash the program. Until now, most programs
simply BEEPed the speaker and displayed a message on the
screen. SINVALID.COM gives your program a more professional
touch, and is somewhat less annoying to most people than the
SINVALID.COM also displays a window in the center of the
screen containing the words "Attention! Invalid input. Please
redo." while the computer is speaking. The window will
disappear after the computer stops speaking, and the original
screen under the window will be restored. If you do not want
SINVALID.COM to display this window, include a slash (/)
followed by NW in your command line that calls SINVALID.COM.
For example, from BASIC you would use the command
SHELL "SINVALID /NW" to prevent SINVALID.COM from displaying
the window. The NW must be capitalized, and must immediately
follow the slash (no spaces).
If you tell SINVALID.COM not to display the window, I
recommend that you have your program display a message on the
screen, in case the computer speaker is broken or has been
disabled in some way. The clarity of the spoken message will
also vary somewhat with the quality of the computer's speaker,
so a visual message is helpful to make sure the user
understands the message.
In order for your program to execute the SHELL "SINVALID"
command, the program SINVALID.COM must be in the current path
so your program can find it. For most compilers, the
COMMAND.COM program must also be available for the SHELL
command to work. That is, you cannot have removed your boot
disk containing COMMAND.COM from the computer.
After SINVALID.COM is run, it displays a shareware notice
on your screen telling you how to register. When you register,
you will receive instructions on how to run SINVALID.COM
without displaying this message.
MRSINV.COM is a memory resident version of SINVALID.COM.
When you run this program, it installs itself in memory and
attaches itself to interrupt 241 (F1H). This is an interrupt
that is not currently being used by any commercial hardware or
software that I know of.
Once you have installed this program, you can cause the
computer to say the error message at any time by calling
interrupt 241. This is handy for assembly language programs,
since they can easily call interrupts. However, almost all
compilers now have some way of calling interrupts, so you can
use this program with most languages. Using the memory
resident version has the advantage that your program does not
have to access the disk once the program is resident. It also
no longer needs to have access to SINVALID.COM or COMMAND.COM
to give the error message.
If you write your program so that it makes a call to
interrupt 241, your must be very careful to make sure that
MRSINV.COM has been installed before your program is run.
Trying to call interrupt 241 without MRSINV.COM installed can
send your computer off to never-never land, forcing you to
reboot. The best way to be safe is to create a batch file that
first loads MRSINV.COM, then runs your program. You can then
give your program file an odd, hard-to-remember name like
KWVDJZP.EXE and the batch file an easy name to type and
remember, to encourage people to use the batch file instead of
running the program directly.
This program also normally displays a window with the
error message in it while it is speaking. To avoid this,
include the /NW switch on the command line when you install
MRSINV. That is, you would type MRSINV /NW at the DOS prompt
to install the program.
If interrupt 241 is not a good interrupt for you to use
for some reason (like someone comes out with a new piece of
hardware that uses it), you can change the interrupt that
MRSINV.COM uses. Interrupts 97 through 102 (61H thorough 66H)
and 241 through 247 (F1H through F7H) are good interrupts to
use. Just put the new interrupt number on the command line
after MRSINV. For example, to have the program use interrupt
242, type MRSINV 242 at the DOS prompt to install MRSINV.COM.
The number of the new interrupt must be the first thing after
the space after MRSINV. If you use the /NW switch, it must
come after the interrupt number, such as MRSINV 242 /NW. The
number MUST be expressed as a decimal number, not a hex number.
You can uninstall MRSINV.COM by typing MRSINV /U at the
DOS prompt (Note: Capital U required). There are a few
restrictions. If you have installed any TSR (memory resident)
programs after MRSINV.COM, these must be uninstalled first. In
general, you must always uninstall TSR programs in the reverse
order that you installed them. If anything should go wrong with
the uninstalling process, the program will display an error
message and suggest that you reboot your system. This is a
very unusual occurrence.
This program also displays the shareware notice when it
speaks the message. The instructions for avoiding this notice
that you get when you register SINVALID.COM also apply to this
To register SINVALID.COM, send $5 to:
4649 Van Kleeck Drive
New Smyrna Beach, FL 32169
Include your address so I can send you the necessary
information on how to run the programs without displaying the
Other voice routines
Leithauser Research will prepare voice routines saying
anything you want (except for profanity, racial or ethnic
slurs, or otherwise offensive material). The charge is $10
for the first phrase and $5 for each additional phrase ordered
at the same time. A phrase is a group of words that are spoken
at one time. For example, you might want your program to say
"Invalid input. Please Redo." if the user inputs unacceptable
input and "File not found. Try another file name." if the user
tried to load a file that does not exist. In this case,
"Invalid input. Please redo." would be one phrase and "File
not found. Try another file name." would be another phrase.
Although phrases can be fairly long, there are some limits.
Don't try to put your entire operating manual into one phrase.
The voice routines can be prepared in one of four ways:
1) You can have individual programs, each of which contains
one phrase. SINVALID.COM is an example of such a program.
2) You can have one program that generates several phrases,
controlled by a command line switch. For example, if the
program is called PHRASE.COM, you could have it say one phrase
by using the command SHELL "PHRASE /1" and another phrase by
using the command SHELL "PHRASE /2". For technical reasons,
there is a limit of eight phrases per program.
3) The programs can be designed to become memory resident,
like MRSINV.COM. A memory resident program can contain up to
eight phrases. You can select which phrase you want the
program to speak by setting the value of AX. If the program
has only one phrase, the value of AX has no effect.
4) For QuickBASIC programmers, I can build the voice modules
directly into your compiled program. When I do this, you do
not need to SHELL out of the program or load memory resident
programs. This eliminates the need to distribute separate
files with your program. It also eliminates the problems
associated with the use of the SHELL command, such as the
need to have COMMAND.COM available. To have voice modules
installed in your QuickBASIC program, send the following to
A) A list of the phrases you want installed in your program.
B) The name you want to give the subprogram within your
program that speaks a particular phrase. You must give a
different subroutine name to each phrase you want the program
C) The source code for your program, saved in the ASCII
format. Include the statement CALL SubroutineName each place
in your program that you want it to speak a certain phrase,
where SubroutineName is the name of the subroutine for a
particular phrase. For example, if you told me you wanted the
program to say "File not found" and that the subroutine for
this phrase should be named FileNotFound, then you would put
CALL FileNotFound anywhere in the program that you want the
program to say this phrase.
D) $10 for the first phrase and an additional $5 for each
additional phrase. A phrase is defined as a collection of
words that are spoken by one subroutine.
I will then create the voice routines, link them with your
program, and send you back the compiled program. I must do the
compiling myself. Source code for the voice routines is not
Other custom programming
In addition to "voicifying" (??) programs, Leithauser
Research also has a complete custom programming service. If
you need an unusual program that you cannot write yourself or
find commercially, write for information to:
4649 Van Kleeck Drive
New Smyrna Beach, FL 32169
For a price quote, include a description of the program
you want written. Once you have purchased a custom program,
you are free to distribute it any way you like.