Language selection

Search

Patent 1325481 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent: (11) CA 1325481
(21) Application Number: 616317
(54) English Title: HANDWRITTEN KEYBOARDLESS ENTRY COMPUTER SYSTEM
(54) French Title: ORDINATEUR DE SAISIE SANS CLAVIER
Status: Expired
Bibliographic Data
(52) Canadian Patent Classification (CPC):
  • 354/229
  • 354/60
(51) International Patent Classification (IPC):
  • G06F 3/02 (2006.01)
  • G06K 9/22 (2006.01)
(72) Inventors :
  • SKLAREW, RALPH C. (United States of America)
(73) Owners :
  • SAMSUNG ELECTRONICS CO., LTD. (Republic of Korea)
(71) Applicants :
  • GRID SYSTEMS CORPORATION (United States of America)
(74) Agent: MCCARTHY TETRAULT LLP
(74) Associate agent:
(45) Issued: 1993-12-21
(22) Filed Date: 1987-07-17
Availability of licence: Yes
(25) Language of filing: English

Patent Cooperation Treaty (PCT): No

(30) Application Priority Data:
Application No. Country/Territory Date
6-889,513 United States of America 1986-07-25

Abstracts

English Abstract


Abstract Of The Disclosure

A keyboardless entry computer system includes a
transparent input screen that generates positional information
when contacted by a stylus, and a display screen mounted
physically below the input screen such that a character that is
displayed can be seen below the input screen. The system
includes a computer that has been programmed to compile the
positional information into Strokes, to calculate Stroke
characteristics, and then compare the Stroke characteristics
with those stored in a database in order to recognize the
symbol drawn by the stylus. Key features of the system are:
(1) transparent position sensing subsystem; (2) underlying
display on which to mimic drawing of sensed positions and to
show characters or symbols; (3) means to convert sensed
positions first into plotted Points and then into recognized
characters or symbols; and (4) means to "learn" to associate
sensed input positions with a character or symbol.


Claims

Note: Claims are shown in the official language in which they were submitted.


1. Apparatus for recognizing handwritten symbols,
comprising:
a display screen:
hand-held means, coupled to said display screen, for
writing a handwritten symbol over at least a portion of a first
area of said display screen;
means, coupled to said display screen, for digitizing
said handwritten symbol to provide a digitized symbol;
means, coupled to said display screen and said means
for digitizing, for displaying an image of the handwritten symbol
on said display screen in at least a portion of said first area
as it is written:
means, coupled to said display screen, for executing a
plurality of different editing functions;
means, coupled to said means for digitizing, for
correlating said digitized symbol with at least one of a
plurality of predetermined symbols including a plurality of font
symbols and a plurality of editing symbols, by comparing
characteristics of said digitized symbol with stored
characteristics of at least some of said plurality of
predetermined symbols, to provide one of said plurality of
predetermined symbols as a designated symbol which is correlated
with said handwritten symbol;
means, coupled to said display screen for displaying a
computer-generated symbol on said display screen when said
designated symbol is a font symbol and for executing at least a
first of said plurality of editing functions when said designated
symbol is a first of said plurality of editing symbols, and for
executing at least a second of said editing functions, different
from said first editing function, when said designated symbol is
a second of said plurality of editing symbols.

2. Apparatus, as claimed in claim 1, wherein at
least said means to execute at least a first editing function and
said means for correlating said digitized symbol include an
electronic processor.

58

3. A method for recognizing handwritten symbols,
comprising:
providing a display screen;
writing a handwritten symbol over at least a portion of
a first area of said display screen;
digitizing said handwritten character to provide a
digitized symbol;
displaying an image of the handwritten symbol on said
display screen in at least a portion of said first area as it is
written;
correlating said digitized symbol with at least one of
a plurality of predetermined symbols including a plurality of
font symbols and a plurality of editing symbols, by comparing
characteristics of said digitized symbol with stored
characteristics of at least some of said plurality of
predetermined symbols, to provide one of said plurality of
predetermined symbols as a designated symbol which is correlated
with said handwritten symbol;
displaying a computer-generated symbol on said display
screen when said designated symbol is a font symbol;
executing at least a first of said plurality of editing
functions when said designated symbol is a first of said
plurality of editing symbols; and
executing at least a second of said plurality of editing
functions when said designated symbol is a second of said
plurality of editing symbols.
4. Apparatus, as claimed in claim 1, wherein said
plurality of font symbols includes at least one chemical equation
symbol.
5. Apparatus, as claimed in claim 1, wherein said
plurality of font symbols includes at least one music symbol.
6. Apparatus, as claimed in claim 1, wherein said
plurality of font symbols includes at least one symbol for
graphic manipulation of data.
7. Apparatus, as claimed in claim 1, wherein said
symbol for graphic manipulation of data is a symbol for transfer
of graphic data to a spreadsheet.

59

8. Apparatus, as claimed in claim 1, wherein said
plurality of font symbols includes at least one equation.

9. Apparatus, as claimed in claim 1, wherein said
plurality of font symbols includes at least one of an
ideograph.

10. Apparatus according to claim 1, wherein one of said
plurality of editing functions is a margin set function and
wherein one of said plurality of editing symbols, corresponding
to said margin set function, is a vertical line drawn down the
side of displayed text where the new margin should appear.

11. Apparatus, as claimed in claim 1, wherein at least
one of said editing functions is a function to move text and
wherein one of said plurality of editing symbols, corresponding
to said text move function includes brackets placed around a
displayed group of symbols, and a caret.

12. Apparatus, as claimed in claim 1, wherein said step
of correlating is performed by a computer and further
comprising using said computer to learn the editing symbols
used by a particular writer.

13. Apparatus, as claimed in claim 1, wherein said
computer is further configured to provide a database of stroke
sequences corresponding to characters and to effectively
reorder the database to minimize time required to recognize the
most frequently identified characters.


Description

Note: Descriptions are shown in the official language in which they were submitted.




: : :
1323~81


The present invention relates generally to a Xeyboard-
less input syst~m to a computer, and when combined with a
central processing unit, to a keyboardl~ss entry computer
system. More particularly, the present invention relates to an
information storage, manipulation and transfer device on whic:h
text, data, computer commands and functions are entered by
writing alphanumeric or any other characters and symbols by

hand with a penlik~ stylus on an Input/Output tI/O~ screen.
Larg@ amounts of information and sophisticated applica-
tions software are now available on co~ventional keyboard com-
puters. The utility of this information and of application
software could be greatly increased if text and dat~ could be


:
.









,~


~ 3 2 .~
entered and applications software manipulated by writing in a
normal fashion directly on a flat display. Thus, there is a
need to allow the utility of computer technology to be extended
for use by non-keyboard oriented individuals. There is also a
need for a portable computer system that is lightweight, reli-
able, accurate, inexpensive and permits use while standing or
walking. One way to reduce expense and size and increase
utility is to employ a keyboardless ~ntry system, such as a
touch screen. However, this type of input device does not
easily allow accurate detailed input within a real time
framework with high resolution in a manner which is famiiiar
and natural to the user.
Many positioning technologies can be used to meet the
requirements of the position sensing input technology.
Essentially these requirements include accuracy, resolution and
speed. The technologies include: mechanical, electrostatic,
electromagnetic, acoustic, optical, and inertial. The desire
in this system is to have its use as similar as possible to
writing with pen or pencil on paper. One problem is proximity ~-
-- a pen on paper only leaves a trail when actually in contact.
Many of these technologies require an additional "pen down"
sensor which is awkward to use in many comme~cial pens,
Another problem is writing angle -- a pen leaves the same trail
independent of writing angle. Many of these technologies have
the position detector displaced from the pen tip, so pen angle
causes erroneous displacements. Beyond these general problems,
each technology has numerous advantages and disadvantages in
(1) the pen: size, weight, shape and whether it needs to be
powered and/or wired, and (2) the writing surface:
transparency, smoothness, "feel", and whether or not physical
contact is needed (as opposed to pressure transmitted through

overlaying sheets of paper).
-2-

` ~

3 2 ~ ~ 8 ~
A number of self-contained devices for viewing and
processing large amounts of information are known. Most employ
optical, magnetic or solid-state electronic storage means to
store data. Illustrative of this body of art is U.S. Patent
4,1~9,417 to Rubincam which discloses a port:able electronic
book configured to provide selective page by page call-up of
large amounts of digital data and disp~ays it on a flat,
solid-state screen. The preferred embodiment in the Rubincam
patent uses an insertable holographic card, which may contain
several hundred pages of text in digital form, as the main
storage means. Rubincam's device, however, does not allow new
information or text to be entered or manipulated.
In U.S. Patent 4,016,542 to Azure an electronic data
collection system is disclosed which employs a solid state Ran-
dom Access Memory (RAM) for its primary memory. This patent,
which discloses a conventional keyboard for data entry, is di-
rected to a hand-held portable data storage and transmission
system, as well as an LED display and various Input/Output
(I/O) connectors.
U.S. Patent 3,487,731 to Frank discloses a means of
converting handwriting into character data through the use of a
computer system. The disclosed invention is based on matrix
pattern matching and does not employ any coincident display
technology.
U.S. Patent No. 4,491,960 to Brown shows a handwritten
symbol recognition system in which an array of image Points, in
the form of a raster line sampling, is converted into segment-
oriented lists which are filtered and compressed to obtain
topologic features which are then analyzed with a logic tree
decision mechanism.




--3--
!

:
~32~3~81
U.S. Patent No. 4,262,281 to Buckle et al. discloses
a handwriting recognition deviceO The disclosed embodiment is
for use with a host computer and does not employ coincident
display technology.
U.S. Patent No. 4,475,239 to Van Raamsdonk discloses
a text editing apparatus. The '239 patent calls for the use of
paper as a medium for the entering of editing functions and
requires a conventional keyboard for the inputting of text.
U.S. Patent 4,521,909 to Wang shows a dual level
pattern recognition system. The system is designed for use
with an optical instrument.
U.S. Patent 4,520,357 to Castleberry et al. discloses
an electroscopic information display and entry system with
writing stylus. The disclosed embodiment does not claim to
have the speed or accuracy to enable handwritten character
recognition.
Additional prior art which discloses portable elec-
tronic devices that provide large amounts of various ~ypes of
stored information include U.S. Patents 4,218,760 to Levy;
4,4115,486 to Laine; and 3,932,859 to Kriakides et alO The ~ ~-
Levy and Kriakides et al. paten-ts pertain to electronic dic-
tionaries, while the Laine patent discloses a programmable
television reminder system. None of these devices disclose the
use o a handwritten input.
In U.S. Patents 4,071,691, 4,129,747, 4,198,539,
4,293,734, 4,302,011, 4,353,552, 4,371,746 and 4,430,917 to
William Pepper, Jr. v,arious methods or machine-human interfaces
using finger touch are disclosed. The preferred em~odiments in
each of these inventions lack sufficient speed and resolution to
allow handwritten character recognition with a stylus cmd are
designed for other puxposes. U.S. Patent 4,318,096 to Pepper




-4-

1 3 2 ~ ~ 8 1
~:
teaches the use of a conductive stylus. The '096 patent pertains
to graphlc design and allows llne width and line intensity to
vary by applying pressure on the stylus with the results
displayed on a con~entional C~T screen. U.S. Patent 3,699,439 to
Turner and U.S. Paten~ 4,055,726 to Turner et alO discloses two
msthods for electronic po~tion sensing through the use of a
pro~e.
It is an obJect of the present lnvention to prov$de a
novel apparatus and method for recognlzing handwr~tten
character~.
According to one aspect of the present invention
there is provided an apparatus for recognizing handwritten
symbols, comprising:
a display screen;
hand-held means, coupled to said display screen ~or
writing a handwritten symbol over at least a portion of a first
area of said display screen;
means, coupled to said display screen, for digitizing
said handwritten symbol to provide a digitized symbol;
means, coupled to said display screen and said m~ans
for digitizing, for displaying an image of the handwritten
symbol on said display screen in at least a portion of said
first area as it is written;
means, coupled to said display screen, for executing
a plurality of different editing functions;
means, coupled to said means ~or digitizing, for
correlating said digitized symbol with at least one of a
plurality of predetermined symbols including a plurality o:E
font symbols and a plurality of editing symbols, by csmparing
characteristics of said digitized symbol with stored :~
characteristics of at least some of said plurality of
predetermined symbols, to provide one of said plurality of
predetermined symbols as a designated symbol which is
correlated with said handwritten symbol;
means, coupled to said display screen for displaying
a computer-generated symbol on said display screen wh~n said
designated symbol is a font symbol and for executing at least a
first of said plurality of editing functions when sai~
designated symbol is a ~irst of said plurality of editing
symbols, and ~or executing at least a second of said editing

_ 5 _
,,r.. ~1

functions different from said first editing ~unction, when said
designated symbol is a second of said plurality of editing
symbols.
According to another aspect of the present invention
there is provided a method for recoynizing handwritten symbols,
comprising:
providing a display screen;
writing a handwritten symbol over at least a portion
of a first area of said display screen;
digitizing said handwritten said handwritten
character to provide a digitized symbol;
displaying an image of the handwritten symbol on said
display screen in at least a portion of said first area as i~
is written;
correlatiny said digitized symbol with at least one
v~ a plurality of predetermined symbols including a plurality
of font symbols and a plurality of editing symbols, by
comparing characteristics of said digitiz~d symbol with stored
characteristics of at least some of said plurality of
predetermined symbols, to provide one of said plurality of
predetermined symbols as a designated symbol which is
correlated with said handwritten symbol î
I displaying a computer-generated symhol on ~aid
¦ display screen when said designated symbol is a font symbol;
¦ executing at least a firs~ of ~;aid plurality of
I editing ~unctions when ~aid designa~ed s~bol i5 a first o~ :
! said plurality of editing symbols; and
executing at least a second of said plurality of
editing functions when said designated s~bol is a second of
said plurality of editing symbols.
Pref~rably, the present keyboardlQs~ computer sys~em
has the abllity to recognize ~nd di~pl~y Handwrltten S~nbols and
I cau~e the oomput~r to display Font !3ymbo:L~ and, 1~ d~ired, ts
I execut0 editing unctlon~ pur~uant to Ed:Ltlng S~mbol~, qulckly,
ily and at rs~30n~ble co~t.
~ Prefer~bly, a co~puter hou~ing i8 provlded with a ~lat
;, display pa~el on whlch a u~er ~ay "wrlt~" wi~h a stylu~,
3 capablllty to r~cogniz~ ~andwrlt~n SYm~D1~ writt~n on *Ae panel
with the Stylu~ and co~v~rt ~h~ to di~ y~d Font Sy~bol~ ~nd/or

- a -


~ , :
:

~ 3 2 ~
.
to execute Edltlng Function~ wlth Edlting Symbol~, 811 wlth a
mlnlmum of ~chnlcal complexlty for th~ us~r.
It 19 ~180 pref~rred that once the k~ybo rdless,
portable computer ls losded with th~ d~slred lnfonmatlon and
appllcation~ ssftware, informatlon and softwar~ can be used and
r~sponded to wlthout regulrlng skllls or knowladge related to
stats-of-the-art eomputer~ or o~h~r da~a sourc2.
Th~ sa~e-o~-us0 o~ the ~nput tec~oloyy of th~ pr~s~nt
lnv~ntlon enh~nces thQ utlllty of th~ compu1:er for keybo~rd
orlentad lndlvldu~ls. Ths port~bil~ty of th0 ~resent d~vice also
allows it to b~ U8Hd in ~ppllc~tlon~ cnd ~ettin~ ln which
portable keyboard computers ~re ~w~ward, dll:ficult or lmpo sible
to U8e . For ex~mpl~, ~ ~ult~plicity o




- 5~ -
'

325~8~

blank, fully or partly completed forms may be stored in the
. : .
portable computer memory. In a hospital, "sheets" of patient
data can be stored in the memory of the portable computer,
called up by a nurse as the nurse makes rounds and relevant
data, such as blood pressure, temperature, etc., can then be
entered manually with a stylus. These corrected or expanded
forms can then be down-loaded into a central computer memory.
The requirements of the position sensing input tech-
nology are accuracy (Point to Point), resolution (absolute
position) and speed (Points per unit time~ to adequately define
the written Stroke for recognition analysis. For the
recognition apparatus and methods presently used, as described
below, the present minimum requirements are: accuracy of .005
inch, resolution of .015 inch, and speed of 150 Points per
second. This accuracy allows a 1/4" high writing line with
over 10 raw input Points along a Stroke of a small letter. The
resolution provides positioning of the symbol to within two
pixel~ on a present display of 640 pixels to 9 inches. The
speed permits about 50 raw input Points for a rapidly written
single letter (1/3 second).
One emb~diment of the present invention comprises a
transparent input screen. As the use,r writes alphanumeric or
other characters or symbols on the input screen, the character
is represented as a stream of Points Pmulating written input
with pen on paper. Once the discrete alphanumeric and other
characters or 5ymbols are complete, they are translated into com-
puter text or computer commands that can be displayed on a dis-
play screen at a location that is preferably beneath the area
on the input screen where they were entered. The embodiment
also comprises a pattern recognition algorithm which allows the
translation of any written character or symbol, such as

ideographs and scientific ~ymbols, into computer text.
--6--


~:
132~8~
~ In a particular, presently preferred embodiment, a
keyboardless computer according to the present invention is con-
~ figured as a manipulation and display device comprising a trans-
I parent touch screen and associated electronics placed over an
80 column by 25 line or larger display screen; a stylus for
1 entry of data; a microprocessor and storage meansj artificial
f intelligence/pattern recognition software and editing software;
and a battery power system; and other I/O means.
~, As used herein, "Handwritten Symbols" are any symbols
capable of being handwritten and having communicative effect.
By way of example, and not limitation, numbers, letters,
j "Kanji" (Japanese ideograms) or other language symbols, editing
symbols and engineering, scientific, architectural and
~ mathematical symbols are Handwritten Symbols. Other examples
¦ of Handwritten Symbols are free-hand drawings or signatures or
any other such written information uniquely configured by a
~ particular writer. Handwritten Symbols may also include
3 Editing Symbols (defined below).
As used herein, "Font Symbols" are computer-generated
symbols which are displayed in a predetermined font format. By
way of example and not limitation, alphanumeric symbols may be
Font Symbols and displayed in numerous font formats. Japanese
or Chinese "ideograms" may also be Eont Symbols, as may be
engineering, scientific, mathematical; architectural or other
such characters. Other examples of Font Symbols include any
form which can be stored and displayed by a computer, e.g., a
~3 drawing of a car or a house.
, :
.1 As used herein, an "Editing Symbol" is ~ symbol (such
~¦ as a caret, horizontal line, short vertic~l line~ long vertical
line, etc.) which is intend~d, when recognized, to cause the
computer to execute a particular Editing Function ~defined
; below), ~uch as insert test ~caret), delete text (horizontal

-7-
, . ,


1 3 2 ~
., . ~ ~ . --. ;,
., ~ , .~ ..
~ .

:
line), delete a letter (short vertical line) or move a margin
(long vertical line), to list a few representative examples.
"Editing Function" means any computer-generated text
editing operation, such as by way of example and not limita-
tion, insert text, delete text, move text and substitute text.
Some primary Editing Functions are listed on paged 40 and 4}
below.


Thus, the present inven-
tion provic~es improved methods and apparatus for providing a
keyboardless computer on which usua} computer functions are per-
formed by writing in a norm~l manner with a pen-like stylus on
an input screen placed directly over a flat display.
The keyboardless computer provided is ideally config-
ured for use by non-keyboard oriented individuals, by keyboard
individuals for whom the utility of the computer is enhanced,
and in various settings and applications in which keyboard entry
is awkward or impossible.
Preferably, means are provided
whereby computer-based information and applications soft-
ware can be loaded into a portable device for later viewing,
manipulation of text and data, and adding new text and data in
a normal handwriting mode. Thereafter the user may transmit
this comp~lter text to another computer, a simllar clqvice, an
external electronic storaye device, a hard copy printer, or
through a telecommunications system. It ls als~ ore~.rr~ ~h~t
~ the present inven~ion prc~vldes acomputer capable of recognizing
9 Handwritten Symbols with a high degree of accuracy and of
~ "learning" individual styles of handwriting.
;~ :
~,




~. !
'

~: ;

132a481
Preferably, the present invention also
provides a portable keyboardless computer in which
data and commands are input with the use of a
. stylus.

Embodiments of the present invention will
now be described by way of example only with
~-~ reference to the accompanying drawings in which
'~,
Fig. ~ is a schematic block diagram of a
portable handwritten, keyboardless entry computer
system;
.,.
Fig. 2 is a perspective view of the
~,~ housing containing the operating elements of the
system shown in Figure l;
, Fig. 2A is an enlarged portion of Fig~ 2,
-~ with parts removed to show the positional
relationship between the touch input screen and tha
display screen.
~s
.. r Fig. 3 is a schematic diagrammatic view of
~ the input screen, stylus and associated electronics;
:~q
Fig. 4 is an overall schematic system
block diagram of the apparatus of a keyboardless
enkry computer system;

~ Fig. 5 is a schematic block diagram
;~ depicting the movement of data within the system
when modified by handwritten chaxacters and
commands;

Fig. 6 is an overall sy~tem block diagram
~ depicting the hierarchy of software used to operate
,I the sytem; -~



,

3 2 ~
Fig. 7 is a generalized block diagram of
the character and pattern recognition alogoithm.
~: :
,.:
~, Figs. 8A and 8B together are a detailed
block diagram of the patter recognition alogroithm.

Fig. 9 is a schematic block diagram of the
StroXe characterization subroutine.

Fig. 10 is a top plan view of a screen
illustrating the "initializing" of the database for
Handwritten Symbols.

Figs. llA through llI are a series of top
~' plan views of screens depicting the operation of a
text editing system.

:

:,i
.`~


