Voice of Vision
Volume 2 Number 4 -- October 1994

Voice of Vision is a quarterly newsletter published by GW Micro. 
Subscription information is given at the end of the magazine.

This issue is full of information for you technically-minded
types.  Chris Zenchenko talks about IBM Screen Reader/2, Mike
Lawler discusses Internet access, and Jeff Pledger continues his
series on memory management.

If you aren't technically-minded, don't worry.  Dan Weirich, GW
Micro's electrical engineer, announces Speak-Out and Crista
Shaikh has added some hints of help to any DOS user.

--------------------
IBM Screen Reader/2...A Quick Look by Chris Zenchenko

After reading and hearing many comments about IBM Screen Reader/2
(SR/2), I decided it would be worth a look.  Most frequently I
heard blind users could access Windows programs.  OS/2 is an
operating system that runs programs written for DOS, Windows,
and, of course, OS/2.  You can run programs from a desktop by
selecting icons, or from DOS or Windows programs or prompts. 
Also, you can run programs from the OS/2 prompt.

Now, of course, the real questions:  does it work, and how does
it work?

The first thing is to get OS/2 installed.  IBM says sighted
assistance will be required for this step.  They are not kidding! 
OS/2 boots from disks and if you can't see the screen, you will
never know what the system is prompting for.  It doesn't ask for
the disks in the order you would expect.

Once OS/2 is installed and working, it is time to open the Screen
Reader package.  Inside, you'll find the disks, keypad, cable,
keypad card, cassette tutorial, key reference book in braille,
and a small booklet and tape about Compu-Answer (more about this
last item later.)  You'll notice I said nothing about a manual or
user guide.  That's because it's contained in help folders that
you can reach from the desktop.

IBM suggests you attach an 18-key pad to assist with desktop
functions.  This pad is laid out like a touch-tone phone with two
larger, extra keys on the right.  These are the <HELP> and <STOP>
keys.  You can use your computer keyboard, but Screen Reader
expects you to have the keypad, and doesn't work well without
some configuration if you don't.

On a real IBM, there is a mouse port that will run the keypad,
but all other machines require a card to do the job.  What they
don't tell you is the card requires an interrupt, and IRQ7 is the
only one it will use.  It will not share this IRQ, so if you have
a printer card with a port that uses IRQ7, the keypad won't work. 
After quite a battle, I managed to move my cards and change my
IRQ configuration so the keypad would work.

In the beginning, I couldn't figure out why the keypad didn't
work.  I called IBM, and after trying about fifteen different
toll-free numbers, I learned that IBM doesn't support SR/2.  You
have to call a company called Compu-Answer.  They provide all
help through a one-year contract that's part of your Reader
package.  I wanted to get the keypad working because the tutorial
had to be started with a keypad sequence.

Fast and accurate information came my way from the Compu- Answer
Screen Reader tech, and I was ready to start exploring the Reader
and OS/2.  First, go through the tutorial that comes with the
package.  This tells you the basics, and I do mean basics (I
think reading through the reference book of key sequences told me
more than two sixty-minute tapes.).  Nevertheless, the tutorial
helps you learn how to travel through the desktop and other early
OS/2 menus and concepts.

After completing the tutorial, my next project was to get to DOS
and find out what I could run from OS/2.  I set up my system in
"dual boot" mode. That means I can boot to DOS or OS/2.  I want
to be able to run my standard set of programs no matter what
happens.  The best situation would be to run them from OS/2 by
opening a DOS window.  I tried that, and I got to the DOS prompt.

Guess what.  No speech, at least not without asking for it. 
Screen Reader lets you explore the screen with the keypad. 
Nothing written to the screen is spoken automatically without
setting up autospeaks.  (Autospeaks are like the hyper-active
windows in Vocal-Eyes.)  Autospeaks and viewports (windows) are
part of a profile associated with your current window.  There are
only nine user-defined viewports and nine autospeaks.  The best
way to describe my reaction is to imagine the following normal
situation.

Running Vocal-Eyes, you might want to hear a directory from drive
C:.  You just type "DIR" and Vocal-Eyes does the rest.  You hear
the directory read out followed by the usual C: prompt.  Now try
this in a DOS session with SR/2.  You hear nothing.  That's
right, not word one.  You don't even hear the C: prompt.  The
only way to get this information is to review the screen.

