HHillJffl RSfflffif ratings HI mSaw mm mmMM Hoi 9Nfl BSH9 RXK1 IHflyBrawSnRXlln&flfl HlfiBmfilBiSI strats SHOE ym MtMM Bflflfli B Si L EBfi w m < LIBRARY OF THE UNIVERSITY OF ILLINOIS AT URBANA-CHAMPAIGN 510.84 U(oT cop. 2. CENTRAL CIRCULATION BOOKSTACKS The person charging this material is re- sponsible for its renewal or its return to the library from which it was borrowed on or before the Latest Date stamped below. You may be charged a minimum fee of $75.00 for each lost book. Theft, mutilation, and underlining of books are reasons for disciplinary action and may result in dismissal from the University. TO RENEW CALL TELEPHONE CENTER, 333-8400 UNIVERSITY OF ILLINOIS LIBRARY AT URBANA-CHAMPAIGN MAR 1 1 1998 When renewing by phone, write new due date below previous due date. L162 Report No. UIUCDCS-R-76-815 /7U, C U A TALKING COMPUTER TERMINAL t>y James Albert Kutsch, Jr July 13, 1976 DEPARTMENT OF COMPUTER SCIENCE UNIVERSITY OF ILLINOIS AT URBANA-CHAMPAIGN URBANA, ILLINOIS Report No. UIUCDCS-R-76-815 A TALKING COMPUTER TERMINAL by James Albert Kutsch, Jr. July 13, 1976 Department of Computer Science University of Illinois at Urbana-Champaign Urbana, Illinois 61801 Submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy in Computer Science in the Graduate College of the University of Illinois at Urbana-Champaign, 1976. Digitized by the Internet Archive in 2013 http://archive.org/details/talkingcomputert815kuts Ill ACKNOWLEDGMENTS I would like tc express my thanks to the following people for their help in this thesis: First, the late Professor Donald Gillies, for his early support and advice; Erofessor fi. J. Poppelbaum and the members of my committee, for their guidance; The Graduate College, for their financial support of the project; and finally, my wife, Kimberly, fcr her onany untiring hours of soldering hardware, library research, and proofreading, which were invaluable. IV TABLE CF CONTENTS 1. A HISTORY CF BEADING AIDS FOP THE BLIND 1 1.1 Introduction 1 1.2 Braille 2 1.3 Image Converters 4 1.4 Michigan State University System ........ 5 1.5 Reading Machines • 6 2. PROBLEM SPECIFICATION 8 2.1 Ban-to-Man Communications 8 2.2 Man-to-Machine Communications 10 2.3 Details of the Problem 11 2.4 Inadeguacies of Previous Solutions ...... 14 2.5 Analog Speech Synthesis Systems 16 2.6 Digital Speech Synthesis Systems ........ 17 2.7 A Talking Terminal 20 3. SYSTEM DETAILS 23 3.1 Hardware Components ..................... 23 3.2 Software Description 27 3.3 Saffple Sentence Being Processed 40 4. SUMMARY AND CONCLUSIONS 42 4.1 Summary 42 4.2 Evaluaticn 43 4.3 Hardware Improvements 45 4.4 Software Improvements 46 4.6 Conclusions 48 REFERENCES 49 APPENDIX I - 52 VITA 89 CHAPTER 1 A HISTORY OF BEADING AIDS FOR THE BLIND Section 1.1: Introduction Finding a reading aid or method for the blind has been a long standing research problem. The earliest significant contribution to the problem was the work cf Louis Braille in the mid 1800's. More recently, computers and ether sophisticated electronic eguipment have been used in an attempt to find a better solution. Because of the specific nature cf the problem, or perhaps because it affects only a small percentage of the population, it has net received the research attention it deserves. seme major contributions have been made, but they are few and far tetween. Further, almost all of the research that has been done was conducted by sighted individuals, with little cr no input from blind persons who would be the eventual users of any discovery. A sighted perscn ( s opinion of what he would want or need if he were blind is not always a true reflection of the needs of the blind. The author, himself blind, hopes that his personal experience will lend an insight into the problems or the blind which is sometimes lacking in ether research. \ discussion ct significant previous research will fellow. More emphasis will be given to computer aids for the blind, since it is the subject of this thesis. Section 1.2: Braille Braille is the eldest, most well-known method of reading for the blind. The Eraille cell consists of six dots, organized in a matrix two dots wide and three dots high. All letters, nuirbers, and punctuation symbols are formed by seme combination cf one or more of these dots. For example, the letter •a* consists of the upper left dot, •b f , the upper left and middle left dots, and *c*, the upper left and upper right dots. The Braille dcts are raised bumps en the paper. These tumps are commonly embossed by two metheds. A Braille slate and stylus is a sirall portable device for writing Braille and the Perkins Praillewriter is a larger, faster, more automatic model device. In both cases, a metal pin is pushed through the paper into a metal cup on the reverse s ide. Ccromerci ally printed Braille, such as books or magazines, are produced with a special printing press which can emboss the Braille en both sides of the paper. It produces all characters on both sides simultaneously. Braille can alsc be produced by computers. Several manufacturers offer a Eraille print train for their line printers, but a less expensive software technique is commonly used by most blind programmers. Basically, a soft cushiony material is placed behind the paper on the printer. Software routines are employed to convert the characters to be hrailled into the appropriate series of periods and spaces, such that, when printed, the periods will push through the paper intc the cushion, making a raised dot on the reverse side of the paper. Loeber from IBK Corp. proposed an on-line Braille computer terminal. [2] The terminal would provide both a Braille and an ink-print copy of the data. Further, it could be used in a local, as well as the on-line mode. Wi+h this device, Lceber suggests that a blind computer programmer can check his work and can interact with a time sharing computer system. Also, it could be used by sighted persons, producing the 3raille copy to be read later by a blind person. This system requires software resident in the computer system to perform the translation to the cedes necessary to ccntrcl the Braille mechanism in the terminal. At the time ct the writing of his article, the terminal was not under ccirmercial production. Section 1.3: Imace Converters Probably the oldest reading device is the OPTOPHONE, invented in 1912. [20] The Battelle Aural Beading Device and the Mauch laboratories VISOTONEH are more recent variations to the OETCPHCNE design. With these devices, a line is scanned and a sound pattern is generated for each letter form. The tone pattern is arbitrary and needs to be learned. Reading rates with these devices are extremely low. Another image converter is the OPTICON (Image to Tactile Converter). [23] This device is being manufactured and distributed by Telesenscry Systems Inc. A small camera is passed over a line of print. A raised impression of the letter in view of the camera is presented by means of a small matrix of vibrating reeds. The printed page is read by movinq the camera across the lines of print while feeling the raised letters with one finger cf the other hand. The OPTICON is small, light weight, and battery operated. It can be used tc read any printed material. Further, a lcgic reverse teature is provided which, when enabled, permits the OPTICCN to respond to light letters on a dark background. This feature allows the device to read the face cf a cathode ray tube computer display. Section l.H: The Michigan State University System A special terminal for blind computer users is being developed at Michigan State University. [13][21] This terminal provides synthetic speech and CBT output, with keyboard input. Special software in the University^ computer supports the operation cf this terminal. Currently, a text editor, an interpreter for a subset cf PCPTRAN, and some CAI lessons are available in an experimental forir. Each of these facilities has been specially designed or modified for use with the blind through the special terninal. Included in this modification is the generation of the codes needed to drive the speech synthesis device. Future plans for the terminal include modification of ether system facilities and experimentation with a means of indicating the position of information on the page. A change of dialect teebnigue has been proposed. For example, messages near the top of the page might be read in a high pitched voice, vhile those nearer to the bottcm would be read in a lower pi+ch. Seme comparable scheme would be used for horizontal positioning en the page. The terminal has been used by blind computer science students at Michigan State University. Their evaluations will be used to make future improvements. Section 1.5: Reading Machines A reading machine is a device with an unrestricted vocabulary that converts printed text directly into speech. A character recognition module scans the page and transmits data to the computer, where the* letters are identified. The letters are then sent through a phoneme translator and syntax analyzer. Finally, the synthesis module produces cennected speech cutput. The reading machine requires a large dictionary, generally stcred en a high speed drum. Computation time runs high as stress and intonation are assigned by complex analysis of parts of speech and context. [4 ][ 12 ]£20 ][24 ] The Massachusetts Institute of Technology machine currently requires a 3,000 morph dictionary, and can read at the level of a fourth grade reader. Computation is done on a PDP 9 with a high speed drum for storage. [4] The University of Connecticut, in conjunction with Haskins Latcratcries, is also researching reading machines with an eye towards a pilct reading center to serve the University*s blind students. Synthetic speech is being produced with a Hcneywell DEP-224 and a hardware synthesizer designed by F. £. Cooper. A trained phonetic typist translates printed text into phonetic text, thus bypassing character recognition and translation to phoneme problems. Prosodic features are assigned by the software. [24] CHAPTER 2 FBOBI.EM SPECIFICATION Section 2.1: Man-tc-Man Communications Communications through a non-verbal medium is a difficult problem for a blind individual. Since the visual channel is net available, all printed and otherwise visual information must be converted to data suitable for one of the remaining senses. The most commonly chosen secondary channels are auditcry cr tactile. Both are seriously limited in bandwidth as compared with vision, tactile even mere so than auditory. Common solutions include transcription to Braille and the reading ct printed material either face to face or via a tape recorder. These processes can be brcken down into two distinct parts. First is the assimilaticn of the material by the person reading cr transcribing it, and second is the conversion and presentation of the data through the alternative medium, i.e. speaking cr writing it in Braille. Even though many textbooks and novels are available on tape and records freir the Library of Congress and Recordings tor the 31ind and in Eraille from the American Printinghouse tor the Blind, there are still serious drawbacks to the loss of the visual channel. Of primary concern is the availability of this material. That is, although brailled and recorded hooks are adequate, they are not as readily available as the printed word. Not every book, paper, or magazine that a blind person might wish to read has been converted. Futher, the conversion is time-consuming and requires the assistance of a sighted person. A major contribution tc the solution of this problem was made by Telesensory Systems Inc. when they began production cf the 0P1IC0N (optical to tactile converter). [23] A small camera is moved across a line cf printed information. A tactile image of each letter so scanned is presented through a matrix of vibrating reeds. These raised impressions are read (felt) by the user. The user of the OPTICCN can, without assistance, read the printed page. It should be noted that it takes considerable training to recognize the raised impressions of the letters, and even then, reading rat€s remain disappointingly low. Experienced users have net been able to exceed 70 words per minute. [1] 10 Section 2.2: Man-tc-Kachine Communications A blind computer user is faced with the same problems of communications except that he is communicating with a ccmputer rather than ancther person. Cbviously # the input to the computer is not a problem, since key punches and terminals are keyboard devices and although the location of the keys may vary, they are quite similar to those of a typewriter. Thus, input to the computer can be achieved with only the inconvenience of learning a new keyboard, which is alsc required of the sighted computer user. The transferal of information from the ccmputer to the blind user is similar to the man to man communications problem discusssed above. However, there are two major differences. First, the data cannot already have been transcribed into Braille cr recorded on tape because every ccmputer output listing is unique. This means that the blind user must make arrangements to have someone transcribe cr read his cutput or he must read it himself with an image to tactile converter. Futher, it is quite difficult, if not impossible, for the average blind person to use a time sharing terminal interactively without scmeone with him to read the output or without the use cf an CPTTCON. 11 The seccnd difference is that the first of the two part conversion process, i.e. the reading, is eliminated since the data is already in computer readable form. If the computer could itself present the data in something ether than a visual medium, the man to machine communications problem would be solved. New, only part two, how to convert and present the data needs be determined. Section 2.3: Details of the Protlem The purpose of this thesis is to design an optimal method for a blind person to communicate with the computer and to assemble whatever hardware and software is necessary to achieve such cenmunications. The criteria against which the adequacy of a solution can be measured will be set forth so that any shortcomings of a particular system can be more easily discovered. One of the mest important qualifications of any communications technique is that it should be available whenever the individual wishes to use the computer system. This precludes the use of another human being to read the output, since scheduling can be quite difficult. Therefore, the communications method should involve some machine or 12 mechanism that is available whenever the computer itself is available to the average user. Second, the communications method should be as complete and as versatile as possible. It should be able to be used in many aspects cf computer communications- For example, if the computer system can be used in a batch mode through punch cards and listings, and in a time sharing mode from a terminal, the communications method should be applicable to roth. Third, the converted data presented to the user should be as thorough and complete as that presented to a sighted us* 5 !. All system messages, job control language, log on preambles, etc. which are generated from normal use should be presented unmodified to the blind user. Further, all system resources should be available. This precludes the use of restricted or specifically modified languages , compilers, editors, etc. for use by the blind. Fourth, the ccit crunications method should not reguire that the user acguire some special or unusual skill, e.g. Morse cede or the ability to distinguish musical chords. The user of the system should te able to interact with the computer with no irore training than is expected of a sighted user. 13 Fifth, in the same way a teletypewriter can be attached to many widely varied computers, the communications method should be computer independent. This would allow the blind computer user to communicate with many different computers without requiring totally different methods for different computers. This goal is considerably more difficult to realize, but is very important. Finally, the communications method should be equivalent in cost to devices required by a sighted person to communicate with a computer. A company wishing to hire a Hind person should not be expected to pay large sums of money for equipment to enable the blind person to do the same job as a sighted person who would need no special equipment. These six criterion will be used to measure the effectiveness of various methods of communications. Input to the computer will not be discussed because it is easily achieved through keyboard devices which blind people can operate without any difficulty. Emphasis will be on ways to ■ convert and present data through a non-visual medium. 14 Section 2.4: Inadequacies c£ Previous Solutions As is obvious from the discussion in Chapter 1, Braille is the mcst ccirnicn and perhaps the easiest form of output for the blind. However, it is not without disadvantages. The Braille character consists of a matrix of dots, two wide and three high. Counting horizontal and vertical spacing between characters, 40 Braille characters would be 120 characters wide ard four lines high on a printer. Thus, what would appear on one line of 120 characters of print requires a maximum cf twelve lines of dots and spaces in Braille. Even with the use cf compression techniques for flanks and shcrt lines, Braille is still very bulky. For example, a thirty volume encyclopedia wculd consist of 145 volumes of five inch thick bocks in Braille. Further, computer generated Braille requires seme sort of change to the line printer, which means a time delay in most computer installations. Special forms jobs are seldom run more than a few times a day. Eecause of its bulk, Eraille output is quite wasteful, especially if only a few lines of each listing are reeded, as is commonly the case in debugging a program. Braille output does provide a good means of storing information for later use and providing a listing which can be studied many times. However, it is easily destroyed by placing many listings or other heavy objects on 15 tcp of it, causing the raised dots to be erased. Properly embossed Eraille en special paper has an average life of fifty readings. [2] {Embossing against a soft base does net produce as well as when a metal die is used. The soft base limits dot height by allowing the dct base to expand.) On the surface, the OPTICON seems tc present a very satisfactory scluticn. It is computer independent, readily available, reads all forms of output (it can even be used to read the face cf a cathede ray tube display), and presents no restricticrs en what computer services are used. It is, in fact, guite adeguate for reading listings in a batch environment. But, since it presents the tactile data on the user's fingertip, it is inconvenient to use at a time sharing terminal, since the user must continually move his hand frcm the OPTICON to the keyboard and back again. Also, the readinq speed nith the OPTICON is a consideration aqainst its use, as stated earlier. Additionally, with both Braille and the OPTICON, a sensory fatigue problem enters after prolonged use without rest. This fatigue could be compared to eye strain. The Eraille or CPTICCN reading finger becomes tired and the ability to detect and distinguish characters lessens, causing errors and slowdown in reading. Although experienced readers may be able tc work for several hours 16 before becoming fatigued, others cannot continue for more than a half hcur without giving the reading finger a rest. Since most coaputer programmers spend several hours at a time at a terminal, this drawback: would present serious problems. The final medium to discuss is that of synthetic speech. Many companies are producing various types of voice response systems. However, in most cases, . system details are proprietary. Fcr a recent survey of commercially available units see [5]. Synthetic speech seems to be the optimal medium for the computer to communicate with blind users, indeed, with man. There is sufficient reason to telieve that nc arbitrary letter by letter code could ever be as efficient anl understandable as the spoken language of the user. To bridge the gap between the computer and the blind user, the computer irust •speak'. [ 3 ]-[ 4 ] Section 2.5: Analog Speech Synthesis Systems The earliest vcice response systems were analog systems. Speech waveforms for words, phrases, and occasionally ever syllables were recorded. Most commonly, photographic film cr magnetic tapes were used to store the 17 sounds, as these could easily be mounted on drums and recorded in tracks. Drums rotate slowly and a reproduce head or heads move in place when a track is chosen. Because the drums are slew and large, duplicate entries are necessary around the surface to provide rapid access to a segment. Switching of heads is either controlled by a mini-computer or is hard wired. These methods are very useful in systems that require a sirall fixed vocabulary, e.g. tine and temperature units. However, their adaptation to more sophisticated systems is limited. First, there is little flexibility imposed by the mechanics of the device. Second, preparation of new or additional vocabularies is slow and expensive. Whole films must be reproduced. Third, sounds are far from natural since they are concatenations of isolated words or sounds. [5]-[6] Section 2.6: Digital Speech Synthesis Systems Recently, Masters Specialties Company has developed a technique for digitalizicg and storing whole words in metal oxide semiconductor (MOS) read only memory (RCM) chips. By a complex plotting of waveforis, engineers have converted 18 analog audio signals into digital signals requiring a minimum of storage. The advantage is first, a mere natural sounding voice. All of the vecal gualities of the original speaker are there. Each word is stored in its own memory which eliminates the need fcr ccstly drums or disks. Accessing is simplified by directly addressing the ROM instead of controlled access by a mini-computer or hard wiring, since logic decoding is accomplished without complex programming. The EVA (Expandable Voice Annunciator) is capable of a vocabulary cf only ten to thirty words. Cnce again, while an improvement over the analog devices, this system would nc+ be suited tc any large vocabulary needs. Rather than dealing with large units such as phrases or words, the most versatile synthesizers deal with phonemes, the smallest unit of the spoken language. They accept digital phenene commands and return their audible counterpart. This approach requires sophisticated software to convert froir letters to phonemes. There are several algorithms fcr this translation ranging from dictionary look-up techniques [ *4 ][ 1 1 ]-£ 1 2 ] to synthesis by rule. [7]-[10] 19 The problem with this method of synthesis is that the wcrds to be synthesized must be converted from graphemes to the corresponding phonemes. (Graphemes are the 26 letters of the alphabet and all special symbols.) This is not a trivial process since the English language does not fellow any simple set of rules for letter to sound correspondence. This is most apparent with vowels. For example, the sound ecrrespending to the grapheme •0' in 'women* and 'Bob* is clearly guite different. Since phoneme translation is context dependent, these algorithms usually require large tables and a moderate amount of computation. However, computer generated speech systems using synthesis by rule have been designed to produce guite satisfactory and understandable output. [10][13J An example of such a system is the one at Michigan State University described in Chapter 1. This system is a very significant step towards ar. optimal communications method between a ccrrputer and a blind user. Nevertheless, there are scie serious f hcrtcoraings. First, the translation to phonemes is dene in the host computer system, net in the terminal. Thus, the system is computer dependent. Although the software might be moved to another computer, such a transfer would almost certainly involve modification to the software, perhaps major revisions if the transfer were to another model or ancther manufacturer's computer. Further, 20 only a subset of the system's resources are available to users of the special terminal. This may be adequate in beginning computer science education but is not at all satisfactory for a mere advanced and experienced computer us^r. The most serious drawback, however, is that since the conversion to phonemes is a process on the host computer, some messages can be sent directly to the terminal, rypassing the translaticn process. These characters, if sent directly to the speech synthesis device, would not produce words, and if sent to a teleprinter or CRT for printing, they could not te read by the user. Section 2.7: A Talking Terminal Considering all aspects of the above discussion, it seems that an optimal communications system for blind cemputer users could be designed. Such a system should clearly be an interactive terminal, rather than a batch system, to allow more complete access to computer facilities. All batch facilities are usually available through an interactive terminal, but seldom is the reverse true. That is, in a terminal system, long jobs can be scheduled for execution in batch mode and have the output sent tack to the terminal for later reading. However, 21 interactive computing, and especially text editing, is available in a batch environment only in a very limited way. Interactive text editors are of great advantage to the tlind user. Corrections to program files can be made easily fcy reference to line numbers without the inconvenience and difficulty of finding specific punched cards in a deck. Many sighted programmers use on line terminals to write and debug their prcgrams. This two way communication speeds up the process. However, the blind programmer does not have this capability. Clearly, this disadvantage is felt. Recently, the ACP Special Interest Group for Computers and the Physically Handicapped circulated a guestionaire among tlind prograirmers about their special needs and interests. The results were published in SIGCAPH Newsletter Number 8, July 1, 1973. In response to 'What special tools or eguipment *culd you like to see developed? 1 , readers wrote: 'A faster means cf reading than Braille 1 , *A machine to read ink output froir the computer.', 'Auditory output or input echo', 'Random access books 1 , 'An easier way of finding or inserting cards in a deck', 'A card reader enabling me to make corrections myself. Computer generated speech of the phoneme synthesis variety is the best means cf presenting the output. However, the translation from graphemes to phonemes clearly 22 should not be dene in the host computet due to the computer dependency problem and the inability tc translate certain messages as mentioned above. Therefore, an intelligent terminal of seme description must be incorporated so that the translation can be done in the terminal. This solves both problems. Since all messsages are sent to the terminal and are translated there for presentation to the synthesizer, no messages can bypass proper translation. Also, the termiral can be constructed in such a way that it appears to be a teletypewriter or ether conventional terminal to the hest computer system. Thus, computer independence is naintained. Additional advantages are present which can be attributed to the intelligence of the terminal. That is, seme special prccessiny of the data presented to the terminal can te performed if desired, e.g. reading only the first few characters of a line, selecting a mode of operaticn whereby the terminal spells all output, and other local features. It appears that such a talking computer terminal would be the optimal method of communications for blind computer users. Specific details of the talking terminal will follow in Chapter 3. 23 CHAPTER 3 SYSTEM DETAILS Section 3.1: Hardware Components An analysis cf a teletypewriter or a CRT type terminal yields the following components: a keyboard to enter the data; a coupling device such as a modem to communicate with the computer; and an output device, such as a teleprinter ce cathode ray tube display. The talking terminal retains the keyboard and coupling device, and adds a speech synthesis device fcr output presentation, driven by a micro-processor. The micro-processor is necessary to maintain host independence, since synthesis devices need special codes to drive them. The standard ASCII characters sent to a terminal need to be converted to these special codes. In the selection cf a specific manufacturer and model of the above eguipment, several factors were taken into consideration. The talking terminal is considered to be a prototype device fcr experimentation. Therefore, ease in entering, modifying, and debugging the system^ software was of great importance. In a final version of the terminal 24 such features as front panel display lights and control switches, which were essential in the system's development, would net he necessary, and, in tact, might be undesirable. Other considerations in hardware selection were keeping the cost of the terminal as close as possible to the cost of a standard terminal, within the constraints of delivery time and availability cf cempenents. The Votrax unit, manufactured by the Vocal Interface Divisicr of Federal Screw Works was selected for the speech synthesis device. This decision was based on several factors. First, the majority of speech synthesis applications tourd ic the literature make use of the Votrax, and therefore, irany of the algorithms for translation from text to phoneme cedes are designed specifically foe use with the Votrax. Further, after hearing the device demonstrated en several occasions, it was deemed adeguate for the purposes of the talking terminal. Another factor was that the Votrax is driven by phonetic cedes, which means little dictionary storage is necessary. In contrast, examine the dictionary storage reguirements for fcrmant synthesis. A typical desk size abridged dictionary contains 130,000 words. This must be expanded to include pronunciation of the common endings of most wcrds, plurals for nouns, past tense for verbs. 25 suffixes, and prefixes. Also, many entries nay never be needed. In short, a pronouncing dictionary would reguire around 500 million bits of storage. [1**] A more compact method is obviously imperative and phonetic transcription is one answer. The Votrax ur.it is an electronic analog of the human vocal system. It accepts as input, a series of eight bit digital command words, indicating the phonemes desired. (The phoneme is the basic building block of speech.) The audio output, which is an electronic simulation of human speech, is compatible with any conventional audio circuit. The Votrax speech synthesizer consists of three printed circuit boards, which contain a series of active filters to mimick the resonance in the vocal and nasal tracts. Special forcing functicr generators provide the filter excitation synthesizing the vocal chords and fricative sound sources. Unique low frequency function generators supply the articulation and dynamics used when transitioning from one phoneme to another. Perfect pronunciation and articulation for each phoneme is accessed from a read only memory in the device. [ 15 ] The micio-processor system was selected to provide the intelligence for the terminal. Due to the slow data rate of speech, (on averace, two to three words per second), the 26 speed of the computer was not an important factor, even with a complicated algorithm for text to phoneie translation. The Altair 880C computer system manufactured by HITS, Inc. was used in the talking terminal. This decision was based on availability, lew cost, modular design, and a bus structure that allcws the system to be configured with any amount of memory and any number of input/cutput ports. The availability of several Altair compatible boards from ether manufact urers at low cost enhanced the list of advantages for the Altair 88C0. The complete cectral processing unit (CPU) is on a single LSI chip, Intel's 8080 micro-processor. This chip has a separate sixteen line address and eight line tidirect icnal data bus. The transfer of data between the CPU and memory cr I/O takes place in a 100 line bus structure. These also carry the unregulated supply voltages, and all ccntrcl and status signals. Other cards in the system can ccntrcl the bus only when addressed by the CPU. [ 16 ] Input/output drivers and 16K bytes of static random access read-write meircry were obtained from Processor Technology to complete the Altair computer system. Fead-write rremory was selected for the protoype terminal so that prcgram changes could be easily effected. A final 27 versicn of the terminal would require only 2K bytes of read -write memory for buffers and program variables. The reaaining 14K bytes could be replaced with read only neiory, permitting ncn- volatile storage of systea software and tables. To complete the terainal, a CoaData aodel 150-12 aodea and a Cherry Switches keyboard were used. However, any EIA compatible acdea and any eight bit parallel ASCII keyboard could be substituted with no nodification to the terminal. The complete talking terminal, consisting of four units, can easily fit on top of a small table. In fact, since only the keyboard, nodes, and some type of speaker need be within aia*s reach of the user, the terminal can effectively be made very small by placing the other components in an cut of the way place. Section 3.2: Software Description The software for the terminal consists primarily of routines to perform the translation from English teit to the digital commands necessary to diive the speech synthesis device. Routines to handle the communications between the terminal and the host computer system, as well as those to 28 manage character storage buffers, complete the list of the terminal*s scftware. The algorithms for the text to phoneme translation used in the terminal are those described by Mcllroy from Bell Laboratories. [10] However, the algorithms have been modified to tetter suit the needs of the talking terminal. The decision to use Mcllroy's algorithms was based on several factors. First, his approach was designed specifically for use with the Votrax synthesizer. His rules and tables map directly into the phonemes used by the Votrax. (The pliocenes used by the Vctrax are not in a one to one correspondence with those in the International Phonetic Alphabet.) Further, Mcllroy's algorithms deal with each word individually. That is, no attention is paid to context during the translation to phonemes. The talking terminal is designed tc be used mostly, if not primarily, with computer languages. Abbreviated system messages of the type freguently fcurd en the average time sharing system and ether output data are usually rot complete sentences, lherefore, the mere expedient, less complicated method of independent processing cf each word is better suited to this application than a context dependent process. 29 Allen and Lee have reported on the research at Massachusetts Institute of Technology aimed at a direct text translation. [ U ][ 1 1 ]-[ 12 ][ 17] First, whole words are isolated and lock€d-up in a translation table- If more than one transcription exists, a parts of speech preprocessor is invoked to establish which transcription should be used. Stress analysis is perfcrned and the resultant data is sent to the speech synthesizer parameterization process. If the word is not found in the table, it is broken down into its constituent prefixes, suffixes, and word stems, and the process is repeated for each. If this is still unsuccessful, a set of letter to sound rules are applied in an attempt to approximate the correct pronunciation. This approach is not well suited to the talking terminal application. It is designed to be used as a reading machine for the blind. Hardware reguirements alone make it very undesirable for the talking terminal. The system is being inplemented on a PDP 9 and a TX-0 computer and requires a high speed drum for dictionary storage. The dictionary currently consists of 11,000 words and approximately 4CC letter to sound rules. [18] The University of Keele system [19] is also undesirable for use in the talking terminal. This system relies heavily en breath group and stress analysis and the rules are 30 desiqned tc produce synthetic speech in a British dialect. Context dependent algorithms as previously mentioned, especially these with parts of speech preprocessors, are not suited to the terminal's usage. Complete naturalness of synthetic speech as an end in itself is not the goal of the talkinq terminal, but rather, understandable output, readily available to the blind programmer. The hardware and software requirements of Kcllroy's algorithm are reasonable and they provide a fast, reasonably accurate translaticn which is quite understandable tc most users, once they become familiar with the machine's accent. The main body ct the software is a 10,000 byte table which contains the letters of the alphabet, special symbols, seme excep+icn words, and word fragments, all with their corresponding pheneme equivalents. Letter markers (an asterisk) preceed letters and special symbols while fraqment markers (a percent siqn) preceed the word fraqment in the table. This is needed to distinguish cases where a letter may appear more than once, e.q. f *a* is the letter 'a', pronounced 'ay'; 'a' is the word 'a', pronounced 'uh', and •*a' is the fragment for a short 'a'. In some cases, replacement fragments are included in the table with the word fragments. These are used to replace a given word fraqment during prccessinq. For example, »alk' is replaced with 'awk' in words like 'walk' and 'talk'. 31 The software consists of routines to access this table and preprocessing routines which mark long and short vowels, pronounced 01 silent •e's , etc. Briefly, a word is processed as fcllcws. first, the table is searched to see if the word is ar. exception. That is, a word which defies processing by rule and which has been included in the table along with the phonemes necessary tc prcperly pronounce it. If so, processing is complete. If not, and if the word is plural, the final «s' is removed. The exception table is again searched for this singular form. If this search still fails, the preprocessing rules are applied and the table is searched repetitively for fragments. The phonemes corresponding tc these fragments are placed in the output buffer and any replacement letters are added to the beginning of the remaining fragment. This fragment search continues ur.til the entire word has been processed or until the table search fails tc find a fragment. If the attempt tc translate the word by rule fails, the word is translated into the choremes necessary to spell the word, letter by letter. Spelling is a last resort and is usually only invoked with unusual abbreviations and the like. All software was written in 8080 assembly language and appears in Appendix I. Detailed descriptions of each routine in the program fellow. 32 All prccessinq begins with the interrupt service routine, 'INT*. The hardware is configured such that an interrupt occurs whenever a key is pressed en the keyboard 01 a character is received by the modem. In the case of a kevboard interrupt, the key stroke data is read and checked tc see if it is a *control d* (octal 004). This key in iicates that the terminal should discontinue reading the current lire and proceed to the next line. This feature is analogous tc a sighted user scanning only the first few words on a line and skipping to the next one. If the key strcke was the discontinue key, a flag is ce* which is tested in a subsequent routine. Otherwise, the key stroke data is transmitted through the modem to the host conputGr, ending the processing cf the input interrupt. Prccessinq a mederc receiver interrupt is somewhat more complicated- when this interrupt cccurs, the received data character is read trcm the modem and placed in a circular character queue, assuming that the queue is not full. If it is full, this character, and all subsequent characters are lqnored until space is again available in the queue. A warning tone is turned on to indicate to the user that characters have reen lost. 33 Since communications with the host ccmputer ace through an asynchronous data line, the terminal itself cannot request that the host computer wait a while until buffer space is available. This responsibility is left to the user of the terminal. The queue in the current implementation of the terminal will allow up to 1024 characters. The characters are, of course, removed as the words are spoken by the Synthesizer. It is only when the host computer gets significantly ahead of the terminal that problems occur. A careful user can easily see that the buffer overflew problem never occurs. He need only wait between requests to the host cemputer leng enough for the terminal to catch up in reading the cutput. The routine 'SEEAK' is what might be considered the main routine of the entire program. It directs the execution of all ether routines. First, it repetitively calls 'GET', each time getting a character from the input gueue, until an end cf line marker is returned. As each character is fetched, it is stored in a temporary buffer with all words, numbers, and special symbols separated by a mark character (octal 000). After an entire line has been reformatted in this manner, a loop is entered that removes each word, number, or special character, item by item from the reformatted line. The item is first passed to , PHREAD i to see if it exists in its entirety in the exception table. If it. does, *PHREAE* returns the corresponding phoneme equivalent fcr the item. If the item is not found in the exception table, *FHPFCN* is called to try automatic pronunciation by rule. If the automatic pronunciation suceeds in translating the item to its corresponding phenemes, the phcneir.es are again returned. If unsuccessful, i.e. if the itetr cannot be pronounced because it has no vowels, consists cf enly one letter, etc., *PHSPELL* is called which returns the phenemes necessary to spell the word. 'PHSFELL' is called directly if the 'spell only* switch has been set. Next, the phonemes are passed to the speech synthesizer by the routine 'VOTRAX'. after all items in the line have teen processed, •.SPEAK 1 checks for ether lines tc be read. As mentioned atove, 'PHREAC checks to see if the entire word is ir the exception table. This is accomplished by passing the wcrd to 'PREFIX*. If 'PREFIX* finds the entire word in the table, rather than only a prefix of the item, •FHRI.AC* copies the phonemes from the table into the output buffer and returns. If *PREFIX* does not find the entire word, 'PHEEAE' returns and indicates that the word is not in the exception table. 35 The routine 'PREFIX' is passed an item to be looked up in the table. It finds the longest possible prefix of the item. The address cf this prefix is returned to the calling routine. In addition, a flag indicating failure to find any prefix, success ir finding a prefix, or success in finding the entire word is returned to the calling routine. 'PHPRCN' parses the word and attempts to pronounce it ty certain rules fcund in the word fragment table. First, •FINALS' is called to check for and remove the final •s 1 of the word. Alsc, final 'ie* is changed to 'y*. If a final •s' was removed, 'PHBEAE' is again called to determine if the singular form of the word is in the exception table. If it was found, the phcneme for *s' is added at the end of the output buffer, and 'EHFHCN' returns indicating success in finding the jchcneire eguivalent for the word. If a final 's' is not found, or if the singular form of the word is still net in the exception table, preprocessing routines are called tc fird and mark long vowels, silent ■e's, standard suffixes, and voiced or unvoiced 's's. These routines are 'FINALE*, »MID0», 'HIDE', and 'MIDS'. After this preprocessing is completed, any previously removed final »s* is replaced and end of word markers are placed at the beginning and end cf the word. This is done so that subseguent table searches for prefixes can return 36 different phonemes fee certain letter combinations when found at the beginning, in the middle, or at the end of a • word. For example, the final •a 1 in •algebra* and 'India 1 is pronounced •uh 1 but the •a' found in the middle of •cat' is pronounced short. A leep to find prefixes is now entered. A word fragment marker is placed at the beginning of the letters that remain in the word, and •PREFIX 1 is called to find the lengest possible prefix cf the letters. If during any iteration no prefix is found, automatic pronunciation by rule fails and •FHFBCN 1 returns. When a prefix is found, it is removed from the word fragment, the phoneme eguivalent for the prefix is written into the output buffer, and any replacement letters which accompanied the rule are written in frcnt of the remaining fragment. Then, the next iteration is begun. This continues until all of the letters cf the word have teen removed, in which case the word has been translated into its phoneme eguivalent, or until a prefix can nc longer be found, indicating failure. •PHSPEIL' breaks the word into letters. Each letter, with the letter marker in front of it, is then passed to 'PHRFAD' tc find the phoneme eguivalent. All letters of the alphabet and special symbols are in the exception table with their corresponding phonemes. After all letters have been 37 processed, the output buffer containing the phonemes is returned. 'FHSPELL' cannot fail. That is, it is a last resort after table Icok-up and automatic pronunciation by rule have both failed, and always results in the phonemes necessary to spell the word. However, certain unprintable terminal and communications control characters are not in the table and are therefore ignored if encountered in the spelling process. As described above, the final 's' preprocessor, •FINALS', checks to see if the last letter in the word is an *s*. If a final 's' is found and the preceeding letter is an 's' or a 'u', i.e. the word ends in 'ss' 01 •us', the • s* is not removed since it does not usually indicate plural form. In this case, final 's' processing is terminated. After removal cf a final 's', the routine tests to see if the 's' should be a voiced *s' ('z' sound) or an unvoiced •s 1 {'s' sound). If the final •s' is preceeded by one of 'c', 'f»,'k', 'F'f or "t*, then the *s • is unvoiced. Otherwise it is voiced. A final 'ie' is changed to 'y' regardless of the presence of a final 's'. On exit from the routine, a flag is returned indicating that no final *s', a voiced final •s', or an unvoiced final 's' was found. 38 The final 'e» preprocessor, •FINALE 1 , marks silent final 'e's, sone instances of long vowels, and standard suffixes. The first test determines if the last letter of the word is an 'e*. If so, and if it is the only vowel in the word, it is marked long by capitalizing it, e.g. •he 1 , •she 1 . The practice of marking long vowels by capitalizing them will be observed throughout the program. If the abcve test succeeds, final *€• processing is complete since there are no ether vowels in the word. By means of repetitive calls tc 'SUFFIX 1 and •INSERT*, all standard suffixes at the end of the word are found and separated frcm each ether and from the word stem by the insertion ct a break mark (the guestion mark). Subseguent processing deals mainly with the word stem. If the last letter of the word stem is an *i', *u*, or •y 1 , and if it is the only vowel in the stem, it is marked as a long vowel. Again, since nc vowels remain in the stem, processing is complete. After this processing is complete, certain instances of leng vowels and voiced or unvoiced •th's are located and marked. This completes final •e* processing. 39 •MIDU' performs three functions. First, it locates and marks all long •u's. Second, certain instances of *a*, 'e', and 'o 1 are marked lonq if they meet the necessary specifications. Finally, a test is made to see if the first vowel of the word is an 'i 1 or •y 1 (except when the •y* is the first letter of the word). If so, the •i* or »y» is marked long. Medial 's» processing, done by »MIDS*, locates all *s's except in the first and last letter of the word. If the •s 1 is a voiced 's*, i.e. is to be pronounced as a 'z', it is marked so by capitalization. The rule governing this decision is: an •s' is marked voiced if it is preceeded by a vowel and followed by a vowel cr the letter •ra l . The other preprocessing routine which remains to be discussed is •HIDE*. Ihis routine locates silent medial •e's and marks them as silent by insertion of the break mark. Medial silent »€'s primarily occur in compound words whose first part ends in 'e f , e.g. •houseboat 1 and 1 bumblebee 1 . To facilitate frequently used tests, the following subroutines were also included in the software: 'ONEOF*, which determines if a letter is an element of an indicated set of letters; •VOWEL', which determines if a specified fragment of a word contains any vowels; •SYLTEST*, which 40 determines if a wcrd fragment is a syllable; and •TH', which determines if the next two letters at a specified location are the letters 'th'. Section 3.3: Sample Sentence Being Processed To help demonstrate the software's operation, the sample sentence , 'PLEASE LOG IN:', will fee followed through the routines. First, each character is obtained from the character storage queue. As they are fetched, extra blanks are removed and words, numbers, and special symbols are separated from each other by insertion of a mark character (binary 0) . After this processing, the work buffer contains: 'please leg in : 0*. Notice that all letters have beer set to lower case. This is done by the interrupt service routine and is necessary since capitalization is used to indicate certain pronunciation features. The double mark characters are used to indicate end of the line. Next, 'please* is locked up in the exception table. Since it is net an exception word, this search fails and automatic prcnunciat icn is attempted. No final 's' exists. 41 so Mi" pr -e processing routines are called next. The final •<=' is inckcc silent by the insertion of the break mark (qjKStion mark), and the , s l is marked as a voiced •s* by capitalization. After preprocessing, the buffer contains: • pleaS« ? ' . Now, beqinciag and end of word marks are inserted and the fragment nark is inserted in frcnt of the word, resulting in: • >#p lease?* 1 . Repetitive searches in the rule table are then made for prefixes. These searches result in the Hollowing phonemes and replacement characters: F!?«G*!FNT FFFFIX PHCNEMES P 1 ie, y z tfUplea'Se?* S* SpleaSe?* ^P * J e a S e ? * XI 3EeaSe? # Sea % s e l # *S ^e?# Se? *# ** *s seer alcve, the word 'please 1 results in the phonemes: 'p, 1, ie, y, z*. Similar processing takes place tcr the words 'leg 1 and *in*, in the input sentence. The colon in the infut fails automatic pronunciation and enters the spelling routine. However, after the letter mark is place! in front of it, it is found in the exception table, resulting in the phonemes: 'k, c, 1, uh, n*. 42 CHAPTER 4 SUHBAFY AND CONCLUSIONS S€ction 4.1: Suimary In an attempt tc provide a communications medium for fclinfl computer users, the requirements for an optimal method cf communications were set forth. Previous solutions to the problem were studied and their shortcomings were noted. Through a combination of ideas from previous approaches and the author's personal experience, a new and unique direction was taken, which resulted in a host independent talking computer terminal. The hardware for the terminal, consisting of a micro-processor, a speech synthesizer, a keyboard, and a icdem, were assembled tc form a prototype system. An analysis of algorithms for the translation from text to synthesizer commands was conducted, resulting is a decision to use a technique designed by Mcllroy from Bell laboratories, with modifications to tailor it to the needs of the talking terminal. The necessary scftware was written and the talking terminal was demonstrated using the University ot Illinois' PCP 10 as the host cotputer. 43 Section 4.2: Evaluation With respect to the six criteria for an optimal coirmunicatior s method between a computet and a blind user as set forth in Chapter 2, the talking terminal is quite adequate. It is certainly available any time that the cenputer system is available and a blind user wishes to use it. The versatility criterion is met as well as it is by any type of terminal. Since most batch systems have a facility for the schedulirq cf jobs and retention of output for later review en a terminal, the user of the talking terminal would be able to operate both in batch and time sharing mode. Tt is recognized that the terminal would be ct no use in a strictly batch environment. However, Braille listings, which are easily available, wculd help fill this need. All processirg necessary in the translation from text to the ccntrcl cedes necessary fcr the speech synthesizer is dene in the terminal. In fact, to the host computer system, the terminal locks like any other ASCII asynchronous dial-up terminal, Q .g. +€le typewriter, CRT, etc. The necessity for ar.r\ advantace ct this approach is that all messages routed to the terminal trcm any source are translated and spoken to 44 the user by the synthesiser. There is never a case where a message can te sent tc a user without the proper processing. Futher, host computer independence is Maintained. The i terminal can be used without change, either to itself or the host, on any computer system which allows ASCII asynchronous communications. Clearly, since the talking terminal communicates with the user in spoken English, there is no reguirement of learning a new skill. A user does, of course, need to learn the key locations on the keyboard and hew to control the terminal. This requirement would be applicable to any type of terminal. Additionally, however, some users might need a short time to become fanilar with the terminal's speech. The need for practice time varies greatly from user to user, but is almost always less than fifteen minutes to a half hour. The final criterion is that of cost. The prototype talking terminal was built for a total cost under $2,500. This is only slightly higher than $2,000, which is the average cost of conventional teletypewriter or CRT type terminals. A final version of the talking terminal, without software development and debugging requirements could be realized, it is estimated, at a cost less than or at worst, equal +c the $2,000 figrre given above. 45 Although there are nc major shortcomings of the talking terminal, there are feme changes which could improve a subsequent version of the terminal. Section 4.3; Hardware Improvements Hardware improvements consist mainly of replacing the micro-prccesscr system. A smaller, less expensive micro-processor system, still based on the 8080 chip, is envisicred for the final version of the talking terminal. Features such as front panel display lights and control switches should be elinrinated, as they would not be needed. Also , the random access memory should be replaced with memory of the read only variety. All system programs and tables would be permanently stored in this memory, and only a small amount of read-write memory would be needed for variables and buffers. With this smaller design, it would become possible to mount all components of the terminal in one attractive reasonably sized case. The terminal would then become mere portable and versatile. «6 All ether systen hardware for the talking terminal proved to te quite adequate and no ether hardware changes would be made in subsequent versions- Section 4.U: Software Improvements No improvement s are needed to the software, but the addition of more local control options might enhance the talking terminal's performance. The options to discontinue the- reading of a line, and to force the terminal to spell all the words in a line already exist and have proved quite useful. It would also be useful if the terminal could repeat the last line read, without asking the host system to transmit th«= data again. Also, the ability to have the terminal read only certain columns cf the output, e.g. only the first ten characters of each line, might be useful in seme applications. However, this option might prove dangerous if an unexpected system message appeared and was not read in its entirety. Neither cf these improvements are significant and were not implemented ir. the prototype version in an effort to simplify operation cf the terminal. 47 fluch research has teen undertaken to design algorithms fcr the assignnent of stress within words and phrases. [11][18][22] Some simple rules for stress placement are quite successful, although seriously limited. For example, applying falling intcnaticn before a pericd or comma, and rising intcraticn tefore a question mark have limited success. [16] Algorithms fcr more complicated and complete assiqnment of stress are still experimental. Computation of this type ot stress assignment involves determining the part ct speech cf the word, as well as analysis of thp wcrd , s location in the sentence cr phrase. Although the Votrax synthesizer is capable of pronouncing each phcneme at any of four levels of intonation, the talking terminal does not make use of this feature. As previously mentioned, perfect diction was not the main goal of the talking terminal. Since no short and fast method of determining stress placement was found, and the addition cf mere memory and use ct more computation time were, at best, a tradeoff fcr only marginally better speech, this feature was not included. This is clearly an area which needs iruch future research. 48 Section u.5: Conclusions The talking terminal does provide an optimal means for a blind crogrammer tc communicate with the computer. However, the applications to the sighted world should net go without mention. Fcr instance, there are security systeas where an individual must constantly monitor a CRT screen for messages. This tedious task could be eliminated by using the talking terminal in place of the silent CRT. The employee is then freed tc do other tasks and still not miss any incoming messages. The terminal has potential in computer aided instruction. Ycung children have conversation ability developments that far exceed their reading skills. The talking terminal cculd communicate with these children more expensively than the printed page. Also, in a classroom environment, the talking terminal cculd be coupled to a public address system allowing everyone in the rccm to hear the computer's cutput. lhus, one talking terminal would do the job of many cenvent ior.al terminals. It is hoped that the desigr and construction of the cntotyc? talking computer terminal will enable blind programmers + c be more self-sufficient and productive and will find many applications among sighted users. EEFERENCES 49 [1] .5. C. Bliss, M. H. Catcher, C- H. Sogers, and R. P. Shepard, 'Optical-to-tactile inage conversion for th€ blind', IEEE Trans^ Man-Mach. Sv.st.. , vol. MMS-11, pp. 58-65, March 1970." [2] N. C. Lceber, •Proposed Braille computer terminal offers expanded world to the blind 1 , Proc . AFIPS IaJ.1 J£iHt Ccm£^ Ccnf^, vol. 39, pp. 79-87, 1971 [3] A. M. Libenan, F. S. Cooper, D. P. Shankweiler, and H, Studdert-Kennedy , 'Perception cf the speech code', fsjchcl^ Rev,., vcl. 74, pp. 432-461, 1967. [ 4 ] F. F. Lee, 'Beading Machine: frcm text to speech 1 , UII Zrans,. en A y d i q and Electrcac oust ics, vol AU-17, No 47~pp. 275-282, Dec. 1969. [5] 1. G. Hcir.sby Jr., 'Voice response systems', Modern £ata, PP- 46-50, Nov. 1972. [6] L. R. Babmer, B. fc. Schafer, 'Digital techniques for computer voice response: ijrplementations and applications', Proo IEEE, vol. 64, , No. 4, pp. C R f< ? I UT : EI KB BYTE ELFBOT? ;YES, SEARCH SUE-TABLE IF NOT, THE SUE-TABIE IS EXHAISTED. THERE ARE NO EREFIXES OF THE CURRENT NECESSAFY LENGTH. THEREFORE, INCREMENT NECESSARY LENGTH, EUMF TAEIE BOTTOM PAST CURRENT ELEMENT, AND SEARCH THE EXPANDED SUB-TABLE. LHLD INX SHLD TNR J MP EXBCT H EXBCT E FXLP1 IF NUMBER OF CHARACTERS MATCHED LENGTH OF A LCNGEF EREFIX, CHOP AND CONTINUE SEARCH. PXYES LHLD SHLE JKF EXI EXBOT EXLP1 ;GET OLD BOTTOM ;INC BOT ;PUT IT BACK ;INC NEC LENGTH ;SEARCH EXPANDED TABLE HAS LESS THAN THE NECESSARY OFF BCTTOK HALF OF TABLE ;GET I ;SET BCT=I TO CHOP ;SEARCH SUE-TABLE .SBTTL FHPRCN, DIRECTS AUTCMATIC EEC N UNCIAT ION THIS ROUTINE DIRECTS THE ATTEMPT AT AUTCMATIC PRONUNCIATION CN ENTRY , EC CONTAINS THE ADDRESS OF THE AVAILAELF BYTE IN THE CUTEUT EUFFEB, AND DE CONTAINS THE ADDRESS CF THE WORD TO BE PRONOUNCED. ON EXIT, BC RETURNS THE ADDRESS CF THE NEXT AVAILAELE BYTE IN THE OUTPUT EUFFER, 63 IF SUCCESSFUL, PRCNOUNCIATICN ; FAILS, -1 IS RETURNED IK THE THE ACC RETURNS WITH ZERO. ICC. IF AUTOMATIC PPSFLG: .BLKB 1 PFHCLE: .BLKB 60. f FHPBON: PUSH t PUSH E PUSH E LXI H,PPHCLD*6 XCHG CALL HOVE LXI E,PPHCLE*6 ;SAVE FINAL S RETUEN CODE ;IOBK BUFFEB SI7E ADDB INPUT WORD SAVE EUFFEB ADDB SAVE A 1CBK COPY GET ACOB WCBK BUFFEB SET UP PARHS FOR HOVE HOVE iOBD TO IOBK BUFFER PUT HORD START ADDR IN BC THE INPUT HORD HAS EEEN HCVED TO THE iOBK EUFFEB. BC POINTS TO THE FIRST CHAR IN THE »OBD, DE POINTS TO THE TERMINATING HARK AT TEE END OF THE BORD. IF iOBD IS CNIY CNE LETTER OB CONTAINS NO VCHELS, IT CANNOT BE PBONOUNCED. EXIT HITH FAILURE ABE THERE ANY VOSELS? NO, FAIL GET ADDR OF LAST CHAR GET RIGHT FABT OF END ADDR CHP BITH RIGHT PART OF START SAVE HL SAVE INTERHEDIATE RESULT GET LEFT OF END ADDR IS THERE ONY ONE LETTER? COMBINE IITH REST RESTORE HL IF YES, FAIL CALL VOWEL JH FPFAIL DCX D MOV A,E SUB C PUSH H MOV H,A MOV A,D SBB E ORA H PCP H JZ FPFAIL CHECK FOR AND BEHOVE FINAL S, CALL STA OBA JZ FINALS PPSFLG A PPNOS ;PBOCESS FINAL S ;SAVE RETURN CODE ;HAS THERE A FINAL ;NC S? SINCE CHANGES SERE HADE, TRY DIRECT LCCK UP AGAIN. XCHG MCV MOV POP PUSH CALL JH E,C C,B E H FHBEAE PPTRXA PUT END ADDR IN HL MCVE START ADDR TO DE MOVE REST GET EUFFER ADDR BACK SAVE END ADDB IN CASE FAILURE SEE IF IT IS IN TABLE IF NOT, TBY AUTO FBON IF FOUND, ADD THE PHCNEHE FOR THE STRIPPED S. 64 IDA STAX INX BVI STAX INX JPP PPSFLG E E A,SPHCN E E FFDCNE GET PINAL S FETURN CODE INSEBT PHONEPE IN OOTPUT INC EUFFER POINTER GET EHCNEHE FOB S PUT IN OUTPUT BUFF INC EUFFEB END FETUBN SUCCESSFULLY AFTER FINAL S CHANGES, THE WORD WAS STILL NCT FOUND. RESTORE PCINTEBS AM CONTINUE IN ATTEMPT TO AUTO PRONOUNCE, PPTEYA POP PUSH MOV MCV XCHG E E E,D C,E ;RESTCBE END FCINTEB ;RESAVE OUTEUT BUF ADDR ; START BACK IN BC ;MCVE BEST :PUT END ADDR EACK IN DE CA1L ALL FREFECCESSING FOUTINES. FENCS: DCX XRA STAX INX CALI CALL CALL CALL E A E E MIDU FINALE r. ide MDS ;GET ADDB CHAR BEFORE WORD ;GET A ZERO FIACE IN FECNT OF WORD RESTORE POINTER MIDDIE U FBCCESSOF FINAL E PROCESSOR MIDDIE E FECCESSOR CALL MIDDLE S PROCESSOR IF S WAS STRIFFED, FEFLACE IT LDA ORA JZ INX MVI STAX FFSFLG A EENREF E A,«s E GET FINAL S FLAG WAS THERE A FINAL S? NC, DC NCT REPLACE IT ADJUST WORE END GET AN S PUT ON END OF WORD NOW PEACE BEGINNING ANE ENE OF WORD MARKERS ON WORD FENPEP: ECX MVI STAX INX STAX INX XRA STAX E A, •# E D E E A E EXTEND WORE START GET THE MARKER INSEFT IN FRCNT OF WORD EXTEND WORE END MARK END CF WORD TOO EXTEND WORE END GET A TERMINATION HARK MARK END CF WORD NOW THE LCNGEST PFEFIX CF TEE WORD IS FOUND. THE PREFIX IS REMOVED, THE PHCNIME EQUIVALENT FOR THE 65 PREFIX IS CCFIED INTO IHE OUTPUT BUFFER, AND ANY REPLACEMENT CHARACTERS FOUND IN THE TAELE ARE PLACED BACK ON THE BEGINNING CF THE WOBD. THE PROCESS IS CONTINUED UNTIL THE INPUT WORD IS EXHAUSTED, IN WHICH CASE AUTO PBC NCUNCI ATION IS SUCCESSFUL, OF UNTIL A PREFIX CAN NO LCKGEB EE FOUND, IN WHICH CASE AUTO PRONOUNCIATION FAILS. PPLP1 MOV MOV LEAX ORA JZ C,B E,C C A PFDCNE ;PUT START CF WORD IN DE ;MCVE BEST ;GET THE NEXT CHAR ;IS WCRD EXHAUSTED ;YES, SUCCESS PLACE WORE FRAGMENT MASKER IN FRONT OF WORD. DCX MVI STAX CALL MOV ADD JZ E A,«% D EBEFIX A,B C EPFAIL EXTEND FRCNT OF WOBD GET THE MARKER PLACE ON WCBD FIND LONGEST PREFIX GET FIRST HALF OF PREFIX IF BC=0, NO PREFIX IF SC, FAILURE ADDR REMOVE PREFIX FROM WOBD BY INCREMENTING INDEX POINTER PFLP2: LDAX ORA JZ INX INX J(!P FFL2EX E E PPLP2 ;GET A PREFIX CHAR ;IS THIS END OF PREFIX? ;YES, DONE ;SKIP CHAR IN WORD ;SKIP CHAP IN PREFIX ;KEEP SKIPPING CHARS POINT EC TC FIBST FBCKEME CHARACTER. GET THE OUTPUT EUFFER ADDRESS IN HL. PPL2EX INX POP ;PCINT BC TC FIRST EHON ;GET OUTPUT BUF ADER COPY PHCNEflES TC OUTPUT EUFFER UNTIL A TERMINATION MARK IS FOUND, INDICATING END OF EHCNEMES, OR SEPARATION MARK (200 OCTAL), INDICATING THAT REPIACEBENT CHARS FOLLOW. FPLF3 LDAX E MCV M,A INX E OBA J JZ PPL3EX CMI 200 JZ PPSEP INX H JMP PFLP3 GET A TABLE CHAR PUT IN OUTPUT BUF PCINT TC NEXT TAB CHAR IS IT A TERMINATOR? YES, DONE IS IT THE SEPARATOR? YES, INSERT REP CHARS INC OUTPUT POINTER MOVE ANOTHER PHON 66 NOW COPY THE REPLACEMENT CHARACTERS ONTO THE FRONT OF THE WORD. FPSEP LEAX ORA JZ DCX STAX INX JP.F E A PFL3EX C C E FFSEE RESAVE OUTPOT EUFEEF ACER PPL3EX PPFAIL POSE J IIP POP FCF PCF ORI RET H FPLP1 F E E -1 CHAR END BARKER? GET A REF IS IT THE YES, DONE EXTEND MCRD FRCNT INSERT THE REP CHAR GET ADDR NEXT REP CHAR MOVE MORE ;SAVE WORK COPY OF ADDR ;LCOK FOR ANOTHER PREFIX ;REflOVE WCBK EUF ACDR ;RESTCRE CUTPUT BUF ADDR ;RESTORE INFOT ADDR ;SET FAILURE FIAG :RETURN FFCCNE: FCP POP POP XRA RET ;RESTORE OUTPUT BUF ADDR ;REMOVE ORIGINAL ACDR ;RESTCRE INPUT ADDE ;SET SUCCESS FLAG ; RETURN .SBTTL FHSPEIL, CHANGE EACH LETTER TC PHCNEBES THE FOILCWING ROUTINE SFEILS A WOFO OR SYflECL BY LOCKING UP THE FHCNEBES FOB EACH CF THE IETTERS HHICH HAKE UP THE BORD. ON ENTRY, EC CCRTAIKS THE AIDRESS CF THE NEXT AVAILABLE BYTE IN THE CUTPOT FUFFER, CE CONTAINS THE ACCRESS OF THE HORE TC EE SEELLED. CN EXIT, EC RETURNS THE ACCRESS CF THE NEXT AVAILAELE BYTE IN BYTE IN THE CUTEUT EUFEER. PSSTR: PBSPELL FSLCOF ASCIZ /* / PUSH PUSH LXI PGP MCV ORA JZ INX POSH tXT C C C, PSSTR E A,M A FSDCNE H H H,PSSTR*1 ;STRING TC HOLD LETTERS SAVE DE SAVE A WORK COPY GET ADDR CF STRING TO BE FCUND GET ADDR OF NEXT LETTER IN WORD FOT TBE CHAR IN ACC IS IT THE TERMINATION MARK? YES, COIT INC POINTER SAVE ADDR FOR NEXT TIME GET ADDB OF CHAR POSITION IN SIRING 67 MOV B, A CALL FHREAE MVI A,SPAUSE STAX E INX E JMP FSLOCP PSDCNE: XRA A STAX E POP E PET t .SBTTL FINAL S ;PUT CHAR IN TEST STRING ;FIND IT AND HOVE FHONS ;GET SHORT PAUSE PHON ;PDT IN OUTPUT BUP ; BUMP OUTPUT POINTER ;GC DC NEXT LETTER ;GET A MARK ;PUT IN OUTPUT ;RESTCRE EE ;RETUBN FFEFRCCESSER THIS ROUTINE CHECKS THE INPUT WORE TC SEE IF IT ENDS IN AN •S». IF A FINAL S IS PRESENT, IT IS REMCVED . REGARDLESS CF THE PRESENCE CF A FINAL S, A FINAL • IE ' IS CHANGED TO A • Y * . CN ENTRY, EC CONTAINS THE ADDRESS CF THE BEGINNING CF THE INPUT SORD AND DE CONTAINS THE ADDRESS OF THE END OF THE WORD. CN EXIT, DE EETURNS THE ADDRESS OF THE NFW END OF THE HCRD AFTER FINAI S AND IE HAVE BEEN REKCVED. IF A FINAL S WAS NCT FOUND, IS RETURNED IN THE ACC, CTHEFHISE TEE FHCNEME FOR A VOICED OR UNVOICED »S« IS EETUFNEE. FINALS PUSH MVI LDAX CHI JNZ E B,0 D 163 FSNCS SAVE BC SET RETURN FLAG LOAD LAST CHAR OF WORD IS IT AN S? NC, NO FINAL S AN S AFTER ANCTEEF S CF AFTER A U SHOULD NCT EE REMOVED (E.G. LESS MINUS) . DCX LCAX INX CMI JZ CMI JZ D D C 163 FSEXIT 165 FSEXIT MCVE POINTER TC NEXT LEFT CHAR LCAD NEXT TO LAST CHAR PUT POINTER EACK IS IT SS? YES, IGNORE IT AND RETURN IS IT US? YES, IGNORE AND RETURN REMOVE FINAL S NOT ERECEEDEE BY S OR U. SET VOICED S FLAG. XRA STAX DCX MVI A D E E,ZPHCN ;GET A MARK ;REMOVE FINAI S ;RESET END POINTER ;SET RETURN FLAG FOR VOICED S IF NEW FINAL LETTEE IS CNE CF C F F P CR T, THE FINAL S IS UNVCICED. IF £0, SET RETURN CODE AND BETUFN. 68 LCAX E LXI H,CFKFT CALL CNEOF JM FSNOS MVI E,SPHCN JMP FSEXI1 ; NOW CHECK FOF A FINAL FSNOS: LCAX C CHI 145 JNZ FSEXIT DCX C LDAX C INX C SUT 151 JNZ FSEXIT » STAX C rex C MVI A, 171 STAX E FSEXIT: : MCV A,B OBA A PCF E RET GET LAST CHAR GET ADDR CF STRING IS IT ONE CF THEN? NO, CHECK FCR IE YES, SET RETURN CODE RETURN IE. IF FOUND, CHANGE IT TO Y. GET FINAL LETTER IS IT AN E? NC, RETURN GET ADDR CF NEXT CHAR GET THE CHAR PUT EOINTEF EACK IS IT IE? NC, FETUEN ;PDT ZERO IK PLACE CF ! ;ACJHST END POINTER ;GET A I :INSERT ON END OF WORD ;GET RETURN CCDE IN ;SET CONDITICN CODE ACC ;RESTCRE -.RETURN BC .SBTTL FINAL E PREPRCCESSOR THIS ROUTINE ICCATIS AND HARKS POTENTIAL ICKG VCWELS, PRIMARILY LCNG E'S. IF AISC LOCATES AND SEPARATES STANDARD SUFFIXES. CN ENTRY, EC CCNTAINS THE ADDRESS CF THE BEGINNING OF THE WOFD TC BE PFOCESSFE AND DE CONTAINS THE ADDRESS OF THE END CF THE WORD. NOTE THAT SINCE INSERT PAY BE CALLED, THE END CF THE WORE NIGHT EI EXTENDED TO ALLOW SPACE FOR THE BREAK MARK. FIRST, IF THE LAST VOWEL IN THE WCFD, IETTIR CI TEE WCRD IS AN E AND IT IT IS LCNG. MARK IT AND RETURN. IS THE ONLY FINALE LDAX cm JNZ CALL JF MVT STAX RET E 145 FENC VCWEL FENO A,«E E GET EAST CHAR IS IT AN E? NO, CONTINUE WITH ANY CTHER VOWELS? YES, CONTINUE GET A CAP E PUT IN WORD DCNE, SO RETURN ROUTINE 69 NOW CHECK PCR ANY OF THE SUFFIXES IN SUFFO. FENO: LXI CALI PDSH XCHG CP H,SUFF0 SUFFIX E ICNGE GET ADDR CJ SUFFO STRING ANY BATCHES? SAVE END ADDR PUT BETORNED ADDR IN DE IE SUFFIX MAS FOUND, CALL IF LCNGE FAILS CR THE ADDRESS RETURNED BY SUFFIX AND LONGE ADDRESS OF THE END CF THE WCEB, OR IF THIS ADDRESS POINTS TO THE LETTER H, OR IF THERE IS A VOWEL IN THE REMAINING WORE STEM, THEJi CCNTINUE LOCKING FOR SUFFIXES, ELSE SKIP THAT PART OF TEE BCUTINE. FESUF JM FESUF CALL VOWEL JP FESUF PCP H PUSH H MCV A,L SUB E nov L,A MOV A,H SBB C ORA I PCP R PUSH E JZ FESUF LDAX D CMI 150 JNZ FEN02 POP D PGSH E LONGE FAIL ANY VOWELS YES, CHECK GET END AD BUT IEAVE GET RIGHT CMP WITH R SAVE INTER GET IEFT C DCES RETUR COMBINE RE RESTORE HL BUT KEEP A YES, CHECK GET IETTER IS IT AN H NO, SKIP C ED CHECK MORE SUFFIXES IN STEM? MCRE SUFFIXES DR FROM STACK A CCFY OF IT PART OF END IGHT OF RETURNED ADDR MEDIATE RESULT F END NEB ADDR=END? ST COPY MORE SUFFIXES PCINTED TO HECK FOB SUFFIXES ;RESTCRE CLE END VALUE :BUT KEEP A CCPY ON STACK CHECK REPETITIVELY FOR SUFFIXES IN SUFF1 STRING. IF FOUND, CALL INSERT TO INSERT 1HE BREAK MARK. FELP: LXI R,SUFF CALL SUFFIX JM FELPEX POP E FUSH E PUSH H MCV E,H MCV C,L I NX E CALL INSERT PCP H POP E PUSH E GET ADDR OF SUFF1 STRING ANY MATCHES? NO, EXIT FRCM LOOP GET OLD END ADDR BACK SAVE START ADDR SAVE SUFFIX ADDR MOVE SUFFIX ADDR TO BC MCVE REST ADD 1 TO SUFFIX ADDR INSERT THE BREAK MARK RESTORE SUFFIX ADDR RESTCRE START ADDR RESAVE NEW END ADDR 70 XCHC ;P0T SUPFIX ADDB IN DE JRF FELP ;LCOK FOR MOPE SUFFIXES GET ADDB CF SUFF2 STRING ANY BATCHES? NC, CONTINUE GET END ADDR BACK SAVE START ADDR MOVE SUFFIX ADDR TC BC MOVE REST ADD 1 TO SUFFIX ACER INSERT THE BREAK MARK RESTORE BC RETURN FROM FINAL E NOW CHECK FCR SUFFIXES IN SUFF3- IF A SUFFIX IS FOUND, AND IF THE SECCND LETTER IN THE SUFFIX IS AN E, RETURN, ELSE, INSERT THE BREAK MARK AND CONTINUE. ; NOW LOCK FOR A SUFFIX IN SUFF2. PELPEX: LXI H,SUFF2 ; CALL SUFFIX ; JK FEN03 ; POP D ; PUSH E ; MOV E,H ; MOV C,L ; INX B ; CALI INSEET ; POP E ; RET ENC3: LXI H,SUFF3 CALI SUFFIX JM FENCU PCF C INX H INX B MOV A,M CMI 145 RZ BCX H PUSH E MCV E,H MOV C,L CALI INSERT MOV H,B MCV L,C DCX H POP E PUSH D XCHG GET ANY NC, GET GET GET GET IS ADDR MATC SKIP OLD ADDR ADDR THE IT AN IF YES, GET INSE SAVE STA MOVE INS HCVE RES INSERT T HCVE INS MCVE RES GET SUFF RESTORE SAVE NEW PUT SUFF CF HES? TC END CF 3ND CHAR E? EETU RT A RT A ERT T HE B ERT T IX A EC ENC IX A SUFF3 STRING NEXT TEST ADDR BACK 1ST CHAR IN SUFF CHAR IN SUFF RN DDR DDR ADDR TO BC REAR MARK ADDR TC HL CDB BACK ADDR DDR IN DE IF LAST LETTEF IN WORE STEf IS AN I U OR Y, AND IT IS THE ONLY VCWEL IN THE STEM, MARK IT LCNG AND BETURN. FEN04 LCAX LXI CALI JM CALL JP t H,IUY CNECF FENC5 VCWEL FEN05 GET LAST LETTER GET ADDR OF IUY IS IT ONE CF THEM? NC, CONTINUE ANY VOWELS? YES, SKIP TC NEXT TEST LDAX ANI STAX PCP RET E 337 E E 71 ;GET THE CHAR ;HAKE UPPER CASE ;PDT IT BACK ;GET END ADDR ; RETURN IF FIRST IETTEF IN SUFEIX IS AN A E OR 0, RETURN. FEN05 FEN06 MCV MCV INX MOV CMI JNZ INX HCV LXI CALI JH E,D l,E H a,h • 2 FEN06 H A,n H,AEIC CNECF FEEXI1 HOVE SUFFIX ADDR TO HL HCVE REST GET ADDR 1ST CHAR IN SUFF GET THE CHAR IF THIS IS THE BREAK MARK, SKIP NO, USE IT GET ADDR NEXT CHAR PAST BREAK GET THIS CHAR GET ADDR OF AEIO IS IT ONE CF THEH? IF NCT, RETURN TRY LCNG I AGAIN, IF FAILURE, RETURN CALI JB ICNGE EEEXIT ;CALL LONG E ERCCESSING ;IF FAILURE, EXIT IF FIRST CHAR EAST INEEX AEER IS A C CR G, A VCWEL IN THE WCRD STEM, RETURN. AND THERE IS IF NEXT FEN07 FENC8 LXI H,CG INX E LCAX E ECX E CALL CNEOF JB EENC7 CALL VCWEI JP EEEXIT T T8C CHARACTERS INX E CALL TH JM FEN08 MVI A,»T STAX E INX E MVI A, »H STAX E DCX E DCX E GET ADDR OF CG GET ADDR 1 CHAR PAST INDEX GET THE CHAR PUT INDEX BACK IS IT ONE CF THEH? NO, SKIP TC NEXT TEST ANI VOWEIS? IF YES, RETURN ARE TH, HAKE THEH VOICED TH. GET AEDR NEXT CHAR ARE THEY TH? NC, SKIP TC NEXT TEST GET A CAP T INSERT IN STRING GET ADDR NEXT CHAR GET A CAP h INSERT IN STRING PUT E BACK PUT EE BACK TC INDEX VALUE IF NEXT TKO CHARS ARE EI, RETURN 72 EEN02: LCAX CMI JNZ INX LDAX CMI JZ DCX C 1*45 FEN09 D D 154 EEEXIT D GET A CHAR IS IT AN E? NO, TRY NEXT TEST GET ADDR OF NEXT CHAR GET THE CHAR IS IT AN L? IF YES, RETURN PUT E BACK IF INDEX=ADDR CF START CF WORD, OR FIRST CHAB BEFORE INDEX IS KCT AN A, E CB 0, HARK THE CHAR AT INDEX A LONG VOWEL. GET RIGHT CF INDEX CMP WITH BIGHT OF START SAVE HL SAVE INTERMEDIATE RESULT GET LEFT OF INDEX IS INDEX=START? COMBINE WITH REST RESTORE HL HARK AS LONG GET ADDR PRECEEDING CHAR GIT THE CHAR PUT E BACK GET ADDR OF AEO IS IT ONE CF THEM? IF YES, PETUBN GET THE CHAR MAKE UPPER CASE PUT IT BACK FEN09: MOV A,E SUB C PUSH H MOV H,A MCV A,D SBB E ORA H POP H JZ FEUP DCX E LEAX E INX E LXI H,AEC CALI CNECF JP EEEXIT FEUP: LDAX E ANT 337 • STAX E EEEXIT: PCP E • RET 9 .SBTTl KIDDIE ;RESTCRE ; RETURN CE U PREPROCESSOR THIS ROUTINE TESTS FOR A LCNG RIDDLE U AND CTHER LONG VOWFLS APPEARING IN THE MIDDLE OF THE WORD. CN ENTRY, BC CONTAINS THE AEERESS CF THE START OF THE WORD AND DE CONTAINS THE AEERESS CF THE END OF THE WORD. SAVE AREA TO THE TESTED VOWEL MUADDR: .BLKB HUPTR: .EIKB 2 2 ; INDEX S ;POINTER ♦ MIDU: PUSF, PUSH ; DO FOR I=STAR1 E E TO ENE-2. ;SAVE BC ;SAVE DE DCX ;GET END ADDR 73 KULP1 mcv MCV DCX SHLD IHLC INX MOV SUB MOV SEB JNC SHLD B,B L,C H PUADEF KUADDF H A,L E a,h c KUL1EX MUADDB ;MOVE START TC HL ;MCVE BEST ;GET STARTING INDEX VALUE ;SAVE INDEX GET INDEX VALUE ADD ONE GET BIGHT CF INDEX CMP WITH RIGHT OF END GET LEFT CF INDEX IS INDEX>=FND? YES, EXIT FBCM LOCF ;SAVE NEW IRDEX IF THE CHARACTER AT THE INDEX IS NCT A U, SKIE TC NEXT LETTER, MOV CMI JNZ MOV MCV A # M 165 F.ULP1 E,H C,L ;GET THE IETTEB 5 IS IT A U? ;NC, SKIP ;MCVE INDEX TC BC ;MCVE BEST IF THE U IS NCT PFECEEEEE EI AN AEIOU AND FOLLOWED EY NOT AN AEIOUWXY OB ECEFGKET THEN B, WHICH IS FOLLOWED BY AN AEIOUY, THEN TEE U IS ICNG. DCX LDAX LXI CAII JZ INX INX LDAX LXT CALt JZ INX LDAX CMI JNZ DCX LDAX INX LXI CALL E E E,AEICU CNECF fULPI E E E h, AEIWXY CNEOF M0LP1 E E 162 MUSKIP E E E H, BCEFGK CNECF ;GET ADDR PBECEEDING CHAR ;GET THE CHAR ;GET ADDS AEICU ; IS IT ONE CF THEM? ;IF YES, FAII PUT INDEX EACK GET ADDR FOLLOWING CHAR GET TEE CHAR GET ADDR AEIOUWXY IS IT CNEOF THEM? IF YES, FAIL ;GET ADDR NEXT CHAR ;GET THE CHAB ;IS IT AN B? ;IF NOT, SKIP TO NEXT TEST ;GET ADDB PBEVIOUS CHAR ;GET THE CHAR ;PUT INDEX EACK ;GET ADDR BCDFGKPT :IS IT ONE CF THEM? 7a MUSKIP Jfl TNX LDAX OHI LXI CALl JH MUSKIP E E 40 E,AEICUY CNECF BULP1 IF NOT, SKIP ADJUSTMENT TREAT COMBINATION AS ONE LETTEB. GET NEXT CBAB BAKE LOHER CASE GET ADDB Of AEIOUY IS IT ONE CF THEH? IF NOT, FAIL MARK THE AS ICNG EY OPPEB CASE. LHLD MVI JHP FUACCF m,«u PULP1 ;GET ACDB OF U ;INSEBT A CAP U ;GC TBY FCB BCBE NCW DC FCF I=SIART 10 END-3. MUL1EX: PCP POP PUSH POSH DCX DCX DCX SHLD C H H C D D H FUADEF GET END VALUE BACK GET START ADDB BACK KEEP CCPY CN STACK KEEP COPY ON STACK SET END TO END-2 FINISH END=END-2 SET STARTING INDEX VALUE SAVE INDEX MULP2 LHLD INX MOV SUB MOV SEB JNC PUADLB H A,L E A,H E PUL2EX GET INDEX VALUE ADD CNE GET RIGHT CF INDEX CMP HITH RIGHT OF END GET LEFT CF INDEX IS INDEX>=END? IF YES, EXIT FBCH LOCP IF SHLD KUADDR SHLD MOPTE MCV E,H MOV C,L THE CHAR AT THE INDEX IS NOT LDAX E LXI H,AEC CALL CNEOF JK PDLP2 ;SAVE INDEX VALUE ;SAVE AGAIN ;MOVE INDEX TO BC ;HCVE REST AN A £ OR C, SKIP IT ;GET THE CHAR ;GET ADDR AEO ;IS IT ONE CF THEM? ;NC, SKIP IF THE AEC IS FCLLCHEC EY AIIOUHXY? THEN FAIL INX LDAX LXI CALl JZ E E H,AEIXYC CNEOF BULP2 ;GET ADDR NEXT CHAR ;GET THE CHAR ;AEDR CF AEICUMXY? ;IS IT ONE OF THEM? ;IF SC, FAIL 75 ;; IF THE NEXI 1 TfcC LETTERS IRE TH, TREAT THEM AS ONE LETTER. MCV H,B ;MCVE INDEX ADDB TO HL MCV L,C ;MOVE REST CALL TH ; IS IT TH? JK PUSKE2 ; ;IF NCT, SKIP ADJUSTMENT LHI.E MUADDF ; ;GET INDEX INX fi ; ; ADD 1 SHLC MUADER ;PUT IT BACF INX E ;GET INDEX PAST TH ; IF BCDFGKFT FCLLLCHED EYR THEN I IS NEXT, ADD 1 TO INDEX KCSKP2: INX E ;GET ADDR NEXT CHAR LDAX E ;GET THE CHAR CHI 162 ; IS IT AN R? JNZ F0SKP3 ; IF NOT, SKIP TC NEXT TEST INX E ;GFT ALDR NEXT CHAR LCAX E ;GET TEE CEAR CMI 151 ;IS IT AN I? JNZ BUSKE3 ; ;IF NOT, SKIP TC NEXT TEST DCX E ;GET ADDR OE THE R DCX B ; ;GET ADDR PREVIOUS CHAR LCAX E ;GET THE CHAR LXI H,BCEFGK ;GET ADDR OF BCDFGKPT CALI CNECF ;IS IT ONE CF THEM? JK RUSKF3 ; IF NOT, SKIP ADJUSTMENT LHLD MUACDE ; GET INDEX VALUE INX H ;ADD ONE SHLD MUADDF ; ;SAVE INDEX ; IF AN I OFR F IS NEXT FCLLOKEC E 1 I AN A CR U, THE ORIGINAL ; A E CFs C IS LCKG PLSKP3: LHLD KUADDR ;GET INDEX INX H ;ADD CNE INX B ; ADD CNE MORE MOV E,H ;MCVE TC BC mcv C,L ;MCVE REST LDAX E ;GET THE CHAR LXI H,IE ;GET ADDR IE CALI CNEOF ;IS IT CNE CF THEM? JP F.USKF4 ;IF NCT, SKIP TO NEXT TEST INX E ;GET ADDR NEXT CHAR LDAX B ;GET THE CHAR LXI H,ACU ;GET ADDR ACU CCX E ;PUT INDEX BACK OBI 4C ;MAKE LOWER CASE 76 CALI CNECF ;IS IT ONE OP THEM? JZ KDMAFK ;YES, MARK IT IF NEXT IS AN E THEN I THEN N, HABK ORIGINAL LETTEB LONG. KISKP4: LEAX E ;GIT THE CHAR CMI 1*45 ;IS IT AN E? JNZ MULP2 ;IE NOT, FAIL INX E ;GET ACDR NEXT CHAR LDAX B ;GET THE CHAR CHI 151 ;IS IT AN I? JNZ KULP2 ;IF NOT, FAIL INX E ;GET ADDR NEXT CHAR LDAX E ;GET THE CHAR CMI 156 ;IS IT AN N? JNZ B0LP2 ;IF NOT, FAIL MARK THE IETTEF AS ICNG. NOMARK: LHLE MUPTE ;GET POINTER TO LETTER MOV A,M ;GET THE LETTER ANI 337 ;HABK OFCASE MCV M,A ;PUT IT BACK JMF MULP2 ;GO TBY FCR MCRE GET START AND END CF WORD ADDRESSES BACK. THEN CHECK FOR LCNG I AND Y. PUI2EX: POP C ;GET END ADCR BACK POP E ;GET START ADDR BACK PUSH E ;KEEP START ADDR COPIED ON STACK IF FIRST IETTEB IS Y, IGNORE IT. LDAX E ;GET FIRST CHAR CMT 171 ;IS IT A Y? JNZ PUSKP5 ;YES, SKIP ADJUSTMENT BULPJ: INX E ;SKIP PAST THE CHAB TO NEXT DO FOR I=START TO END WHILE CHAB AT I IS NOT CNE OF AEIOOY. MUSKP5: MOV A,C ;GET BIGHT CF INDEX SUB E ;CMP WITH BIGHT OFF END MCV A,B ;GET LEFT OF INDEX SBB D ;IS INDEX>=END? JNC KUL3EX ;IF SC, EXIT LDAX E ;GET THE CHAB OBI = END? ;EXIT FROM 5O0TINE INCREMENT CHARACTEF CCCNT LXI INF H,MES* M ;GET ADDR CF CCUNT ;ADD CNE IF THE CHARACTER AT TBI INDEX IS NOT AN E, TRY NEXT CHARACTER, LDAX CMI JNZ E 145 KELP ;GET THE CHARACTER ;IS IT AN E? ;NC, SKIP IT PUSH ;SAVE INDEX VALUE IF COUNT IS LESS THAN 3, SKIP THIS TEST. LDA CHI JC MESH 3 MENC ;GET THE CCUNT ;IS IT < 3? ;YES, SKIP THIS TEST IFABCDFGMNPRSCRTIS FOLLOWED BYECFGKFORT WHICH IS FCILCWED EY IN L WHICH IS FOILCWEC BY AN E AN! THERE IS AT LEAST CNE SYLLABLE AFTER THE E, IT IS A A SILENT F AND SHODID F.E SO MARKED. INX E LXI H # AEICUC CALL SYLTEST JH KENC DCX E DCX B LDAX E CMI 154 JSZ HENO DCX E LDAX B LXI H,BDFGKF CALL CNECF JM KENO ;GET ADDR CF CHAR AFTER E ;AEDR OF AEIOUY? ;IS IT A SYILABLE? ;NO, SKIP TC NEXT TEST ;PDT INDEX EACK ;GET ADDR OF CHAR ;GET THE CHAR ;IS IT AN I? ;NC, SKIP TC NEXT LEFT OF E TEST ;GET ADDR NEXT CHAR LEFT ;GET THE CHAR ;ACDR OF BDFGKPT ;IS IT ONEOF THEM? ;NC, SKIP TC NEXT TEST 79 DCX E LDAX E LXI H,BCDFGB CALL CNECF JP MEMAFK ;GET ADDR NEXT CHAR LEFT ;GET THE CHAR ;AEDR OF BCDFGHMFRST ;IS IT ONEOF THEM? ;YES, HARK THE SILENT E IF NOT AS AEIC IS FOLLOWED BY AN AIOUY WHICH IS FOLLOWED EX NOT AN AEHIOUWXY WHICH IS FOLLOWED EY AN E AND THERE IS AT LEAST CNF SYLLABLE TO IKE BIGHT OF THE E, TBE E IS SILENT AND SHOULD BE SO MABKEE. IF AN E IS ECUND WHICH FAILS E PROCESSING IS TEEMINATEL. EOTH OF THESE TESTS, HIDDLE MENO: POP B POSH E LXI H,AEINOE INX B CALl SYLTEST JM MEN02 DCX E ECX E LDAX E LXI E,AEHICU CALL CNECF JP MENC2 DCX E LDAX B LXI H,AICUYU CALL CNEOF JM MEN02 DCX E LDAX E LXI H,AEIU CALL CNEOF JP MEN02 GET THE INDEX BACK BUT SAVE A COPY AEDR OF AEINOROY? ADD ONE IS THERE A SYLLABLE? NC, BETOBN ;GET ADDR OF E BACK ;GET ADDR NEXT CHAR LEFT ;GET THE CHAR ;AEDR OF AEHIOUWXY ;IS IT ONECF THEM? ;YES, RETURN ;GET ADDR NEXT CHAR LEFT ;GET THE CHAR ;GET ADDR OF AIOUYU ;IS IT ONEOF THEM? ;NC, BETUBN ;GET ADDR OF NEXT CHAR LEFT ;GET THE CHAR ;GET ADDR OF AEIU ;IS IT ONE OF THEM? ;YES, RETURN IF THIS LETTEB (PCINTEE TO EY INDEX) IS NOT AN 0, MARK THE NEXT IETTEB AS A LCNG VCWEL. LDAX B CMI 156 JZ P.EMAFK INX E LDAX E ANI 337 STAX E GET THE CHAR IS II AN 0? NC, SKIP THE MARKING GET ADDR OF NEXT CHAR GET THE CHAR MAKE UPCASE PUT IT BACK 80 HABK SILEBT E«S BX CAILIBG INSERT BO0TINE. REHABK HEN02: HEEXIT FCF INX CALL LHLD INX SHLD JRP POP POP BET E B INSERT HEEND B EEEND RELP E E GET INDEX VALOE BACK GET ADOB FOB HABK INSERT THE HABK GET AEND VALOE FOB LOOP EXTENT BY CNE POT IT BACK GO LOOK FCE ROBE E'S BEHOVE OLD ISDEX VALUE BESTCBE STABT ADDB RETOBN .SBTTL RIDDLE S EBEPBOCESSOB THIS BOOTIHE EETEBHINFS IF A HIDDLE S SHCOLD BE VOICED OB UNVOICED. CM ENTBT, EC CONTAINS TRE ADDB OF THE BEGINNING OF THE HOBD 1NE DE CONTAINS TEE ADEBESS OF THE END. HIDS: PUSH E ;SAVE STABTING ADDB LOOP THBOOGH THE CHABACTEBS OF THE IOBD. RSLP: INX B HCV A,C SOB E nov A,B SBB C JHC RSEXIT ;GET ADDB NEXT CHAB ;GET BIGHT CF INDEX ;CHP HITH BIGHT OF END ;GET LEFT OF INDEX ;IS IBDEX>=END? ;TES f DONE IF TBE CHAB IS NOT AN S. SKIP TO NEXT CHAB, LDAX CHI JNZ B 163 RSLP ;GET TBE CHAB ;IS IT AN S? ;IF NCT f SKIP IF AN S IS PBECEEDED EI AN AEIOOI AND FOLLCHED BT AN AEIHOUT IT IS A VOICED S ANt SHOULD BE SO RABKED. GET ADDB CHAB BEFGBE S GET THE CHAB POT INDEX EACK HAKE LOHEB CASE GET ADDB AEICOT IS IT ONE OF THEH? HC, SKIP IT GET AODB CHAB AFTE6 S GET TBE CHAB DCX E LDAX B INX E OBI 40 LXI H, AEICUT CALL CNEOF JH RSLP INX E LCAX B 81 ORI ao DCX B LXI E,AEIBOO CALL CNEOF Jfl BSLP • fIVI A,'S STAX B JI1P BSLP BSEXIT: FCP E RET « .SBTTL SEARCH F ;BAKE LOWER CASE ;P0T INDEX BACK ;GFT ADtfR OF AEIHOUY ;IS IT ONE CF THEM? ;NO, SKIP IT ;GET A CAP S ;INSEBT IN WOBD ;LCOK FOB BCBE ;BESTCBE BC ; RETURN FOB SUFFIX THIS BOUTINE CHECKS THE END OF THE INPOT STBING FOE ANY OF TEE SDEFIXES IN THE SUFFIX STBING. ON ENTBY, BC CONTAINS THE AEDRESS CF THE START CF THE INPOT STRING, DE CCNTAIbS THE AEERESS OF THE END OF THE INPOT STRING, AND HI CONTAINS THE STRING CF SUFFIXES TO BE CHECKED. IF A SOFFIX TS FOUND, HI BETUBNS WITH THE ADDRESS WITHIN THE INPUT WORD WHERE THE SUFFIX STARTS AND THE ACC RETURNS WITH 0. IF NC SOFFIX IS FOOND, THE ACC RETURNS WITH -1. SUFFIX: POSE D ;SAVE END OF STBING ADDR FIRST, SEE IF SUFFIX STRING IS EXHAUSTED. IF SO, RETURN. MOV A,M ;GET NEXT SUFFIX CHAR ORA I ;IS IT THE BARK? JZ SUNC ;YES, RETURN NO SUFFIX SEE IF SUFFIX CHARACTERS BATCH THOSE OF END CF WORD. SULP1: LCAX D ;GET A CHAB FBCB WCRD CRP M ;DCES IT BATCH SUFFIX? JNZ SCENE ;NC, END OF BATCHES INX H ;GET ADDR NEXT SUFFIX CHAR DCX E ;GET ADDR NEXT WORD CHAR JMP SULP1 ;KEEP CHECKING SEE IF SUFFIX IS A CCWELETE ONE. SUEND: MOV A,M ; G ET THE SUFFIX CHAR ORA A ;IS IT THE BARK? JNZ SUSKIF ;NC, NOT A BATCH, SKIP IT CCHPLETE BATCH. IF REMAINING WORD STEfl CONTAINS NO VOWELS SUFFIX IS NOT A VAIID CNE. AEORT SEARCH AND RETURN WITH NO SUFFIXES. 82 INX D ;INCREASE LENGTH OP WORD CALt VOWEL ;ABT VOHEIS? JH SUNO ;NC, BETURN NO RETURN YES ANC ADEB OF SUFPIX. DCX I ;P0T END ADER BACK XCHG ;P0T SUFFIX ADDB IN HL PCP I ;RESTOBE DE XRA A ;SET SOCCESS FLAG RET ;RETUBN IF SUFFIX DID NOT BATCH, RESTORE END OF WORD ADDR, SKIP PEST OF CURRENT SUFFIX, AND TBY SEARCB AGAIN. SUSKIP: POP C ;RESTCBE END ADDR XRA A ;GET A HABK CHAR SULP2: CUP B ;IS TBIS CHAR A HABK? JZ SUNEXT ;YES, CHECK NEXT SUFFIX INX H ;GET ADDR NEXT CHAR JBP SULP2 ;CHECK NEXT CHAR Y SEARCB. ;SKIP MARK ;TRY AGAIN FLAG INDICATING SO. ;SET NO FLAG ;RESTORE DE ;PETURN ; SKIP PAST THE BARK AND RET SUNEXT: INX H J HP SUFFIX ; IF NO SUFFIX FCUND, RETURN SUNG: ORI -1 PCP L RET SUFFO: .ASCIZ /la/ .ASCIZ /€l/ . ASCIZ /o/ .ASCIZ /€r/ . ASCIZ /su/ .ASCIZ /y/ .BYTE SUFF1: .ASCIZ /clta/ .ASCIZ /de/ .ASCIZ /re/ . ASCIZ /gni/ .ASCIZ /tse/ .ASCIZ /DG/ .ASCIZ /ylba/ . ASCIZ /yi/ .ASCIZ /to/ .ASCIZ /yre/ .ASCIZ /ye/ . ASCIZ /ssel/ 83 . asciz /ssen/ .ASCIZ /luf/ .ASCIZ /tnea/ .BYTE C SUFF2: -ASCIZ /ci/ .ASCIZ /laci/ .BYTE C SUFF3: .ASCIZ /e/ .BYTE « .SBITL INSERT THE EREAK HARK THIS ROUTINE INSERTS THE EREAK BARK (?) IN A STRING OF CHARACTERS. CN ENTBY, EC CONTAINS THE ADDRESS 1HESE THE MARK SHOULD BE PLACID AND DE CONTAINS THE ADDRESS OF THE END OF THE STRING. TEE AEERESS OF THE NEB END OF THE STRING IS RETURNED IN DE. INSERT: PUSH E ;SAVE STARTING ADDR IF THE BREAK ECINT CONTAINS AN E, POT BREAK MARK AFTER IT. LCA)t E ;GET FIRST CHAR CMI 145 ;IS IT AN E? JKZ INNOTE ;NC, NOT AN E SEE IF A EREAK KARK ALREADY EXISTS AFTER THE E. IF SO, RETURN. ;GET ADDR OF NEXT CHAR ;GET THE CHAR ;IS IT THE EREAK MARK? ;YES, RETURN STARTING FFCM RIGHT TC IEFT, MOVE EACH CHARACTER ONE POSITION TO THE RIGHT. INNOTE: INX E ;INCREASE IENGTH MOV H,D ;CCPY END ADDR TC WORK REG MCV L,E ;CCPY REST IF INDEX (HL) < START CF STRING (BC) , TRANSFER DONE. INLP: MOV A,L ;GET RIGHT PART OF INDEX ;CHP WITH IN ADDR ;GET REST Of INDEX ;IS INDEX=END ADDS? IF SO, NO SYLLABLE GET A CHARACTER IS IT THE EREAK HARK? YES, NO SYILABLE IS IT AN E? NC, NOT AN E GET ADDR NEXT CHAR LOAD NEXT CHAR IS IT FOLLOHED BY A BREAK? YES, NOT A SYLLABLE PUT INDEX ECINTER BACK GET ADDB OF VGHELS HAKE CHAR LOWER CASE IS IT A VCHEL? NO, KEEP CHECKING YES, RETURN HITH YES FLAG SET NO FLAG RESTORE EE RESTORE BC RETURN SBTTL TH, SEE IF A STRING = »TH» TH: THIS ROUTINE CHECKS THE CHARACTERS POINTED TC BY HL TC DETERMINE IF TEEY ECUAL •TH*. IF SC, IS BETUBNED IN THE ACC. IF NCT, -1 IS RETURNEE,. GET FIRST CHAR IS IT A T? NO, RETURN NC FLAG GET ADDR SECCND CHAR GET SECOND CHAR PUT HI BACK IS IT H? IF YES, BETUBN HITH THNG: MOV A,H CMI 154 JNZ THNO INX H MOV A,M DCX H SUB 150 RZ ORI -1 RET SET NO FIAG RETURN 87 •SBTTL LCNG E TEST THIS ROUTINE PERFCEPS A TEST TO SEE IS AN E IS LONG. ON ENTRY DE CONTAINS THE ADDRESS OF THE LETTER TO BE CHECKED. IF NO LCNG E IS FOOND, -1 IS RETURNED IN THE ACC. IF A LCNG E IS FCUND, A IS RETURNED AND THE ADDRESS OF THE E IS RETURNED IN DE. LCNGE: PUSH D ;SA¥E DE IF IAST TWO LETTERS ARE TH, SKIP TEEM. ;HCVE ADDR TO HL ;MGVE REST ;GET ADDR OF LAST TWO LRS ;ARE THEY TH? ;NO, LEAVE END ADDR ALONE ;SKIP TH IF DE POINTS TCA AEIOUWXY THEN LONG E FAILS MCV H,D NOV L,E DCX H CALL TH JN LENO CCX E LENO: LDAX LXI ORI CALL JP H,AEIfcXY UO CNECF IEFAIL ;GET THE CHAR ;GET ADDR OF AEIOUWXY ;MAKE LOWER CASE ;IS IT ONECF THEM? ;If YES, FAIL IF PRECEEDING CHAR IS AN A I I U Y, THEN LONG E SUCCEEDS. LEFAIL: DCX LCAX LXI CALL JM POP RET PCP ORI RET E E H,AEICUY CNEOF LEFAIL H C -1 ;GET ADDR NEXT CHAR LEFT ;GET THE CHAR ;GET ADDR OF AEIOUY ;IS IT ONE OF RHEM? ;NC, FAILURE ;REMOVE CLD DE FROM STACK ;RETURN SUCCESSFULLY -.RESTORE CLD DE VALUE ;SET FAILURE CODE ;RETURN .SBTTL MCVE # SIRING IN MEMCRY THE FCLLOWIKG RCVES A STRING OF CHARACTERS FROM A LOCATION WHOSE ADERESS IS IN THE HL REGISTERS TO THE LOCATION STARTING AT THE ADDRESS IN THE DE REGISTERS. THE MOVE CONTINUES UNTIL A BYTE CF ZERC HAS EEEN MOVED. CN ENTRY, HL CONTAINS THE ADDRESS CF THE SOURCE STFING, DE CONTAINS TFE AEDFESS OF THE DESTINATION. CN EXIT, HL PCIKTS TO THE FIRST CHARACTER PAST THE BYTE OF ZERO, 88 DE FOINTS TO THE BYTE OF ZERO IN THE DESTINATION STRING. hovsav f!CVE: HCVELP novoin ENDALT . BYTE STA HOV INX STAX OBA JZ I NX J HP LDA RET HCVSAV A,H H D 1 HCVOOT D HCVELP PCVSAV . = JHP SEEAK NOP .«CBD EKEALL,EUF .END SAVE SPACE FCR ACC SAVE THE ACC GET A SOURCE BYTE INCREMENT POINTER POT IN DESTINATION STRING IS IT THE TERHINATOR? YES, DONE INC DESTINATION POINTER KEEP ROVING RESTORE ACC BETUBN 89 VITA James A. Kutsch Jr. vas bcrn December 13, 1950 in Wheeling, S. Va. fie graduated from West Virginia University with a A.B. in Psychology in 1972, He received his M.S. in Computer Science from West Virginia University in 1S73, and received a Ph.D. in Computer Science from the University of Illinois in 1976. While at West Virginia University, Dr. Kutsch was a systems analyst with the Electrical Engineering Department en a project to autoiratically monitor the environment of an operating coal nine. He also taught in the West Virginia University Computer Science and Statistics Department. His publications include f TASS¥: One Approach to Individualized Instruction' which appeared in Proceedings of AFIPS Fall Joint Coiputer Conference 1972, and, 'SIBPDP11 and its Use in a Beal-Time Monitoring System 1 which appeared in Proceedings of DECUS 197H. Dr. Kutsch is a member of the Association for Computing Machinery, a fellow of the University of Illinois and member of Psy Chi and Phi Beta Kappa. BLIOGRAPHIC DATA 1EET 1. Report No. UIUCDCS-R-76-815 3. Recipient's Accession No. Title and Subtitle A Talking Computer Terminal 5. Report Date July 13, 1976 6. Author(s) James Albert Kutsch, Jr 8. Performing Organization Rept. No - UIUCDCS-R-76-815 Performing Organization Name and Address Department of Computer Science University of Illinois at Urbana -Champaign Urbana, Illinois 618OI 10. Project/Task/Work Unit No. 11. Contract/Grant No. Sponsoring Organization Name and Address Department of Computer Science University of Illinois at Urbana-Champaign Urbana, Illinois 61801 13. Type of Report & Period Covered Ph.D. Dissertation 14. Supplementary Notes . Abstracts Computer output is available to the blind only in a limited way. Braille istings, although easily available, are not the best answer. Other techniques, such is image conversion or speech synthesis are available only in experimental form. In ihis study, available means of providing computer output to the blind were reviewed ind the criteria were set forth again which the effectiveness of a means of presenta- tion could be measured. Available techniques were tested with these criterion and it ras determined that a better method should be designed. As the result of this study, l talking computer terminal was constructed. The terminal is a computer independent, isychronous, ASCII dial-up device and can be connected to any computer allowing this ype of communications. The hardware for the terminal consists of a speech synthesis Levice, a micro-processor, a keyboard, and an accoustic coupler. Software to provide he control of the speech synthesizer resides in the terminal's micro -processor ;ystem, permitting computer independence. The talking terminal was used extensively rith the University of Illinois' PDP 10 computer and proved to be a very satisfactory leans of comminications between a computer system and a blind computer scientist. it is hoped that the talking terminal will enable blind programmers to be more •■elf-sufficient and productive, and will find many applications among sighted users. 7- Key Words and Document Analysis. Talking Computer Terminal Speech Synthesizer Image Converters b. Identifiers/Open-Ended Terms Reading Machines e. COSATI Field/Group ■•Availability Statement Release Unlimited >RM NTIS-35 (10-70) 19. Security Class (This Report) UNCLASSIFIED 20. Security Class (This Page UNCLASSIFIED 21. No. of Pages 91 22. Price USCOMM-DC 40329-P71 *tf* N *V^ UNIVERSITY OF ILUNOI9-UHBAN* 3 0112 039572828 VlttflLJ ■ m ■ [H ■ ■ B Sift FtSBI ■H