~1 ,

~,,




.~

: 1 .

,,,
~,
~"
1 - 9a -
~;



: : - ~ .,: .

:~
::
;:
: ::
1 325~8~
`,. .
,,

Figs. 12A through 12G are a series of top plan views
of scraens depicting the operation of a data entry system.
Fig. 13 is a generalized block diagram of the Linus
Editor.




With refereDce no~ to the figure5, where1n 11he numer-
als indicate like elements throughout the several views, and in
particular wlth reference to Fig. 1, an overall block diagram of
~; a portable handwritten, keyboardless entry computer system 10 is
~ depicted. The complete computer system is encased in a housing
¦ ~ 12, indicated graphically by the dashed line, and includes a con-
ventional, general purpose digital microcomputer 14, described
in greater detail hereinbelow. Input information is provided to
microcomputer 14 by stylus 16 "writing" on writing or input
screen 18. Stylus 16 (Fig. 2) is connected to the computer of
system 10 with wire 17 (Fig. 2). As stylus 16 "writes" on
input screen 18, a plurality of locating signals representative
of a plurality of corresponding positional coordinates are
transmitted to microcompu~er 14. Microcomputer 14 has been
programmed in accordance with a computer program de.scribed
hereinbelow, to recognize the stream of locating signals and to
store these signals in a computer memory. The programmed
microcomputer 14 also provides a corresponding plurality of

display signals to a display screen 20. ~oth input screen 18
and display screen 20 are c]escribed in ~reater detail
hereinbelow.
Referring now to Fig. 2, there is shown a perspective
view of ~eyboardless computer system 10.
~I Keyboardless computer system 10 is con-
tained in housing 12, which is a rectangular enclosed casing
having a sloped top surfac~ 22 with a multi-line, solid state

- 10--


,~ ,
~.
~;'


1 32~481
display area 24. Input screen 18 is depicted in Fi~. 2A as be-
ing positioned over display screen 20. In this example, display
screen 20 displays a plurality of horizontal lines 25 with the
following indicia:

- Name
Address



Handwritten entries are made above each line 25. The distance
or space between two lines 25, denoted 26, is used by the system
to normalize all distances, and lin s 25 themselves serve as a
reference axis or base line.
Below display area 24 on top surface 22 is a key
input section 26 comprised of a plurality of "Softkeys" 28.
Softkeys 28 can be programmed by the operator for any purpose,
such as to enter computer commands. Exemplary commands for
Softkeys 28 are "store,ll l'recall," and '7delete. Il In addition,
~ Softkeys 28 can be used to switch loetween different programs or
i, between modes ~e.g. data entry mode and edit mode). However,
Softkeys 28 are optional and are used to supplement the input
obtained by handwriting the entries. Stylus 16, used for
writing input data and commands in display area 24, also is
used to activate the selected Softkey 28. An ON-OFF switch 30
is positioned on the side of housing 12 adjacent to Softkeys
28. A data output or peripheral connector 31 is located on the
, upper right side of housing 12.
~ Input screen 18 can be a conventional resistive type
; touch screen in which a voltage is applied ko the screen edges
and a stylus detects the voltage at the touched location. The
writing surface is a transparent material, typically glass,

coated with a thin, uniform, conductive layer (presently,
vacuum deposited indium tin oxide). Vertical bus bars or
conducting strips (not shown) are used along the two sides to


:

~ ~32~81
., .
.~ .
~'i,` apply the reference voltage to deter}nine the "X" coordinates of the stylus position and
7!i horizontal bus bars or conducting strips (not shown) are used along the bottom and top to
apply the reference volt~ge to deterrnine the "Y" coordinates of the stylus position. In
this embodirnent, stylus 16 is merely an electric probe that, when physically in contact
with the conductive layer, detects the local voltage at the Point of contact, which w;ll
vary with the distance from the conducting strips or bus bars. With the orig;n at the -~
Point of voltage application, the X,Y coordinates are inversely propor~ional to ~he
impressed voltage. Stylus 16 must make good contact to minimize adding resistance that
would lower the voltage detected, and thus add an erroneous distance increment. In a
presently preferred embodiment, a soft graphite tip is used. The voltage is conducted
from the pen through a wire, such as wire 17 in Fig. 2, to an analog to digital converter
for use in the computations desc~ed below. The stylus may be a charged "pen" as
described herein, a light pen as is well known in the art, or any other hand-held device
which can outline Handwritten Symbols on a screen.
An example of a conventional electros~atic screen is di.~clos~d in the
aforementioned 4,318,096 Pepper patent. This resistive type scr en has th~ advantage
J that the inference caused by the user's hand touching the screen is minimiz~d.
Both horizontal and vertical position sensing is provided by alternately
switching the voltage impressed on a conductive layer between the pairs of horizontal and
vertical bus bars by an interface and multiplexer controlled by a microcomputer or
microcontroller. In one commercially available input or touch screen, the bus bars are
broken into a series of short strips with diodes to prevent the horizontal strips ~rom
shorting out vertica~ strips and vice versa. This technique is used in a commercially
:'

;.'
1 -12-

, .

:




l3~81


available touch screen f~om Touch Technologies of Annapolis, MD. and Elographics of
Oak Ridge, Tenn.
Referring now to Fig. 3, an altemate embodiment of a low power position
sensing novel input screen 33 is described in greater detail. Input screen 33 is also for
deterrnining an X,Y position on an electrically resistive plate 34. A stylus 35 containing
a voltage source, such as battery 36 or a vol~age transmitted to stylus 35 from an external
source such as ~he system power supply, is used to touch screen 34 and apply a vol~age at
the touched position. When the touched position is charged by stylus 35 with a positive
voltage with respect to a plurality of plate measurement Points 37, the voltages at these
Points will vary wi~ the distance to the pen position, such as position X" Y" indicated
at 38. These voltages are sequentially measured in the X and Y direetions by using
conventional means, such as disclosed in the aforementioned prior arts patents. In ~ig. 3
these means are a conventional interface/multiplexer 42. A conventional Analo,g-to-
Digital conveIts 43 converts the detected voltages into a digital signal. A microcontroller
44 receives the digital signal, performg standard checks to ensure the signa~'s numerical
valu~ is "valid;' (e.g. is within the possible range of voltages), and then converts the
voltages to X and Y distances in the manner described herein. Micr~ontroller 44 is
conventional, but could be replaced by a system computer. Microcontroller 44 pro~rides
a digital signal representative of the X and Y distances to measuring Point 3~ ~o an output
pore 46. Port 46 casl be a ccnventional PcS 232 port. Alternatively, micr~controller 44
ould ~nslate Point Xl, Yl to any othes reference Point, such as a Point on base line 25
(Fig. 2~.




.
j
-13-

: `
~: ~ 32~4~

As long as there is no contact by stylus 35 at posi-
tion 38 or any other position on plate 34, no current flsws and
:,::
power consumption is minimal. An incident measurement of the
7 voltage at the measurement Points may occur by using ramped
3~ voltage at the positioning Point and timing when the measuring
Ij Point voltage exceeds a preset back voltage.
17 The scope of this invention covers the followinq ~
options for the input or touch screens 18 and 33: resistive ~-
~ plate 34 or its equivalent for screen 18 can be transparent or
J translucent and the position Point oan be made by a stylus or a
~; finger of the user, or a connecting Point of an overlapping
conductive screen (such as the commercially available touch
screens from Touch Techno]ogy, Annapolis, MD.). Input screens
18 and 33 can be a physical solid surfaee which is transparent
7, or translucent and can be glac~s or plastic such as Mylar. Th77
surface can be coated with a conductive/resistive substance
, like indium tin oxide. Other physical surfaces can use sound
j or electromagnetic radiation transmission from the touched
~ position to a reference Point or Points and the distance i5
determined by the time delay or phase shift. Alternatively,
input screens 18 and 33 can use an ethereal or geometric
surface defined by an electromagnetic, optical or sonic field.
Position detection can be accomplished with electrical
contact closure by resi.stive, capacitive or inductive çoupling,
remote sensing by sonic, electric or magnetic ~ields or by light
(W, IR, or microwave) scanning.
The advantages of the low power position sensing input
invention over other such screens are: l) $he invention makes
stand-by power requirements minimal; 2) thé invention eliminates
distortion due to opposing parallel "bus" bars in conventional
touch screens; and 3) when a ramped voltage is employed, the

~, -14-



132~81
. ;~ . . `~ ~
, ~ .


~ .

inven~ion eliminates the need for an A/D chip which is a major
cost factor in state-of-the-ar~ touch screen technology.
The coeff-cient of friction of the screen 18 is desir-
ably selected to be "rough" enough to offer some resistance to
the movement of stylus 16 on the screen. If ~he screen were too
smooth, the stylus would slide too easily and would be difficu}t
to control.
Reference is now made to Fiy. 4 which discloses an
; overall system block diagram of the major electronic circuitry
used in the preferred embodiment of the present invention.

Microcomputer 14 includes a microprocessor 50, interconnected
A, ~ to a plurality of other electronic elements by means of data

path or bus 52. A Read-Only-Memory ~ROM) 54 which is
~3 programmed with the operating and application programs and a
'' battery powered Random Access Memory (RAM) 56 i5 connected for
bidirectional data flow onto bus 52. Microprocessor 50 may be
j a conventional single-chip eight-bit or sixteen-bit device
:l which functions to execute the fixed control programs residing
in ROM 5a, and further receives control programs from and
provides control signals to the other electronic elements via
3 bus 52. Microprocessor 50 may be of the type commercially
j designated Z80*(manufactured.by Zilog Microcomputers of

Cupertino, California), of a type 8088*device (manufactured by
Intel Corp. of Santa Clara, Caliornia) or any similar or more
~, powerful microprocessor. ROM 54 may be of the type 2564*or
4764*, both manufactured by Texas Instruments of Dallas, Texas.
The storage capacity of RAM 56 is determined in part by the
~ sizes of the application programs, the operating program and
!`1 the database. As discussed below, RAM 56 may be of the static
SRAM or dynamic DRAM type. The prim~ary requirements of RAM 56
~, are that it have sufficient storage capacity and that it
require a minimum of input power.
-15-
~, * Trademark




, ,
;.'

":: : ` .: . ~:,: :,:::
i . ' : - :
~ .
~.

13 2 a 4 81
... . ~ . ~


A battery 58, such as a lithium battery, provides -
power for making the memory of RAM 56 non-volatile for extended ~-
periods of time. A battery pack 60 containing the well-known
rechargeable types of batteries is used to provide the various
voltage levels rec~uired by the other electronic elements of
microcomputer 14.
Alternately, the storage function o RAM 56 may be
served by a non-volatile device which requires no power for main-
taining storage, such as an electronically erasable snd repro-
grammable memory (~E~ROM), or devices using magnetic bubbles or
capacitance. State-of-the-art disk or Sape may also be used
for mass storage. Suitable bubble memory devices include types
711C*and 7114*which have storage capacities of l megabit and 4
megabits respectively. (Both are manufactured by InteL Corp.).
Furthermore, it is possible to use a single integrated circuit
chip which includes microprocessor 50, at least part of ROM 54
and at least part of R~M 56.
Also connected to bus 52 is an EIA RS-232 serial inter-
face 62 which provides a means for inputting and outputting data.
Data is provided to bus 52, (usually to RAM 56) by interconnect-
ing an external data source to RS-232 port 52 directly to the
microprocessor 50 and other elements of the microcomputer 14.
Offloading data from RAM 56 can also be done by microprocessor
50 to an external computer, o~her data gatherlng device, a mas3
data storage device (e.g. floppy and hard dlsk drlveq) or an
electronic telecommunications system. In lik~ manner data can
be communicated through port 62 to a prlnter (not shown) from
interconnecting bus 52.
Stylus 16 is used to write on input screen la and to
cause the generation of X,Y coordinate information by conven-
tional touch screen interface electronics circuitry. The coor-
dinate information is communicated via the bus 52 for control
-16
* Trademark