You could set up an autospeak to watch a line and speak a
viewport, but the options are limited.  An autospeak can only
monitor up to eight characters on one line at a time, no matter
what size your viewport is.  You don't have many viewports to
burn, so how do you deal with information like a directory?  You
could just have SR/2 read the whole screen whenever anything on
line 25 changes, but that assumes that you have done enough
commands to put the cursor on line 25.

Through a language called PAL you can program SR/2 to watch for
material on the screen, and even to search for situations that
would call for reading the screen.  PAL is not for beginners, and
even an experienced user would have trouble learning it quickly. 
To program with PAL, you need to know everything about how an
application writes to the screen.  This includes color, font,
location, and likely the text that is expected.

At this point I was unhappy.  Somewhat desperately, I tried
running Vocal-Eyes with my Sounding Board, and it came right up. 
Now I had two readers running at the same time (SR/2 was running
with my external Accent).  With more miscellaneous junk in my
computer, I was able to patch both voices to my stereo
headphones.  I was in business!  One screen reader in each
channel wasn't really a problem, since SR/2 wasn't saying much.

Next, I wanted to use the task-switching and multi-tasking
functions OS/2 provides.  I opened a second DOS session and
loaded Vocal-Eyes.  It didn't work.  It also didn't crash the
system, so I closed the session and went back to the first DOS
session.  There may be ways to improve the situation, and I'll
have to experiment.

All this fun with DOS forced me to think about changing the DOS
settings. These are what OS/2 uses to define what happens with
hardware and software in a session.  For you to understand what I
am about to tell you, you must first understand the desktop and
how one moves around in OS/2.  OS/2 uses a collection of
pushbuttons, checkboxes, radio dials, and all types of
pull/pop/drag menus placed all over the screen.  Some menus
appear only when you're on a certain pushbutton, checkbox, or
radio dial.  If the profile you're using knows about the
possibilities, things are fine.  Movement around the standard
desktop and in the help folders is well handled by SR/2.  Buttons
and icons are spoken when you move to them, and you can ask for a
repeat.

Now for the story, the problem, and the hard truth.  I went to a
pop-up menu that allowed me to find a pushbutton called
 Settings'.  The menu included room for the path and working
directory as well as icon information.  Nothing there about
changing COM ports and other hardware-related settings.  I called
Compu-Answer because I had a friend who insisted that I could
change these things, but I couldn't find any way to do it.  The
answer was that on the right side of the screen are tabs that
change the menu you're working with when you select them.

How could I read the tabs?  The screen viewport didn't include
them and SR/2 said I was set to the full screen.  If I had known
they were there, I could have hit a key sequence on the keypad,
and the focus would have moved to the tabs.  This means I have to
know what's on the screen, and there's no way to know what's on
the screen if it's outside the viewport that SR/2 thinks is the
full screen.

Compu-Answer suggested I find someone with vision who could spend
several days working with me to help me learn when there were
choices that can't be read.  Once I'm aware of the existence of
other choices, I can move the focus and read them just fine. 
Another possibility is to use a key sequence on every screen to
check for menus.  These menus may be different depending on what
icon/pushbutton/radio dial I am currently on.  To explore
completely, I'd have to move to each selection and try the
sequence to find out what happens. Unfortunately, there is more
than one sequence, and the choices and combinations are so vast
that it's hard to comprehend.

SR/2 comes with profiles and information that make it possible to
get started with a graphical user interface (GUI), and with this
in mind, I decided to take a look at Windows.  When you load
OS/2, a special version of Windows is loaded along with DOS and,
of course, the OS/2 system.  The differences between OS/2 Windows
and a regular copy of Windows are transparent; when you select a
Windows program or Windows full-screen you are in Windows as a
sighted user would know it.

The Windows program manager has a profile set up to work with it. 
This means movement from button to button is spoken.  The process
is handled almost as well as the OS/2 desktop, and it would be
hard to tell the difference without the names of the icons.  The
trouble only begins when you try to run a Windows application. 
If there is a profile, or the screen has text that uses
non-graphical fonts and information, you can explore and read the
screen.  Most Windows applications have a graphical screen you
can't read.  Using SR/2's information keys, you can find out if
the screen is a graphical screen and even find out how many
pixels it is from point a to point b.  How helpful this
information is depends on what you know about the program and
screen you're looking at.

