Cliff High -- Vortex xstream speed reading system

![](0logo.gif) **[rexresearch.com](../index.htm)**
  


---



**Cliff HIGH**

**Speed Reading System**

---

[**http://www.halfpasthuman.com/**](http://www.halfpasthuman.com/)

**Vortex xStream **

Machine Assisted Reading has come to a computer near you.

This software allows humans to read from their computer screens
at **up to 2000 words per minute.**

This is accomplished by allowing the separation of the work
involved in reading.

You set the legibility factors (Font, Size, Color, and Speed of
Delivery), sit back, and then the computer does the display, you
do the absorption.

**\* Word display at up to 2000 words per minute**   
\* Word display in sizes to the limit of the display   
\* Word display in any color combination available on your
display.   
\* Word display in any typeface font available on your computer.
  
\* Extract words from all your other software for reading in
Vortex xStream with 'soft eyes'.

Vortex xStream can be used for:

Reading text from browsers.   
Reading text from email programs.   
Reading text from word processing programs.   
As a form of tele-prompter.   
As a form of text interpreter for the hearing/vision impaired.   
As a form of teaching aid for either groups or individually.   
As a form of reading enhancement tool for those with \*some
reading impairments.

The Vortex xStream software presents one word at a time in the
manner best suited to your reading. Your eyes will do less work,
and more words will get to the mind.

Vortex xStream is a version of our patented (US Pat. 5,873,109)
Machine Assisted Reading Software technology. This version is
entirely focused on delivery of speed.

If you need to read vast quantities of text from computers,
this software may be for you.

If you have visual impairments, this software \*may be for you.
Bear in mind that if you cannot operate software within Windows,
you will not be able to operate this software without
assistance.

(This product runs on Microsoft Windows XP, 2000, NT, ME and
98)

Vortex xStream has been used in : Government ... Teaching ...
Spies (CIA) ... Business ...Schools ... Medicine ... legal
reading ... script reading ... debugging computer code

To purchase Vortex xStream via Paypal for $30 US Dollars, go to
:

**http://payloadz.com/go/sip?id=78724**

You will be emailed a secure site for download of the software
with an access number which is good for 48 hours.

To purchase Vortex xStream via check or money order,   
\*with delivery via email attachment\*, send check/money order
payable to: **Tenax SE**   
in the amount of **$30 US Dollars** along with the email
address where you wish delivery to:

**VxStream**   
**4305 Biscay St NW**   
**Olympia WA 98502 USA**

---



**US Patent #  5,873,109**   
**Device and Method for Displaying Text of an
Electronic Document on a Screen in Real Time**

February 16, 1999

**Abstract** -- A device for displaying the text of an
electronic document on a screen one word at a time. The display
device includes a processor for storing the electronic document;
a one-word display for sequentially displaying only one word of
the document at a given time; and a user control for allowing
the user to control, in real time, the legibility
characteristics such as color, font size and display speed. The
device allows display speeds in excess of 3,000 words per minute
to be achieved while at the same time allowing the user to alter
or modify the legibility characteristics of the displayed words
without the need for interrupting the display of words.   
Inventors:  High; Clifford R. (Olympia, WA)   
Appl. No.:  08/657,212   
Filed:  June 3, 1996

Current U.S. Class:  715/243   
Current International Class:  G09G 5/34 (20060101); G06F
017/30 ()   
Field of Search:  345/471 707/507,517   
References Cited [Referenced By]   
U.S. Patent Documents

3579196 May 1971 Gregg   
3611301 October 1971 Parks   
5147205 September 1992 Gross et al.   
5233334 August 1993 Takebe et al.   
5566289 October 1996 Ikeo et al.

**Description**

**BACKGROUND OF THE INVENTION**

The present invention relates to a device and method for
displaying text on a screen. More particularly, the present
invention relates to a device and method for displaying the text
of an electronic document on a screen for reading by a user in
real time.

Present-day computer monitors are generally configured to
present textual information in a manner that replicates the
central features of the more traditional form of communicating
by way of the printed word on paper. For example, in many cases,
when reading an electronic document on a computer screen, the
information is generally presented in a fashion intended to
resemble the reading of a page of a book, report or other
printed document. Although there are some similarities between
printed and electronically-displayed documents, there are many
differences.

In traditional documents printed on paper, the storage media
for the document is the text inscribed or written on the
reflective surface of the paper. The storage media--the
paper--also serves as the display media. In other words, writing
the textual information onto the paper simultaneously imparts
and fixes the display characteristics of the document to be
presented to a subsequent reader. Accordingly, the legibility of
the text is fixed by the author or printing process at the time
the text is written onto the paper. In the case of paper
documents, the author/printer of the document (and not the
reader) has complete control over the display characteristics of
the text (i.e., the legibility). In other words, the page
layout, the font type, size and other legibility characteristics
of the document cannot be altered by the ultimate reader of the
text. In addition, each reader of the text is confronted with
the same display which cannot be tailored or optimized to his or
her personal preferences.

In contrast, in the case of electronic documents displayed on a
computer screen, the legibility of the text is separated both
logically and functionally from the storage media. In other
words, the legibility is no longer controlled by the original
author of the document, but by some outside source or other
factors. Although the user of a computer or other electronic
system generally has some degree of control over the display of
the text, such systems can place several obstacles in front of
the person who desires to read the text of an electronic
document in a manner most convenient for that person.

In particular, a computer monitor itself can create problems in
reading an electronic document. These problems can include poor
edge and character contrast of the displayed text, a display
surface which is not flat in the case of CRT screens, font types
and sizes which are translations of fonts initially designed and
optimized for reading from a reflected surface such as paper but
not an irradiated one as in the case of computer monitors.
Additional problems in reading text from computer monitors arise
due to the height to width ratio of the monitor. For printed
documents, the height of the document is generally the larger of
the two dimensions. In the case of computer monitors, the
inverse is usually true: the width (and not the height) of the
monitor is generally the larger of the two dimensions. While
these problems cannot normally be addressed unless the monitor
is redesigned, their negative impact on legibility can be
magnified by the software programs being used to control the
monitor.

Methods of presenting text to computer monitors by software
generally fall into two basic approaches: character-based and
graphical user interface-based, the later of which is more
widely used in present-day computer monitors. Graphical user
interfaces present further obstacles to legibility in displaying
electronic documents on a computer monitor. Such graphical user
interfaces frequently will provide color and shading in an
attempt to present the reader with the illusion of a
multidimensional space as encountered when reading text on a
printed page. However, that illusion is not perfect.

This multidimensional space is typically presented to the user
as though the surface is that of one or more sheets of paper on
a desktop. This presentation is generally intended to "trick"
the user into believing the text is being displayed on a printed
page. The actual surface is an electrically charged chemical
applied to the opposite side of a sheet of glass. Though the use
of shading and other techniques does present a credible version
of a multiple dimensional reality, the fact that it is an
illusion being projected on the far side of the screen is always
readily apparent through the glare of ambient light on the
actual glass surface. This duality of reflected versus projected
light on the screen significantly impairs the legibility of the
text displayed through this illusion. A demonstration of the
significance of this problem is the size of the industry devoted
to the manufacture of glare shields and guards for computer
monitors. The primary impact of this problem on the user is most
evident when attempting to read for comprehension of non-trivial
information from a large body of text.

Further complicating and degrading the legibility of graphical
user interface-based displays is relates to a fundamental
assumption upon which such interfaces are built: that the final
product of the electronic document will be a version printed to
paper. This is a key factor affecting legibility as it clearly
places the emphasis on a printed version of the material. In
this sense, the computer industry has focused on the legibility
factors affecting the memorialization of a document after it has
been printed on paper and generally not on legibility factors
affecting the presentation of the text on the computer monitor
itself. The computer monitor in this sense has been considered
merely a place to manipulate the text of an electronic document
for final printout to paper.

Accordingly, computer monitors generally target their font type
and size to the final document printed on paper. True font sizes
and typeface reproduction are not created on the monitor but
rather only after printing on the printed paper. The screen
representations of the typeface are generally not "to scale" but
are intended to mock-up the printed output within the framework
of the computer monitor's height to width aspect ratio. This
mock-up generally uses a translation algorithm which alters all
aspects of the displayed text including perceived character
height, the line spacing and the aspect ratio of the typeface
ascendants and descendants. This is done to make the characters
look as near as possible like the paper-printed copy. In fact,
this philosophy of software design is widely touted as WYSIWYG
("What You See Is What You Get"). In fact, some manufacturers of
graphical user interface displays even employ claims of
"accurate" reproduction of paper and page displays as selling
points for their respective products.

Further problems with reading text from computer monitors are
presented by the software being used by the computer at the
so-called "application" level. Programs such as word processors,
spreadsheets, or database management software, or project
management software, or electronic mail are focused on the
creation of text, or its retrieval for editing rather than its
presentation for display on the computer monitor. These programs
have generally adopted a "page" format. This is to say that
these programs present their displays as though they were
printing the information on a sheet of paper pasted to the
inside of the computer monitor. In using this page paradigm on
today's computer monitors, software programs typically provide
some form of scrolling to access the hidden parts of the text of
a page that cannot be shown on the screen due to the size
limitations forced on the display by the aspect ratio of the
monitor. This scrolling (either in the horizontal or vertical
directions) can place serious constraints on the reader's access
to the text by imposing delays as the chosen part of the page is
scrolled into view. Further reading speed and comprehension
problems can be caused by the shift in focus to the control
mechanisms of the software rather than reading the displayed
text.

The overall effect of all of the above problems on the final
legibility of displayed text is that the average reading speed
of the user will be slower in reading an electronic document
than reading a printed document. In addition, the comprehension
level of the reader will be lower than when reading the
corresponding material from paper. There will also be more
physical energy expended by the reader in reading from the
computer screen. Further effects include a rise in eye, neck and
facial muscle tension as the reader attempts to compensate for
the poor presentation and legibility of the electronic document.

The conventional display of electronic documents on a computer
monitor also presents severe obstacles to readers with
disabilities, either perceptual, cognitive or physical. In the
case of a reader who is paralyzed, the energy required to
manipulate the complex scrolling involved is often debilitating.
Additionally, persons with visual impairments will have
difficulty in customizing the display of traditional software
programs to a level that is legible to that particular person.
And as font size is increased in displaying electronic
documents, the reading speed generally decreases due to the
increased intrusion of complex scrolling.

In addition to the above, the display of text on computer
monitors can present some obstacles to effective reading in
areas such as manufacturing sites where the environment can be
considered dirty for reading purposes. This would include any
site with local pollution to the point that general atmospheric
refraction of light is increased above an acceptable level to
make it difficult to discern the text on a screen, or where
particulate material accumulates on a screen to a level of
obscuring too many pixels.

In order to address some of the above problems associated with
the display of text from an electronic document on a screen,
there has been a prior attempt to fundamentally alter the manner
in which the text is displayed. In particular, a method has been
proposed whereby the text of an electronic document is displayed
on a computer monitor one word at a time. A microprocessor is
used to automatically and sequentially update the one-word
screen with the next word in the document so that the user would
not be distracted with scrolling. This method would allow the
user to pay full attention to the words being displayed on the
one-word monitor.

A problem encountered with the above proposed method for
displaying text is that with today's conventional desk- and
lap-top computer systems, the interaction of the operating
software with the computer hardware was such that real-time
control of the display process could not achieved efficiently.
In particular, since conventional software control of desk- and
lap-top computers is achieved using sequential processing, the
computer monitor could not be updated fast enough, without
interruption at high display speeds, if it was desired to be
able to allow the reader of the document to simultaneously
control the legibility characteristics of the text (i.e., font
type, size, color, display speed, etc.). As this inventor has
now determined, as will be explained below, this deficiency of
the prior art was due to the fact that in order for such a
system to work, the microprocessor must perform three separate
functions simultaneously: (1) it must continuously read into
memory the relevant portions of the subject document from a
storage device, (2) it must constantly update the one-word
screen with the next word in the document, and (3) it must react
to and keep track of a user's desired legibility characteristics
entered through a keyboard.

Using conventional software control of today's desk- and
lap-top computers, the prior art could not provide a display
device that was capable of uninterrupted, one-word display of an
electronic document while at the same time being able to allow
the reader of the document to simultaneously control the
legibility characteristics of the text in real time.

In light of the above, it would be desirable to be able to
provide a device and method for the efficient and convenient
display of the text of an electronic document on a screen one
word at a time.

It would also be desirable to be able to provide a device and
method for uninterrupted, one-word display of an electronic
document being able to allow the reader of the document to
simultaneously control the legibility characteristics of the
text in real time.

It would further be desirable to be able to provide a device
and method for displaying the text of an electronic document one
word at a time using a low-cost processor for controlling the
reading and displaying of the document.

**SUMMARY OF THE INVENTION**

It is an object of this invention to provide a device and
method for the efficient and convenient display of the text of
an electronic document on a screen one word at a time.

It is also an object of this invention to provide a device and
method for uninterrupted, one-word display of an electronic
document being able to allow the reader of the document to
simultaneously control the legibility characteristics of the
text in real time.

It is a further object of this invention to provide a device
and method for displaying the text of an electronic document one
word at a time using a low-cost processor for controlling the
reading and displaying of the document.

In accordance with the present invention there is provided a
device for displaying the text of an electronic document on a
screen. The display device includes: (1) a processor having a
first input adapted to be coupled to a storage device for
storing the electronic document; (2) a screen coupled to the
processor for sequentially displaying one word of the document
at a time; and (3) a user control coupled to the processor for
allowing the user to control the legibility of the displayed
words in real time.

The present invention also includes a method for displaying the
text of an electronic document on a screen comprising the steps
of: (a) electronically reading the document stored on a storage
device; (b) sequentially displaying one word of the document at
a time on the screen; and (c) altering the legibility of the
displayed words in real time without substantial interruption of
step (b).

**BRIEF DESCRIPTION OF THE DRAWINGS**

The above and other objects and advantages of the invention
will be apparent upon consideration of the following detailed
description, taken in conjunction with the accompanying
drawings, in which like-reference numerals refer to like-parts
throughout, and in which:

**FIG. 1** is a schematic block diagram of a display device
in accordance with the present invention;

![](fig1.jpg)

**FIG. 2** a schematic block diagram illustrating a
preferred embodiment of he display device of FIG. 1;

![](fig2.jpg)

**FIG. 3** is an exemplary logic diagram for the preferred
embodiment of the method of the present invention;

![](fig3.jpg)

**FIG. 4A** is an exemplary illustration showing a first
embodiment of the method for displaying a word of an electronic
document in accordance with the word-shifting process of the
present invention;

![](fig4a.jpg)

**FIG. 4B** is an exemplary flow diagram for the method of
the present invention illustrated in FIG. 4A;

![](fig4b.jpg)

**FIG. 5** is an illustration showing a second embodiment of
the method for displaying a word of an electronic document in
accordance with the word-shading process of the present
invention;

![](fig5.jpg)

**FIG. 6** is an exemplary flow diagram for a third
embodiment of the method for displaying a word of an electronic
document on a color screen in a "banded" format in accordance
with the present invention;

![](fig6.jpg)

**FIG. 7A** is an exemplary flow diagram of one embodiment
of the present invention for positioning the words of a given
font size of an electronic document within a display of a given
height;

![](fig7a.jpg)

**FIG. 7B** is an illustration showing an embodiment of the
method of FIG. 7A; and

![](fig7b.jpg)

**FIG. 8** is an exemplary logic diagram for the preferred
embodiment of the legibility process in accordance with the
present invention.

![](fig8.jpg)

**DETAILED DESCRIPTION OF THE INVENTION**

FIG. 1 is a schematic block diagram of a display device in
accordance with the present invention. Display device 10
includes processor 12, screen 14, storage device 16, real-time
user control 18 and works as follows. Processor 12 includes an
input 12A coupled to storage device 16 which contains an
electronic document to be (1) read by processor 12 and (2)
subsequently displayed on screen 14. In accordance with the
present invention, screen 14 is adapted to display only a single
word of the electronic document at a time. Processor 12
continuously controls screen 14 so that each word contained in
the electronic document stored in storage device 16 is
sequentially displayed on screen 14 so that a user can
continuously read the document under real time control.
Specifically, real-time user control 18 allows the user to
control the display or legibility characteristics of the text
being displayed on screen 14 so as to allow the user to adjust
such characteristics in real time to his or her own personal
specifications. In accordance with the present invention,
processor 12 is constructed so that an adjustment of user
control 18 by the user does not substantially interrupt the
display of words on screen 14 by processor 12. Accordingly, a
user can simultaneously enjoy uninterrupted reading of the words
being displayed on screen 14 and the ability to control the
display or legibility characteristics of those words in real
time so as to facilitate efficient reading of the text being
displayed.

FIG. 2 a schematic block diagram illustrating a preferred
embodiment of the display device of FIG. 1. In particular,
processor 12 includes two logically separated control units 22
and 24 for allowing the display device to simultaneously display
words on screen 14 without substantial real time interruption
when a user desires to alter the legibility characteristics of
the words being displayed through real-time user control 18.
Control unit 22 is a legibility control having an input 22A
coupled to user control 18 for receiving instructions from a
user on desired legibility parameters to be discussed in more
detail below. Control unit 24 is a reading/display control
having an input 12A coupled to storage device 16 for receiving
an electronic document to be displayed one word at a time on
screen 14. Reading/display control 24 also includes a terminal
24A coupled to screen 14 for displaying the words of the
electronic document.

In accordance with the present invention, the devices
illustrated in FIGS. 1 and 2 can be conventional desk- or
lap-top computers if the microprocessors of those computers
(e.g., Intel 386, 486, Pentium or other similar microprocessors)
are programmed in accordance with the method of the present
invention. In such an embodiment, single-word screen 14 would
comprise a computer monitor and real-time user control 18 would
comprise a keyboard or pointing device (e.g., a mouse).

FIG. 3 is an exemplary logic diagram for the preferred
embodiment of the method of the present invention. Method 30
includes three processes 32, 33 and 34 (to be discussed in more
detail below) which simultaneously execute, in a parallel
fashion, separate goals for controlling the display device of
the present invention. In general, method 30 works as follows.

Method 30 begins at test 31 where it is determined whether or
not the user has requested the process to begin. If not, the
method repeats test 31. If yes, the method simultaneously
proceeds to processes 34, 36 and 38 under multi-threaded
operation as discussed below. Reading process 34, displaying
process 36 and legibility process 38 are coupled through
inter-process communication 32 but are responsible for the
following separate functions. Reading process 34 performs the
task of reading from the storage device (or memory) the relevant
portions of the electronic document stored for subsequent
display on the one-word screen. While the display device is
activated for displaying, loop 34A of reading process 32
guarantees that the device is reading the electronic document
from memory as appropriate. In accordance with the present
invention, reading process 32 is able to directly read the
electronic document from the storage device (or memory), in real
time, without the need for first converting the document into a
second document or file before its displayed.

Displaying process 36 performs the task of displaying one word
at a time the appropriate word of the electronic document. While
the display device is activated, loop 36A guarantees that the
device is displaying the relevant word under the legibility
characteristics chosen by the user via the real-time user
control discussed above. Displaying process 36 receives the word
to be displayed from the reading process 34 via inter-process
communication 38 which links reading process 34 and displaying
process 36.

Legibility process 38 performs the task of monitoring the
real-time user control so the user can alter the legibility
characteristics of the displayed words in real time as
appropriate. This agent is responsible for controlling
characteristics such as the font type, size, color, display
speed and other characteristics to be discussed in more detail
below.

In contrast to conventional programming of processors using
so-called sequential processes, the method of the present
invention uses processes which operate in parallel so that the
display device can be efficiently controlled without the need
for interruption in order to alter the legibility
characteristics of the displayed text. As will be apparent to
those of ordinary skill in the art, reading process 34,
displaying process 36 and legibility process 38 can be
implemented using a variety of programming languages (e.g.,
procedural languages such as COBOL, C, PASCAL and FORTRAN or
declarative languages such as PROLOG, LISP and POPlog). As will
be discussed in more detail below, the preferred programming
language for implementing method 30 of the present invention is
through a language which inherently provides backward chaining
processes (e.g., repeat-fail loops) such as those provided in
the PROLOG language.

FIG. 4A is an exemplary illustration showing a first embodiment
of the method for displaying a single word of an electronic
document on a screen in accordance with the present invention.
As illustrated, each individual word of the electronic document
to be read and displayed on the screen preceded (and followed)
by a brief period of a blank or clear screen as shown in periods
I and IV of FIG. 4A, respectively. In particular, for the time
Periods between times t.sub.0 and t.sub.1 (Period I) and after
time t.sub.3 (Period IV: which is a repeat of Period I) the
screen is cleared of any text. In between periods I and IV, the
word to be displayed (in this case "To") is displayed in two
separate and independent manners during periods II and III,
respectively. In particular, for the time period between times
t.sub.1 and t.sub.2 (Period II) the word "To" is displayed for
the first time, whereas at time t.sub.2 (the beginning of Period
III) the word "To" is shifted to the right (in this example) a
predetermined number of pixels (in this example, one pixel).

In accordance with the present invention, the shifting of the
word a predetermined number of pixels during the time in which
the word is displayed on the screen is believed to allow the
user to read the electronic document faster with increased
comprehension of the displayed text due to an increase of the
impact of the displayed word on the user's visual cortex. The
length of Period I is preferably chosen to be in the range from
about 0.0001 second to about 0.005 second which approximately
corresponds to the briefest periods achievable for refreshing
the screens of conventional high and low speed monitors,
respectively. The length of Period II is preferably chosen to be
in the range from about 5 to 10 times the length of Period I
which corresponds to the range from about 0.0005 second to about
0.05 second. The length of Period III is dictated by the user's
selection of the overall word display speed. For example, for
word display speeds of 60 words per minute to 3,000 words per
minute, Period III would range from about slightly below 1
second to about slightly below 0.02 second, respectively. (The
fact that the length of those periods would be "slightly below"
those times is attributable to Periods I and II which must be
added to Period III to obtain the overall word display speed.)
Depending on whether a high or low speed screen is used, or
whether a low or high display speed is desired, the length of
Periods I, II and III must be adjusted accordingly so that the
overall display speed can be achieved.

Although the amount of shift of the word is illustrated in FIG.
4A to be one pixel, other amounts of shift can be employed if
desired (for example, shifting in the range from about 1 to
about 10 pixels). In addition, for languages that read right to
left (as opposed to left to right), the shift is preferably in
the left direction. Also, for languages that read top to bottom,
or bottom to top, the shift is preferably in the down or up
direction, respectively. Furthermore, although the shifting of
each character of the word is illustrated in FIG. 4A as being a
uniform shift of the whole character, this does not have to be
the case. In other words, if desired, only some or a limited
number of the pixels of the character need to be shifted.

FIG. 4B is an exemplary flow diagram for the display method of
the present invention illustrated in FIG. 4A. Method 40 begins
at step 41 where the screen is first cleared. The method then
proceeds to test 42 where it is determined whether or not the
time is equal to time t.sub.1. If not, the method returns to
test 42. If yes, the method proceeds to step 43 where the
relevant word is displayed on the screen. The method then
proceeds to test 44 where it is determined whether or not the
time is equal to time t.sub.2. If not, the method returns to
test 44. If yes, the method proceeds to step 45 where the
displayed word is shifted an appropriate number of pixels on the
screen. The method then proceeds to test 46 where it is
determined whether or not the time is equal to time t.sub.3. If
not, the method returns to test 46. If yes, the method returns
to step 41 where it begins the process over again for the next
word to be displayed.

FIG. 5 is an illustration showing a second embodiment of the
method for displaying a word of an electronic document in
accordance with the present invention. As illustrated, screen 55
displays the word "To" within a 16 by 16 array of pixels. In
accordance with this embodiment of the present invention, each
pixel of the screen can be displayed with a different shading
(or color) represented by a number between the range "0" and
"9." For example, "0" could represent a light shading (e.g.,
white), whereas "9" could represent a dark shading (e.g.,
black), with numbers in between that range representing various
degrees of grey. As illustrated in FIG. 5, the word "To" is
displayed with alternating bands of shadings represented by the
values "9" and "8." In particular, rows 56 of screen 55 are
shaded with a shading having a value "9", whereas rows 57 are
shaded with a shading having a value "8."

In accordance with the present invention, the use of bands of
manipulated shading intensity is believed to allow the user to
read the electronic document faster with increased comprehension
of the displayed text due to an increase of the impact of the
displayed word on the user's visual cortex. Preferably, the
bands of shading are one pixel high for text (characters) read
in a left to right or right to left manner, or one pixel wide
for text (characters) read in a top to bottom or bottom to top
manner. Thicker bands can be used if desired.

In accordance with the present invention, it is preferable that
the "banding" process be employed with a color screen or monitor
similar to those used in present-day desk- or lap-top computer
systems. In particular, it is preferable that a monitor
employing a RED, BLUE, GREEN color trivalence format having
respective red, blue and green colors each capable of being able
to take on color values in a range from "0" to "255." If such a
color monitor is employed, and the user selects one particular
color for the display of the subject text, FIG. 6 is an
exemplary flow diagram of a preferred embodiment of the method
of the present invention for displaying the text in a "banded"
format on such a screen.

Process 60 begins at test 61 where it is determined whether or
not the color that the user has selected the text to be
displayed in (R=R.sub.us ; B=B.sub.us ;G=G.sub.us) is below
neutral grey. In other words, it determines if the color
trivalence (R=R.sub.us ; B=B.sub.us ;G=G.sub.us) is below
(R=192; B=192; G=192) for the exemplary "0" to "255" color
schemes. If yes, the process proceeds to step 63 where the
banded color is set to (R=R.sub.us ; B=B.sub.us +3; G=G.sub.us
+3) so that the blue and green color values are increased by 3
color units. If no, the process proceeds to step 62 where the
banded color is set to (R=R.sub.us -3; B=B.sub.us ;G=G.sub.us)
so the red color value is decreased by 3 color units. In
accordance with the present invention, this approach is used to
harmonize the manipulated color shift in the bands with the
color preference of the user. In particular, those users
selecting a color generally below neutral grey (shading toward
black), can be considered to be expressing a preference for
blue-green and, accordingly, the color of the display in the
banded areas is shifted towards that preference. Conversely,
those users selecting a color generally above neutral grey, can
be considered to be expressing a preference for the red end of
the visible spectrum and, accordingly, the color of the display
in the banded areas is shifted towards that particular
preference. Although it is preferable to shift the color 3 units
in one particular direction in the banded regions, other amounts
of color shift could as well be employed.

Although FIGS. 5 and 6 illustrate only two of many possible
variations of the shading or banding aspect of the present
invention, if desired, other schemes for varying the intensity,
color or shading of the displayed text can be employed. For
example, instead of employing "bands" of intensity shading, one
could just as well use other types of shading that cause the
displayed characters to have the illusion of texture or
variation in aspect (i.e., a variation in the overall look and
feel).

In addition to shifting the displayed word a predetermined
number of pixels (for example, one pixel to the right), and
employing a banded shading pattern within the display, the
present invention also includes a method for positioning a given
word within the display in order to allow the user to modify the
font size for easy and fast reading. In particular, the display
device of the present invention is capable of maintaining a
predetermined amount of "white" space above the displayed word
so as to accommodate an adequate so-called "profile sweep" of
the word during reading. Specifically, if a user desires to
display a word in a font size that is too big for the chosen
display window size, the method of the present invention
positions the word so that the word is shifted down in the
display (as opposed to up). This guarantees that a predetermined
amount of "white" space will exist above the word so that with a
profile sweep of the word during reading by the user, the word
can still be typically recognized. This method is based on the
assumption that it is the top portion of a character that is
more important to recognition than the bottom portion. In other
words, if a given portion of a character must be clipped in
order to fit the character within the display, then it is
preferable to clip the bottom portion (as opposed to top) of the
character.

In accordance with this aspect of the present invention, FIG.
7A is an exemplary flow diagram of one embodiment for
positioning the words of a given font size of an electronic
document within a display of a given height. Process 70 begins
at step 71 where the height H is assigned the value of the
height of the display window size selected by the user in
pixels. The process then proceeds to step 72 where the font
height FH is assigned the value of the height of the tallest
capital letter in pixels for the typeface and font size selected
by the user. The process then proceeds to step 73 where R is
assigned the value of the difference between H and FH. The
process then proceeds to test 74 where it is determined if R is
less than FH/2. If yes, the process proceeds to step 75 where R
is assigned the value FH/2. If no, the process proceeds directly
to step 76 where the top position of the displayed characters TP
is assigned the value R/2. After step 76, the process proceeds
to test 77 where it is determined whether H is less than FH. If
no, the top position of the characters TP is not altered and the
process is completed at step 79. If yes, the process proceeds to
step 78 where the top position of the characters TP is assigned
the value H/3 so as to maintain a "white space" to display
height ratio of 1/3.

FIG. 7B is an illustration showing an embodiment of the method
of FIG. 7A. As shown in FIG. 7B, the letter "T" is displayed at
font sizes F ranging in value from F=4 (display 71) to F=15
(display 83) for a display size height H of 12. As illustrated
in displays 71, 72, 73 and 74 (corresponding to font sizes 4, 5,
6 and 7, respectively), the letter "T" is generally centered in
the display for these font sizes because the amount of "white
space" above the letter is generally adequate to accommodate the
size of the font. For font sizes F=8 to F=12 (corresponding to
displays 75 to 79, respectively), the letter "T" starts out
centered in the display (in display 75), but as the font size
increases, the letter begins to be shifted "down" so as to
provide an adequate amount of "white space" above the letter. In
this particular embodiment, since the down-shifting begins at a
white space to font size ratio of two to eight (see display 75),
it is referred to as an embodiment that obeys a so-called
"two-eights white space" rule. Beginning at F=10 (see display
77), the letter "T" starts to be clipped or cut-off at the
bottom in order to accommodate the desired amount of "white
space" above the letter. For font sizes F=13 through 15
(corresponding to displays 81 to 83, respectively), the display
does not change because once a white space to display height
ratio of one-third is achieved, there is no more need for the
letter "T" to be shifted down in the display.

Although FIGS. 7A and 7B illustrate embodiments of the present
invention that obey a so-called "two-eights white space" rule,
the display device of the present invention could just as well
follow other common white space rules, or a combination of such
rules. For example, if it is desired to generally follow the
"two-eights white space" rule illustrated in FIGS. 7A and 7B,
but to also follow a so-called "three-eights white space" rule
during certain periods when it is determined that there would be
adequate processing time to compute the three-eights rule white
space result, such a process could incorporate the following
additional steps if it is desired. First, the process could
estimate whether or not the size of the difference between the
result achieved using a three-eights rule and two-eights rule
would justify spending the additional processing time
calculating the three-eights rule result. If so, the process
could then determine if the total available white space was such
that if one shifted the letter down in the display (to
accommodate a three-eights white space rule) there would still
be white space present below the letter. If there would not be,
this would mean that the letter is already clipped or cut-off at
the bottom and it would not make a difference whether or not the
three-eights white space result is calculated. If there would be
white space left under the letter, then the process could
proceed to calculating the three-eights white space rule result
and shift the letter down in the display according to that rule.

In addition to the above-described processes of time shifting,
shading and positioning (in the up and down direction) a given
letter within the display, the present invention can also
include a method for placing the displayed word either left or
right-justified or centered within the display as desired by the
user. It is believed that the left-justified method is the
fastest and easiest mode for reading displayed text.

Accordingly, a device and method for displaying the text of an
electronic document one word at a time using a low-cost
processor for controlling the reading and displaying of the
document has been described. In accordance with the preferred
embodiment of the present invention, the device and method is
implemented with a processor programmed in the PROLOG language
or some other equivalent language. PROLOG offers a language
ideally suited to the manipulation of words. This language
provides integral predicates for the manipulation of the
underlying graphical user interface as well as the standard
predicates for manipulation of the processor operating system.
Additionally, it is preferable (although not required) that the
chosen PROLOG implementation: (1) conform to the Edinburgh
standard syntax for the language; (2) be able to present a
program in a compiled form in the native machine code for the
underlying platform; and (3) provide multitasking or
multiprocessing and 32 bit instruction set capability. The
follows describes the PROLOG implementation of the preferred
embodiment of the present invention.

**A. General Description Of The Preferred PROLOG
Implementation**

For the preferred embodiment, a real-time software engine is
employed within the PROLOG language. Specifically, intelligent
agent technology is used to create and maintain a multithreaded
real-time state engine. The program is composed of several
intelligent software agents each with a specific area of
expertise. These agents are able to operate independent of all
other agents. All of these agents have access to a common
database of operational parameters.

These agents employ bidirectional inter-agent communication to
create and control the effect of the real time display within
the graphical user interface. The inter-agent communication
takes place between the specific event or service agents and a
central state controlling agent. Each of the agents is developed
from a common template and then given specific knowledge bases
to manipulate.

Specifically, the engine is composed of the following agents:
(1) Displaying; (2) Reading; (3) Color; (4) Speed; (5) Font; (6)
Preferences; (7) Statistics and (8) Bookmarks. Each agent is
composed of a core reactive predicate for transfer of the
control of program control, and a supporting database of
predicates describing the events and appropriate responses.
Agents (3) through (8) correspond to legibility agents for
legibility process 38 discussed above in connection with FIG. 3.
FIG. 8 is an exemplary logic diagram for this embodiment of the
legibility process in accordance with the present invention.
Process 80 includes color process 81, speed process 82, font
process 83, preferences process 84, statistics process 85 and
bookmark process 86 all of which run simultaneously in
accordance with the process of the present invention and will be
discussed in more detail below.

As discussed above, unlike in conventional so-called sequential
processes, the embodiment does not employ a single message
processing loop waiting to react to a user's input in the form
of key strokes or mouse movements. Rather this embodiment uses
multiple threads of execution, each created during program
initialization. These threads of execution are kept alive for
the duration of the program by the mechanism of backtracking and
the repeat predicate unique to agent technology. The condition
for termination of all of the agents is program closure. Each
agent can be considered to be a single threaded limited state
machine.

The engine of the present embodiment is devoted to real-time
control for the reading experience of the user. This real time
focus is maintained as the design pattern throughout the program
and all agents. Such focus extends to the engine sampling the
operating system for messages or events as it deems appropriate.

**B. Description Of The Preferred PROLOG Intelligent Agents**

Each of the agents in the preferred embodiment of the present
invention is created from the same basic template. Each agent
has at least two states: (1) waiting and (2) reacting. When
reacting to either a user-initiated event or another agent, each
agent uses its unique behavior database which is composed of
predicates unique to its circumstances.

Common to all agents is the "settings" predicate. This
predicate is a knowledge base of word keyed values which reflect
either the current state or parameters of behavior for the
program as a whole. The settings database also contains values
pertinent to each of the individual agents.

Several of the agents have the ability to accept user input
through dialog windows. These windows are presented to the user
and the user preferences are captured when the user accepts or
otherwise closes the dialog window. The agent in charge of the
dialog monitors the dialog for the user's response or other
changes. When these changes occur, the agent then takes the
appropriate action based on its specific behavior database.
These actions may include items connected to the program's
function or appearance, but the majority of the information
captured relates to legibility factors such as color, speed of
display, or typeface. This information may also include actions
to take in response to the content being read by the program.

These dialog agents each have the ability to hide or display
the dialog window in response to user action. Each of the
dialog-based agents knows how to clear and populate its
associated dialog through sampling of the settings database or
their specific behavior predicates. Each of these agents also
knows to record any changes to the dialogs position on the
screen. These changes are maintained in real time within the
settings database.

These dialog agents use the inter-agent communications channel
of the common behavior predicates to provide program control.
These predicates include the settings predicate which uses the
tuple values to provide a search key and the corresponding
value. These values may be of any data type including numeric,
strings, lists or compound types such as PROLOG atomic terms.

These dialog agents use the inter-agent communications channel
of the common behavior predicates to provide the program
interface look. As any aspect of the interface is presented to
the user, it first consults the current information within the
settings knowledge base. Found within this information is a
description of the current state of the program as well as a
history of the previous states within a list. The current state
of the program is used to instantiate the interface to
appropriate visible representations of the state of activity
within the program, e.g., a STOP button or MENU item can be
disabled unless the program is in the READING state. Similarly,
the START button or MENU item is disabled unless the program is
in the READY state.

The following discusses the preferred agents in accordance with
the PROLOG implementation of the present invention.

**1. The Color Agent**

The Color Agent is activated by a user-generated event from the
program menu. This agent uses the settings predicate [i.e.,
settings(current.sub.-- color, [R,G,B,R',G',B'])] to communicate
color changes to the display agent, where the second argument is
a listing of fore and background colors expressed as red, green,
and blue values for each.

This agent activates a dialog for communication with the user.
If the dialog is hidden, it gives it the focus. This dialog
captures the user's preferences for color through either a
selection from a predetermined palette or through custom color
control via a series of slide bar controls, one for each of the
color values for each the foreground and the background.

As with all of the agents in accordance with the present
invention, changes in the color are reflected in real time.
Should the display be active at the time that a color change is
made, the color of the display will change with each incremental
update to any of the color slide controls or via the selection
of a new palette.

The color agent uses the database predicates for retracting and
asserting the new value into the settings database.

**2. The Speed Agent**

The Speed Agent is activated by a user-generated event from the
program menu. This agent uses the settings predicate [i.e.,
settings(current.sub.-- delay, Value)] to communicate the delay
factor to the Display Agent and where Value is an integer value.
The current delay value represents the number of clock ticks to
suspend the display of the current word. This value is derived
by the formula:

WPM=number of words per minute chosen by the user;

standard.sub.-- word.sub.-- display.sub.-- time=time required
to display a six character word in

50 point Times New Roman typeface;

CT (clock ticks)=one minute expressed as clock ticks relative
to the cpu;

SDD (standard display deviation)=WPM \* standard.sub.--
word.sub.-- display.sub.-- time;

XD=CT-SDD;

CD(current delay) =XD/WPM

The above formula allows for speeds as low as one word per
minute and as fast as 3,000 words per minute. The 3,000 words
per minute upper limit is the theoretical maximum speed of
display assuming fast refresh rates on the computer screen.

The Speed Agent captures the chosen number of words per minute
from the speed control slide bar on the speed dialog. The user
may choose to enter a words per minute number into the edit
field on the dialog. This is linked to the speed control slide
bar and keeps it constantly updated. As with all of the agents
in accordance with the present invention, changes are reflected
in real time. Should the display be active at the time that a
speed change is made, the speed of the display will change with
each incremental update to the speed control slide bar.

The speed control agent uses the database predicates for
retracting and asserting the new value into the settings
database.

**3. The Font Agent**

The Font Agent is activated by a user-generated event from the
program menu. This agent uses the SETTINGS predicate to set the
typeface, font size, and position. The Font Agent captures the
user's font preference in the font control dialog where the user
selects the typeface desired from a listbox of fonts registered
with and available to the underlying graphical user interface
operating system. The size is set either through direct entry
into an edit control or through selecting the size from a slide
bar control.

**4. The Preferences Agent**

The Preferences Agent is activated by a user-generated event
from the program menu. This agent uses the dialog to capture the
user input concerning program operation and the level of
reaction to the content to be expressed by the display. This
dialog is composed of grouped series of check boxes to turn
program operations on or off. The various levels of reaction to
content are also activated or declined within the preference
dialog. These preferences are maintained in real time as the
user exercises a choice. These choices are placed in the
settings database through the usual method of retraction and
assertion.

These preferences include the following: (1) save settings on
exit; (2) pause on newline; (3) pause on tab; (4) pause on
period; (5) show new paragraph character on two newlines; (6)
count words displayed; (7) show the statistics in the title.

**5. The Statistics Agent**

The Statistics Agent is activated by a user-generated event
from the program menu. The Statistics Agent knows how to
calculate the various reading statistics for the current
session. It uses the statistics dialog to display the
information calculated and accumulated. The agent uses several
accumulators to maintain the count of the number of words per
minute displayed. These are the actual number of words displayed
as opposed to the user's target word per minute count. The
discrepancy arises in that the speed of display degrades as the
font size increases and/or the number of words whose length
exceeds 6 characters increases. There is also the possibility
that other activities within the computers operating system will
rob the program of processing power required to manipulate the
display at the rate chosen. There is also the possibility that
the graphical display hardware and/or operating system drivers
may not be adequate to the task of the display speed chosen.

**6. The Bookmark Agent**

The Bookmark Agent is activated by a user-generated event from
the program menu. This agent accepts user commands from the
buttons on the dialog. In the case of a new bookmark being
chosen, this agent consults the Reading Agent and determines its
position within the file. This position is then noted as having
a bookmark. If this bookmark falls within a word, that word is
noted in the dialog box along with the positional information.

In the case of a bookmark being selected, the agent informs the
Reading Agent of the new reading position.

**7. The Displaying Agent**

The Display Agent can be considered the main agent in two
senses: first, this agent is responsible for the display of
words within the main program display window; second, this agent
is responsible for the program's menu which is used to activate
the other agents within the program.

The display of the words to the main program display window
uses several different processes to attempt to induce a specific
response from the user and to improve legibility characteristics
within the computer display. These processes where discussed
above in connection with FIGS. 4A, 4B, 5, 6, 7A and 7B.

This agent is responsible for manipulating the common file
dialog for the operating system such that files may be selected
and opened to be read. This agent is preferably not dialog
based, but merely calls for the file dialog services from the
operating system.

This agent is the main recipient of the inter-agent
communication via the SETTINGS predicate. This agent uses the
results of the other agents interaction with the user to display
the words. This agent has control over the main operational
thread and uses the interagent communication to inform other
agents of user commands in connection with the main program
window. In addition, this agent maintains positional knowledge
about the main display window and is the most reactive to
program states. It also has the most interface altering
capability.

Furthermore, this agent is sensitive to user input and has the
knowledge to display the current word to the display window in
the current typeface, font size, and color. This agent
preferably reacts to screen type to optimize the legibility of
the word being displayed.

**9. The Reading Agent**

The Reading Agent has control of the file being read, and the
current database of rules for tokenizing the file into words.
This database includes the database of terminating characters
for the current file type, and the predicates for calculating
and exercising the delay factor for the display. This agent has
the responsibility of calling for the display of the word when a
terminating character is discovered and the appropriate delays
have passed. This agent has responsibility to examine the
content against the rules for display. Should the content have a
match within the rules, this agent is responsible for creating
the desired effect in either timing or appearance.

While the Reading Agent preferably has no direct user
interaction, it is the agent primarily responsible for executing
the program to meet the user's expectations. This agent therefor
only receives communication. The Reading Agent is a real time
software engine. Its tasks are all active software processes and
include file parsing, pattern and rule matching and program
control.

As a software engine, the Reading Agent preferably recognizes
four states which include: (i) ready to read a file; (ii)
reading a file; (iii) transitioning from ready to reading; and
(iv) transitioning from reading to ready. Each of these states
are discussed below.

i. State: Ready To Read A File

In the case of the first state, the next file to read has been
located, opened, and the appropriate filter of predicates and
database has been loaded. The agent then alters the program
interface values in the settings predicate indicating the
current program state.

ii. State: Reading A File

This agent reads through the file by first converting it to the
default input stream then examining it character by character,
matching each against the database of potential word terminating
characters. The agent then alters the program interface values
in the settings predicate indicating the current program state.

If the current character in the stream matches a word
terminating condition, the agent uses the current word as a key
to search the database of content. If the current word is found,
then the associated action is performed. These actions are
listed separately in this document as Display Characteristics:
Actions.

iii. State: Transitioning From Ready To Reading

In transitioning from the ready state to the reading state, the
agent checks the previous state history. If the transition is to
read this file for the first time, then the agent ensures that
any program code required is consulted into memory. This will
include the reading format filter appropriate to the type of
file being read. All predicates related to reading any
previously opened files are first purged from memory. The agent
then alters the program interface values in the settings
predicate indicating the current program state. Garbage
collection is disabled.

iv. State: Transitioning from Reading to Ready

In transitioning from the reading state to the ready state, the
agent first notes the last position in the file, asserting the
information to memory. The agent then alters the program
interface values in the settings predicate indicating the
current program state. The agent also closes all open source or
bookmark files. Any consulted predicates are flushed from the
system. Garbage collection is invoked.

**C. Description Of The Operation Of Preferred PROLOG
Implementation**

The preferred embodiment of the PROLOG implementation is
operated by first invoking the program from the graphical user
interface operating system. The main window is then presented to
the user. At that time the user can invoke the illustrative
actions and commands detailed below.

1. Load

This calls the main Displaying Agent to invoke the operating
systems common file dialog. The file selected by the user is
opened and prepared for reading.

2. Start

Assuming that the Reading Engine is in a state of READY TO
READ, this command starts the Reading Agent from the current
position within the file. The agent then reads the file and
presents each word to the display agent for rendering to the
display window.

3. Stop

Assuming that the reading engine is in the process of reading a
file then choice of this item causes the reading engine to stop
the display of words and transition to a ready to read state.

4. Close

This command causes the program to exit.

5. Speed

The speed command brings the speed dialog to the front of the
screen in its current position and places the focus of the
operating system to this window. The speed control allows for
the adjustment of the speed of display. Alterations in this
dialog are reflected in real time in the main program display if
it is currently active with the display of a file.

6. Font

The font command brings the font dialog to the front of the
screen in its current position and places the focus of the
operating system to this window. The font dialog allows for the
adjustment of the typeface, font size, position (center or left
justified) of display. Alterations in this dialog are reflected
in real time in the main program display if it is currently
active with the display of a file.

7. Color

The color command brings the color control dialog to the front
of the screen in its current position and places the focus of
the operating system to this window. The color dialog allows for
the adjustment of the foreground and background color values of
the display. Alterations in this dialog are reflected in real
time in the main program display if it is currently active with
the display of a file.

8. Preferences

The preferences command brings the preference control dialog to
the front of the screen in its current position and places the
focus of the operating system to this window. The preference
dialog allows for the adjustment of the user preferences for
program operation. This includes the reactive nature of the
program, such as extra delays and extended punctuation.
Alterations in this dialog are reflected in real time in the
main program display if it is currently active with the display
of a file.

9. Bookmark

The bookmark command brings the bookmark control dialog to the
front of the screen in its current position and places the focus
of the operating system to this window. This dialog accepts user
input to create a bookmark in real time as the text streams
through the display. This bookmark is created in memory and
saved to storage if required by user preference.

10. Resize

The resize command allows the user to configure the screen to
their individual requirements. The user is able to reshape the
screen using the standard conventions of the operating system
upon which it operates. The screen will resize and the display
agent will accommodate by maintaining the proportionally
required white space above the word.

**D. Logic Flow Of The Preferred PROLOG Implementation**

Although the PROLOG agents of present invention can be
implemented using a wide variety of programming instructions and
procedures, the following is a description of the logic flow for
the preferred embodiment in accordance with the present
invention. It will be apparent to those of ordinary skill in the
art that, if desired, other forms of logic flow may also be
employed to implement the method of the present invention.

1. Displaying Agent

start.sub.-- display:

consult settings knowledge base,

create display window to current size and position settings.

size.sub.-- display:

apply formulas for maintaining white space to top margin
values,

alter settings knowledge base to reflect the current size of
the display window, alter settings knowledge base to reflect the
new top margin values.

display.sub.-- word:

consult the current word database,

consult the settings knowledge base for current values for
window size,

consult the settings knowledge base for current values for font
size,

consult the settings knowledge base for current values for
typeface,

consult the settings knowledge base for current values for
horizontal alignment,

consult the settings knowledge base for current values for top
margin,

write blank screen,

display current word to current legibility values,

calculate shifted values for display,

display word to shifted values.

message.sub.-- handler(menu):

inform appropriate agent that it is being called through the
inter-agent

communications.

message.sub.-- handler(menu, load):

call common file dialog,

open the chosen file(s),

call reading agent.

message.sub.-- handler(resize):

size.sub.-- display.

2. Reading Agent

start.sub.-- reading:

determine file type,

load appropriate file filter,

fail.

start.sub.-- reading:

set file to input stream,

consult file position carrier,

set state to reading,

repeat,

read.sub.-- stream,

at end of file or stopped working state,

reset input stream,

close file,

reset state to waiting.

read.sub.-- stream:

repeat,

consult stream position carrier,

set stream pointer to current stream position,

read tokens from stream,

set stream position carrier to new position,

match.sub.-- for.sub.-- terminator(token),

at end of stream or stopped working state.

match.sub.-- for.sub.-- terminator(token):

token equals terminator,

check word for reaction,

display word,

clean current word database from memory,

delay to current value.

match.sub.-- for.sub.-- terminator(token):

check token for reaction,

call reaction predicate.

match.sub.-- for.sub.-- terminator(token):

token does not match,

add token to developing word.

reaction (token, reaction).

3. Speed Agent

start.sub.-- speed:

instance flag is null,

instantiate instance flag,

attach agent to speed dialog,

set.sub.-- speed.

start.sub.-- speed:

instance flag is positive,

set focus to speed dialog (make visible if required),

set.sub.-- speed.

start.sub.-- speed.

speed.sub.-- it:

does the window exist already,

!,

show dialog,

set focus.

speed.sub.-- it:

create the speed dialog,

create an edit field,

create a slider control with range 1 to 3000,

create close button,

set.sub.-- speed.

set.sub.-- speed:

consult the settings knowledge base,

determine current speed,

set slider to speed value,

set edit field to reflect the current speed.

message handler (on focus):

set.sub.-- speed,!.

message handler (close):

hide dialog,

release focus.

message handler (slider change):

alter settings value to reflect the change in the user option.

message handler (edit change):

alter settings value to reflect the change in the user option.

4. Font Agent

start.sub.-- font:

instance flag is null,

instantiate instance flag,

attach agent to font dialog,

set font.

start.sub.-- font:

instance flag is positive,

set focus to font dialog (make visible if required),

set.sub.-- font.

start.sub.-- font.

font.sub.-- it:

does the window exist already,

!,

show dialog,

set focus.

font.sub.-- it:

create the font dialog,

create a listbox,

create an edit field,

create a slider control with range 8 to 240,

create close button,

set.sub.-- font.

set.sub.-- font:

query operating system for list of available fonts,

populate listbox,

fail.

set.sub.-- font:

consult the settings knowledge base,

determine current font,

highlight current font in listbox,

fail.

set.sub.-- font:

consult the settings knowledge base,

determine current font size,

set slider to size value,

set edit field to reflect the current size.

set.sub.-- font.

message handler (on focus):

set-font,!.

message handler (close):

hide dialog,

release focus.

message handler (slider change):

alter settings value to reflect the change in the user option.

message handler (edit change):

alter settings value to reflect the change in the user option.

message handler (listbox selection):

alter settings value to reflect the change in the user option.

5. Color Agent

start.sub.-- color:

instance flag is null,

instantiate instance flag,

attach agent to color dialog,

set.sub.-- color.

start.sub.-- color:

instance flag is positive,

set focus to color dialog (make visible if required),

set color.

start.sub.-- color.

color.sub.-- it:

does the window exist already,

!,

show dialog,

set focus.

color.sub.-- it:

create the color dialog,

create 6 slide bars with range from 0 to 255,

create 6 edit fields,

create palette selection of sample color combinations,

create close button,

set.sub.-- color.

set.sub.-- color:

consult the settings knowledge base,

set each of the sliders to represent one of the six
Red/Green/Blue values for the

foreground and background colors,

set each of the six edit field to the numeric value of one of
the RGB values.

message handler (on focus):

set.sub.-- color,!.

message handler (close):

hide dialog,

release focus.

message handler (slider change):

alter settings value to reflect the change in the user option.

message handler (edit change):

alter settings value to reflect the change in the user option.

message handler (palette selection):

alter settings value to reflect the change in the user option.

6. Statistics Agent

start.sub.-- stats:

instance flag is null,

instantiate instance flag,

attach agent to font dialog,

set.sub.-- stats.

start.sub.-- stats:

instance flag is positive,

set focus to stats dialog (make visible if required),

set.sub.-- stats.

start.sub.-- stats.

stats.sub.-- it:

does the window exist already,

!,

show dialog,

set focus.

stats.sub.-- it:

create the stats dialog,

create edit fields for start time, stop time, length of time
reading, word count,

words per minute,

create close button,

set.sub.-- stats.

set.sub.-- stats:

query operating system for current time,

if transitioning from reading to ready, use time as stop time,

if transitioning from ready to reading, use time as start time,

populate start and stop time and elapsed time edit fields,

fail.

set.sub.-- stats:

consult the settings knowledge base,

determine word count,

enter into edit field,

calculate words per minute,

enter into edit field.

message handler (on focus):

set.sub.-- stats,!.

message handler (close):

hide dialog,

release focus.

7. Preferences Agent

start.sub.-- pref:

pref.sub.-- it, fail.

start.sub.-- pref:

instance flag is null,

instantiate instance flag,

attach agent to preferences dialog,

set.sub.-- preferences.

start.sub.-- pref:

instance flag is positive,

set focus to preferences dialog (make visible if required),

set.sub.-- preferences.

start.sub.-- pref.

pref.sub.-- it:

does the window exist already,

!,

show dialog,

set focus.

pref.sub.-- it:

else create preferences dialog.

create.sub.-- pref dialog:

create the dialog with checkboxes for

`save on exit`,

`buttons`,

`pause on PERIOD`,

`pause on TAB`,

`extended punctuation --2 NL`,

`extended punctuation --TAB`,

`count words`,

`calculate true wpm`,

`stop on minimize`,

`stop on all buttons`,

`show stats in title`,

`Close`.

set.sub.-- preferences:

consult settings knowledge base,

set dialog buttons to reflect current values for

`save on exit`,

`buttons`,

`pause on PERIOD`,

`pause on TAB`,

`extended punctuation --2 NL`,

`extended punctuation --TAB`,

`count words`,

`calculate true wpm`,

`stop on minimize`,

`stop on all buttons`,

`show stats in title`.

message handler (on focus):

set.sub.-- preference,!.

message handler (close):

hide dialog,

release focus.

message handler (checkbox change):

alter settings value to reflect the change in the user option.

8. Bookmark Agent

start.sub.-- bookmark:

instance flag is null,

instantiate instance flag,

attach agent to bookmark dialog,

set.sub.-- bookmark.

start.sub.-- bookmark:

instance flag is positive,

set focus to bookmark dialog (make visible if required),

set bookmark.

start.sub.-- bookmark.

bookmark.sub.-- it:

does the window exist already,

!,

show dialog,

set focus.

bookmark.sub.-- it:

create the bookmark dialog,

create a listbox,

create an edit field,

create new bookmark button,

create select bookmark button,

create close button,

set.sub.-- bookmark.

set.sub.-- bookmark:

consult the bookmark knowledge base,

determine current bookmarks,

populate the listbox with bookmarks for this document,

set edit field to reflect the current file position.

message handler (on focus):

set.sub.-- bookmark,!.

message handler (close):

hide dialog,

release focus.

message handler (new button press):

sample file position,

capture word if one is current,

add bookmark to listbox,

alter bookmark knowledge base to include current file position
and word.

message handler (select button press):

reset current file position to reflect position of selected
bookmark.

\* \* \*

In accordance with the present invention, the above PROLOG
implementation of the invention allows a display device to
achieve continuous control of the word display speed in a range
from less than 1 word per minute to over 3,000 words per minute
(on high speed monitors) while at the same time being able to
allow the user to continuously alter the legibility
characteristics of the words, on demand, without substantial
interruption of the displaying process. In accordance with the
present invention, such speeds can be achieved without the need
for first converting the stored electronic document into a
second document or file before its displayed. This is achieved
because the method of the present invention includes three
processes (i.e., reading, displaying and legibility processes)
which simultaneously execute, in a parallel fashion, separate
goals for controlling the display device. Such method is in
contrast to methods that would employ sequential processing.

Although the above device and method of the present invention
has been described with reference to FIGS. 1 and 2 which
includes processor 12 programmed in accordance to the
methodology depicted in FIGS. 3-8 discussed above, the present
invention also includes a magnetic or optical recording medium
for use with processor 12. The magnetic or optical recording
medium of the present invention includes a plurality of regions
capable of being selectively altered in either of two
substantially different ways to represent a "0" and "1" ,
respectively. The plurality of magnetic or optical regions of
the present invention are coded, as is known in the art, to
store program code containing instructions for operating the
device in accordance with the description herein.

Thus, a device and method for displaying the text of an
electronic document on a one-word display has been disclosed.
One skilled in the art will appreciate that the present
invention can be practiced by other than the described
embodiments, which are presented here for purposes of
illustration and not of limitation, and that the present
invention is limited only by the claims that follows.

---