.
~32~8~

use by system 10. The solid state display 20 consisting of a
~ multi-line display -- illustratively 80 columns by 25 lines --
f~ is interconnected to bus 52 through a display interface 66.
The fundamental requirements for the display are that it be sub-
stantially flat and sufficiently thin for use in the present
invention. The display may be of the following types: scanning
types such as a cathode ray tube, projected types such as a
rear-view projector, light emitting array of Points types
(e.g., electroluminescent or plasma discharge~ and light
blocking array of Points types (e.g., liquid crystal displays,
solid state PLTZ or magneto-optical). In addition, it is
preferable that the display be compatible with input screen 18
in size, configuration and transparency, and that both be low
power consuming types.
The X,Y coordinates for this invention are input to
keyboardless computer 14 via input screen interface electronics
64 and communicated via bus 52 to microprocessor 53 which
executes programs stored in ROM 54 and RAM 56.
The number of Points (i.e., sets of X,Y coordinates)
used in defining each Handwritten Symbol and the speed at which
Points are identified are important to the practical utility of
the invention. It is desirable to use at least about 100
Points per inch and at least about 100 Points per second to
define Handwritten Symbols. It is to be noted that the more
~ Points per inch that are identified, the greater the accuracy
¦ of the system in identifying Handwritten Symbols -- however,
~J more Points being identified will slow down the speed of
Y identification and require more computer memory. Accordingly,
a balance will have to be achieved, based on the size (avail-
~ able memory and processing ability~ of the computer system and
j the re~uirement for speed of response and accuracy. For most

,
~ -17-

:`: : '
1 3 2 5 ~
.
, .
purposes, standards in the range from about 100 Points per inch
and per second to about 200 Points per inch and per second will
be suitable. -~
It is also to be noted that the greater the precision
of the system in identifying the X,Y coordinates of each Point
the fewer the number of Points needed to be identified per inch
and per second to accurately identify Handwritten Symbols. Con-
versely the less the accuracy, the more Points that are needed.
Point resolution is needed to place Points where
intended, e.g., to write an editing symbol precisely between
the two characters. Ideally, resolution to a single display
pixel is desirable. However, operationally, resolution within
two displayed pixels is sufficient for a display with 640
pixels in a nine inch horizontal scanline.
When switch 30 ~Fig. 2) is positioned to "power on",
the basic display mode is activat~d and microcomputer 14
(Fig. 4) programmed by the operating system, causes a menu to
be displayed on display screen 20 (Fig. 1~. The menu presents
various software options. A primary software function,
editing, functions in a manner similar to conventional word
processing software with the difference being that handwritten
characters, symbols and commands are;interpreted by the system
as if they were entered from a conventional keyboard. The
system is capable of learning the editing symbols used by a
particular writer for functions such as indent, insert, delets,
move and reformat and translates those symbols into digital
command functions. Optionally, Softkeys 28 (Fig. 2), activated
by touching those areas on the input scree~ with stylus 16,
~unction like conventional hard function keys on a computer
keyboard.

The present invention is particularly adapted for use
as an interactive screen editor or word processor. After a


~:
32548~
writer retrieves a document by (for examp~e) touching the
displayed name of an existing file with the stylus or by
writing the name of the file on the screen, all usual editing
functions can be performed with stylus entry. When the user
wishes to change a displayed character or symbol, he may simply
write over the displayed character or symbol and as described
hereinbelow the pattern recognition algorithm will translate
the written entry into computer text. For example, the editing
software allows text to be eliminated by simply drawing a line
through it and a conventional caret symbol may be used to
change the operating mode to the insert mode. In the insert
mode, display screen 20 provides additional space for entry of
handwritten characters or symbols which are inserted in the
text after the Point where a caret was written in. Text can be
moved simply by placing brackets or other user-defined
delimiters around a displayed phrase or word and writing a
caret or other user-defined symbol in the area of the text in
which the user wishes this material to appear. New margins can
be set by drawing vertical lines down the side of the displayed
text where the new margins should appear.
The basic editor software also allows new documents to
be created by simply writing Handwritten Symbols on the screen.
All documents can be stored, changed and communicated in the
manner in which these functions are accomplished on a
conventional word processing system with the difference that
these functions are accomplished with handwritten Editing
Symbols on the (optional~ screen or by touching the Softkeys
with the stylus. The composite text thus produced and stored
can be subsequently offloaded through the RS 232 port 62 (Fig.
4) to another computer, a similar device, an external data
gathering device or recording device, into a printer or through

a telecommunications system.

--19--
!


`: : 1 3 2 ~ 4 8 1

In addition to these major operating modes, a number of ancillary elements
and features add to the utility of the present invention. A conventional ~phanumeAc
keyboard (not shown) containing a full set of keys can be connected to a cvnventional
keyboard interface ~not shown) to support the ent~y of alphanumeric ch~acters. An
AC/I)C power connector may also be uscd in those applications when portability is not
needed and when needed to meet the power requirements of screen technologies such as
gas plasrna displays and electroluminescent displays.
In actual use the keyboardless computer can function in ~ny application or
environment in which handwritten input translated into computer ~xt is useful or
necessary. Illustratively, the devic~ un function as a new gene~ation word processor, or
for use in fields such as sales, nursing, inventory control, census taking, claims adjusting,
to narne just a few of the many uses of the invention, or as a general learning and testing
device in education. Since the pattern
recognition softu are can learn and translate into computer text from l~nguages which are
not made up of a small or limited set of alphanumeric characters (e.g., Japanese, Korean,
and Chinese), it has particular utility for word pro essing and ~elecommunications in
these languages.
In the practice of this invention, it is particularly desirable to use a single
computer screen to display any initial fonns, Font Symbols or other displays ~o be edited,
and to create a nearby "window" of blank space where Handwritten Symbols are to be
written, displayed and identified, and where the Font Symbols corresponding to the
Handwritten Symbols are to be displayed. In this way, the user c~n view ~he text being
edited and the propvsed insert or ~hange without significant moYement ~if any) ~ the
head and eyes. Ihis is illust~ated in ~igs. llA to llD. This fea~ure of the invention
(proximity on on~ screen of text to be edited and the windvw into which new text is to be
handwritten) is very important to the simple, rapid, comfortable use of the invention.



-20-



132~4~1




In a preferred embodiment of this invention, the system "learns" the
handwriting of a particular user prior to actual use For cxarnple, if using the Roman
alphabet, the twenty-six letters of the alphabe~ the numerals from 0 to 9 would be
inserted into the database. Punctuation symbals, such as periods, commas, question
marks, colons, semi colons, hyphens and the like could also be inserted. There ;s
virb~ally no limit to the Handw~itten Symbols which can be recogni~ed and stored in the
database. Of course, the computer will have to store a suitable array of ~ont Symbols
for conversion of the Handwritten Symbols. Different sets of ~ont Symbals could be
created and stored in the pennanent memory sf the computer, as in ROM c~ip 54. For
example, in English language usage, a chip could con~ain one (or more~ fonts of numbers
and letters, suitable punctuation symbols and appropriate mathematical symbols. Other
chips could h~ve stored Font Symbols ~or the Arabic, Cyrillic or Greek alphabets,
Japanese, Chinese or Korean "Konjin, symbols for use by architects or engineers, or
chemical symbols (~, benzene rings and the like).
In Fig. 10, one of a series of learning screens is displayed and the user is
prompted to write the numbers û through 4. ~he computer will at~empt to match the
written numbers with the exis~in~ database (if any). If it cannot be ma~ched because
there is no existing database or because there is a poor match with an existing database,
the charac~er is added ~o the database. This learning process con~inues until all ~ the
alphanumeric (or other) charac~s and symbols to be


132 a481
~
used are entered into the database. The system has the capa-
bility of storing multiple Stroke characterization databases
for systems used by more than one user. The existence of a
unique Stroke characterization database for each user has the
further advanage of making the writing angle irrelevant. As a
result, the invention is adaptable to all handwriting styles
and is usable by right-handed and left-handed persons. One
feature may desirably be incorporated into the apparatus of the
invention to accommodate left-handed and right-handed persons.
This feature is a receptacle (not shown) for the stylus
connector on either side of housing 12, so that the stylus 16
may be connected on the left side for left-handed persons and
on the right side for right-handed persons.
Fig. 10 also provides an example of the use of
"Softkeysl'. In addition to the input line, a variety of
Softkeys appear. Each Softkey corresponds to a function that
can be performed by the system. In order to execute the
funtion, the user merely touches the indicated Point with the
pen. The Softkey will then appear in reverse video and the
selected function is performed. There are numerous advantages
to Softkeys over traditional function keys. Some of the more
significant of these are that the user is no longer re~lired to
memorize what function key performs what function; the need for
keyboard overlays is eliminated: and different Softkeys can be
made available (displayed and made operational) at different
Points within a program.
Figures llA to llI demonstrates some of the simpli-
fications in word processing made possible through the use of
this invention. In Fig. llA a standard screen of text is
displayed. The user of the keyboardless entry system decides
that additional information needs to be added and draws an



-22-

~ ~ ~32~L8~
insert symbol (e.g., caret) on the screen at the desired
position. A data entry "window" then appears. (Fig. llB).
The text is written in as Handwritten Symbols (Fig. llC),
matched (converted to Font Symbols) (Fig. 'ID), and then
inserted (Fig. llE). The opera~cor reconsiders the addition and
draws a horizontal line through the new material. (Fig. llF).
It is immediately erased. (Fig. llG). Next, the operator
decides that a larger right-h~nd margin would be more
appropriate for the text. A vertical line is drawn on the
screen (Fig. llH) and the margin is automatically adjus-ted
(Fig. llI).
A generalized block diagram of the editing process is
provided in Fig. 13 and a description of that figure appears
hereinbelow.
Figures 12A-12G illustrate how a blank form may be
used for a hospital patient. The user of the system first
calls up the proper blank form (Fig. 12A). This may be done,
for example, by touching an appropriate Softkey. The area
where the information, in this case a pulse observation, is to
be inserted is touched with the pen (Fig. 12B). After the
desired location is highlighted, a "window" appears directly
below the space where the observation is to be recorded (Fig.
12C). The nurse then touches the pen on the match box which
appears highlighted (Fig. 12D). The software then matches the
handwritten input to the corresponding Font Symbols and
displayes the result (Fig. 12E). If there is an accurate
match, the "insert" block is touched (Fig. 12F), and the new
observation is added to the patient's records (Fig. 12G3. This
mechanism is clearly appliçable to a wide variety of l'blank
forms" in which data is inserted into a form or corrected. For
example, it could be used to correct or update financial
information in a spreadsheet program. All such applications



-23-



132~


are within the purview of this invention. Other information ran be record~ in the same
manner.
The reason for using a black background and white letters for ~e newly
entered Font Symbols is tc facilitate checking the accuracy of the inputted cha~acter.
Although this is preferable, it is not essential and a white backgrol3nd and black letters is
also acceptable.
The abili~ to create a window and input ~ta on the same screen and in
physical proxirnity to the text being edited or space for da~ to be input is an important
feature of this invention, for it permits ease and speed in the sse of the invention. 1 he
user's eye may focus on the space where the data will be inse~d and the abili~ to
con~emporaneously display Handwritten Symbols and the co~esponding Fon~ Symbols
makes it easy ~o see errors, when the system "misreads" a Handwritten 5ymbol, and then
corr~ct errors quicldy and easily.
Referring first to Fig. 5, the overall operation and functioning of the
pattern recognition sofhvare will now be described. When the Dperating system calls thP
pattern recognition program7 the program begins in terminal 75 where a number of
variables and counters are initialized. The software then proceeds to decision diamond 76
where the prograrn determines if stylus 16 ~Fig. 2) is in contact with input screen 18
(Fig. 2A). The system provides a "pen down" signal, as showll in processing box 78, as
well as the X,Y coordinate voltages as loca~ing signals, as described aboYe.
Microcomputer 14 (Fig. 4), using the software according to the pre~sent invention,
converts the X,Y coordinate locating sig~lals into Stroke characteristics using programs
stored in ROM 54 (Fig. 4), or a separate micr~omputer can do the conv~rsis~n, such as
microcontoller M. If a pen down signal is received9 the so~tware proc~dx to processing
box 80 where the individual locating signals are combined into "Strokes", a Stroke being




-2~-


::

132a~81


defined as the Point lo~ting s;gnals produced between a "per. down" signal and a "pen
up" signal.
The system then calculates a transforrn~ as described below, for each Point,
transforming the Point coordinates from the X,Y cartesian coordinate system to a
relational coordinate system. The software nex~ proceeds to processing box 82, where it
compares the Stroke with previously entered Strokes accumulated into a database, and
determines if the Stroke is represented by a symbol in the databa~e. If a match is found
(if the Font Symbol represented by the Strokes is recogniæd), as indicated in decision
diarnond 84, microprocessor 50 (Fig. 4) causes the symbol ~o b¢ sent to display s reen 20
(Fig. 4) as indicated in processing bo~ 86. If a match is not ~ound, microprocessor 50
(Fig. 4) causes a mess~ge to be displayed, as indicated in processing box 88, which
requests filrther input from stylus on input screen 18 (Fig. 4) by either ~ashing an entry
which is close to a match or a non-recognition symbol.
As menboned above, the software compares the S~roke characteristics of
each Handw~itten Symbol to data entries previously stored in a database. In a preferred
embodiment, the database is arranged into sections of characters or symbols by the
number of Strokes needed to make the character or symbol. Within each section, the
entries are rando~nly arranged at ~rst, but after use, as explained herein, the most
frequently used entries "rise" ~o the top of the database. lt should be noted that each user
will have his or her own particular style of wri~ing a lIandwritten Symbol and tha~ ea~h
Handwri~ten Symbol may ha~e a number of different variatio~s.
For example, many people write the lower case letter "h" using a single
Stroke. They do this by starting the pen on the writing ~ablet at a Po;nt where they wish
to place the top of the letter, drawing a vertiçal line downwardly to the base line, then



-25-


:


~ 325~


without remo~ing the pen from the paper, proc~ding baclc up to the midPoint of the
previously drawn vertical line, over to the right and down to the base line when the pen
is picked up from the paper. On the other hand, these sample pesple may draw the
upper case letter "H" using two Strokes. They do this by drawing the left hand vertical
line and horizontal line as is done fior the lower case "H", picking the pen up from the
tablet, and then drawing the right hand vertical line. Appendix I displays the data of the
Strolse data Points for these two letters as the data is slored in memory aft~} having been
generated by an embodiment of the present invention.
As shown in Appendix 1, the letter "h" as drawn at one particular timç by ~;
one user has one S~ke (ns = 1) with 20 Points (np = 20) and x ~nd y coordinate
charactenstics for the minimum~ mean and maximum normalized values (1/80th of a line
width) 2S follows: -17 and -6; 0 and 18; and 19 an~ 60, respectively. The values in the
first vertical column are the Point-t~Point slopes, normalized to 360/256. The values
in the second vertical column are the Point-to-Point average vertical positions above the
base line, normalized to 1/80 of the line width. A typical line width is about 0.4 inches.
Referring now to Fig. 6, a software hierarchy of programs is depicted. At
the top, overseeing the entire ~ ation of computer system 10 (Fig. 1), is an operating
~ystem as indicated by box 90. Applications programs shown in boxes 92 and 94,
residing in RAM 56 (Fig. 4) and ROM 4 (Fig. 4) can be executed by mieroprocessor 50
(Fig. 4) under contr~l of the operating systems. When a Handwritten Character is
required or is indicated by an interrupt, handwriting recognition so~tware 96 is called. A
first subroutine, indicated in box 98" encodes the X,Y coordinates into Strokes. The
characteristics of the Strokes are then defined by a subroutine 1~ fol}ow~d by
-2~



::: :: :
:::
::
132~481