The important thing to remember is IBM and the SR/2 group are
only trying to make the basics available.  They provide profiles
for only the most common applications, and the manner in which
you use the product will likely be vastly different from what you
are used to.

As my exploration of SR/2 continues, I am finding it is possible
to learn the basic concepts of a GUI.  I can even click mouse
buttons from my keypad, and the SR/2 support tech says he knows
of users who are doing mouse tracking with SR/2's tracking
features.  There are even a few users doing drawing and Computer-
Aided Design (CAD) with the product.  However, the IBM group that
created SR/2 is not a priority for IBM, and many everyday tasks I
hoped to do are difficult with the current version.  I have been
told I just need to learn to live with the shortcomings of the
product.  It is not designed to do more than make it possible to
use a few of the most common applications.

It's hard to compare this product with DOS screen readers.  This
is a new world, and the standard way we do things in DOS just
doesn't apply to GUIs.  I can say that SR/2 begins to allow us
access to Windows and OS/2.  How useful this access is depends on
what a person has been doing in the past.  For a new user who has
no previous experience and finds the company environment set on
OS/2 or Windows, SR2 offers a way to begin functioning in the
work place.  For an experienced DOS user interested in learning
about graphic systems it provides a good look at OS/2 and
Windows, but the customary functionality of DOS isn't there.

Since SR/2 is not cheap, and the process may require changing
hardware in your computer, you must be really interested in GUIs
or have a valid work-related reason to justify buying this
product.  There is much to be learned, and SR/2 is a leg up in
the direction computing seems to be heading.  However, we may be
facing limits that will take at least one more large leap in
technology before full access for blind users is possible in
these new environments.

--------------------
Memory Management with QEMM by Jeff Pledger

This is a continuation of the articles on memory management and
specifically some parameters for using QEMM386.SYS.  I will
assume that you are currently working with QEMM version 7.03 and
Manifest.  In the last article we used the default settings to
load the QEMM386.SYS program as your memory manager.  Now it is
time to "tweak" it till it hums a very nice tune.

The bare bones minimum device line in your CONFIG.SYS file will
read

DEVICE=C:\QEMM\QEMM386.SYS RAM

This "bare bones" line will make QEMM work with your system, but
now it's time for some real interesting stuff.

The first command parameter you should know about is the "exclude
[x]" parameter.  The command effectively blocks (excludes) QEMM
from using the memory area specified.

To fully understand memory ranges, I should give you a brief
discussion of how memory is mapped in your computer.  The area of
memory we are concerned with in QEMM, is expanded or Upper
memory.  This is the memory area between 640 kb and 1Mb of memory
on your computer (You can view how the memory on your system is
distributed through using the Manifest program and using the set
files I have written for the program.).

Memory is displayed using the hexadecimal numbering scheme.  To
many of you this may sound like "Greek."  If we examine how the
hexadecimal system works in comparison to the decimal system,
things should be clearer.  In the decimal world, numbers as we
know them in our normal activities, there are ten digits
(0,1,2,3,4,5,6,7,8,9).  It is commonly believed that we use "base
ten" because we have ten fingers.  Display of numbers is in
powers of tens.  Single digits are registered in the first place
of the power of ten.  Whenever we count to 10, we carry over a
digit into the next tens place within our numbering scheme.  This
principle can be expanded ad infinitum to however many powers of
10 you wish to carry out.  The number 100 is easily represented
as 1 * 10^2.

Now let's take this discussion to the hexadecimal world.  Instead
of having 10 fingers, through genetic science you now have 16
fingers.   So the powers you use to represent the numbers are in
sixteens instead of  tens.  The numbering scheme is as follows
(0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f).  For the digits 0 through 9
there should be no need for explanation; the value a equates to
the decimal value of 10, b = 11, c=12, d = 13, e = 14, and f =15. 
The decimal number 16 is represented as 10 in hexadecimal
notation.  The rules we used for powers of ten hold true for the
powers of sixteen.  In other words, you would carry digits
(fingers) over to the next place column within the numbering
scheme whenever you reached the maximum number of digits
(fingers) for any given place within the scheme.

