rd *****************************n * Speech Thing calculator *x *****************************::Get vector for STALK program.PROG.NAME$"STALK.EXE"  :1 : : ,,: S,V,WC X(),Y()oSPEECHV2.INIT: SPEECHV2.INIT:SPEAKA$():B$():C$():D$()B$()E$()B$():F$():G$F$" "F$K$" "H$K$C$" "C$6I$K$C$" "D$" "D$" "D$" "D$" "C$fJ$K$C$" "E$" "E$" "E$" "E$" "C$p:: K$()(,A$)()" H$: H$, K$()(,B$)()6 K$C$" "()B$()" "()B$B$()" "C$<@ K$C$" "F$"C"F$" "F$"Ce"F$" COVOX "C$J K$C$" "()B$()" "()B$B$()" INC "C$T I$^ K$C$" "F$"7"G$"8"G$"9"G$"/"F$" "C$h J$: I$r K$C$" "F$"4"G$"5"G$"6"G$"*"F$" "C$| J$: I$J K$C$" "F$"1"G$"2"G$"3"G$"-"F$" "C$X J$: I$ K$C$" "F$"0"G$"."G$"="G$"+"F$" "C$ J$ K$()(,A$)();EE$"0123456789.*-+/=Cc "( )()SP$(," ") I : Y(I):& I : X(I):I I : CALC$(I)::SPEAKZ ,:"0"; ,*:"TALKING CALCULATOR":T$"TALKING CAALCU-LATER": SPEAK(T$) ,2:"by":T$"BYE": SPEAK(T$)  ,.:"COVOX INC.":T$"COH VOKS IN CORPERATED.": SPEAK(T$)4  ,&:"Please enter a calculation."^  ,&:"Type SPACE to clear entry."&  ,&:" Type C to clear all."0 ,&:" Press ESC to end.": ,":"/ is division, * is multiplication" DE:N$"0":N1:PREV :NUMFLAG: 4NK$:V("~"EE$,K$): V NX V ,,,,,,,,,,, , , , ,,,,,,2b E Nl DONTPRNT DONTPRNT: Nv : ,:ANS$(SP$,(N$))N$: ANS$ N= (K$"0" N$"0") (N$) E DONTPRNT: W Y(V),X(V): : K$;g SPEAK(K$) Y(V),X(V): : K$; N$"0" N$K$ : N$N$K$NUMFLAG DECFLAG (N$) E DECFLAG:NUMFLAG:N$N$K$ Y(V),X(V): : K$;5T$"POINT": SPEAK(T$)P Y(V),X(V): : K$;Vf  E  (N$"" N$"0") V N$"-":T$"MY NUS": SPEAK(T$):   Y(PREV),X(PREV): (EE$,PREV,)* Y(V),X(V): : K$;:PREVV:  4CALCTYPE2V />T$CALC$(CALCTYPE2): SPEAK(T$)EH NUMFLAG oR CEFLAG CEFLAG:N2(N$): \ CALCFLAG N1(N$): fN2(N$)p CALCTYPE1 n,x,,z E :  DONTPRNT0N$"":NUMFLAG:DECFLAG:CALCTYPE1CALCTYPE2:CALCFLAG6O If we get an error ,:" Error";:T$"<>": SPEAK(T$) Used when EQUALS (=) or ENTER is pressed. E ~ : Y(PREV),X(PREV): (EE$,PREV,)! CALCFLAG N1(N$): t/N2(N$)Q CALCTYPE1 n,x,,k Y(V),X(V): : K$;T$"=": SPEAK(T$) Y(V),X(V): : K$;$ E : t. :N1$(N1):L(N1$):N: I L8 (N1$,I,)"E" NI:ILB: N j?LT1$(N1$,N):T2$" EKS POH NUNT "uV (N1$,N,)"+" T3$"PLUS " : T3$"MYNUS "`N1$T1$T2$T3$(N1$,)j SPEAK(N1$)tN$"":NUMFLAG:DECFLAG:DONTPRNT:CALCFLAG~  When the CLEAR (Cc) is pressed.E E:N1:N2:N$"0":NUMFLAG:DECFLAG:CALCFLAG:CEFLAGq  : Y(PREV),X(PREV): (EE$,PREV,)  Y(V),X(V): :"C"; T$"CLEAR": SPEAK(T$)  Y(V),X(V): :"C"; DONTPRNT:  When the CE (space bar) is pressed.! E CFLAG (C!N2:CALCFLAG:T$((N1),((N1)))s! : ,:ANS$(SP$,(T$))T$: ANS$!DECFLAG:NUMFLAG: N1 CEFLAG : CEFLAG! : Y(PREV),X(PREV): (EE$,PREV,)!  Y(V),X(V): :"Ce";"T$"CLEAR ENTRY": SPEAK(T$)-" Y(V),X(V): :"Ce";D"(N$"":DONTPRNT:W"2 Exit routine"< ,",:"Do you wish to exit?";: "FV("~Yy",K$): V V d"P ,",:" ";"ZDONTPRNT:"d ::#nN1N1N2:#xN1N1N2:#N1N1N2:1# N2 E:@#N1N1N2:O#N1$(N1)|# ,:ANS$(SP$,(N1$))N1$: ANS$#DONTPRNT:# On error routine#  E:N1:N2:# ##K$: K$""  : $ Y(V),X(V): : K$;J$ 20,17,17,17,14,14,14,11,11,11,20,14,17,20,11,20,8,8,8,20$ 8,8,12,16,8,12,16,8,12,16,12,20,20,20,20,16,8,8,12,16$ "MULTIPLIED BY","MY NUS","PLUS","DIVIDED BY"%: ******************************************************************O%: * FINDER.BAS - vector finder subroutine *%: * This is a subroutine that will find the interrupt vector of *%: * the COVOX TSR program that is specified in the string variable *0&: * PROG.NAME$. After MERGING this subroutine with the main BASIC *{&: * program, call it by simply executing a GOSUB 65000. See your *&: * "User Manual" for complete details. *': ******************************************************************':9'::"One moment please..."': On Entry PROG.NAME$ = Name of the COVOX program to search for.':': Convert any lower case letters of the program name to upper case.' C (PROG.NAME$) (L((PROG.NAME$,C,))7( L` LL :(PROG.NAME$,C,)(L)?( CG(:O(:(: Search vectors 64 through 127 for the COVOX program address.( VECTOR(@ ) ( ) ( SEG:: Set to segment zero in order to access vector table.):=): Get the segment & offset values for the vector.u)OUR.OFFSET (VECTOR ) ( (VECTOR )))OUR.SEGMENT(VECTOR ) ( (VECTOR ))):*: If the value for the segment is not valid then look at the next vector.4* OUR.SEGMENT OUR.SEGMENT ~ <*:*: A segment value was found, so set BASIC's data segment accordingly.* SEGOUR.SEGMENT*: Now search for the COVOX program name at the offset address./+ : Each character of the program's name is compared and a flag (FOUND)h+ : is set to zero if there is not a complete match.+ PROG.FOUND: C (PROG.NAME$)+ (OUR.OFFSETC) ((PROG.NAME$,C,)) PROG.FOUND+ C:: Compare next character.+:I, PROG.FOUND :: If this is the vector for the COVOX program,,: then continue on with the main code of the BASIC program.,:,: If this was not the COVOX program's vector then, VECTOR:: examine the next vector location.-:Q-: If the COVOX program's vector was not found, the following message-: is displayed and the BASIC program is terminated.-:-:: PROG.NAME$;" has not been installed in memory."5."You must exit BASIC and load ";PROG.NAME$;" from the DOS prompt.":"Then RUN this program again."V.:: Terminate the program.^.:. :: Go back to the main BASIC program..: ********************************************************************