comparison of the Strokes with a database that has been loacled from ROM 54 ~Fig. 4)
into RAM 56 ~Fug. 4). The omparison is made by a subroutine 102. When the
operating system is in the "learning" mode, the database is updated with the new Stroke
data and symbols, as indicated in ~,x 104. Similarly, a previously stored document can
be edited by applications program 92 by using edit function 94 as callecl by the operator,
who provides the instructions as input using the subroutines 98, 100 and 102 of
handwAting recognition prograrn 92
ReferIing now als~ to Fig. 7, operating system 90 ~Fig. 6) executes the
Handwritten Character recognition software 96 (Fig. 6) by accepting as input the X,Y
coordinate Points, depicted in box 110, of the position of stylus 16 (Fig. 2) on input
screen 18 (Fig. 2) and encodes these Points into Strokes as depicted in b~ 112. The
program then characterizes the Strokes by some descnption set, such as considenng the
length, curvature, slope, and position of the Stroke, as depicted in box l14. In box 116
the best comlparison is then found of the characteriæd Stroke or sequence of Strokes with
those in the database. If a sufflciently close match is found, the character is iden~ified in
box 118 and the database entry is swapped with the entry above it as shown in box 120.
In this way, the most frequently identified characters will "rise" to the top of the~ database
and the overall system peffonnance, ~u measured in time to find a rnatch~ will be
increased. If a match is not found, the user can add to ~he bot~om of the database, as
indicated in box 122.
With reference l~OW to Figs. 8 and 9, a ~owchart of the computer program
to recogni~e a particular Stroke sequence is set forth. The computer program begins in
terminal 150 and proceeds to p~ocess the X,Y vol~ages from process;ng box 152,




-27-

132~481
:.:
the voltages having been converted to a digital signal. The
program then proceeds to decision box 154 where the program
determines whether the pen or stylus 16 (Fig. 2) is out of
contact with input screen 18. This determination is made by
both the X voltage and the Y voltage being zero. If the
program determines that the pen is up, then the Stroke is
determined as having been completed and the program branches to
decision box 156. In decision box 156, the program determines
whether there are less than three Points in the Stroke and if
so the program branches to decision box 158. In decision box
158, the program determines whether there are zero Points in
the Stroke. If there are zero Points in the Stroke, then the ~-
program loops back to the beginning of processing box 152 where
another set of Points is read. If the Point counter (incre~
- mented in processing box 164) indicates that there are more
than zero Points, the progr;am branches to processing box 172.
In processing box 172 the Stroke is identified as a dot and its
height above the base line (HABL~ is calculated in processing
box 173. From processing box 173 the program proceeds to
processing box 171.
However, if the pen down signal is received, the pro-
gram branches to processing box 160 where the voltages are
scaled to determine the coordinate Point using the following
formulas:


X = alVl + bl
y = a2v2 ~ b2-

The constants al and b~ are scaling param ters that are deter-
mined fxom calibrating the input surface of the particular dis-
play.




-28-


132~4~1
Once the voltages are scaled, the program proceeds to
decision diamond 162 where the program determines whether it is
an erroneous Point. This is done by comparing the distance
between Points and eliminating a Point if the distance is to
great (greater than .10 inches is presently used.) On the
other hand, a Point is also eliminated if the Points are too
close together. Points are presently ~hinned out if they are
within .015 inches.
The comparison problem that exists for the first
Point is resolved by determining if a Point is the first Point
after a pen is down and then that Point is used only to check
the next Point which is accepted, assuming that that Point is
within the maximum distance (;10 inches).
If the distance between Points is determined as being
outside the two criteria, the program drops the Point and
branches back to the top of processing box 152 to read another
pair of coordinate Point voltages.
On the other hand, if the Points fall within the cri-
teria, the program continues to processing box 164 where a
Point counter is incremented to keep track of the number of
Points. This number is used in decision diamond 156, as
mentioned hereinabove. The program then continues to
processing box 166 where the Points are smoothed accordlng to
any one of a number of formulas. Smoothing is used to minimize
noise from digitization, from erratic hand motion and from
electronic noise. The simplest smoothing technique is a
multiple Point average which results in calculatiny new Points
(xj'yj') as follows:




-29-

.

~ ~ .
i32~81

n2

~: x~ xj/(n2 - nl + 1)
i=n,



And sirnila~ly for Yj. smoothed over Points nl - n2.
Another simple method is called the running weight:ed average method and ~ :
utilizes the following fo~nula:

Xj' = a~ Xj ~ (1 - ~Y) x~

Alpha is a weighting constant that is usually positive (and less ~han one~ and has been
used at 0.25. The summa~ions have been taken with n2 minus nl equal to one. A third
method involves what is called a spline fit wherein the following fonnula is used:


:
Xj~ --(xj l + 4 xj + xjtl)



Any of the foregoing methods can be applied either before or af~r
filtering. The filtering is done 50 as to reduce the number of input Points and to space
data so that di~erence and/or angle calcula~ions can be made within acceptable :random
error bounds. A simple process of thinning a se~uence of Points by e7~cluding the
accep~ulce of subsequent Points within a set distance of the preYiously accepted P~ints
has been found to be an effec~ve filter.

From process~ng box 166, the program proceeds to processing box 168
where ~e Point is stored in an array that is incremented for each ne~v Point since the last
pen dow~ signal. Thus, an addressable ar~y of Points i5 created for each se~uence of
Points obtained from a pen down to a pen up signal. This sequence of Points is called a





: : :


~2~81
,:~
Stroke. From proc ssing box 168, the program loops back t~ the top of pr~cessing box
152 where another Point is obtained until a pen up signal ends the Stroke.
In decision diamond 156, a determination was made as to whether there
were less than three Points in a Stroke. By dPfinition, if there are three or more Points
in a Stroke, the Stroke is a line and not a dot. If there are three or more Points in the
Stroke, the program branches to subroutine box 170. In subroutine box 170, discussed in
greater detail hereinbelow with resp~ct to Fig. 9, the Stroke is characterized as to its
slope and base line height.
As can be seen from the foregoing, the segmentation of the stearn of
coordinate Points into a Stroke is based pnma~ily on the determining when stylus 16 is
"up" or not in eontact with the surface of input screen 18. Alternatively, a strearn of
Points can be segmented to ~orm Strokes on the basis of other considerations. Fsr
exampie they can be segmented based upon changes in a loc~lly calculated curvature or
upon a large local curvature. L~cal curvature is calculated by the change in distance
along the input coordinates divided into the change in slope. This produces radius of
curvatu~. When the radius of curvature changes rapidly with respect to distance along
the input coord;nates, or if the radius is too small, then a segmentation S~oke is assurned
to end, and a new Stroke begun. Further segmentation techniques can look at the relative
maximum and minirnum in one or both coordinates and/or the curve crossings in the
coordinates. Mowever, these latter two methods have been dete~nined to be less
effective.
Characterizing a Stroke reduces the sequence of coordinates defining the
Stroke or segment to a set of characteristics that are unique, generalized and minimal. Unique-




-31-

:

~ ~32~8~
ness refers to both actors that the same characteristics are
generated by the same coordinates and that the characteristics
are sufficient to regenerate an approximation to the original
coordinate se~uence. The term "generalized" is used to mean
that the characterization is invariant under such
transformations so that the symbols are invariant (e.g.,
translation and scaling or stretching or small tilt). The
scaling of all distances is accomplished by takins~ a ratio of
the distance to a writing entry line width.
The minimal set of segme~t characteristics have the
following features:
(1) Stroke position: one or more of centroid/average,
extent extreme or beginning and ending Points determined
relative to the writing entry line, to previous Strokes, or to
character extent or center;
(2) Stroke shape is characterized by one or more of
average slope, change in slope (~hich is a measure of a~erage
curvature) andjor a change in curvature, by sequence of slopes
over specific length segments or over fractional 12ngths, or by
a gross description of linear direction or circular completion
and opening direction;
(33 And Stroke length as characterized ~y distance
along the curve and/or the extent extremum along the coordinate
system.
In one embodiment of the present invention, position-
ing by centroid, extent extremum, and starting and ending
coordinates have been successfully used. The Stroke shape is
encoded as a sequence of slopes and vertical positions
(relative to Stroke centroid). The Stroke length can be
approximated by the number of filtered Points. Alternatively,




-32-




3 ~ ~ ~ 8 1 - -:
~ ~.

the average curvatu~ can be encoded in total slope change (along with length), change in starting ~ -
to er.ding slope or fifflng the slope angle versus length curve: for rate of change of slope angle.
Additional charact~ristics that could be used include location of coordinate relative extrema, curve
crossing, cusps, and Stroke direction. A particular method used to determine the unique
characteristics is set for~h ~elow.
1. The numerical values of the CAteria for each Stroke of the Handwritten
Symbol are detem~ined.
2. The database values for each stroke of the previously learned Handwritten
Symbol is determined and sub~acted from the newly determined values respectively.
3. The absolute values of each difference ue scaled, ~o make eaeh of the five
measurements reasonably equwalent to the others such as lengths scaled to height bet~een lines.
4. The five thus-determined values are added.
5. A predetermined threshold is used as "goodness" test o~ recognition -- too
high a value and Font Symbols are infrequently recognized and too low a value causes Font
Symbols to be misidentified. Thresholds of approximately 190()0 are used initially and then
switched to approximately 100 for improved recognition. If the threshold is exeeeded, the
comparison is discarded and an error message is created and displayed.
6. The database is searched to find a numerical minimum difference. If the
minimum difference is below the acceptable threshold for recognition, ~he corres~onding Font
Symbol is displayed on the screen or the command is perfvrmed, as ~he case m~y be.




-33-




~32~81 -
. ;

It has aiso been found that the preferred classification of a Stroke is a continuous
one, rather than one that is grossly discrete. For example, determining a slope by angle in 256
directions rather than in 8 is desirable. Other non-continuous classifications can include
bars/arches/hooks, number and ciosure of cusps or horizontal or vertical Strokes.
From subroutine 170, the program pro~eeds to processing box 171 where both an
individual Stroke and one or more preceding Strokes are compared with a database entry that is
stored in RAM 56 (Fig. 4).
This comparison initially begins with three eliminating questions that are asked by
~he program in decision diamonds 174, 176, and 178. In each case, if the databaæ entry is
eliminated, the program proceeds to a processing box 180 where the address of the next data entry
is received and from which the prograrn loops back to the top of processing box 171. In decision
diarnond 174, the first eliminator is asked by seeking if the num'wr of Strolces are different. If the
number of Strokes are the ~ne, the prog~un proceeds to decision diamond 175 where the ~v~rage
Height Above Base Line (HABL) is calculated and compared with ~he HABL of the data entry.
The entry is eliminated if the difference in the average HABL's is greater than one-half the height
of the entry line. From a negative determination in decision diamond 176, the program proceeds
to decision diarnond 178 where tne number of Points per Stroke are compared and the database
entry is eliminated if the d}fference in number of Points is greater than ten. Ihis determina}ion
varies from that made in decision diamond 174 because it is concerned only with ,he number of
Points for each Stroke. However, in decision diamond 174, certain letters, such as the capital
letters 1~ and "A", have more than one Stroke pe7 letter.




-34-



3 2 ~ ~ 8 1

. .
If a data entry is not eliminated by decision diamond 178, then the program
proceeds to processing box 182 where the program calculates a gauge to be used to determine the
closeness of the match between the selected en~y in the database and the d~wn Stroke. A
presently preferred gauge is the sum of the absolute values of ~e differences between ~he Stroke
va1ues and the database entry values of:
a) distances or lengths in units of l/80th of the line height (e.g., space 26, Fig.
2); and
b) the slopes in units of l/256th o~ 360 over ~11 the Points along the diagonal
of tlle comparison matrix.
Altematively, Dynamic Programming Techniques can be used to optimize the comparison using
off-diagonal elements as well.
From pro~ssing box 182, the program proceeds to decision diamond 186 where a
match is detennined In actuality, a match is determined by (the applica~ion of an arbitrary) gauge
(ma~cimum allowable vanance), which is the sum of absolute values of the differences between the
entered Stroke characterization and that of the stored database entry. In processing box 1837 the
lower of the present gauge and the previous lower g~wge is saved as ~he best ma~ch~ The program
then goes to decision diamond 184 where a determination is made whether the present entry is the
last database entry. If it is not, the program branches to processing box 180 where the next entry
is selected. If i~ is the last entry, the prograrn proceeds to d~cision diarnond 185 where a
detennination of a match is made on the basis of the gauge being below a predetennined
threshold. This threshold is set by the user based on experience with ~he sys~em.
If no match is obtained, the program branches to decision diamond 188 where a
determination is made whether all Strokes have been checked. If the las~ Stroke has been






checked, then the present Strske is compared in sequence wiLh a previous Stroke to all two Stroke
entries. As in the comparison with all one Stroke dictionary e.r.tries, ~he best fit comparison for
all entered Strokes is the rec~gnized symbol or sequence of symbols.
HoweYer, if the last Stroke has been read and there still is not a match, then the
program proceeds to processing box 190 where a question is displayed on display screen 20 asking
the user if a new Font Symbol shou~d be added to the database. The user responds and ~hat
response is used in decision diamond 192. Fither the Stroke sequence is added to the data~ase in
p~ocessing box 194 and the program branches back to the top of processing bo~ 152, or the
program branches immediately to the top of proeessing box 152.
On the othel hand, if a match is de~eTmined in d~ision diamond 186, the program
branches to processin~ box 195 where the prograrn shuffles the database by interchanging the
serial location of the matched entry with the entry above it. The program then pr~eeds to
processing box 196 where the program zeros the Point counter and the increment counter. The
program next proceeds to processing box 198 where the matched and characteriz~ Stroke or
Strokes are displayed by the computer as the identified Font Symbol. This dis~lay is located at
the position in which ~he ently was made on input screen 18 (Fig. 23.
From processing box 198, the program proceeds to px~essi~3g ~x 200 where the
program can act on any commands which it has interpreted. An alternative charactenzation of the
Stroke uses the Points themselves rather than the length, scope, curvature and pOSitiOIl.




-3~

~ ~ i l 32~481

With reference now to Fig. g, this Stroke characteriza-

tion is depicted in greater detail. Stroke characterization
,: :
subroutine 170 essentially performs a mathematical transforma-
tion of each Point on a Point-by-Point basis to transform the
Points from an X,Y Cartesian coordinate system to one in which
the coordinates are the normalized slope of each Point
and the normalized height of each Point above the base line
(HABL).
Subroutine 170 first calculates the Point to Point
slope in processing box 220 and then calculates the height of
each Point above the base line in processing box 222. The slope
and HABL of each Point are then normalized respectively to
1/256th of 2 Pi and to l/80th of the width of the entry line in
processing box 224. From processing box 224, the system pro-
c~eds to processing box 226 where the calculated normalized
values for each Point are stored in an addressable array. The
subroutine then returns to the program through terminal 228.
When the comparison is made between each Stroke and
the stored values, the comparison is made by the normaliæed
Point slope and Point hei~ht above base line. As mentioned
above, a match is determined by an arbitrary gauge which is the
sum of absolute values of the differences between the written
Stroke and the stored or dictionary Stroke. The system learns
by adding new Strokes to the dictionary database. Once the
database fills up, those Font Symbols that are inreyuently
used are replaced by new entries.
In a working embodiment of the present invention, the
algorithm successfully identified upper and lower cas~e letters
and numbers when written discretely from one another. For

Handwritten Symbols that are written such that they are
continuous, direct extrapolation would require searching a
database sequentially for one, two, three, etc. Stroke ~ymbols


-37-

1 3 2 ~ 4 8 1 :~ ~
and looking for the best fit. Upon identification of a Stroke
fit, a "new" letter is tenatively recognized, except that the
next few Strokes are analyzed to check if they change the
previous symbol for a better fit. For example, two Strokes
that have been identified as "ones" would be combined and
changed to the capital letter "H" once a cross bar was
identified.
The system design demonstrated by Figs. 7 to 9 could
easily be coded by one with ordinary skill in the art of
computer programming into almost any computer language. The
source code listings for one application program utilizing the
disclosed invention is included as Appendix II. The software
in Appendix II is written in Microsoft Basic, a common computer
language available for ~irtually all microcomputers and
operating systems. The program is a complete text editing
demonstration, which takes advantage of many of the key
features of this invention and shows the improvements that can
be made upon traditional word processing systems through the
utilization of this invention.
Program lines 2600 to 4000 contain the character
recognition subroutine which includes the software code
necessary to get X and Y coordinates. This section of the
program corresponds to Fig. 8.
Program lines 2600 to 2699 make up a subroutine
designed to obtain the X and Y coordinates of a given Point.
This code corresponds to boxes 152, 154, 160, 162, 164, 166 and
168 of Fig. 8.
I Program lines 3000 to 3339 constitute a Point and
Stroke analysis and characterization routine e~bodying boxes
156, 158, 170, 172 and 173 of Fig. 8.




38-

.

3 2 ~ 4 ~ 1 :
~ . .
Program lines 3700 to 3790 make up a subroutine
designed to compare the analyzed Strokes to a Stroke database.
These program lines embody boxes 171 to 184 of Fig. 8.
Program lines 3810 to 3980 make up a subroutine which
is designed to learn a new character. This code embodies boxes
186, 188, 190, 192 and 194 of Fig. 8.
Program lines 3060 to 3273 make up a subroutine
designed for Stroke characterization purposes. This section of
the code corresponds to Fig. 9.
Program lines 3060 to 3095 are used to calculate
Point-to-Point slopes and embody box 220.
Program lines 3058, 3241 and 3262 are used to
calculate a height above baseline (HABL) and correspond to box
222 of Fig. 9.
Programs lines 3253, 3270-3273 are used to normalize
the Point height and slope and correspond to box 224 of Fig. 9.
Program line 3253 is used to store the height above
baseline and embodies box 226 of Fig. 9.
The foregoing program can be stored in the memory of
a microcomputer of microprocessor with a re~uirement of
approximately 25~ of machine memory, so that it can be seen
that the use of the program does not use up a lot of expensive
memory and is relatively fast in executing the program's
operation. If the program is written in a language other than
Basic, requiring less memory, such as assembly language, the
size of the program can be made smaller.
Boxes 195 to 200 of Fig. 8 appear in logical places
throughout the code.
A dictionary of the variables of the relevant code
section is included as Appendix III.
With reference now to Fig. 13, a flowchart for the

editing software ~"Editor") demonstrated by Figs. llA to llI