With that explanation out of the way, let's now talk about upper
memory mapping.  Upper memory is configured as 384kb of memory
which is broken down further into six 64 kb ranges of memory. 
These 64 kb ranges are denoted with the hexadecimal values of
a000-afff, b000-bfff, c000-cfff, d000-dfff, e000-efff, and
f000-ffff.  Let's examine one range as the numbering is the same
for all ranges.  We will look at the range a000-afff.  Notice
that each digit is represented in hexadecimal format.  You can
further break down this 64 kb range into 16 4 kb ranges, i.e.
a100-a1ff, a200-a2ff, . . . af00-afff.  This numbering scheme is
identical for all of the six ranges.

You use the exclude [x] parameter when there is a memory conflict
between either hardware devices or software programs.  For
example, using the Arkenstone reader for DOS and the Calera
TrueScan card, QEMM required you to exclude a memory range such
as DC00-DEFF, so that QEMM  would not overwrite the memory range
and try to use the memory for other programs.  Other devices
which may need to have memory excluded are LAN (local area
network) cards, floppy device controllers, etc.  But we will get
to that a little later in this article.  To date, I have yet to
have the need for excluding the memory address for a voice
synthesizer, so please keep this in mind.  The syntax for the
exclude parameter is as follows:

exclude [x]=xxxx-yyyy

where xxxx and yyyy is a range of memory specified.

Any parameter viewed within the [] is a shortcut symbol you could
use in place of the parameter word.  Remember, there must be no
spaces either before or after the "=" or in the range specified. 
This parameter considers the range specified unmappable.  "Tack"
it  on to the end of your current device line for QEMM386.SYS in
your CONFIG.SYS file.

The second of the parameters to discuss is the ROM parameter.  I
spoke of this parameter in my two previous articles.  Now, it is
time to address it in more detail.  What the ROM parameter does
is map either all or part of your system ROMS to RAM.  This will
improve the performance of any computer because of the simple
fact that RAM is faster than ROM.  The syntax for using this
parameter is as follows:

ROM=xxxx or ROM=xxxx-yyyy

where xxxx is a specific memory location or xxxx-yyyy is a range
of memory specified.  Either the xxxx or xxxx-yyyy are optional
for the ROM parameter.

Minimally, you should put at least your video ROM into upper
memory since the basic function of a speech access system is to
read the DOS screen buffer and send the information to the voice
synthesizer.  If you can make data appear on the screen faster,
obviously, your speech output will respond in a similar fashion. 
The syntax for using ROM in this instance is:

ROM=C000

If you are going to put all of your ROMS into upper memory, you
can define the range to use or you can let QEMM decide for you. 
The syntax for using this flavor of the ROM parameter is:

ROM=XXXX-YYYY
OR
ROM

When using upper memory to load all of your system ROMS you may
find some difficulty in using this concept on older systems. 
This problem occurs because the older  BIOS were using a timing
algorithm to communicate with the floppy disk drive on your
system.  To explain in layman terms, your disk drive controller
in your system controls not only the hard drive access, but
access to your floppy drives as well.  The problem is that the
floppy disk drive controller used a timing scheme to communicate
with the floppy drive.  Since you now have moved your ROMS,
including the ROMS which control this floppy disk drive, into
RAM, the system is running too fast for the BIOS to catch up. 
Consequently, your system will tell you the error message: 
"Drive door not closed.  abort, retry, fail"

To fix this problem you must locate the 4 kb range where your
floppy disk drive controller is located within your system.  A
hint for you is that it is located somewhere in the F000-FFFF
range of upper memory.  There is no rhyme or reason as to which
4kb memory address range must be excluded, so you will have to
use trial and error.  Another hint for you is that I had the same
problems on both my Gateway 2000 386/25MHz and my Everex 486/33
MHz systems.  The Gateway used Phoenix BIOS while the Everex used
AMI BIOS.  For my Gateway the memory range to exclude was
FE00-FEFF, while on the Everex the range was F800-F8FF.  This is
not to say that all Phoenix and AMI ROMS for the floppy disk
drive controller are located at these addresses; however, you
might try them as a starting point.

