d: TTTTT EEEEE X X TTTTT TTTTT A L K Kn: T E X X T T A A L K K4x: T EEEE X T T AAAAA L K Kv: T E X X T T A A L K K: T EEEEE X X T T A A LLLLL K K:: BASIC program by Brad Thompson": Assembly language interface by Kevin C. Gevatosky*:O: Last update - March 15, 1990W:tPROG.NAME$"STALK":  :: : AZSPEECHV2.INIT: SPEECHV2.INIT:SPEAKEE$".!?:": I ~: I(".") I("!") I("?") I(":") ,"EE$EE$(I)-,:EE$EE$( );6 DP@FILE$"TEXT.TXT"tTTONE:VOLUME:PITCH:SPEEDY SET.SPEECH: SET.SPEECH(TONE,VOLUME,PITCH,SPEED)^IE$()()()( )h I ~:IE$IE$(I): rDES$()" "()"|CT$"\"(N, )"\"CCHOICE$"~123456789?"()\IN$"TEXTTALK": < g:NT$"TEXT TALK": :T$"Copyright Covox Inc., 1987-90": :: N);" 1 - Listen to the file - ";(");FILE$;(") N);" 2 - Set filename."7 N);" 3 - Set speech parameters"v N);" 4 - Enter phonetic pronunciation into dictionary" N);" 5 - Remove a word from the dictionary" N);" 6 - Clear out entire dictionary" N);" 7 - List contents of dictionary"1 N);" 8 - Save dictionary contents"W N);" 9 - Load a dictionary":x N);" ? - Help screen.": N);"ESC - End program.":: N);"Your choice? ";& :V(CHOICE$,K$): V &0 V X,,,,,x,, , ,,D ):WHO.RANG: =D:: : SN Speak the file.X:T$"Speaking the file - "(")FILE$(")b :l FILE$ AS #vA$$(,#): () V(()EE$,A$): V vST$ST$A$: A$;! (ST$) A$" " 1 V vPA$$(,#): () rV(()EE$,A$): V vST$ST$A$: A$; (ST$) A$" "  A$" " A$( ) SPEAK: SPEAK (ST$):ST$""K$: K$"" v* K$() : "PAUSED...": ?:"Aborting..."h #: ST$"" SPEAK(ST$):ST$""::"END OF TEXT.":: :K$: K$""  v Set the filename for listening.: * "Enter the name of an ascii text file that you would like to hear."P"(Enter DIR to get a directory)"w*T$"Filename? ":W:TL(T$):SW4MAXLENNWTL:T$T$"\"(MAXLEN, )"\"> SW,W: T$;(MAXLEN, );H SW,WTL: T:T$IN$R  : E f,f,\,p\:: : &fFILE$IN$,pHz Set speech parametersN ,:"Enter TONE (0-9) currently set at "TONE" "; :V("~0123456789"( ),K$): V  K$( ) TONE(K$)  ,:"Enter VOLUME (0-9) currently set at "VOLUME" ";H :V("~0123456789"( ),K$): V i K$( ) VOLUME(K$)  ,:"Enter PITCH (0-9) currently set at "PITCH" "; :V("~0123456789"( ),K$): V  K$( ) PITCH(K$)2 ,:"Enter SPEED (0-9) currently set at "SPEED" ";e :V("~0123456789"( ),K$): V  K$( ) SPEED(K$)SET.SPEECH: SET.SPEECH(TONE,VOLUME,PITCH,SPEED) Enter phonetic pronunciation into dictionary: 5 "Type an english word to enter into dictionary:"T $T$": ":W:TL(T$):SW .MAXLEN :T$T$"\"(MAXLEN, )"\" 8 SW,W: T$;(MAXLEN, ); B SW,WTL: T LENGLISH$IN$: ENGLISH$"" ::"Aborted": !V::"Now enter phonetic pronunciation:"6!`T$": ":W:TL(T$):SW a!jMAXLEN :T$T$"\"(MAXLEN, )"\"!t SW,W: T$;(MAXLEN, );!~ SW,WTL: T!PHONETIC$IN$: PHONETIC$"" ::"Aborted": C" PHONETIC$ENGLISH$ ::"You can't have an English spelling the same as a Phonetic spelling. Aborted.": x"DICT.INSERT: DICT.INSERT(ENGLISH$,PHONETIC$)"::"Word now in dictionary."":: :" Delete a word from the dictionary.": #"Type the english word to delete:"%#T$": ":W:TL(T$):SWP#MAXLEN :T$T$"\"(MAXLEN, )"\"p# SW,W: T$;(MAXLEN, );# SW,WTL: T# IN$"" ::"Aborted": d# T$IN$: :IN$T$(( , ), (T$)) $DICT.DUMP:ENGLISH$( , ):PHONETIC$( , )1$ DICT.DUMP(ENGLISH$,PHONETIC$)J$( IN$ENGLISH$ Fj$2 ENGLISH$PHONETIC$ $<::"Can't find ";IN$;", aborted.": Z$FDICT.DELETE: DICT.DELETE(T$)$P::"Word has been deleted." %ZDICT.POINT:RENEW: DICT.POINT(RENEW)%d:: :5%n Zap the dictinary?%x: v%"Delete entire dictionary, are you sure? ";: %V("~Yy",K$): V ::"Aborted": %ZAPP.ALL:DICT.POINT: DICT.POINT(ZAPP.ALL)&::"All entries have been deleted."& :2& List contents of dictionary.<&: d&"Current dictionary contents are:"&:"English word";();"Phonetic word":&DICT.DUMP:ENGLISH$( , ):PHONETIC$( , )& DICT.DUMP(ENGLISH$,PHONETIC$) ' ENGLISH$PHONETIC$ (' ENGLISH$;();PHONETIC$2' `'DICT.POINT:RENEW: DICT.POINT(RENEW)q' :CL:'J New input routine.'TCY:CX(X):IN$"":IL: ,,'^K$:IV(IE$,K$): IV ^'h IV |'r IV ,,(| ILMAXLEN ^4(IN$IN$K$:ILIL: K$;: ^E( IL ^V( IL (ILIL:IN$(IN$,IL): DES$;: ^( CY,CX: (MAXLEN, );: CY,CX: T( ,,:(L(T$): ,((PL)): T$:( !);"Press a key...";) :) One key input routine() ,,J)K$: K$""  : ,,:g) Convert to upper case.)UL(T$):UT$"": UI UL:UN$(T$,UI,))UV("~abcdefghijklmnopqrstuvwxyz",UN$): UV &)UT$UT$UN$: 0*&UT$UT$((UN$) )*0:T$UT$:**: Error routines.`*D  SPEAK: SPEAK (ST$):ST$A$: A$;: h*N:*X 9 G H "I/O error, please check your disk drive.": *b @ 4 "Bad file name or directory, please reenter:": 5+l F "The diskette is write protected.": [+v 5 "File not found.": + K L "Path not found.": + :"Unrecoverable error, aborting."+ :+ WHO.RANG ,,,+ D+ ( , " , 0 , Help screen#,?,T$"HELP SCREEN": m,:" First some things about the menu:",:"# 1 Allows you to listen to a text file as Smooth Talker speaks it. The file"-" that you will listen to is in quotes. You can abort Smoothtalker by"b- " pressing any key. You will return to the main menu at the next"-" puntuation mark."- :"# 2 Allows you to set which file you will listen to. On startup, the file is"-*" ";(");"TEXT.TXT";(")P.4:"# 3 Self explanatory, follow the prompts. To abort any entry, hit .".>:" A dictionary allows you to enter an english spelling of a word along with".H" it's phonetic pronunciation. See the manual on phonetic spellings."s are ignored."[1:"As many abbreviations as possible are spoken as regular english, for example:1:" Dr. - Doctor Mr. - Mister"1" Miss - Miss Ms. - Miz"'2" $.59 - 59 cents 27% - 27 percent"{2" 1*2 - 1 times 2 $87.65 - 87 dollars and 65 cents"2" 1987 - Nineteen eighty seven + - Plus"3:" This program handles periods as the end of the sentence, so if you want"e3" Dr. Jones to sound right, enter it as Dr.Jones with no space between the"3" abbreviation and the other words in the sentence."3:" There are many other abbreviations. See the manual."3 :B4 "If a sentence has embedded upper case letters in it, they are spelled out:"~4 :" He works at IBM. <- I-B-M is spelled out."4$ " SHE WORKS AT COVOX. <- would NOT be spelled out." 5. " Her name is Susan. <- upper case followed by lower case is OK."[58 :"The English language has well over 1200 'rules' to follow to make under-"5B " standable speech; however because English is such a complex language,"5L " Smoothtalker can't pronounce every word correctly - yet."C6V :"The exception dictionary allows you to enter words that aren't pronounced"6` " correctly as PHONETIC spellings, then every time Smoothtalker finds this"6j " word it will pronounce it correctly. Try this:"#7t :" Choose option 4 from the main menu, then enter 'edited', then enter"c7~ " 'EHdEHtEHd' Then listen to the file TEXT.TXT again."7 ::" These are only a few of the things you need to know to make this program"7 "work, please see the manual if you have further questions." 8 :8 '8 Dictionary loader88 :WHO.RANG8 :"Loading a dictionary. Please enter a dictionary file, that is, a file with a"8 ".DIC extension. (Just the filename, .DIC is automatically added.)8 :"Enter DIR to get a directory."9 (O,-):VG9 T$"Load what dictionary? ":W:TL(T$):SWVw9 MAXLENNWTL:T$T$"\"(MAXLEN, )"\"9 SW,W: T$;(MAXLEN, );9 SW,WTL: T:T$IN$9  : E < , ,( ,2 9 ::"No extension please.":( :: :  ":2 ::"Aborted.":  V:< ZAPP.ALL:DICT.POINT: DICT.POINT(ZAPP.ALL){:F DIC$IN$".DIC": DIC$ AS #:P ::"English spelling";();"Phonetic spelling"::Z #,ENGLISH$:#,PHONETIC$:d ENGLISH$"END" PHONETIC$"END"  ;n ENGLISH$;();PHONETIC$Q;x DICT.INSERT: DICT.INSERT(ENGLISH$,PHONETIC$)[; Z a; }; :"Dictionary loaded."; :: :; Dictionary saver; :WHO.RANG< :"What filename do you want the dictionary to be saved as? (max 8 letters)."?< "The extension .DIC will automatically be added."f< :"Enter DIR to get a directory."y< (O,-):V< T$"Save what dictionary? ":W:TL(T$):SWV< MAXLENNWTL:T$T$"\"(MAXLEN, )"\"< SW,W: T$;(MAXLEN, );= SW,WTL: T:T$IN$;=  : E 6 , ," ,, [= ::"No extension please."o=" :: :  =, ::"Aborted.":  =6 DIC$IN$".DIC": DIC$ OUTPUT AS #=@ DICT.DUMP=J ENGLISH$( , ):PHONETIC$( , )>T DICT.DUMP(ENGLISH$,PHONETIC$)0>^ #,ENGLISH$:#,PHONETIC$V>h ENGLISH$PHONETIC$ r : J n>r #,"END":#,"END">| ::"Dictionary is saved."> DICT.POINT:RENEW: DICT.POINT(RENEW)> :: :? Do error checking on inputted path and file name.)? E:EL(T$): EL E:  =? EL  _? ET$T$: : T$"DIR"  j? T$ET$? EI EL: (T$,EI,)"." E? ? ? Get a directory? :WHO.RANG? T$"Which directory? ":W:TL(T$):SW%@ MAXLENNWTL:T$T$"\"(MAXLEN, )"\"E@ SW,W: T$;(MAXLEN, );Y@ SW,WTL: Th@& :: IN$v@0 E:  @: Ending routine.@D : N);"Leave program? ";: :V("~Yy",K$)@X V @l ,::'A: ******************************************************************rA: * FINDER.BAS - vector finder subroutine *A: * This is a subroutine that will find the interrupt vector of *B: * the COVOX TSR program that is specified in the string variable *SB: * PROG.NAME$. After MERGING this subroutine with the main BASIC *B: * program, call it by simply executing a GOSUB 65000. See your *B: * "User Manual" for complete details. *4C: ******************************************************************