-39-

:
~ ~ ~: 132~481
. .
and described above is depicted. Once the Editor is loaded
~- into the system (box 229~, control of the screen is returned to
the system. The system then proceeds in the normal manner
described above to acquire Points and display them (box 230~,
convert the Points into Strokes (box 231), characterize each
Stroke (box 232), and attempt to match the Stroke or Strokes
with the database (box 233). In processing box 234, the system
sends each Handwritten Symbol to the Editor to interpret and
execute a command if necessary. At decision diamond 235, the
Editor determines whether the Handwritten Symbol is an Editing
Symbol or a Font Symbol. If the character is determined to be
an Editing Symbol, the Editor proceeds to processing box 236
where it determines which Editing Symbol has been entered and
executes the Editing Function. If the character is determined
not to be an Editing Symbol, then the alphanumeric character
corresponding to the handwritten entry is displayed at pro-
cessing box 237. In an alternate configur~tion of the ~ditor,
Font Symbols will only be accepted when the Editor is in the
"Insert Mode." This structure insures that each Font Symbol is
verified before being added to a document.
The Editor uses a variety of symbols designed to make
editing on the system similar to, but much more efficient than,
traditional editing with pencil and paper. These functions
include, but are not limited to:
DELETE symbol - " " A horizontal line drawn
through a character or characters. The Editor will remove the
underlying characters and reformat the text.
ADJUST MARGINS symbol - "¦" A vertical line longer
then the height of one line on the display. The Editor will
adjust the margin to the indicated position and reformat the

text.



-43-


~ 132~4~1

INSERT symbol - "~" A caret drawn at the Point where
text is to be added. The Editor displays an input writing line
(Fig. 118) and when input is recognized inserts it into the
text.
MAR~ TEXT symbols - "~' and "' A less than and
greater than symbol drawn at the beginniny and end of a block
of text. The marked text is displayed in reverse video and
then special block functions can be performed.
DELETE MARKED TEXT - A delete s~mbol drawn within
marked text will erase the marked text and reformat.
MOVE MARKED TEXT - An insert symbol drawn anywhere
within the text moves the marked text to the indicated
position, deletes it from its origional position and reformats
the text.
REPLACE ~AR~ED TEXT An insert symbol drawn within
the marked text displays an input line and replaces the marked
text with the inputted text.
The Editing Symbols described above can be changed to
the particular Editin~ Symbols preferred by each user, thereby
customizing the Editor and preventing new users from having to
learn unfamiliar Editing Symbols.
Further modifications and enhancements to the present
invention would be obvious to those skilled in the art. For
example, the common characteristics of each Font Symbol could
be extracted and organized into a synthetic symbol. The
synthetic symbol's characteristics could then be exaggerated to
maximize their variance from all other synthetic symbols~ This
would create a very compact, optimal database. On the other
hand, as an example, a database created by the described
preferred embodiment of the invention usually results in two to
three different characterizations for each symbol.




-41-


:: : `:~
~: ~ 132~48~

~ The invention has numerous useful applications,
:. ~
almost without limitation. The most obvious applications are
text editing and filling out and modifying forms. Some of the
many other applications that may not come to mind as readily
are writing in languages utilizing large numbers of symbols
like Japanese or Chinese; writing in Arabic and similar lan-
guages made up of a limited number of complex symbols; writing
chemical equations, including those involving organic
compounds; writing music ~a "window" with five par~llel lines
can be provided for musical applications); writing symbols and
codes for graphic manipulation of data, including the transfer
of graphic data to a spreadsheet; in education, as where
predetermined questions are presented on the screens and the
answers written in long-hand; as in teaching mathematics, as
when numbers are manually inserted in equations and the
equation analyzed to determine the result using those numbers;
in CA3/CAM applications involving symbols, geometric shapes and
the like.
Although the invention has been described in terms of
a selected preferred embodiment encompassing the apparatus and
methods aspects of a keyboardless oomputer system, the invention
should not be deemed limited thereto, since other embodiments
and modifications will readily occur to one skilled in the art.




-42-

:
~32~81
APPEND I X I


'h' (1) ns = l x = (-17.Ø.19) y = (-6..18..60)
1) np = 20 x = ( -17. Ø .19) y ~ ( -6. .18. .60)
5, 42
_57, 34
-85, 26
-71, 19
-76, 10
-64, 3
- 89, - 3
-72, _9
-85, -17
~72, -24
47, -17
56, -11
43, - 3
39, 3
ll, 7
_9, 5
-57, -3
-71, -11
-71, -1~
'H' (1) ns = 2 x = (-27.Ø.37) y = (-20..18..Sl)
1) np = 14 x = (-27..-12..-2~ y = (-20..22..61)
_9, 37
4, 38
-39, 32
-48, 25
-58, 16
-71, 8
-72, 2
- 64, - 4
- 89, - 11
-72, -17
-80, -24
-89, -30
-80, -36
2) np 20 x = (-21..10..37) y = (-15..16..59)
27, 43
-80, 37
-71, 29
-98, 23
-80, 16
-78, 8
-85,
-89, -6
-80, -12
-B0, -18
-64, -25
-64, 31
48, -25
56, -18
48, - 12
64, -6
89,
-124, 0
124, -2

- 43 -

- ~ 3 2 ~
~- ~ APPENDIX II
-.

1 REM Z SERIES COPYWRITE: LINUS TECHNOLOGIES INCORPORATED, RESTON, VA., 7/30/85
10 DEFINT A-Y : REM all integers excep~ z
20 DIM X(2000),Y(2000),D(9, 800),DN~300),DC(300),SX( 80),SY( 80),SL( 80),SC( 80),SA( 80),SXX( 80),SXN( B0),SYX( 80),SYN( 80),SNO(80),MTITL$(20),A$(1500),LL(24),AS$(200),SLET(80),DBC(9,10),ASTRT(80),AEND(80)
25 PRINT FRE(O)
30 PRINT "Z SERIES COPYWRITE: LINUS TECHNOLOGIES INCORPORATED, RESTON, VA., 7/30/85"
IMARGN=5 : IMARGX=62 : JTOP=1 : JBTM=15 : JMENU=~60 :CR$= n ^ n
KYBD=0: LHT=16 :SXTT=4: JTX=0: ACPT=1000
60 LHT4=LHT\4 :LHT3=LHT\3 :LHT5=LHT\5 :LHT2=LHT\2
70 PRINT "PLEASE INPUT PEN SWITCH...-1 TO RERUN, 0 TO RUN, 1 TO RUN & STORE": INPUT SWTPN
IF SWTPN > -1 THEN GOSUB 10700 :REM TOUCH TECH SCREEN IN ASCII @ 9600
80 PRINT "PLEASE INPUT DEBUG ...-5 TO 5 n: INPUT DBUG
85 PRINT ~PLEASE INPUT ACCEPTANCE CRITERIA...10 TO 1000 ~: INPUT ACPT
90 PRINT "PLEASE INPUT EDIT/LEARN SWITCH...1 TO EDIT": INPUT EDLN
92 PRINT ~PLEASE INPUT KEYBOARD SWITCH...0 FOR ~EYS, 1 FOR MENU n: INPUT KYBD
95 PRINT "PL~ASE INPUT RESTART SWITCH...1 TO RESTART WITX STORE~ DATA BASE~: INPUT RESTRT
97 IFAVE-0 :IF SWTPN=-1 THEN IFAVE=0 :REM PRINT "PLEASE INPUT AVERAGING SWITCH...1 TO READ & AVERAGE, 2 TO AVERAGE INPUT": INPUT IFAVE
100 KEY OFF :SCREEN 2 :CLS
120 IF RESTRT = 1 THEN GOSUB 12700
130 IF EDLN = t THEN GOSUB 12100 : REM READ IN TEXT
140 IF EDLN = 1 THEN GOSUB 600 : REM PRINT TEXT
150 IF SWTPN = 1 THEN GOSUB 7200
151 IF SWTPN = -1 THEN GOSUB 7000
170 IF EDLN <> 1 THEN GOSUB 6100
180 IF EDLN <> 1 THEN GOSUB 1250
200 REM EDIT
205 LINY=0
210 IF SWTPN = -1 THEN GOSUB 7100 ELSE GOSUB 2600 :REM TOUCH TECH SCREEN IN ASCII @ 9600
211 IF SWTPN =1 THEN GOSUB 7300
220 REM RECOGNIZE SYM~OLS
221 IF NP > 2000 THEN LOCATE 23,1: PRINT "TOO MANY POINTS" : STOP
222 IF NP < 4 THEN GOTO 200
230 GOSUB 3000 :GOSUB 3400 :REM ~~ <>~ P~E
240 ON NCH~R GOTO 1200,1300,1700,6200,6700,6500,6600,12500,6900,200 :REM DELETE,MOVE,FORMAT,INSERT,WRITE OVER,REMOVE,PARAGRAPH,INSERT C~AR~CTER,END
250 GOTO 200
500 END
600 REM DISPLAY TEXT FROM SINGLE CHARACTER ARRAY
605 LOCATE 23,20: PRINT " ", -~
610 I=II : J=JJ : REM INITIAL DISPLAY POINT FOR NC1
620 FOR K=NC1 TO NC
630 IF A$~K) <> CR$ TH~N GOTO 660
6qo LOCATE J,I : PRINT ~ n : I=I~1 : IF I < 81 GOTO 640
650 J=3+1 : I=IMARGN : LL(J)=K : GOTO 740
660 IF I< IMARGX THEN GOTO 670 ELSE IF A$IK~- n n GOTO 690
670 IF J> JBTM THEN LOCATE 21,20: PRINT ~READYU, :RETURN
680 LOCATE J,I : IF I=IN THEN GOTO 710 ELSE PRINT A$tK) : I=I+1 : GCTO 740
690 LOCATE J,I : PRINT ~ IF I< 81 ~OTO 690
700 J=J+1 : I=IMARGN : LLtJ)=K+1 : G9TO 740
710 IF A$tK) <> " " THEN GOTO 730
720 IF LL(3~=K GOTO 740
730 I=I+1 : PRINT A$(K)
740 IF I> IMARGX+10 THEN GOTO 690 ELSE NEXT K
750 IF J> JTX THEN GOTO 790
760 JS=J
765 LOCATE J,I : PRINT " ": I=I+1: IF I< 81 GOTO 765
770 J=J~1 : I=IMARGN: IF J > JTX ~HEN GOTO 780 ELSE 50TO 765


-44-

2 ~ 4 8 1
,~

; 7~0 J=JS
790 JTX=J : LOCATE 23,20: PRINT "READY", :RETURN
1200 REM DELETE
1205 XX=~XX(1): XN=SXN(1): YX=SYX(1): YN=SYN(1)
1206 IF NSTRK=l GOTO 1220
1210 FOR L=2 TO NSTRK
1212 IF XX < SXX(L~ THEN XX=SXX( L)
1214 IF XN > SXN(L) THEN XN=SXN(L)
1216 IF YX < SYX(L) THEN YX=SYX(L)
1218 IF YN > SYN(L) THEN YN=SYN(L)
1219 NEXT L
1220 IN=IMARGN
1225 I=INT(XX/8)+1 : IF I < IN THEN I=IN
1230 J=INT(YX/8)+1 : ML=LL~J) :M2=ML+I-IN : IF A$(ML)=~ ~ THEN M2=M2+1
1231 IF A$/ML)=CR$ THEN M2=M2+1
1232 I=INT(XN/8)+1 : IF I < IN THEN I=IN
1234 J=INT(YN/8)+1 : ML=LL(J) :M1=ML+I-IN : IF A$(ML)=n n THEN Ml=Ml+1
1240 IF A$(ML)=CR$ THEN M1=Ml+l
1250 MD=M2-M1~1: IF MD < O THEN MD=M1-M2+1 : Ml=M2
1260 FOR M=Ml TO NC : A$ ( M ) =A$ (M+MD) : IF M+MD=NC THEN GOTO 1270 ELSE NEXT M
1270 FOR M=NC-MD+1 TO NC :A$(M)= ~ n : NEXT M
1280 II=I: JJ=J: NC1=~1 : GOSUB 600
1290 NC=NC MD : GOTO 200
1300 REM MOVE INDICATED BY OPENING BRACKET
1305 IN=IMARGN
1~10 XX=SXX(1): XN=SXN(11: YX=SYXI1): YN=SYN(1)
1320 XP=(XN+XX)/2: YP=(YN+YX)/2 :REM AVE BRACKET POSITION
1330 I=INT(XP~8)+1: J=INT(YP/8)+1:REM CONVERT X,Y TO I,J
1340 ML=LL(J~: M1=ML+I-IN :REM CALC A ARRAY INDEX OF LETTER AT l,J
1 1350 IF A$(ML)=" " THEN Ml=Ml+l
l~ 1360 IF A$(ML)=CR$ THEN Ml=Ml+1
I 1390 XX=SXX(2): XN=SXN(2): YX=SYX(2): YN=SYN(2)
: 1400 XP=~XN+XX)/2: YP=IYN+YX)/2 :REM AVE BRACKET POSITION
1410 I=INT~XP/8)+1: J=INT(YPj8)+1:REM CONVERT X,Y TO I,J
1420 ML=LL~J): M2=ML+I-IN :REM CALC A ARRAY INDEX OF LETTER AT I,J
1 ~ 1430 IF A$1ML)=" " THEN M2=M2+1 ~:~
¦ 1440 IF A$~ML)=CR$ THEN M2=M2+1
1 1450 M3=0:REM INITIATE COUNTER ~
1 1460 FOR M=M1 TO M2 :REM LOOP OVER PORTION CUT ~:
1470 M3=M3+1: REM INCREMENT COUNTER
1480 AS$~M3)=A$~M) :NEXT M :REM COPY CUT TEXT :~
1 1490 XX=SXX~3): XN=SXN(3): YX=SYX(3): YN=SYN(3l ~:~
1 1500 REM INSERT WITH M3 LETTERS STORED IN AS$ & xx,x~,yx,yn :~ .
1520 XP=(XN+XX)/2: YP=IYN~YX)/2 :REM A~E BRACKET POSITION :~
1530 I=INTtXP/8)+1: J=INT(YP/8)+1:REM CONVERT X,Y TO I,J
1540 ML=LL(J): M3=ML+I-IMARGN :REM CALC A ARRAY INDEX OF LETTER AT I,J ~.
1550 IF A$1ML)=n n THEN M3=M3~1
1560 IF A$~ML~=CR$ THEN M3=M3+1
1570 MD=M2-Ml~l : IF MD > O THEN GOTO 1S80 ELSE GOTO 200
1580 FOR M=Ml TO NC : REM LOOP OVER A$ M RAY POSITIONS TO BE SHIFTED
1590 A$/M~=A$(M~MD) : REM SHIFT A$ ARRAY LETTERS
~ 1600 IF MIMD = NC THEN GOTO 16 15 ELSE NEXT M : REM STOP AT END OF ARRAYzNC
} 1610 IF M3 > M2 THEN M3=M3-MD :REM OFF SET INSERTION POINT TO ACCOUNT ~OR DELETI
~3 ON
:~ 1620 FOR M=NC-MD TO M3 STEP -1 : REM SPRED ARRAY TO MAKE ROOM FOR INSERTION, 1630 A$(M~MD)=A$1MI ~REM MOVE LETTERS
`~ 1640 NEXT M
1650 FOR M=l TO MD :REM LOOP OVER CHARAcTERs
` 1660 A$(M3+M-l)=AS$~M) :REM INSERT LETTERS
- 1670 NEXT M
1680 CLS: II=IMARGN: JJ=JTOP: NCl=l : GOSUB 600
1690 GOTO 200
1700 REM REFORMAT MARGINS


-45-
~.
:' .

~` ~
1 3 2 a 4 8 1
,
, .
1720 XP=(SXN(L)+SXXlL))\2 :REM AVE BRACKET POSITION
1730 I=XP\8+1 :REM CONVERT X TO I
1740 IF ABS(I-IMARGN) <ABS(I-IMARGX) THEN IMARGN=I ELS~ IMARGX=I
1750 CLS: II=IMARGN: JJ=JTOP: NC1=1 : GOSU8 600
1760 GOTO 200
2600 REM TT ACQUIRE POINTS IN ASCII @ 9500 WITH TIME OUT
2603 M=20
2605 IF LOC(2) > 0 THEN IPUT$=INPUT$(1,2) : GOTO 2605
2506 PRINT ~2,"G" :N=0
2610 IF LOC(2) < 40 THEN GOTO 2610
2620 NU=0: INPUT #2,XP,YP :INPUT #2,XP,YP :INPUT #2,XPA,YPA :INPUT #2,XP0,YP0
2630 N=N+1- XPA=(XPA+XP0)\2: YPA=(YPA+YP0)\2: XP0=XPA: YP0=YPA: X(N)=XPA: Y(N)=Y
2640 INPUT #2,XP,YP
2653 XPA=(XP+3*XPA)\4: YPA=(YP+3*YPA)\4
2657 IF ABS(XPA-XP0)+ABS(YPA-YP0) < 3 THEN GOTO 2672
2660 I=32~XPA\AX+BX:J=32*YPA\AY+BY:PSET(I,J)
2670 N=N11 : X(N)=XPA :Y(N)=YPA: XP0=XPA: YP0=YPA
2672 IF LOCl2) > 9 THEN GOTO 2640
2675 MM=0
2680 MM=MM+1: IF LOC(2) > 9 THEN GOTO 2640 ELSE IF MM S M THEN GOTO 2680
2685 X(N)=-X~N): IF X(N) = 0 THEN X~N)=-1
2690 IF LOC(2) > 39 THEN GOTO 2620 ELSE NU=NU~1 :IF NU < 4000 THEN GOTO 2690
2695 PRINT #2,"S": NP=N
2696 IF DEBUG <> 0 THEN ~OCATE 20,2 :PRINT "NP=",NP
2697 IF IFAVE=2 THEN GOSUB 4200
2698 IF DEBUG <> 0 THEN LOCATE 20,12 :PRINT NP
2599 RETURN
3000 REM CALCULATE CHARACTERIZATION OF STROKES
3005 REM GOSUB 4200 :REM 2 POINT AVERAGE POINTS
30~10 A1=0: A~=0: DA1=0: DA2=0: SEND=0: ZX=0: ZY=0: ZA=0: ZDA=0: ZL=0: NSP=0
:3015 NSTRK-0: XX=ABS(X(1)): XN=XX: YX=Y(1): YN=YX: M1=1: M2=1: M3=2: NLONG=0
3020 FOR M=2 TO NP
:3025 IF X(M) < 0 THEN SEND=2 :X(M)=-X(M)
3030 IF M > M1 GOTO 3035 ELSE 3391
3035 IF X(M1) ~ 0 THEN M1=M: GOTO 3391
3040 DX=X(M)-X(M1): DY=Y(M)-Y(M1): ADX=ABS(DX): ADY=ABS(DY): DS=ADX+ADY
3043 IF AY > 0 THEN DY=-DY
3044 IF DS < 3 THEN GOTO 3391
3052 IF X(M) < XN THEN XN=X(M)
3053 IF X(M) > XX THEN XX=X(M) ; ::
3054 IF Y(M) < YN THEN YN=Y(M) :
3055 IF Y(M) > YX THEN YX=Y(M)
3058 ZX=ZX+X(M)*DS: ZY=ZY+Y(M)*DS: ZL=ZL+DS: NSP=NSP+1
3060 IF ADX < ADY THEN GOTO 3080 :REM ENCODE ANGLE 0-255 l-n256
3070 IF DX > 0 THEN A1=64-(32*DY)\DX ELSE A1=192-(32*DY)~DX
3075 GOTO 3085
3080 IF DY S 0 THEN A1= ~32~DX)\DY ELSE A1=128+t32*DX)~DY
3085 IF NSP>M2 THEN GOTO 3090
30~6 IF A1<0 THEN A1=A1+256
3087 ZA=ZA+A1~DS
3089 GOTO 3190
3090 IF A1-A2 ~ -127 THEN A1=A1+256 : GOTO 3090
3095 IF A1-A2 > 128 THEN A1=A1-256 : GOTO 3095
3100 ZA=~A+A1*DS
3110 DA1=A1-A2
3115 ZDA=ZDA+DA1
3120 IF NSP > M3 THEN ADA=(DA2+ADA)/2 ELSE ADA=DA1 : AST~TlNSTRK~1)=(A1+A2~2
3130 I~ NSP = M3+1 T~EN ASTRT(NSTRK~1)=(A1-~A2)~2
3140 IF ABS(DA1-ADA) > 80 THEN SEND=1
31S0 IF ABS(DA1) > 64 THEN SEND=1
3190 IF SEN~=0 THEN GOTO 3300
3200 REM END OF STROKE
, .

,.,

:
:.
~; -46-
-
.
~,

`~:
~ - ~32~481
.
i~ .
3205 IF SEND = 1 THEN GOTO 3220
3206 X(M)=-X(M)
3208 SEND=0: SZL=ZL: SZL=32*SZL\AY: IF SZL < 0 THEN SZL=-SZL
3209 IF NSP < 3 THEN GOTO 3210 ELSE IF SZL > 2 THEN Ml=M+1: GOTO 3250
3210 IF NSTRR > 0 THEN IF X(SNO(NSTRK)~ > 0 THEN X(SNO(NSTRK))=-X(SNO(NSTRK))
3212 M1=M+1
3215 GOTO 3280
3220 SEND=0: SZL=ZL-DS: SZL=32*SZL\AY: IF SZL < 0 THEN SZL=-SZL
3226 IF NSP < 4 THEN GOTO 3300 ELSE IF SZL < LHT5 THEN GOTO 3300
3230 M1=M
3240 ZX=ZX-X(M)~DS
3241 ZY=ZY-Y(M)*DS
3242 ZL-ZL-DS: ZA=ZA-A1*DS: ZDA-ZDA-DA1
3243 NSP=NSP-1
3250 NSTRK=NSTRK+1
3253 SL(NSTRK)=50*SZL\LHT: AEND(NSTRK)=(A3+A4)\2: SC(NSTRK)=ZDA : AZA=ZA/ZL
3254 IF AZA > 255 THEN AZA=AZA-256 : GOTO 3254 :REM USE 128 HERE FOR DIRECTION INDEPENDENCE
3256 IF AZA < 0 THEN AZA=AZA+256 : GOTO 3256
3260 SX(NSTRK~=ZX/ZL: SX(NSTRK)=32*SX~NSTRK)\AX+BX
3262 SY(NSTRK)=ZY/ZL: SY(NSTRK)=32*SY~NSTRK)\AY+BY
3264 SA~NSTRK)=AZA
3270 SXX~NSTRK)=32~XX\AX+BX: SXN~N5TRK)=32*XN\AX+BX: SNOtNSTRK)=M
3272 IF AY < O THEN SYN~NSTRK)=32*YX\AY~BY: SYX~NSTRX)=32*YN\AY~BY : GOTO 3280
3273 SYX(NSTRK)=32*YX\AY+BY: SYNINSTRK)=32*YN\AY+BY
3280 IF DBUG > 3 THEN LPRINT USING "##"iM,NSP,X~M),Y(M),ZL,ZA,Al,DA1,ADA,ZDA,(AlIA2+A3+A4)\4 ELSE IF DBUG < ~3 THEN PRINT USING n##n;M,NSP,X(M),Y~M~,ZL,ZA,Al,DA1,ADA,ZDA,~A11A2+A3+A4)\4
3281 IF DBUG > 2 THEN LPRINT n SL,SA,SC,AS,AE n ,SL(NSTRR) SA(NSTRK) SC(NSTRK) ASTR
T(NSTRK) AEND~NSTRK) ELSE IF DBUG < -2 THEN PRINT ~SL,SA~SC,AS~AE~SL(NSTRK) SA(NSTRK) SC(NSTRK) ASTRT(NSTRK) AEND(NSTRK) ~-~
3285 Al=0: A2=0: DAl.=0: DA2=0:DS2=0:DSl=0:SEND=0: ZX=0: ZY=0: ZA=0: ZDA=0: ZL=03290~XX=ABS(X(Ml)): XN=XX :YX=Y(Ml): YN=YX: NLONG=0 :NSP=0
3295:GOTO 3391
3300 REM FINISH LOOP ::
3310 M1=M
3320 DA3=DA2: DA2=DA1: DS2=DSl: DSl =DS: A4=A3: A3=A2: A2=Al `~
3390 IF DBUG > 3 THEN LPRINT USING "##";M,NSP,X(M),Y~M),ZL,ZA,A1,DA1 ~ADA~ZDA
,(A1 +A2~A3~A4 )\4 ELSE IF DBUG < -3 THEN PRINT USING "#~###";M,NSP,X(M),Y(M),ZL,
ZA~Al~DAl~ADA~ZDA~(A1+A2+A3+A4)\4 :.
3391 NEXT M
3392 IF DBUG > 1 THEN LPRINT n I NO X Y L A C XX XN
X YN ST ND"
3393 IF DBUG ~ ~l THEN LOCATE 9~1 :PRINT n I NO X Y L A C
XX XN YX YN ST ND~
3394 IF DBUG < ~1 THEN LOCATE 10~1 :FOR I=l TO NSTRX:P~INT USING ~#n;I,SNO(ISX(I)~SY(I)~SL(I)~SA(I)~SC(I)~SXX(I)~SXN(I)~SYX(I)~SYN(I~ASTRT(I)~AEND(I) :NE
XT I
3395 IF DBUG > 1 THEN FOR I=1 TO NSTRK: LPRINT USING ~#~;I,SNO(I),SX~I),SY~I),SL(I),SA~I),SC~I),SXX~I),SXn~I~,SYX~I),SYN~l),ASTRT~I),AEND~ NEXT I
3396 IF NSTRK ~ 1 THEN GOSUB 4000 ELSE GOTO 3399
3397 IF DBUG < -1 THEN FOR I-1 TO NSTRK:PRINT USING ~#n; I,SNO~I),SXtI),SY~I)
,SL~I),SA~I~,SClI~,SXXlI~,SXNll),SYX~I),SYN~I~,ASTRT~I),AEND~ EXT I
3398 IF DBUG > 1 THEN FOR I=1 TO NSTRX: LPRINT USING ~###~#";I,SNO~I),SX~I),SY~I~,SL~I~,SA~I),SC~I~,SXX~I~,SXNlI),SYX~I),SYN~I~,ASTRTtIl,AEND~ NEXT I
3399 RETURN
3400 REM EDITING SYMBOL RECOGNITION
3410 FOR L=1 TO NSTRK
3412 A1=~SA~L)+32)\64: IF A1 > 3 THEN Al'0
3416 IF A1 = O THEN IF SL~L) > 100 THEN NCHAR=3: RETURN: ~E~ VERTICAL
3418 IF Al = 1 THEN IF SL~L~ > 60 THEN NCHAR=l: RF-TURN: REM HORIZONTAL
3420 IF Al = 2 THEN IF SL~L) > 100 THEN NCHAR=3: RETURN: REM VERTICAL
3422 IF Al = 3 THEN IF SL~L) > 60 THEN NCHAR=l: RETURN: RE~ HORIZONTAL