The third parameter I will discuss is the use of the Stealth ROM
parameter.  You should only use this parameter if, during QEMM's
optimize process, QEMM could not load all of your TSR and device
drivers high so you are instructed to try to use the Stealth
process to load additional programs high.  QEMM will test your
system for which parameter it can use, either the ST:M or ST:F. 
Let QEMM do this as it knows best which parameter to use.  My
only caution to using this parameter is that you may find your
machine performs more slowly when using it because of the mapping
algorithm QEMM is using.

Well space and time limit me to these parameters so I will leave
you now to work at optimizing your systems to your heart's
content.  Always remember, have a floppy disk which you can boot
your system from just in case you do something that locks your
system up.  The parameters discussed here were available in
earlier versions of QEMM and can be found in the manuals from
Recording for the Blind.

--------------------
GW Micro Announces Internet Access by Mike Lawler

GW Micro is pleased to announce that we now have Internet access. 
We would like to thank the Computer Science Department at Ball
State University for providing our link to the Internet.  We
believe that this service will add yet another layer of support
to the outstanding support system that we have established for
our products and services.  In this article I will outline all of
the Internet services that we offer and describe how they can be
used.  People who subscribe to delphi, CompuServe, America on
line, and Prodigy can also make use of these services.

The Internet, for readers who are not Internet users, is a
world-wide "network" of computers and computer systems.  Many
people have Internet access by virtue of their association with a
university.  Others access it through systems like those listed
above.  Using the Internet, it is possible to communicate with
users anywhere in the world.

Many people have asked us to provide a way for them to retrieve
files from our BBS over the Internet.  We have established a mail
server that will allow you to do this.  A mail server is a
program that will automatically answer requests that are sent to
it.  The address for our mail server is listserv@gwmicro.com. 
You can send commands to this address in the body of a mail
message and the mail server will respond to these commands.  If
you want to know how to use the server send the command help.  If
you want to get an index of the files on our BBS send the command
index.  Finally, if you want to get the latest issue of our news
letter send the command get gwvov.  When the server receives one
of these commands it will send you the information that you have
requested.  If the server doesn't understand your request it will
send you a help message.  This mail server can be used to obtain
any of the files on our BBS through the Internet.  In order to
use this service you will need to have the uudecode program. 
Uuencodeing is a process that converts binary files into a format
that can be sent over the Internet.  All of the files on our BBS
are in binary format so they must be uuencoded before they can be
sent over the Internet.  Most Internet sites have uudecode
programs to decode these files.  The uudecode program is also
available for PC's.  If you need this program feel free to
download it from our BBS.

Another Internet service that we have implemented is the GW Micro
mailing list.  We established this list for people to discuss GW
Micro related issues.  Some example topics would be articles in
this newsletter or Vocal-Eyes-related questions.  The address to
use when sending messages to the mailing list is
gw-info@gwmicro.com.  To subscribe to the list send a message to
listserv@gwmicro.com with the command subscribe gw-info and your
real name in the body of the message.  For example if I were
going to subscribe to the list I would send a message to
listserv@gwmicro.com.  This message would contain the command

subscribe gw-info Mike Lawler

We hope that you find these services useful.  Here is a list of
all of the Internet addresses at GW Micro.

Doug Geoffray's personal address geoffray@gwmicro.com
Dan Weirich's personal address dan@gwmicro.com
Crista Shaik's personal address crista@gwmicro.com
Mike Lawler's personal address mdlawler@gwmicro.com
GW Micro support and inquiries support@gwmicro.com
our mail server listserv@gwmicro.com
the gw-info mailing list gw-info@gwmicro.com

--------------------
Speaking Out on Speak-Out by Dan Weirich

Finally!  Speak-Out is alive, well and shipping.  If you've been
waiting, thank you for your patience.  For those who don't know,
Speak-Out is our new, battery-powered, external speech
synthesizer.  Speak-Out is an extremely responsive synthesizer. 
It has both parallel and serial ports, both are always active,
and it uses standard Centronics parallel and 9 pin D serial
connectors-- NO EXPENSIVE SPECIAL CABLES ARE NEEDED.  Since both
parallel and serial ports are active, you can literally connect
Speak-Out to two computers at once.  Or, if you are using a
computer with only one parallel and one serial port, you can
easily transfer Speak-Out from one to the other.

There are no EPROMS in Speak-Out.  We have the capability of
upgrading the text-to-speech software or adding an additional
feature by uploading through the serial port.