.
, .
~'
~47~

:
~ 3 ~ ~ ~ 8 1

3430 NEXT L
3500 REM CONVERT LETTER TO EDITTING CODE
3510 ED=l :GOSUB 3600 :ED =0
3515 IF NLET > 0 THEN GOTO 3530
3520 NCHAR=10: LOCATE 20,1: PRINT "TRY AGAIN" :RETURN
3530 IF CS$ = "-" THEN NCHAR =l :RETURN
3532 IF NLET = 3 THEN IF CS$ = "^" THEN NCHAR=2 :RETURN
3536 IF CSi$ = " " THEN NCHAR=4 :RETURN
3538 IF CS$ = "\" THEN NCHAR=9 :RETURN
3540 IF CS$ = "P" THEN NCHAR=7 :RETURN
3542 IF CS$ = "E" THEN NCHAR=8 :RETURN
3544 IF CS$ = n/" THEN NCHAR=6 :RETURN
3546 IF NLET= 1 THEN NCHAR=5 :RETURN
3550 GOTO 3520
3590 RETURN
3600 REM PARCEL STROKES INTO CHARACTERS
3602 IF DBUG > 4 THEN LPRINT USING "##"; SXX(1),SXNIl),SYX(11,SYN~l),LHT4
3603 SLET(1)=1: NLET=1: IF NSTRK=1 THEN GOTO 3650
3605 FOR L=2 TO NSTiRK
3606 IF D~UG > 4 THEN LPRINT USING "##"; SXX(T~ ,SXN(L),SYX(I,),SYN(L)
3607 ICONT=0
3610 FOR L1=1 TO 2 : IF L > 2 THEN GOTO 3615 ELSE IF L1=2 GOTO '2635
3615 IF SXX(L-L1) > SXX(L) THEN GOTO 3630 ELSE IF ~SXX(L-L1)+LHT4) < SXN~L) THEN GOTO 3635
3620 IF ABS((SYX(L)+SYN(L))-(SYX(L-L1)+SYN(L-L1))) > LHT THEN GOTO 3635
3629 ICONT=Ll :GOTO 3635
3630 IF SXN(L-L1) > SXX(L)+LHT4 THEN GOTO 3635 ELSE GOTO 3620
3635 NEXT L1
3640 IF ICONT=0 THEN NLET=NLET+l :SLET(L)=NLET: GOTO 3649
36i5 NLET=SLETIL-ICONT} : SLET(L)=NLET :SLET(L-1)=NLET
3646 IF DBUG > 3 THEN LPRINT "L,NLET,SL~T",L,NLET,SLET(L-1),SLET(L-2
3649 NEXT L
3650 REM LOOP OVER LETTERS
3652 IF ED=1 THEN ZLINY=0: FOR LMN=l TO NSTRK : ZLINY=ZLINY+SYX-(LMN)ISYN(LMN): N ~ :
EXT LMN : LINY=ZLINY/NSTRK :LINY=(l+LINY\16)*8+4 :IF DBUG ~ O THEN LPRINT ~LINY=",LINY ELSE IF DBUG < 0 THEN LOCATE 22~1 :PRINT "LINY=",LINY
3655 MCHR-l: NST=0 XX=-l: XN=1000: XXl=-lOO :YX=-1 :YN=1000 :YX1'-100
3656 FOR LSTRK=1 TO NSTRK+1
3657 LST=LSTRK :IF LSTRK = NSTRK+l THEN GOTO 3659
3658 IF SLET(LSTRK) = MCHR THEN NST=NST~l: GOTO 3690
3659 IF NST > 10 THEN LOCATE 23,1 : PRINT "TOO MANY STROKES", :STOP
3660 FOR M=l TO NST :LMN=LST-NST~M-1
3661 DBC(l,M)=SL(LMN): DBC(2,M)=SA(LMN): DBC(5,M)=SCtLMN)
3662 DBC(6,~)=(100*(5X(LMN)-SXILST-NST)))\LHT :DBC13,M)=ASTRT~MN) :DBC(4,M)=i~END(LMN)
3663 DBC(7,M)=(100*(SY(LMN)-LINY))\LHT : DBC(9,M)=( 50~(32*Y(SNO(LMN)-1)\AY~BY-LINY))\LHT: IF LMN ~1 THEN DBC(8,M)=( 50*(32*Y(2)\AYfBY-LlNY))\LE~T ELSE DBC(~,M)=
( S0*(32*Y(SNO(LMN-1)+2)\AY+BY-LINY))\LHT
3664 IF YX < SYX(LMN) THEN YX=SYX(LMN)
3665 IF YN > SYN~LMN) THEN YN=SYNILMN)
3666 IF XX < SXXILMN) T~EN XX=SXX(LMN)
3667 IF XN > SXN(LMN) THEN XN=SXN(LMN)
3668 IF DBUG > O THEN LPRINT USING r#n;MCHR,DBC11,M),DBC~2,M),DBC(3,M),DBC(4,M),DBC(5,M),DBC(6,M),DBC(7,M),DBC(8,M),DBC(9,M)
3669 IF DBUG < O THEN LOCATE 10+M,27: PRINT USING "#";MCHR,DBC(1,M),DBC(2,M),DBC~3,M),DBC(4,M),DBC(5,M),DBC(6,M),DBC(7,M),DBC(8,M),DBC~9,M)
3670 NEXT M :GOSUB 3700
3671 NPOS=(Z~(XX~XN)\16-IMARGNI\2
3672 REM PRINT ~MCHR,NPOS,CHAR,ED" ,MCHR,NPOS,CS$,ED :INPUT IJK
3673 IF ED = 1 THEN NPOS=0: AS$(MCHR~SCS$
3674 IF NPOS > ~ THEN IF NROS < 40 THEN ~S$(NPoS)=CS$
3675 REM
3676 IF ED <~ 1 THEN LOCATE (LINY-LHT+1)\8,1XX~XN)\16+1 :PRINT CS$

:i
r,
~i -4~-

.,

~32~481
3677 REM
3680 SXX(MCHR)=XX : SXN(MCHR)=XN
3682 SYX(MCHR)=YX : SYN(MCHR)=YN
3688 MCHR=MCHR+1: NST=1: XX1=XX: XX=-1: XN=1000: YX1=YX: YX=-1: YN=1000
3690 NEXT LSTRK
3699 RETURN
3700 REM COMPARE TO DATABASE
3710 R1=16000 :M.~=0 :IF NDBT=0 THEN GOTO 3900
3715 FOR M=1 TO NDBT
3720 IF DN(M) <> NST THEN GOTO 3790 :REM CHECK NUMBER OF STROKES
3725 M2E=9 :IF LINY = 0 THEN M2E=6 .
3730 R=0 : FOR M1 =1 TO NST
3735 FOR M2=1 TO M2E
3738 DR=ABS(DIM2,M3+M1)-DBC(M2,M1~)
3740 IF M2 < 2 THEN GOTO 3744 ELSE IF M2 > 4 THEN GOTO 3744
3741 IF DR ~ 128 THEN DR=ABS(DR-256): GOTO 3741 :REM USE 64 FOR DIRECTION INDEPENDENCE
3742 IF ABS(D~5,M3+M1)~ > 20 THEN DR=20*DR\(ABS(D(5,M3+M1)))
3744 IF DR > 300 GOTO 3790
3748 R=R+DR
3749 IF R > R1 GOTO 3790
3750 NEXT M2 : NEXT M1
3780 MS1=M : R1=R
3790 M3=M3+ DNlM) :NEXT M
- 3800 REM IDENTIFY CHARACTER ~ 4
3803 C5$=CHR$( DC(MS1)) :~:
3804 REM ~:~
: 3805 IF DBUG <~ 0 THEN LOCATE 19,1 :PRINT R1,MS1,CS$
3806 REM
~- 3810 IF R1\NST > ACPT GOTO 3900 :REM CHARACTER NOT FOUND :~
3830 RETURN
:~ 3900 REM LEARN NEW CHARACTER ~.
: 3902 IF LERN = 0 THEN CS$=CHR$(2): RETURN
:~ 3904 IF KYBD=0 THEN LOCATE 23,1 :I~PUT ~CHARACTER NOT UNDERSTOOD, PLEASE ~YPE IT
IN: ",CS$
3906 IF KYBD = 0 THEN LOCATE 23,1 :PRINT "
3910 IF KYBD=1 THEN GOSUB 11400
3912 IF KYBD =1 THEN GOSUB 9600
3914 IF KYBD =1 THEN GOSUB 11600 : CS$=CHR$(MSEL)
3915 IF CS$=" " THEN GOTO 3960
: 3917 IF ED=1 THEN RETURN
3920 IF NDBT = 300 T-HEN PRINT "Too Many Symbols": STOP
3926 NDBT=NDBT11 : DN(NDBT)=NST : DC(NDBT)=ASC(CS$)
3930 IF M3INST > 800 THEN PRINT "Too Many Strokes" :STOP
3936 FOR M1=1 TO NST : FOR M2=1 TO 9
3940 D(M2,M1~M3)=DBC(M2,M1) : NEXT M2 : NEXT M1
3950 RETURN
3960 CS$
3980 RETURN
, 4000 REM CONCATENATE STROKES
4010 FOR L~2 TO NSTRK
4014 IF X(SNO(L-1)) < 0 THEN GOTO ~090
4016 I~ SL(L-1) < 4 THEN GOTO 4100
4020 ALNO=lABS~ABS(X(SNO(L)))-ABS~X(SNOtL-1))~)~ABStY(SNOlL))-Y(SNO5L-1))))
402l REM LOCA~E 1,1: PRINT ~L,ALNON,L,ALNO
4022 IF ALNO > 100 THEN GOTO 4090 : REM TOD F~R A~AY
4024 ALNO= 8*ALNO\(SNOlL)-SNO(L-1))
4026 DD =ABS(ABS(X(SNOlL~1)))-A~S(X~SNO(L-1)+2)))1~BS(YlSNO(L-1))-YlSNO(L-1)+2)): 4027 REM P~INT ~L,DD,ALNO~,L,DD,ALNO
4028 IF DD ~ ALNO T~EN GOTO 4090 : REM TOO FAR AWAY
4030 IR1=80*5C~L)\SL(L) : IR2=80*SClL-1)\5LlL-1)
~031 REM PRINT "L,IR1,IR2"~L,IR1,IR2



:: -49-
.

13~5~1

4032 IF ABS(IR1) > 350 THEN GOTO 4040 :REM SMALL WIGGLE
4034 IF ABS(IRl) < 80 THEN GOTO 4038 :REM STRAIGHT LINE
4036 IF ABS(IRl-IR2) > ABS(IR1~IR2)\3 THEN GOTO 4090 ELSE GOTO 4050 : REM TOO DIFFERENT CURVATURE
4038 IF ABS(IR2) > 80 THEN GOTO 4036 ELSE IF IRl*IR2 < - 2000 THEN GOTO 4090 :REM
TOO DIFFERENT CURVATURE
4039 GOTO 4050
4040 IF ABS(IR2) < 350 THEN GOTO 4036 ELSE IF IR1 *IR2 < O THEN GOTO 4090
4050 ASTND=ABS( ASTRT~L)-AEND( L-1))
4051 REM PRINT ASTND ASTND
4052 I F ASTND > 128 THEN ASTND=ABS(ASTND- 2 56): GOTO 4052
4054 IF ASTND > 64 THEN GOTO 4090 ELSE IF ASTND > DD* (ABSlIRt)+ABS( IR2))\40 THEN
GOTO 4090
4056 GOTO 4100
4090 NEXT L
4099 RETURN
4100 REM COMBINE STROKES
4101 REM PRINT nCOMBININGn L L-1
4110 L1=L-1 :SLL=SL(L1)1SL(L)
4115 IF SLL = 0 THEN LOCATE 23 1 :PRINT ~TWO STROKES WITH NO LENGTH" : STOP
4120 IF SXXtLJ ~ SXX~L1) THEN SXX(Ll )=SXX(L)
4122 IF SXN(L) < SXN(L1) THEN SXN(L1)=SXN(L)
4124 IF SYXIL) > SYX(Ll) THEN SYX~L1)=SYX(L)
4126 IF SYN(L) < SYN(L1) THEN SYN(Ll)=SYN~L)
4130 SX(Ll)=(SL(Ll )*SX(L1 )+SL(L)*SX(L))/SLL
41~3 SY(L1)=(SL(L1)*SY(Ll)+SL(L)*SY(L))/SLL
4137 SA(L1)=(SL(L1~*SA(Ll)+SL(L)*SA(L)~/SLL
4140 SL(L1)=SLL +DD
4150 SC(L1 )=SC(L1)+SC(L)+((SC(L1)+SC(L))*DD)\SLL
4160 SNO(L1)=SNO(L) :AEND(L1)=AEND(L) :
4170 NSTRK=NSTRK-1 : IF NSTRK ~ L THEN RETURN
4180 FOR LL=L TO NSTRK
41B5 L1=LL~1 :SXX(LL)=SXX(L1) :SXN(LL)=SXN(L1) :SYX(LL)=SYX~Ll) :SYN~LL)=SYN~Ll)41&7 SX(LL)=SX(Ll) :SY(LL)=SY(Ll) :SA(LL)=SA(L1) :SC(LL)=SC(L1) :SNO(LL)=SNO(L1)4189 SL(LL)zSL(L1i: ASTRT(LL)=ASTRT(Ll): AEND(LLj=AEND(L1)
4190 NEXT LL
4195 ~OTO 4010
4200 REM 2 POINT AVERAGE POINTS
4210 M2=0
4220 FOR M=2 TO NP STEP 2 :M1=M-l
4230 IF X(M1) > 0 GOTO 4240
4235 M?=M2~1 :X(M2)=X(M1) :Y(M2)=Y(M1) :GOTO 4280
4240 IF X(M) > O GOTO 4250
4245 M2=M2+1 :X(M2)=X(M) :Y(M2)=Y(M) :GOTO 4280
4250 IF ABS(X(M)-X(M1)) > 30 THEN GOTO 4280
4260 IF A8S(Y(M)-Y(M1)) > 30 THEN GOTO 4280
4270 M2=M2~1 :X(M2)=(X(M)+X(M1))\2 :Y(M2)=(Y(M)~Y(M1))\2
4280 NEXT M
4283 X(M2)-X(NP)
4285 NPaM2
4290 RETURN
4340 REM ORDER STROKES BY SXN
434 2 XCH 0 : IF NSTRK < 2 THEN RETURN
4345 FOR L=2 TO NSTRK
4350 IF SXNlLI > SXNtL-1) THEN GOTO 4~80
4355 XCH=1 :L1=L-1
4360 ST=SXXlL1) :SXX(L1)=SXX(L) :SXX(L)=ST
4361 ST=SXN(L1) :SXN(L1 )=S~(L) :SXN(L)=ST
4362 ST=SYN(L1) :SYN(L1)=SYN(L) :SYN(L)=ST
4363 ST=SYX(L1) :SYX(L1)=SYX~L) :SYX(L)=ST
4364 ST=SX(L1) :SX(L1)=SX(L) :SX(L)=ST
4365 ST-SY(L1) :SY(L1)=SY(L) :SYlL)=ST
4366 ST=SA(L1~ :SA(L1)=SA~L) :SAl~)=ST


(
-50~
' .

132~81

4367 ST=SC(Ll) SC(L1)=SC(L) SC(L)=ST
43O8 ST=SL(L1) SL(L1)=SL~L) :SL(L)=ST
4369 ST=SNO(Ll) :SNO(L1)=SNO(L) :SNO(L)=ST
43 80 NEXT L
4390 IF XCH = 0 THEN RETURN ELSE XCH=0 :GOTO 4345
6100 REM LEARN
6105 LERN=1 : J=3: JJ=J : FOR I=1 TO 40 :AS$(I)=" " : NEXT I
6110 LINY=8* (JJ+3)-1
6120 LINE (0,LINY-LHT-8)-( 639 ,I.INY+LHT\2),0 ,BF
6130 LINE (8*IMARGN-1,LINY)-( 639 ,LINY-LHT), l,B
6140 LINE ( 607,LINY)-(639 ,LINY-LHT),1,BF
6150 IF SWTPN = -1 THEN GOSUB 7100 ELSE GOSUB 8600 :REM TOUCH TECH SCREEN IN ASCII @ 9600
6151 IF SWTPN = 1 THEN &OSUB 7300
6155 IF NP < 8 THEN GOTO 6190
6160 GOSUB 3000
6170 GOSUB 3600
6180 LOCATE 18,IMARGN FOR I=1 TO 40: PRINT AS$11);: NEXT I
61 R 6 GOTO 6150
6190 FOR I=1 TO 4 ~-~
61 92 IF AS$ ( I ) = n@~ THEN RETURN
61 94 NEXT I
6195 GOTO 6105 :
6200 REM INSERT
6201 XX=SXX(l ): XN=SXN(1 ): YX=SYX(1 ): YN=SYN(1)
6202 XP=(XN+XX)~2: YP=(YNIYX)/2 :REM AVE CHARACTER POSITION
6203 I=INTlXP/8) 11: J=INT(YP/8)+1 :ISAV=I: JSAV=J: REM CONVERT X,Y Tt~) I,J -~
6204 ML=LL(J): M1=MLII-IMARGN REM CALC A ARRAY IMDEX OF I.ETTER AT I,J ~:
6205 IF A$(MLj=" " THEN Ml=Ml+l
6206 IF A$(ML)=CR$ THEN Ml=Ml+1 ;
6:207 MSAV=Ml
6210:JJ=JSAV : FO~ I=1 TO 40 :AS$(I)=" " :NEXT I :-
6215 LINY=8~*1JJ+3)-1 ~
62~20 LINE (0, LINY-LHT-8)-(639,LINY+LHT\2),0, BF
6230 LINE (8*IMARGN- 1,LINY)-(639,LINY-LHT),1,B
6240 LINE (607,LINY)-(639,LINY-LHT),1 ,BF
6250 IF SWTPN = -1 THEN GOSUB 7100 ELSE 9OSUB 8600 :REM TOUCH TECH SCREEN IN ASCII @ 9600
6251 IF SWTPN = 1 THEN GOSUB 7 300
6255 IF NP < 8 THEN GOTO 6270
6256 GOSUB 3000
6257 GOSUB 3600
6258 IF DBUG <> 0 THEN LOCATE 22,IMARGN: FOR I_l TO 40: PRINT AS$~ NEXT I
6259 GOTO 6250
6270 JB=0: Jz1
6271 REM LOCATE 16,1 FOR I=1 TO 40: PRINT AS$lI);: NEXT I
6272 IE=2 :~OR I-40 TO 2 STEP -1 : IF AS$(I) ~> n n THEN IE'=I+1 : GOTO 6274
6273 NEXT I
6274 FOR I=2 TO IE
6275 IF AS$~I) <> " " THEN GOTO 6280
6276 JB=JB+1
6278 IF J~ < 3 THEN GOTO 6288
6280 J=J+1: JB=0
6282 AS$1J)aAS$lI)
6288 NEXT I
6289 REM LOCATE 17, 1: FOR I=l TO 40: PRINT AS$1I);: NEXT I
6290 AS$~J+l)=n "
6295 IF J < 2 THEN IF AS$tl) =l- n THEN LOCATE 18,1 : PRINT ~'NO l,ETTERS, TRY ~GAI
N" :GOTO 6210
6300 MD=J+l : M3=MSAV I=ISAV : J=JSAV
6 310 REM LOCATE 20,1: F~R I=1 TO 40: PRINT AS$1IJ;: NEXT I
6315 REM INPUT IJK
6323 GOTO 1620


-51-


1325A81