It has a rapid charge circuit which allows the batteries in
Speak-Out to be fully recharged in ninety minutes.  Because of
the rapid charge circuit, even a fifteen-minute charge provides
operation for a long time.  In a pinch you can use the 9V battery
adapter to use a standard 9V alkaline battery if you have run the
NiCads down and can't get to an AC outlet easily.

Upon turning on the power switch, Speak-Out announces whether it
is "not charging," "trickle charging," or "rapid charging." 
Therefore, if you plug the charger into an outlet that doesn't
work, Speak-Out can tell you.

The carrying case includes a lower section for the AC
adapter/charger, a disk pocket, a belt clip, a short carrying
strap, and a long carrying strap which can be slung over the
shoulder or worn around the waist "fanny pack" style.

Many of Speak-Out's features are available at the touch of a
button using your computer's keyboard.  The hot keys include
date/time, voice on/off, speech rate up/down, volume up/down,
punctuation, hyperscan on/off, rewind, fastforward,
pause/continue and enable/disable hot keys.

In addition, Speak-Out has four small round buttons in the center
of the front panel.  If you press the left button you will hear
the current time.  The up and down buttons activate the rewind
and fastforward feature.  You do not have to purchase any
optional devices to use rewind and fastforward.  Finally, if you
press the key on the right you will enter the menus.

The menus allow a large variety of settings and configurations. 
Two interesting settings are those for alarms and timers.  The
twenty-six alarms can be set to go off at specific times and
dates and even tell you messages such as "Send aunt Mary an
anniversary card".  You can even have a message such as "Take
your vitamin pills" spoken daily.  The timer feature is designed
for a more short-term event.  Suppose you want to know when
forty-five minutes have elapsed in order to attend a meeting--
Speak-Out can tell you just that.

Speak-Out supports an exception dictionary so that you may
customize the pronunciation of certain words.  This dictionary is
then stored within Speak-Out, as is the text-to-speech software,
and travels wherever it goes.

I've tried to be both brief and complete at the same time (which
is impossible, I know).  I've tried to list some of Speak-Out's
most important features.  Please give us a call if you want to
learn more.

--------------------
Hints for New Users (and everybody else)

Have you ever wanted to get a list of files without all that
extra information?  Sometimes I'm not interested in the volume
label or the bytes free, I just want to know the file names.

The DOS DIR command has a switch which will do that for you.  Try
this:

DIR /b

Of course, do this when you're at the DOS prompt.  Instead of
getting a list which tells you volume label, serial number,
directory name, list of files with sizes, dates, times, and a
disk space summary at the bottom, you'll get files and directory
names only.  If you like to use the Vocal- Eyes clipboard, you'll
also be pleased to note that file names and extensions are joined
with a period, rather than being separated by one or more spaces. 
You can clip a file name off the screen and put it into another
command instead of having to remember the whole thing or clip the
name and remember the extension.

--------------------
Announcements

If you're a frequent user of our bulletin board, you'll be happy
to know that we have upgraded our modem to a U.S. Robotics
V.everything.  This modem supports speeds up to 28800 BPS with
the V.34 and the VFC protocols.

Have you seen the DECtalk Express from Digital Equipment
Corporation?  It has the same high-quality, human-like speech as
the DECtalk PC, but is housed in a small, external case.  It
connects to the serial port of your PC and runs on AC or its
NiCad batteries.  It's the solution for users who want DECtalk
speech on a computer that won't accommodate a full-length card
such as a notebook or microchannel machine.  Call us for pricing
and details.

--------------------
Subscription Information

Voice of Vision is published four times a year in large print, on
audio cassette, on 5.25- or 3.5-inch PC diskette, and in Braille. 
You can receive a subscription for $10.00 for each format.  VV is
also available on GW Micro's bulletin board at no charge. 
Payment can be made by check, MasterCard, Visa, American Express,
or Discover.  Send checks and format specifications to the
address below.

We seek reader input.  If we use an article you've submitted,
you'll receive a year's subscription at no charge.

Please send articles on IBM compatible diskette or in print to:

     GW Micro, Inc.
     310 Racquet Dr.
     Fort Wayne, IN  46825

If you have any questions or comments, please contact us at:
Voice: (219) 483-3625.
Fax: (219) 482-2492
BBS: (219) 484-0210
Internet: crista@gwmicro.com