6500 REM REMOVE
6510 XX=SXX(l): XN=SXNll): YX-SYXI1): YN=SYN(1)
6520 XP=(XN+XX)/2: YP=(YN~YX)/2 :REM AVE CH~RACTER POSITION
6530 I=INT(XP/8)+1: J=INT(YP/8)+1:REM CONVERT X,Y TO I,J
6540 ML=LL(J): Ml=ML+I-IMARGN :REM CALC A ARPAY INDEX OF LETTER AT I,~
6550 IF A$(ML)=" " THEN M1=M1+1
6560 IF A$(ML)=CR$ THEN Ml=M1+1
6570 M2=M1
6590 GOTO 1250
6600 REM PARAGRAPH
6690 GOTO 200
6700 REM REPLACE A CHARACTER WHEN WRITTEN OVER
6710 XX=SXX11): XN=SXNll): YX=SYXll): YN=SYNIl)
6720 XP=lXN~XX)/2: YP=lYN~YX)/2 :REM AVE CHARACTER POSITION
6730 I=INTlXP/8)+1: J=INTlYP/8)+1:REM CONVERT X,Y TO I,J
6740 ML=LL~J): Ml=ML+I-IMARGN :REM CALC A A~RAY INDEX OF LETTER AT I,J
6750 IF A$~ML)-" " THEN M1=Ml+1
6760 IF A$~ML)=CR$ THEN Ml=Ml+l
6770 A$1Ml)=AS$(1) :LOCATE J,I :PRINT AS$(1)
6790 GOTO 200
6900 REM INSERT A LETTER
6910 XX=SXX(l): XN=SXN(1): YX=SYXll): YN=SYNll)
6920 XP=lXN+XX)/2: YP=lYN~YX)/2 :REM AVE CHARACTER POSITION : :
6930 I=INTlXP/8)+1: J=INTlYP/8)+1:REM CONVERT X,Y TO I,J
:6940 ML=LLlJ): Ml=ML~I-IMARGN :REM CALC A ARRAY INDEX OF LETTER AT I,J
6950 IF A$1ML)=" " THEN Ml=M1+1
6960 IF A$1ML)=CR~ THEN M1=Ml~l
6970 AS$12)=AS$11)
6980 M3=Ml :MD=l
6990 GOTO 1570
7000 REM SET UP RERUN
7010 OPEN`"I",#l,"POINTS.DAT"
~:~ 7020 INPUT #l,AX,BX,AY,BY
7030 RETURN
7100 REM READ POINTS
7110 INPUT #l,NP
7120 FOR N=1 TO NP
7130 INPUT #l,X(N),Y(N)
7132 NEXT N
7133 IF IFAVE = 1 THEN GOSUB 4200
7134 FOR N=l TO NP
7135 IF X(N) ~ 0 THEN I=32*X(N)/AX+BX ELSE I=-32*XlN)/AX+BX
j 7136 J=32*Y(N~/~Y~BY
7137 PSETlI,J)
7140 NEXT N
7148 IF DBUG > 5 THEN FOR N=l TO NP: LPRINT N,X(N),Y(N):NEXT N
. 7149 IF DBUG <> 0 THEN LOCATE 20,2 :PRINT ~NP=n,NP
j 7150 RETURN
1 7200 REM SET UP STORE POINTS
7210 OPEN "O",#l,"POINTS.DAT"
7220 PRINT #1,AX,BX,AY,BY
, 7230 RETURN
¦ 7300 REM STORE POINTS
7310 PRINT #l,NP
7320 FOR N=l TO NP
7330 PRINT #1, USING "~#"; X(N),YlN)
7340 NEXT N
1 7350 RETURN
i 8600 REM TT ACQUIRE POINTS IN ASCII @ 9600 WITH INSERT
8603 M=20
~ 8605 IF LOCl2) > O THEN IPUT$=INPVT$(1,2) : GOTO 8605
:' 8606 PRINT ~2,~G" :N=0
8610 IF LOCl2) ~ 40 THEN GOTO 8610

i~ :

.~
-52-

1 3 2 ~ 4 8 1

8620 NU=0: INPUT #2,XP,YP :INPUT #2,XP,YP :INPUT #2,XPA,YPA :INPUT #2,XPO,YPO
8630 N=N+1: XPA=(XPA+XPO)\2: YPA=lYPA+YPO)\2: XPO=XPA: YPO=YPA: X(N)=XPA: Y(N)=YPA
86 3 5 I F 32~XPA\AX+BX > 607 THEN GOTO 8695
8640 INPUT #2,XP,YP
865 3 XPA= ( XP+ 3 *XPA ) \ 4 : YPA=(YP+ 3 *YPA ) \ 4
8657 IF ABS(XPA-XPO)~ABS( YPA-YP 0) < 3 THEN GOTO û 672
8660 I=32*XPA\AX~BX:J=32*YPA\AY+BY:PSET(I,J~
8665 IF I > 607 THEN GOTO 8695
8670 N=N+1 : X(N)=XPA :Y(N)=YPA: XPO=XPA: YPO=YPA
8672 IF LOC(2) > 9 T}IEN GOTO 8640
8675 MM=0
8680 MM=MM+1: IF LOC( 2) > 9 THEN GOTO 8640 ELSE IF MM ~ M THEN GOTO 8680
8685 X(N)=--X(N): IF X(N) = 0 THEN X(N)=--1
8690 IF LOC~ 2) > 39 THEN GOTO 8620 ELSE NU=NU~1 : IF NU < 25000 THEN GOTO 8690
8695 PRINT #2, "S": NP=N
8696 IF DEBUG <> O THEN LOCATE 20,2 :PRINT "NP=n,NP
8697 IF IFAVE = 2 THEN GOSUB 4200 M~:
8698 IF DEBUG < > O THEN LOCATE 20,12 : PRINT NP
8699 RETURN .:~ :
9600 REM TT ACQUIRE POINTS IN ASCII @ 9600 WITH MENU
9603 M=20
9605 IF LOC~2) > O THEN IPUT$=INPUT$(1 ,2) : GOTO 9605
9606 PRINT #2, "G"
9610 II=0 :JJ=0 :N=0
9640 INPUT #2,XP,YP
9660 II=32*XP\AX~BX+II: JJ=32*YP\AY+BY+JJ: N=N+1
9670 IF N < 10 THEN GOTO 9674
9672 I=II\10: J=JJ\10: N=O : II=0: JJ=0
9673 LINE (I+1,J+l )--(I--1,J--l ),1,B
9674 IF LOC~ 2) > 9 GOTO 9640
9675 MM=0
9680 MM=MM+1: IF LOC (2) > 9 THEN GOTO 9640 ELSE IF MM < M THEN GOTO 9680
9690 IF LOC(2) ~ 9 THEN GOTO 9610 ELSE NU=NU+1 :IF NU < 1500 THEN GOTO 9690
9695 PRINT #2, "S"
9699 RETURN
19700 REM SET UP TOUCH SCREEN FOR ASCII @ 9600
10710 OPEN n I " ~ # 2 ~ "CAL . DAT"
10720 INPUT #2,AX,BX,AY,BY
10730 CLOSE #2
10740 OPEN "COM1 :9600,N,8,1,CS0,DS0" AS #2
10750 PRINT #2, "S"
10760 RETURN
11000 REM UTILITIES
11100 REM input selection menus
11101 REM mnum= ~o. of items
11102 REM mtitl$-titles
11103 REM miO,mie,mjO,mje=start ~ end points ~or boxes
11105 IF KYBD=1 GOTC) 11400
11110 LINElMIO,MJO)-IMIE,MJE),O,BF :LINEtMIO,MJO)--lMIE,MJE),t,B
11115 XX=MIO : MRATO=(MIE-MIO)\MNUM
11120 FOR K=1 TO MNUM : LINE IXX,MJO)-(XX,MJE)
11130 MJA=IMJO+MJE+8)\16+1 : LOCATE MJA,IXX+20)\3 : PRINT MTITL$(K)
11140 XX=XX+MRATO :NEXT X
11160 RETURN
11300 REM DETERMINE MENU ITEM SELECTED
11310 IF KYBD=1 GOTO 11600
11320 XX=O : FOR K=1 TO MNUM : XX=XX+MRATO : IF I < XX THEN GOTO 11340
11330 NEXT K
11340 MSEL=R
11350 RETURN
11400 REM DISPLAY KEYBOARD
11405 JMENU=163


: .
^ . ~ 132~481


11410 LINEtl,160)-(639,199),0,BF
11440 FOR I= 1 TO 26 :LOCATE 22,2*I : PRINT CHR$(I+64), : NEXT I
11450 FOR l= 1 TO 26 :LOCATE 24,2*I : PRINT CHR$(I~96), : NEXT I
11460 FOR I= 1 TO 10 :LOCATE 22,2*I+52 : PRINT CHR$(I+47), : NEXT I
11470 LOCATE 22,74 : PRINT ~. ~ ? ~,
11480 LOCATE 24,54 : PRINT "\ / * + _ ( ) , ; : n ;C~R~( ~4 1; n $ &1l;
11482 FOR J=163 TO 195 STEP 16 : LINE~3,J)-~629,J) :NEXT J
11484 FOR I= 3 TO 635 STEP 16 : LINE(I,163)-~I,195) :MEXT I
11490 LOCATE 1 ,1 :RETURN
11600 REM keyboard select from menu
11620 MSEL=(I\8+1)\2
11640 IF J > 179 THEN GOTO 11700
11650 IF MSEL < 27 THEN MSEL=MSEL+64 : RETUR~ .
11660 IF MSEL < 37 THEN MSEL=MSEL+21 : RETURN ~ .
11670 IF MSEL=37 THEN MSEL=46 : RETURN
11680 IF MSEL=38 THEN MSEL=94 : RETURN ~:~
11690 MSEL=63 : RETURN :
11700 IF MSEL < 27 THEN MSEL=MSEL+96 : RETURN
11710 IF MSEL=27 THEN MSEL=92 : RETURN
11720 IF MSEL=28 THEN MSEL=47 : RETURN
11730 IF MSEL=29 THEN MSEL=42 : RETURN
11740 IF MSEL=30 THEN MSEL=43 : RETURN
11750 IF MSEL=31 THEN MSELC45 : RETURN
11760 IF MSEL=32 THEN MSEL=40 : RETURN
11770 IF MSEL=33 THEN MSEL=41 : RETURN
:11780 IF MSEL=34 THEN MSEL=44 : RETURN
11790 IF MSEL=35 THEN MSEL=59 : RETURN
11800 IF MSEL=36 THEN MSEL=58 : RET.URN
11810 IF MSEL=37 THEN MSEL=34 : RETURN
11820~IF:MSEL=38 THEN MSEL=36 : RETURN
11830 MSEL=38 : RETURN
11850 RETURN
12000 REM input output
12t00 REM:read in text
12110 OPEN "I", #1 ~ ~ITEXTn :NC=0
12120 IF EOF(1) THEN CLOSE #1 : GOTO 12160
12130 INPUT #1, A1$ :KK=0
12140 FOR K=1 TO LEN(A1$) : KK=KK+1 :A$(NC+KK)=MID$(A1$,K,1)
12143 IF LEN(A$(NC~KK))=0 THEN K~-KK-1
12145 NEXT K
12150 NC=NC+KK:IF NC < 1500 THEN GOTO 12120
12155 PRINT "TOO MUCH TEXTn STOP
12160 REM TEXT EDITOR INITIALIZATION
12170 II=IMARGN : JJ=JTOP : NC1=1 : REM DISPLAY ALL TEXT
12175 CLOSE #t
12180 RETURN
12500 REM SAVE SYMBOL DATA BASE
12505 IF SWTPN <> 0 THEN CLOSE #1
12510 OPEN ~O",#I,"SYM.DAT"
12520 PRINT #1,NDBT
12530 M2=0 :FOR M=1 TO NDBT
12540 PRINT #1, DN(M) DC(M)
12550 FOR M1=M2+1 TO M2+DNlM)
12560 PRINT #1, D~1,M1) D(2,M1) D(3,Ml) D(4,M1) D(5,M1~ D(6,M1) D(7,Ml)
12570 NEXT M1 :M2=M2+DN(M) : NEXT M
12580 CLOSE #1
12590 END
12700 REM RESTART READ IN DATA BASE
12710 OPEN ~In,#1,~SYM.DAT~
12720 INPUT #1,NDBT
12730 M2=0 :FOR M=l TO NDBT
12740 INPUT #l,DN(M),DC(M)
12750 FOR Ml=M2+1 TO M2+ DNIM)


-54-

~ 3 2 ~
,. .

12760 INPUT #1,Dl1,M1),D(2,M1),D(3,M1),D(4,M1),D(5,M1),Dl6,M1),D(7,M1)
12770 NEXT M1 :M2=M2+DN(M) : NEXT M
12780 CLOSE #1
12790 RETURN
30000 FOR I=1 TO NSTRK:PRINT I,SNO(I),SX(I),SYlI~,SL~I),SA(I),SC(I):NEXT I
30010 FOR I=1 TO NP:PRINT I,X(I),Y(I):NEXT I
30020 FOR I=1 TO NSTRK:PRINT USING "#";I,SNO(I),SX(I),SY~I),SL(I),SA~I),SC(I :
):NEXT I :
30030 FOR Ml=l TO NST :FOR M2=1 TO 5 :PRINT M1 ,M2,D(M2,M1),DBC(M2,M1):NEXT M2 :N ~
EXT M1 .




-55-

132~81

APPENDIX III

Al - angle of slope between Point M and Ml
A2 - previous angle
DA1 - change in angle (A1-A2)
SEND - flag for end of Stroke
ZX - double precision X position summation by arc length weighting
ZY - double precision Y position summation by arc length weighting
ZA - double precision angle summation by arc length weighting
ZDA - double precision change in angle summation
ZL - double precision length
NSP - number of Points in Stroke, counter
NSTRK - number of Strokes
XX - maximum X
XN - minimum X
YX - maximum Y
YN - minimum Y
M1 - Pointer to previous Point
M2 - (1) minimum number of Points for which to adjust for
2~ angle
M3 - (2) minimum number of Points for which to calculate change
in change in angle
NLONG - counter (not used)
M - Pointer to Point being considered
NP - number of Points
X - array of X coordinate
Y - array of Y coordinate
DX - change in X
DY - ch~nge in Y
ADX - absolute value of DX
ADY - absolute value of DY
DS - pseudo arc length ADX + ADY
AY - calibration multiplier for vertical (Y) direction, e.g.
AY ' O mean coordinate system true downward
ADA running average change in angle
DA2 - previous change in angle
ASTRT - array for starting angle of Stroke
SZL - single precision Stroke length
SNO - array of number of the 1st Point for each Stroke
BHT5 - height between lines divided by 5 in display coordinates
used as a measure
SL - array of Stroke lengths sealed to height between lines
AEND - array of angles at end of Strokes
SC - array of angle changes for eachs troke
AZA - average angle through Stroke
SX - array of averages centroid X coordinate for each Stroke
SY - array of ~verages centroid Y coordinate for each Stroke
SA - array of averages angle (slope) coordinate for each Stroke
SXX - array of maximum X coordinate for each St~oke
SXN - array of minimum X coordinate for each Stroke
SYN - array of minimum Y coordinate for each Stroke
SYX - array of maximum Y coordinate for each Stroke
DBUG - debugging flag for printing
INPUT - string of input bytes to be rejected
XP, YP - input coordinates
XPA - average 2 Points in X direction
YP~ ~ average 2 Points in Y direction
XPO - initial X average on pan down
YPO - initial Y average on pan down
I - display pixel corresponding to X coordinate input

` 13~81
.
J - display pixel corresponding to Y coordinate input
N - counter of input Points -
MM - counter for timing pan up ~-~
NU - counter for timing pan up

~''"''''~',
-',' .. '


.




-57-


Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Administrative Status , Maintenance Fee  and Payment History  should be consulted.

Administrative Status

Title Date
Forecasted Issue Date 1993-12-21
(22) Filed 1987-07-17
(45) Issued 1993-12-21
Expired 2010-12-21

Abandonment History

There is no abandonment history.

Payment History

Fee Type Anniversary Year Due Date Amount Paid Paid Date
Application Fee $0.00 1992-02-25
Registration of a document - section 124 $0.00 1994-11-10
Maintenance Fee - Patent - Old Act 2 1995-12-21 $100.00 1995-11-10
Maintenance Fee - Patent - Old Act 3 1996-12-23 $100.00 1996-12-04
Maintenance Fee - Patent - Old Act 4 1997-12-22 $100.00 1997-12-04
Maintenance Fee - Patent - Old Act 5 1998-12-21 $150.00 1998-12-09
Maintenance Fee - Patent - Old Act 6 1999-12-21 $150.00 1999-12-02
Maintenance Fee - Patent - Old Act 7 2000-12-21 $150.00 2000-12-01
Maintenance Fee - Patent - Old Act 8 2001-12-21 $150.00 2001-12-03
Registration of a document - section 124 $50.00 2002-03-25
Maintenance Fee - Patent - Old Act 9 2002-12-23 $150.00 2002-11-29
Maintenance Fee - Patent - Old Act 10 2003-12-22 $200.00 2003-11-17
Maintenance Fee - Patent - Old Act 11 2004-12-21 $250.00 2004-11-08
Maintenance Fee - Patent - Old Act 12 2005-12-21 $250.00 2005-11-08
Registration of a document - section 124 $0.00 2006-02-08
Registration of a document - section 124 $0.00 2006-02-08
Maintenance Fee - Patent - Old Act 13 2006-12-21 $250.00 2006-11-08
Maintenance Fee - Patent - Old Act 14 2007-12-21 $250.00 2007-11-09
Maintenance Fee - Patent - Old Act 15 2008-12-22 $450.00 2008-11-10
Maintenance Fee - Patent - Old Act 16 2009-12-21 $450.00 2009-11-12
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
SAMSUNG ELECTRONICS CO., LTD.
Past Owners on Record
AST RESEARCH, INC.
GRID SYSTEMS CORPORATION
LINUS TECHNOLOGIES INCORPORATED
SKLAREW, RALPH C.
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Representative Drawing 2002-05-06 1 10
Description 1995-01-21 60 3,052
Drawings 1995-01-21 16 805
Claims 1995-01-21 3 241
Abstract 1995-01-21 1 43
Cover Page 1995-01-21 1 49
Correspondence 2002-05-02 1 18
Fees 1996-12-04 1 30
Office Letter 1993-08-16 1 56
PCT Correspondence 1993-09-21 1 22
Office Letter 1995-03-30 1 15
Prosecution Correspondence 1993-09-16 15 686
Prosecution Correspondence 1993-08-06 1 33
Prosecution Correspondence 1995-03-03 1 29
Prosecution Correspondence 1993-02-16 2 52
Examiner Requisition 1992-10-23 1 62
Fees 1996-12-04 1 29
Fees 1995-11-10 1 34