$OPTIMIZE ON
$APPTYPE GUI
$TYPECHECK ON
$ESCAPECHARS ON
Application.Title="LanguageGUI V2.21"
CONST DRIVE_FIXED=3
CONST DRIVE_CDROM=5
CONST ERROR_ALREADY_EXISTS=183
CONST PLATFORM_WIN32_WINDOWS=1
CONST PLATFORM_WIN32_NT=2
CONST PLATFORM_WIN32_CE=3
CONST LOGPIXELSX=88
CONST noCKeys=0
CONST fmOpenRead=0
CONST fmCreate=65535
CONST ssShift=256
CONST ssCtrl=16
CONST ssAlt=1
CONST bsNone=0
CONST bsSingle=1
CONST wsNormal=0
CONST fsStayOnTop=3
CONST crDefault=0
CONST ecNormal=0
CONST tbHorizontal=0
CONST tmBoth=2
CONST tsAuto=1
CONST FALSE=0
CONST TRUE=1
CONST TEXT_BUFFER_SIZE=5000
CONST NEW_TTS_ALWAYS=1
CONST REUSE_CURRENT_TTS=2
CONST MIN_VOLUME=0
CONST MAX_VOLUME=&HFFFFFFFF
CONST MIN_PITCH=0
CONST MAX_PITCH=&HFFFF
CONST MIN_SPEED=0
CONST MAX_SPEED=&HFFFFFFFF
CONST USE_DEFAULT_VOLUME=0
CONST USE_DEFINED_VOLUME=1
CONST USE_DEFAULT_PITCH=0
CONST USE_DEFINED_PITCH=1
CONST USE_DEFAULT_SPEED=0
CONST USE_DEFINED_SPEED=1
CONST USE_TEXT=0
CONST USE_CLIPBOARD=1
CONST DONT_CLEAR_BUFFERS=0
CONST CLEAR_TEXT_BUFFER=1
CONST CLEAR_SPEECH_BUFFER=2
CONST CLEAR_TEXTSPEECH_BUFFER=3
CONST OFN_OVERWRITEPROMPT=2
CONST OFN_HIDEREADONLY=4
CONST OFN_PATHMUSTEXIST=&H800
CONST OFN_FILEMUSTEXIST=&H1000
TYPE OPENFILENAME
lStructSize AS LONG
hwndOwner AS LONG
hInstance AS LONG
lpstrFilter AS LONG
lpstrCustomFilter AS LONG
nMaxCustFilter AS LONG
nFilterIndex AS LONG
lpstrFile AS LONG
nMaxFile AS LONG
lpstrFileTitle AS LONG
nMaxFileTitle AS LONG
lpstrInitialDir AS LONG
lpstrTitle AS LONG
flags AS LONG
nFileOffset AS SHORT
nFileExtension AS SHORT
lpstrDefExt AS LONG
lCustData AS LONG
lpfnHook AS LONG
lpTemplateName AS LONG
END TYPE
DECLARE FUNCTION CreateMutex LIB "kernel32.dll" ALIAS "CreateMutexA" (security AS LONG, inheritance AS LONG, name AS STRING) AS LONG
DECLARE FUNCTION GetDC LIB "user32.dll" ALIAS "GetDC" (hwnd AS LONG) AS LONG
DECLARE FUNCTION GetDesktopWindow LIB "user32.dll" ALIAS "GetDesktopWindow" () AS LONG
DECLARE FUNCTION GetDeviceCaps LIB "gdi32.dll" ALIAS "GetDeviceCaps" (hdc AS LONG, nIndex AS LONG) AS LONG
DECLARE FUNCTION GetDriveType LIB "kernel32.dll" ALIAS "GetDriveTypeA" (dname AS STRING) AS LONG
DECLARE FUNCTION GetLastError LIB "kernel32.dll" ALIAS "GetLastError" () AS LONG
DECLARE FUNCTION ReleaseDC LIB "user32.dll" ALIAS "ReleaseDC" (hwnd AS LONG, hdc AS LONG) AS LONG
DECLARE FUNCTION ShowWindow LIB "user32.dll" ALIAS "ShowWindow" (hwnd AS LONG, command AS LONG) AS LONG
DECLARE FUNCTION Begin_Speech LIB "stm.dll" ALIAS "Begin_Speech" (bufSize AS LONG) AS LONG
DECLARE FUNCTION Count_Voices LIB "stm.dll" ALIAS "Count_Voices" () AS LONG
DECLARE FUNCTION Enum_VoiceData LIB "stm.dll" ALIAS "Enum_VoiceData" () AS LONG
DECLARE FUNCTION Enum_VoiceNames LIB "stm.dll" ALIAS "Enum_VoiceNames" () AS LONG
DECLARE FUNCTION Get_VoiceData LIB "stm.dll" ALIAS "Get_VoiceData" (index AS LONG) AS LONG
DECLARE FUNCTION Get_VoiceName LIB "stm.dll" ALIAS "Get_VoiceName" (index AS LONG) AS LONG
DECLARE FUNCTION Speak_String LIB "stm.dll" ALIAS "Speak_String" (uvt AS LONG, textAdr AS LONG, clearBuf AS LONG, voiceNumber AS LONG, delkeep AS LONG, useV AS LONG, volume AS LONG, useP AS LONG, pitch AS LONG, useS AS LONG, speed AS LONG) AS LONG
DECLARE FUNCTION Pause_Speech LIB "stm.dll" ALIAS "Pause_Speech" () AS LONG
DECLARE FUNCTION Stop_Speech LIB "stm.dll" ALIAS "Stop_Speech" () AS LONG
DECLARE FUNCTION Resume_Speech LIB "stm.dll" ALIAS "Resume_Speech" () AS LONG
DECLARE FUNCTION Tag_Speech LIB "stm.dll" ALIAS "Tag_Speech" (tagStg AS STRING) AS LONG
DECLARE FUNCTION Delete_Speech LIB "stm.dll" ALIAS "Delete_Speech" () AS LONG
DECLARE FUNCTION Get_Volume LIB "stm.dll" ALIAS "Get_Volume" (voiceNumber AS LONG) AS LONG
DECLARE FUNCTION Get_Pitch LIB "stm.dll" ALIAS "Get_Pitch" (voiceNumber AS LONG) AS LONG
DECLARE FUNCTION Get_Speed LIB "stm.dll" ALIAS "Get_Speed" (voiceNumber AS LONG) AS LONG
DECLARE FUNCTION End_Speech LIB "stm.dll" ALIAS "End_Speech" () AS LONG
DECLARE FUNCTION Save_WAVFileEx LIB "ttw.dll" ALIAS "Save_WAVFileEx" (wavName AS STRING, bufSize AS LONG, uvt AS LONG, textAdr AS LONG, clearBuf AS LONG, voiceNumber AS LONG, useV AS LONG, volume AS LONG, useP AS LONG, pitch AS LONG, useS AS LONG, speed AS LONG) AS LONG
DECLARE FUNCTION Save_WAVFile LIB "ttw.dll" ALIAS "Save_WAVFile" (wavName AS STRING, voiceNumber AS LONG, textAdr AS LONG) AS LONG
DIM SaveDialog AS OPENFILENAME
DECLARE FUNCTION GetSaveFileName LIB "comdlg32" ALIAS "GetSaveFileNameA" (ofn AS OPENFILENAME) AS LONG
DECLARE SUB Blank_Window ()
DIM mutex_Handle AS LONG
mutex_handle=CreateMutex(0,1,"LanguageGUI")
IF ((mutex_handle<>0) AND (GetLastError()<>ERROR_ALREADY_EXISTS)) THEN
DIM rtn AS LONG, FDouble AS DOUBLE, dtw AS LONG, dtw_dc AS LONG
DIM Mem AS QMEMORYSTREAM, mmbp AS WORD
DIM fontsize AS LONG, dtsize AS LONG
DIM Canvas1 AS QCANVAS, Canvas3 AS QCANVAS, Canvas4 AS QCANVAS
DIM Canvas5 AS QCANVAS, Canvas6 AS QCANVAS
DIM Window1 AS QFORM, Window3 AS QFORM, Window4 AS QFORM
DIM Window5 AS QFORM, Window6 AS QFORM
DIM Label1 AS QLABEL, Label2 AS QLABEL, Label3 AS QLABEL
DIM Label4 AS QLABEL, Label7 AS QLABEL
DIM Label9 AS QLABEL, Label10 AS QLABEL, Label11 AS QLABEL
DIM Label12 AS QLABEL, Label13 AS QLABEL, Label14 AS QLABEL
DIM Label15 AS QLABEL, Label16 AS QLABEL, Label17 AS QLABEL
DIM Label18 AS QLABEL, Label19 AS QLABEL, Label20 AS QLABEL
DIM Label21 AS QLABEL, Label22 AS QLABEL, Label23 AS QLABEL
DIM Label24 AS QLABEL
DIM TB1 AS QTRACKBAR, TB2 AS QTRACKBAR, TB3 AS QTRACKBAR
DIM AutoTimer AS QTIMER
DIM Font1 AS QFONT, Font2 AS QFONT, Font3 AS QFONT, Font4 AS QFONT
DIM Font5 AS QFONT, Font6 AS QFONT, Font7 AS QFONT, Font8 AS QFONT
DIM Font9 AS QFONT, Font10 AS QFONT, Font11 AS QFONT, Font12 AS QFONT
DIM Font13 AS QFONT
DIM Edit1 AS QEDIT, Edit2 AS QEDIT, Edit3 AS QEDIT, Edit4 AS QEDIT
DIM Edit5 AS QEDIT, Edit6 AS QEDIT, Edit7 AS QEDIT, Edit8 AS QEDIT
DIM Edit9 AS QEDIT, Edit10 AS QEDIT, Edit11 AS QEDIT, Edit12 AS QEDIT
DIM LB1 AS QLISTBOX
DIM WCats(22) AS QLABEL, DTitles(44) AS STRING, FTitles(44) AS STRING
DIM FNFN$(1500) AS STRING, FSFN$(1500) AS STRING
DIM YY AS INTEGER, Z AS INTEGER, COUNT AS INTEGER, POSPTR AS LONG
DIM DS AS BYTE, FS AS BYTE, DP AS BYTE, FP AS BYTE, DJ AS BYTE
DIM FJ AS BYTE, DV AS BYTE, FV AS BYTE, MN AS BYTE, SO AS BYTE
DIM PO AS BYTE, OLDCP AS BYTE, CURCP AS BYTE, CPVAL AS BYTE, PST AS BYTE
DIM OLDDT AS BYTE, CURDT AS BYTE, SPLIT AS BYTE, SPELL AS BYTE
DIM SPEECH AS BYTE, MISC AS BYTE, SEQRND AS BYTE, OLDDF AS BYTE
DIM CURDF AS BYTE, OLDPAA AS BYTE, CURPAA AS BYTE, OLDSEQ AS LONG
DIM CURSEQ AS LONG, NEXTSEQ AS LONG, DFDELAY AS BYTE, AMDELAY AS BYTE
DIM SPDELAY AS BYTE, WSDELAY AS BYTE, RVDELAY AS BYTE, STOPDELAY AS BYTE
DIM NAVDELAY AS BYTE, NX AS BYTE, FWD AS BYTE, LRN AS BYTE, AMT AS BYTE
DIM MISCSTART AS LONG, MISCEND AS LONG, LANG AS BYTE, MISCTOT AS LONG
DIM MISCLEN AS LONG, SRCHSTS AS BYTE, SRCHPOS AS LONG, STG1$ AS STRING
DIM STG2$ AS STRING, STG3$ AS STRING, STG4$ AS STRING, EDITSTG$ AS STRING
DIM SRCHCNT AS LONG, FNNUM AS WORD, FSNUM AS WORD
DIM DWAV AS BYTE, FWAV AS BYTE, DSFILE AS BYTE, FSFILE AS BYTE
DIM File AS QFILESTREAM, FStg$ AS STRING, FLen AS INTEGER, FPos AS INTEGER
DIM FByte AS BYTE, FWord AS WORD, FLong AS LONG
DIM DName$(14) AS STRING, FName$(20) AS STRING
DIM DSpeech_Dir$ AS STRING, FSpeech_Dir$ AS STRING
DIM DS1Mem AS QMEMORYSTREAM, DS2Mem AS QMEMORYSTREAM, FS1Mem AS QMEMORYSTREAM
DIM FS2Mem AS QMEMORYSTREAM, DPMem AS QMEMORYSTREAM, FPMem AS QMEMORYSTREAM
DIM DJMem AS QMEMORYSTREAM, FJMem AS QMEMORYSTREAM, DVMem AS QMEMORYSTREAM
DIM FVMem AS QMEMORYSTREAM, SettingsMem AS QMEMORYSTREAM
DIM ALen(176) AS WORD, BLen(176) AS WORD, CLen(176) AS WORD, Totals(22) AS WORD
DIM FNAss(1500) AS BYTE, FSAss(1500) AS BYTE, FNSyl(37500) AS WORD, FSSyl(37500) AS WORD
DIM NumDrives AS BYTE, drv_cnt AS BYTE
DIM Root_Dir$ AS STRING, drive$(26) AS STRING
DIM voiceTotal AS LONG, vnPtr AS LONG, counter AS LONG, slib AS LONG
DIM currentVoice AS LONG, oldVoice AS LONG
DIM vstg$ AS STRING, spk$ AS STRING, vSpeech AS BYTE
DIM volume AS LONG, pitch AS LONG, speed AS LONG, vps AS LONG
DIM dvolume(200) AS LONG, dpitch(200) AS WORD, dspeed(200) AS LONG
DIM cvolume(200) AS LONG, cpitch(200) AS WORD, cspeed(200) AS LONG
DIM sFile$ AS STRING, sFileTitle$ AS STRING, sFileFilter$ AS STRING
DIM sIDir$ AS STRING, rFile$ AS STRING
FOR Z=0 TO 21 : Totals(Z)=0 : NEXT
FOR Z=0 TO 1499 : FNAss(Z)=0 : FSAss(Z)=0 : NEXT
DS=1 : FS=0 : DP=1 : FP=0 : DJ=1 : FJ=0 : DV=1 : FV=0 : PO=0 : SO=0
MN=0 : NX=0 : FWD=0 : OLDCP=0 : CURCP=0 : CPVAL=0 : OLDDT=10 : CURDT=0
SPLIT=0 : SPELL=0 : SPEECH=1 : MISC=0 : SEQRND=0 : OLDDF=2 : CURDF=0
OLDPAA=10 : CURPAA=0 : OLDSEQ=0 : CURSEQ=0 : NEXTSEQ=0 : DFDELAY=0
AMDELAY=0 : SPDELAY=0 : WSDELAY=0 : RVDELAY=0 : STOPDELAY=0 : NAVDELAY=0
LRN=0 : PST=0 : AMT=0 : LANG=1 : SRCHSTS=0 : FNNUM=0 : FSNUM=0
Drv_Cnt=0 : DWAV=1 : FWAV=10 : DSFILE=1 : FSFILE=10
voiceTotal=0 : vnPtr=0 : counter=0 : currentVoice=0 : oldVoice=0
volume=0 : pitch=0 : speed=0 : slib=0 : vSpeech=0
sFile$=STRING$(256,0)
sFileTitle$=STRING$(256,0)
sFileFilter$=STRING$(256,0)
sIDir$=STRING$(256,0)
sFileFilter$="Supported Files Types (*.wav)\0*.wav\0\0"
sFileTitle$="Select A FileName"
sIDir$="C:\\LanguageGUI"
SaveDialog.lStructSize=SIZEOF(SaveDialog)
SaveDialog.hInstance=Application.hInstance
SaveDialog.lpstrFilter=VARPTR(sFileFilter$)
SaveDialog.lpstrTitle=VARPTR(sFileTitle$)
SaveDialog.lpstrFile=VARPTR(sFile$)
SaveDialog.nMaxFile=256
SaveDialog.lpstrInitialDir=VARPTR(sIDir$)
SaveDialog.flags=OFN_FILEMUSTEXIST OR OFN_PATHMUSTEXIST OR OFN_HIDEREADONLY OR OFN_OVERWRITEPROMPT
SUB Blank_Window
ShowWindow (Application.Handle, 0)
END SUB
SUB CleanUP
DS1Mem.CLOSE : FS1Mem.CLOSE : DS2Mem.CLOSE : FS2Mem.CLOSE : DPMem.CLOSE
FPMem.CLOSE : DJMem.CLOSE : FJMem.CLOSE : DVMem.CLOSE : FVMem.CLOSE
End_Speech
END SUB
SUB Get_Drives
NumDrives=0
FOR z=0 TO 25
drive$(z)=""
FStg$=CHR$(z+65)+":\\"
FByte=GetDriveType(FStg$)
IF FByte>2 THEN
IF FByte=DRIVE_FIXED THEN
drive$(NumDrives)=FStg$+"LanguageGUI\\"
INC NumDrives
ELSEIF FByte=DRIVE_CDROM THEN
drive$(NumDrives)=FStg$+"LanguageGUI\\"
INC NumDrives
END IF
END IF
NEXT
IF NumDrives>25 THEN
drive$(25)="NO DRIVE"
ELSE
drive$(NumDrives)="NO DRIVE"
END IF
END SUB
SUB Speak_ToMe
spk$=""
FStg$=Root_Dir$+FSpeech_Dir$
IF SPEECH=1 THEN
IF CURSEQ<>OLDSEQ THEN
IF LRN=0 THEN
IF (DP=1 OR FP=1 OR DJ=1 OR FJ=1 OR DV=1 OR FV=1) THEN
IF OLDSEQ=BLen(CURCP+44) AND CURSEQ=ALen(CURCP+44) THEN
IF FNAss(OLDSEQ+1)=1 THEN
COUNT=0 : YY=(OLDSEQ+1)*25 : DO : FWord=FNSyl(YY+COUNT)
IF (FWord>0 AND FWord<(FNNUM+1)) THEN
spk$=spk$+FNFN$(FWord)
IF vSpeech=0 THEN PLAYWAV FStg$+FNFN$(FWord)+".wav", 0
INC COUNT
ELSE
COUNT=25
END IF
LOOP UNTIL (COUNT=25)
IF vSpeech=1 THEN
Speak_String(USE_TEXT,VARPTR(spk$),CLEAR_TEXTSPEECH_BUFFER,currentVoice,NEW_TTS_ALWAYS,USE_DEFINED_VOLUME,cvolume(currentVoice),USE_DEFINED_PITCH,cpitch(currentVoice),USE_DEFINED_SPEED,cspeed(currentVoice))
END IF
END IF
ELSE
IF FNAss(CURSEQ)=1 THEN
COUNT=0 : YY=CURSEQ*25 : DO : FWord=FNSyl(YY+COUNT)
IF (FWord>0 AND FWord<(FNNUM+1)) THEN
spk$=spk$+FNFN$(FWord)
IF vSpeech=0 THEN PLAYWAV FStg$+FNFN$(FWord)+".wav", 0
INC COUNT
ELSE
COUNT=25
END IF
LOOP UNTIL (COUNT=25)
IF vSpeech=1 THEN
Speak_String(USE_TEXT,VARPTR(spk$),CLEAR_TEXTSPEECH_BUFFER,currentVoice,NEW_TTS_ALWAYS,USE_DEFINED_VOLUME,cvolume(currentVoice),USE_DEFINED_PITCH,cpitch(currentVoice),USE_DEFINED_SPEED,cspeed(currentVoice))
END IF
END IF
END IF
END IF
ELSE
IF (DS=1 OR FS=1) THEN
IF OLDSEQ=BLen(CURCP) AND CURSEQ=ALen(CURCP) THEN
IF FSAss(OLDSEQ+1)=1 THEN
COUNT=0 : YY=(OLDSEQ+1)*25 : DO : FWord=FSSyl(YY+COUNT)
IF (FWord>0 AND FWord<(FSNUM+1)) THEN
spk$=spk$+FSFN$(FWord)
IF vSpeech=0 THEN PLAYWAV FStg$+FSFN$(FWord)+".wav", 0
INC COUNT
ELSE
COUNT=25
END IF
LOOP UNTIL (COUNT=25)
IF vSpeech=1 THEN
Speak_String(USE_TEXT,VARPTR(spk$),CLEAR_TEXTSPEECH_BUFFER,currentVoice,NEW_TTS_ALWAYS,USE_DEFINED_VOLUME,cvolume(currentVoice),USE_DEFINED_PITCH,cpitch(currentVoice),USE_DEFINED_SPEED,cspeed(currentVoice))
END IF
END IF
ELSE
IF FSAss(CURSEQ)=1 THEN
COUNT=0 : YY=CURSEQ*25 : DO : FWord=FSSyl(YY+COUNT)
IF (FWord>0 AND FWord<(FSNUM+1)) THEN
spk$=spk$+FSFN$(FWord)
IF vSpeech=0 THEN PLAYWAV FStg$+FSFN$(FWord)+".wav", 0
INC COUNT
ELSE
COUNT=25
END IF
LOOP UNTIL (COUNT=25)
IF vSpeech=1 THEN
Speak_String(USE_TEXT,VARPTR(spk$),CLEAR_TEXTSPEECH_BUFFER,currentVoice,NEW_TTS_ALWAYS,USE_DEFINED_VOLUME,cvolume(currentVoice),USE_DEFINED_PITCH,cpitch(currentVoice),USE_DEFINED_SPEED,cspeed(currentVoice))
END IF
END IF
END IF
END IF
END IF
END IF
END IF
END SUB
SUB Show_WSearch(Number AS BYTE)
Canvas4.FillRect (212, 173, 761, 286, &H60B0E0)
IF Number=0 THEN
Canvas4.TextOut (218, 172, STG1$, &HFFFFFF, -1)
Canvas4.TextOut (218, 202, STG2$, &H284C60, -1)
ELSE
Canvas4.TextOut (218, 172, STG1$, &H284C60, -1)
Canvas4.TextOut (218, 202, STG2$, &HFFFFFF, -1)
END IF
END SUB
SUB Show_SSearch(Number AS BYTE)
Canvas4.FillRect (212, 173, 761, 286, &H60B0E0)
IF Number=0 THEN
Canvas4.TextOut (218, 172, STG1$, &HFFFFFF, -1)
Canvas4.TextOut (218, 200, STG2$, &HFFFFFF, -1)
Canvas4.TextOut (218, 228, STG3$, &H284C60, -1)
Canvas4.TextOut (218, 256, STG4$, &H284C60, -1)
ELSE
Canvas4.TextOut (218, 172, STG1$, &H284C60, -1)
Canvas4.TextOut (218, 200, STG2$, &H284C60, -1)
Canvas4.TextOut (218, 228, STG3$, &HFFFFFF, -1)
Canvas4.TextOut (218, 256, STG4$, &HFFFFFF, -1)
END IF
END SUB
SUB Search_DS
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP)*42))
DS1Mem.Position=SRCHPOS : STG1$=DS1Mem.ReadStr(42)
FLong=INSTR(STG1$, EDITSTG$) : INC (SRCHPOS, 42)
WEND
IF (FLong=0 AND SRCHPOS>(BLen(CURCP)*42)) THEN
SRCHPOS=ALen(CURCP)*42
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP)*42))
DS2Mem.Position=SRCHPOS : STG2$=DS2Mem.ReadStr(42)
FLong=INSTR(STG2$, EDITSTG$) : INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
SRCHSTS=1 : DS1Mem.Position=SRCHPOS-42 : STG1$=DS1Mem.ReadStr(42)
FS1Mem.Position=SRCHPOS-42 : STG3$=FS1Mem.ReadStr(42)
FS2Mem.Position=SRCHPOS-42 : STG4$=FS2Mem.ReadStr(42) : Show_SSearch(0)
ELSE
Label16.CAPTION="String Not Found"
Canvas4.FillRect (212, 173, 761, 286, &H60B0E0)
END IF
ELSE
IF FLong>0 THEN
SRCHSTS=1 : DS2Mem.Position=SRCHPOS-42 : STG2$=DS2Mem.ReadStr(42)
FS1Mem.Position=SRCHPOS-42 : STG3$=FS1Mem.ReadStr(42)
FS2Mem.Position=SRCHPOS-42 : STG4$=FS2Mem.ReadStr(42) : Show_SSearch(0)
END IF
END IF
END SUB
SUB Search_DP
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP+44)*42))
DPMem.Position=SRCHPOS : STG1$=DPMem.ReadStr(42)
FLong=INSTR(STG1$, EDITSTG$) : INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
SRCHSTS=1 : FPMem.Position=SRCHPOS-42 : STG2$=FPMem.ReadStr(42) : Show_WSearch(0)
ELSE
Label16.CAPTION="String Not Found"
Canvas4.FillRect (212, 173, 761, 286, &H60B0E0)
END IF
END SUB
SUB Search_DJ
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP+44)*42))
DJMem.Position=SRCHPOS : STG1$=DJMem.ReadStr(42)
FLong=INSTR(STG1$, EDITSTG$) : INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
SRCHSTS=1 : FJMem.Position=SRCHPOS-42 : STG2$=FJMem.ReadStr(42) : Show_WSearch(0)
ELSE
Label16.CAPTION="String Not Found"
Canvas4.FillRect (212, 173, 761, 286, &H60B0E0)
END IF
END SUB
SUB Search_DV
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP+44)*42))
DVMem.Position=SRCHPOS : STG1$=DVMem.ReadStr(42)
FLong=INSTR(STG1$, EDITSTG$) : INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
SRCHSTS=1 : FVMem.Position=SRCHPOS-42 : STG2$=FVMem.ReadStr(42) : Show_WSearch(0)
ELSE
Label16.CAPTION="String Not Found"
Canvas4.FillRect (212, 173, 761, 286, &H60B0E0)
END IF
END SUB
SUB Search_FS
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP)*42))
FS1Mem.Position=SRCHPOS : STG1$=FS1Mem.ReadStr(42)
FLong=INSTR(STG1$, EDITSTG$) : INC (SRCHPOS, 42)
WEND
IF (FLong=0 AND SRCHPOS>(BLen(CURCP)*42)) THEN
SRCHPOS=ALen(CURCP)*42
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP)*42))
FS2Mem.Position=SRCHPOS : STG2$=FS2Mem.ReadStr(42)
FLong=INSTR(STG2$, EDITSTG$) : INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
SRCHSTS=1 : FS1Mem.Position=SRCHPOS-42 : STG1$=FS1Mem.ReadStr(42)
DS1Mem.Position=SRCHPOS-42 : STG3$=DS1Mem.ReadStr(42)
DS2Mem.Position=SRCHPOS-42 : STG4$=DS2Mem.ReadStr(42) : Show_SSearch(1)
ELSE
Label16.CAPTION="String Not Found"
Canvas4.FillRect (212, 173, 761, 286, &H60B0E0)
END IF
ELSE
IF FLong>0 THEN
SRCHSTS=1 : FS2Mem.Position=SRCHPOS-42 : STG2$=FS2Mem.ReadStr(42)
DS1Mem.Position=SRCHPOS-42 : STG3$=DS1Mem.ReadStr(42)
DS2Mem.Position=SRCHPOS-42 : STG4$=DS2Mem.ReadStr(42) : Show_SSearch(1)
END IF
END IF
END SUB
SUB Search_FP
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP+44)*42))
FPMem.Position=SRCHPOS : STG1$=FPMem.ReadStr(42)
FLong=INSTR(STG1$, EDITSTG$) : INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
SRCHSTS=1 : DPMem.Position=SRCHPOS-42 : STG2$=DPMem.ReadStr(42) : Show_WSearch(1)
ELSE
Label16.CAPTION="String Not Found"
Canvas4.FillRect (212, 173, 761, 286, &H60B0E0)
END IF
END SUB
SUB Search_FJ
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP+44)*42))
FJMem.Position=SRCHPOS : STG1$=FJMem.ReadStr(42)
FLong=INSTR(STG1$, EDITSTG$) : INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
SRCHSTS=1 : DJMem.Position=SRCHPOS-42 : STG2$=DJMem.ReadStr(42) : Show_WSearch(1)
ELSE
Label16.CAPTION="String Not Found"
Canvas4.FillRect (212, 173, 761, 286, &H60B0E0)
END IF
END SUB
SUB Search_FV
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP+44)*42))
FVMem.Position=SRCHPOS : STG1$=FVMem.ReadStr(42)
FLong=INSTR(STG1$, EDITSTG$) : INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
SRCHSTS=1 : DVMem.Position=SRCHPOS-42 : STG2$=DVMem.ReadStr(42) : Show_WSearch(1)
ELSE
Label16.CAPTION="String Not Found"
Canvas4.FillRect (212, 173, 761, 286, &H60B0E0)
END IF
END SUB
SUB Search_WS
EDITSTG$=Edit8.Text : FLong=0 : SRCHSTS=0 : Label16.CAPTION=" "
SRCHPOS=ALen(CURCP+44)*42
IF EDITSTG$<>"" THEN
IF CURDF=0 THEN
IF CURPAA=0 THEN
SRCHPOS=ALen(CURCP)*42 : Search_DS
ELSEIF CURPAA=1 THEN
Search_DP
ELSEIF CURPAA=2 THEN
Search_DJ
ELSEIF CURPAA=3 THEN
Search_DV
END IF
ELSE
IF CURPAA=0 THEN
SRCHPOS=ALen(CURCP)*42 : Search_FS
ELSEIF CURPAA=1 THEN
Search_FP
ELSEIF CURPAA=2 THEN
Search_FJ
ELSEIF CURPAA=3 THEN
Search_FV
END IF
END IF
END IF
END SUB
SUB Continue_DS
SRCHCNT=SRCHPOS
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP)*42))
DS1Mem.Position=SRCHPOS : STG1$=DS1Mem.ReadStr(42)
FLong=INSTR(STG1$, EDITSTG$) : INC (SRCHPOS, 42)
WEND
IF (FLong=0 AND SRCHPOS>(BLen(CURCP)*42)) THEN
SRCHPOS=SRCHCNT
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP)*42))
DS2Mem.Position=SRCHPOS : STG2$=DS2Mem.ReadStr(42)
FLong=INSTR(STG2$, EDITSTG$) : INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
DS1Mem.Position=SRCHPOS-42 : STG1$=DS1Mem.ReadStr(42)
FS1Mem.Position=SRCHPOS-42 : STG3$=FS1Mem.ReadStr(42)
FS2Mem.Position=SRCHPOS-42 : STG4$=FS2Mem.ReadStr(42) : Show_SSearch(0)
ELSE
SRCHSTS=2 : Label16.CAPTION="End of Search"
Canvas4.FillRect (212, 173, 761, 286, &H60B0E0)
END IF
ELSE
IF FLong>0 THEN
DS2Mem.Position=SRCHPOS-42 : STG2$=DS2Mem.ReadStr(42)
FS1Mem.Position=SRCHPOS-42 : STG3$=FS1Mem.ReadStr(42)
FS2Mem.Position=SRCHPOS-42 : STG4$=FS2Mem.ReadStr(42) : Show_SSearch(0)
END IF
END IF
END SUB
SUB Continue_DP
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP+44)*42))
DPMem.Position=SRCHPOS : STG1$=DPMem.ReadStr(42) : FLong=INSTR(STG1$, EDITSTG$)
INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
FPMem.Position=SRCHPOS-42 : STG2$=FPMem.ReadStr(42) : Show_WSearch(0)
ELSE
SRCHSTS=2 : Label16.CAPTION="End of Search"
END IF
END SUB
SUB Continue_DJ
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP+44)*42))
DJMem.Position=SRCHPOS : STG1$=DJMem.ReadStr(42) : FLong=INSTR(STG1$, EDITSTG$)
INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
FJMem.Position=SRCHPOS-42 : STG2$=FJMem.ReadStr(42) : Show_WSearch(0)
ELSE
SRCHSTS=2 : Label16.CAPTION="End of Search"
END IF
END SUB
SUB Continue_DV
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP+44)*42))
DVMem.Position=SRCHPOS : STG1$=DVMem.ReadStr(42) : FLong=INSTR(STG1$, EDITSTG$)
INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
FVMem.Position=SRCHPOS-42 : STG2$=FVMem.ReadStr(42) : Show_WSearch(0)
ELSE
SRCHSTS=2 : Label16.CAPTION="End of Search"
END IF
END SUB
SUB Continue_FS
SRCHCNT=SRCHPOS
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP)*42))
FS1Mem.Position=SRCHPOS : STG1$=FS1Mem.ReadStr(42)
FLong=INSTR(STG1$, EDITSTG$) : INC (SRCHPOS, 42)
WEND
IF (FLong=0 AND SRCHPOS>(BLen(CURCP)*42)) THEN
SRCHPOS=SRCHCNT
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP)*42))
FS2Mem.Position=SRCHPOS : STG2$=FS2Mem.ReadStr(42)
FLong=INSTR(STG2$, EDITSTG$) : INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
FS1Mem.Position=SRCHPOS-42 : STG1$=FS1Mem.ReadStr(42)
DS1Mem.Position=SRCHPOS-42 : STG3$=DS1Mem.ReadStr(42)
DS2Mem.Position=SRCHPOS-42 : STG4$=DS2Mem.ReadStr(42) : Show_SSearch(1)
ELSE
SRCHSTS=2 : Label16.CAPTION="End of Search"
Canvas4.FillRect (212, 173, 761, 286, &H60B0E0)
END IF
ELSE
IF FLong>0 THEN
FS2Mem.Position=SRCHPOS-42 : STG2$=FS2Mem.ReadStr(42)
DS1Mem.Position=SRCHPOS-42 : STG3$=DS1Mem.ReadStr(42)
DS2Mem.Position=SRCHPOS-42 : STG4$=DS2Mem.ReadStr(42) : Show_SSearch(1)
END IF
END IF
END SUB
SUB Continue_FP
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP+44)*42))
FPMem.Position=SRCHPOS : STG1$=FPMem.ReadStr(42) : FLong=INSTR(STG1$, EDITSTG$)
INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
DPMem.Position=SRCHPOS-42 : STG2$=DPMem.ReadStr(42) : Show_WSearch(1)
ELSE
SRCHSTS=2 : Label16.CAPTION="End of Search"
END IF
END SUB
SUB Continue_FJ
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP+44)*42))
FJMem.Position=SRCHPOS : STG1$=FJMem.ReadStr(42) : FLong=INSTR(STG1$, EDITSTG$)
INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
DJMem.Position=SRCHPOS-42 : STG2$=DJMem.ReadStr(42) : Show_WSearch(1)
ELSE
SRCHSTS=2 : Label16.CAPTION="End of Search"
END IF
END SUB
SUB Continue_FV
WHILE (FLong=0 AND SRCHPOS<=(BLen(CURCP+44)*42))
FVMem.Position=SRCHPOS : STG1$=FVMem.ReadStr(42) : FLong=INSTR(STG1$, EDITSTG$)
INC (SRCHPOS, 42)
WEND
IF FLong>0 THEN
DVMem.Position=SRCHPOS-42 : STG2$=DVMem.ReadStr(42) : Show_WSearch(1)
ELSE
SRCHSTS=2 : Label16.CAPTION="End of Search"
END IF
END SUB
SUB Continue_WS
FLong=0
IF SRCHSTS=1 THEN
IF CURDF=0 THEN
IF CURPAA=0 THEN
Continue_DS
ELSEIF CURPAA=1 THEN
Continue_DP
ELSEIF CURPAA=2 THEN
Continue_DJ
ELSEIF CURPAA=3 THEN
Continue_DV
END IF
ELSE
IF CURPAA=0 THEN
Continue_FS
ELSEIF CURPAA=1 THEN
Continue_FP
ELSEIF CURPAA=2 THEN
Continue_FJ
ELSEIF CURPAA=3 THEN
Continue_FV
END IF
END IF
END IF
END SUB
SUB Clear_Words
Canvas1.FillRect (210, 169, 778, 201, &HA8CCE0)
Canvas1.FillRect (210, 217, 778, 249, &HA8CCE0)
Canvas1.FillRect (210, 265, 778, 297, &HA8CCE0)
Canvas1.FillRect (210, 313, 778, 345, &HA8CCE0)
Canvas1.FillRect (210, 361, 778, 393, &HA8CCE0)
Canvas1.FillRect (210, 409, 778, 441, &HA8CCE0)
END SUB
SUB Clear_Sentences
Canvas1.FillRect (210, 16, 778, 75, &HA8CCE0)
Canvas1.FillRect (210, 92, 778, 153, &HA8CCE0)
END SUB
SUB Spell_DSentences
POSPTR=CURSEQ*42 : YY=42 : DO : DEC YY : DS1Mem.Position=POSPTR+YY : FByte=DS1Mem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF YY>0 THEN
FOR Z=1 TO YY : DS1Mem.Position=POSPTR : FStg$=DS1Mem.ReadStr(Z)
Canvas1.FillRect (210, 15, 778, 47, &HA8CCE0)
Canvas1.TextOut (221, 16, FStg$, &HFFFFFF, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
END IF
YY=42 : DO : DEC YY : DS2Mem.Position=POSPTR+YY : FByte=DS2Mem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF YY>0 THEN
IF DFDELAY>0 THEN SLEEP DFDELAY
FOR Z=1 TO YY : DS2Mem.Position=POSPTR : FStg$=DS2Mem.ReadStr(Z)
Canvas1.FillRect (210, 43, 778, 75, &HA8CCE0)
Canvas1.TextOut (221, 44, FStg$, &HFFFFFF, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
END IF
END SUB
SUB Show_DSentences
POSPTR=CURSEQ*42 : DS1Mem.Position=POSPTR : FStg$=DS1Mem.ReadStr(42) : Canvas1.TextOut (221, 16, FStg$, &HFFFFFF, -1)
IF DFDELAY>0 THEN SLEEP DFDELAY
DS2Mem.Position=POSPTR : FStg$=DS2Mem.ReadStr(42) : Canvas1.TextOut (221, 44, FStg$, &HFFFFFF, -1)
END SUB
SUB Spell_FSentences
POSPTR=CURSEQ*42 : YY=42 : DO : DEC YY : FS1Mem.Position=POSPTR+YY : FByte=FS1Mem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF YY>0 THEN
FOR Z=1 TO YY : FS1Mem.Position=POSPTR : FStg$=FS1Mem.ReadStr(Z)
Canvas1.FillRect (210, 92, 778, 124, &HA8CCE0)
Canvas1.TextOut (221, 93, FStg$, &H284C60, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
END IF
YY=42 : DO : DEC YY : FS2Mem.Position=POSPTR+YY : FByte=FS2Mem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF YY>0 THEN
IF DFDELAY>0 THEN SLEEP DFDELAY
FOR Z=1 TO YY : FS2Mem.Position=POSPTR : FStg$=FS2Mem.ReadStr(Z)
Canvas1.FillRect (210, 125, 778, 153, &HA8CCE0)
Canvas1.TextOut (221, 121, FStg$, &H284C60, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
END IF
END SUB
SUB Show_FSentences
POSPTR=CURSEQ*42 : FS1Mem.Position=POSPTR : FStg$=FS1Mem.ReadStr(42) : Canvas1.TextOut (221, 93, FStg$, &H284C60, -1)
IF DFDELAY>0 THEN SLEEP DFDELAY
FS2Mem.Position=POSPTR : FStg$=FS2Mem.ReadStr(42) : Canvas1.TextOut (221, 121, FStg$, &H284C60, -1)
END SUB
SUB Next_Sentences
Clear_Sentences
IF DS=1 THEN
IF SPELL=1 THEN
Spell_DSentences
ELSE
Show_DSentences
END IF
END IF
IF (DS=1 AND FS=1 AND RVDELAY>0) THEN SLEEP RVDELAY
IF FS=1 THEN
IF SPELL=1 THEN
Spell_FSentences
ELSE
Show_FSentences
END IF
END IF
IF (DS=1 AND FS=1 AND MN=1 AND AMDELAY>0) THEN SLEEP AMDELAY
OLDSEQ=CURSEQ
IF SEQRND=0 THEN
INC CURSEQ : IF CURSEQ>BLen(CURCP) THEN CURSEQ=ALen(CURCP)
ELSE
CURSEQ=ALen(CURCP)+RND(CLen(CURCP))-1 : IF CURSEQ<ALen(CURCP) THEN CURSEQ=ALen(CURCP)
END IF
NX=1 : FWD=0 : NEXTSEQ=CURSEQ
END SUB
SUB Reveal_Sentences
IF NX=1 THEN
CURSEQ=OLDSEQ : NX=2
IF (DS=0 AND FS=1) THEN
IF SPELL=1 THEN
Spell_DSentences
ELSE
Show_DSentences
END IF
ELSEIF (DS=1 AND FS=0) THEN
IF SPELL=1 THEN
Spell_FSentences
ELSE
Show_FSentences
END IF
END IF
CURSEQ=NEXTSEQ : NX=0
END IF
END SUB
SUB Spell_DPWords
POSPTR=CURSEQ*42 : YY=42 : DO : DEC YY : DPMem.Position=POSPTR+YY : FByte=DPMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF SPLIT=0 THEN
IF YY>0 THEN
FOR Z=1 TO YY : DPMem.Position=POSPTR : FStg$=DPMem.ReadStr(Z)
Canvas1.FillRect (210, 169, 778, 201, &HA8CCE0)
Canvas1.TextOut (221, 171, FStg$, &HFFFFFF, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
END IF
ELSE
COUNT=YY : IF COUNT>0 THEN
POSPTR=CURSEQ*42 : YY=14 : DO : DEC YY : DPMem.Position=POSPTR+YY : FByte=DPMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : DPMem.Position=POSPTR : FStg$=DPMem.ReadStr(Z)
Canvas1.FillRect (210, 169, 399, 201, &HA8CCE0)
Canvas1.TextOut (221, 171, FStg$, &HFFFFFF, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF (COUNT>14 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF COUNT>14 THEN
POSPTR=(CURSEQ*42)+14 : YY=14 : DO : DEC YY : DPMem.Position=POSPTR+YY : FByte=DPMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : DPMem.Position=POSPTR : FStg$=DPMem.ReadStr(Z)
Canvas1.FillRect (400, 169, 589, 201, &HA8CCE0)
Canvas1.TextOut (379, 171, FStg$, &HFFFFFF, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF (COUNT>28 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF COUNT>28 THEN
POSPTR=(CURSEQ*42)+28 : YY=14 : DO : DEC YY : DPMem.Position=POSPTR+YY : FByte=DPMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : DPMem.Position=POSPTR : FStg$=DPMem.ReadStr(Z)
Canvas1.FillRect (590, 169, 778, 201, &HA8CCE0)
Canvas1.TextOut (601, 171, FStg$, &HFFFFFF, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF WSDELAY>0 THEN SLEEP WSDELAY
END IF
END IF
END SUB
SUB Spell_FPWords
POSPTR=CURSEQ*42 : YY=42 : DO : DEC YY : FPMem.Position=POSPTR+YY : FByte=FPMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF SPLIT=0 THEN
IF YY>0 THEN
FOR Z=1 TO YY : FPMem.Position=POSPTR : FStg$=FPMem.ReadStr(Z)
Canvas1.FillRect (210, 217, 778, 249, &HA8CCE0)
Canvas1.TextOut (221, 218, FStg$, &H284C60, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
END IF
ELSE
COUNT=YY : IF COUNT>0 THEN
POSPTR=CURSEQ*42 : YY=14 : DO : DEC YY : FPMem.Position=POSPTR+YY : FByte=FPMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : FPMem.Position=POSPTR : FStg$=FPMem.ReadStr(Z)
Canvas1.FillRect (210, 217, 399, 249, &HA8CCE0)
Canvas1.TextOut (221, 218, FStg$, &H284C60, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF (COUNT>14 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF COUNT>14 THEN
POSPTR=(CURSEQ*42)+14 : YY=14 : DO : DEC YY : FPMem.Position=POSPTR+YY : FByte=FPMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : FPMem.Position=POSPTR : FStg$=FPMem.ReadStr(Z)
Canvas1.FillRect (400, 217, 589, 249, &HA8CCE0)
Canvas1.TextOut (379, 218, FStg$, &H284C60, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF (COUNT>28 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF COUNT>28 THEN
POSPTR=(CURSEQ*42)+28 : YY=14 : DO : DEC YY : FPMem.Position=POSPTR+YY : FByte=FPMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : FPMem.Position=POSPTR : FStg$=FPMem.ReadStr(Z)
Canvas1.FillRect (590, 217, 778, 249, &HA8CCE0)
Canvas1.TextOut (601, 218, FStg$, &H284C60, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF WSDELAY>0 THEN SLEEP WSDELAY
END IF
END IF
END SUB
SUB Spell_DJWords
POSPTR=CURSEQ*42 : YY=42 : DO : DEC YY : DJMem.Position=POSPTR+YY : FByte=DJMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF SPLIT=0 THEN
IF YY>0 THEN
FOR Z=1 TO YY : DJMem.Position=POSPTR : FStg$=DJMem.ReadStr(Z)
Canvas1.FillRect (210, 265, 778, 297, &HA8CCE0)
Canvas1.TextOut (221, 266, FStg$, &HFFFFFF, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
END IF
ELSE
COUNT=YY : IF COUNT>0 THEN
POSPTR=CURSEQ*42 : YY=14 : DO : DEC YY : DJMem.Position=POSPTR+YY : FByte=DJMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : DJMem.Position=POSPTR : FStg$=DJMem.ReadStr(Z)
Canvas1.FillRect (210, 265, 399, 297, &HA8CCE0)
Canvas1.TextOut (221, 266, FStg$, &HFFFFFF, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF (COUNT>14 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF COUNT>14 THEN
POSPTR=(CURSEQ*42)+14 : YY=14 : DO : DEC YY : DJMem.Position=POSPTR+YY : FByte=DJMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : DJMem.Position=POSPTR : FStg$=DJMem.ReadStr(Z)
Canvas1.FillRect (400, 265, 589, 297, &HA8CCE0)
Canvas1.TextOut (379, 266, FStg$, &HFFFFFF, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF (COUNT>28 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF COUNT>28 THEN
POSPTR=(CURSEQ*42)+28 : YY=14 : DO : DEC YY : DJMem.Position=POSPTR+YY : FByte=DJMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : DJMem.Position=POSPTR : FStg$=DJMem.ReadStr(Z)
Canvas1.FillRect (590, 265, 778, 297, &HA8CCE0)
Canvas1.TextOut (601, 266, FStg$, &HFFFFFF, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF WSDELAY>0 THEN SLEEP WSDELAY
END IF
END IF
END SUB
SUB Spell_FJWords
POSPTR=CURSEQ*42 : YY=42 : DO : DEC YY : FJMem.Position=POSPTR+YY : FByte=FJMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF SPLIT=0 THEN
IF YY>0 THEN
FOR Z=1 TO YY : FJMem.Position=POSPTR : FStg$=FJMem.ReadStr(Z)
Canvas1.FillRect (210, 313, 778, 345, &HA8CCE0)
Canvas1.TextOut (221, 314, FStg$, &H284C60, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
END IF
ELSE
COUNT=YY : IF COUNT>0 THEN
POSPTR=CURSEQ*42 : YY=14 : DO : DEC YY : FJMem.Position=POSPTR+YY : FByte=FJMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : FJMem.Position=POSPTR : FStg$=FJMem.ReadStr(Z)
Canvas1.FillRect (210, 313, 399, 345, &HA8CCE0)
Canvas1.TextOut (221, 314, FStg$, &H284C60, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF (COUNT>14 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF COUNT>14 THEN
POSPTR=(CURSEQ*42)+14 : YY=14 : DO : DEC YY : FJMem.Position=POSPTR+YY : FByte=FJMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : FJMem.Position=POSPTR : FStg$=FJMem.ReadStr(Z)
Canvas1.FillRect (400, 313, 589, 345, &HA8CCE0)
Canvas1.TextOut (379, 314, FStg$, &H284C60, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF (COUNT>28 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF COUNT>28 THEN
POSPTR=(CURSEQ*42)+28 : YY=14 : DO : DEC YY : FJMem.Position=POSPTR+YY : FByte=FJMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : FJMem.Position=POSPTR : FStg$=FJMem.ReadStr(Z)
Canvas1.FillRect (590, 313, 778, 345, &HA8CCE0)
Canvas1.TextOut (601, 314, FStg$, &H284C60, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF WSDELAY>0 THEN SLEEP WSDELAY
END IF
END IF
END SUB
SUB Spell_DVWords
POSPTR=CURSEQ*42 : YY=42 : DO : DEC YY : DVMem.Position=POSPTR+YY : FByte=DVMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF SPLIT=0 THEN
IF YY>0 THEN
FOR Z=1 TO YY : DVMem.Position=POSPTR : FStg$=DVMem.ReadStr(Z)
Canvas1.FillRect (210, 361, 778, 393, &HA8CCE0)
Canvas1.TextOut (221, 362, FStg$, &HFFFFFF, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
END IF
ELSE
COUNT=YY : IF COUNT>0 THEN
POSPTR=CURSEQ*42 : YY=14 : DO : DEC YY : DVMem.Position=POSPTR+YY : FByte=DVMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : DVMem.Position=POSPTR : FStg$=DVMem.ReadStr(Z)
Canvas1.FillRect (210, 361, 399, 393, &HA8CCE0)
Canvas1.TextOut (221, 362, FStg$, &HFFFFFF, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF (COUNT>14 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF COUNT>14 THEN
POSPTR=(CURSEQ*42)+14 : YY=14 : DO : DEC YY : DVMem.Position=POSPTR+YY : FByte=DVMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : DVMem.Position=POSPTR : FStg$=DVMem.ReadStr(Z)
Canvas1.FillRect (400, 361, 589, 393, &HA8CCE0)
Canvas1.TextOut (379, 362, FStg$, &HFFFFFF, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF (COUNT>28 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF COUNT>28 THEN
POSPTR=(CURSEQ*42)+28 : YY=14 : DO : DEC YY : DVMem.Position=POSPTR+YY : FByte=DVMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : DVMem.Position=POSPTR : FStg$=DVMem.ReadStr(Z)
Canvas1.FillRect (590, 361, 778, 393, &HA8CCE0)
Canvas1.TextOut (601, 362, FStg$, &HFFFFFF, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF WSDELAY>0 THEN SLEEP WSDELAY
END IF
END IF
END SUB
SUB Spell_FVWords
POSPTR=CURSEQ*42 : YY=42 : DO : DEC YY : FVMem.Position=POSPTR+YY : FByte=FVMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF SPLIT=0 THEN
IF YY>0 THEN
FOR Z=1 TO YY : FVMem.Position=POSPTR : FStg$=FVMem.ReadStr(Z)
Canvas1.FillRect (210, 409, 778, 441, &HA8CCE0)
Canvas1.TextOut (221, 410, FStg$, &H284C60, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
END IF
ELSE
COUNT=YY : IF COUNT>0 THEN
POSPTR=CURSEQ*42 : YY=14 : DO : DEC YY : FVMem.Position=POSPTR+YY : FByte=FVMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : FVMem.Position=POSPTR : FStg$=FVMem.ReadStr(Z)
Canvas1.FillRect (210, 409, 399, 441, &HA8CCE0)
Canvas1.TextOut (221, 410, FStg$, &H284C60, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF (COUNT>14 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF COUNT>14 THEN
POSPTR=(CURSEQ*42)+14 : YY=14 : DO : DEC YY : FVMem.Position=POSPTR+YY : FByte=FVMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : FVMem.Position=POSPTR : FStg$=FVMem.ReadStr(Z)
Canvas1.FillRect (400, 409, 589, 441, &HA8CCE0)
Canvas1.TextOut (379, 410, FStg$, &H284C60, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF (COUNT>28 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF COUNT>28 THEN
POSPTR=(CURSEQ*42)+28 : YY=14 : DO : DEC YY : FVMem.Position=POSPTR+YY : FByte=FVMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
FOR Z=1 TO YY : FVMem.Position=POSPTR : FStg$=FVMem.ReadStr(Z)
Canvas1.FillRect (590, 409, 778, 441, &HA8CCE0)
Canvas1.TextOut (601, 410, FStg$, &H284C60, -1)
IF SPDELAY>0 THEN SLEEP SPDELAY
NEXT
IF WSDELAY>0 THEN SLEEP WSDELAY
END IF
END IF
END SUB
SUB Show_DPWords
POSPTR=CURSEQ*42 : IF SPLIT=0 THEN
DPMem.Position=POSPTR : FStg$=DPMem.ReadStr(42) : Canvas1.TextOut (221, 171, FStg$, &HFFFFFF, -1)
ELSE
YY=42 : DO : DEC YY : DPMem.Position=POSPTR+YY : FByte=DPMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF YY>0 THEN
DPMem.Position=POSPTR : FStg$=DPMem.ReadStr(14) : Canvas1.TextOut (221, 171, FStg$, &HFFFFFF, -1)
IF (YY>14 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF YY>14 THEN
DPMem.Position=POSPTR+14 : FStg$=DPMem.ReadStr(14) : Canvas1.TextOut (379, 171, FStg$, &HFFFFFF, -1)
IF (YY>28 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF YY>28 THEN
DPMem.Position=POSPTR+28 : FStg$=DPMem.ReadStr(14) : Canvas1.TextOut (601, 171, FStg$, &HFFFFFF, -1)
IF WSDELAY>0 THEN SLEEP WSDELAY
END IF
END IF
END SUB
SUB Show_FPWords
POSPTR=CURSEQ*42 : IF SPLIT=0 THEN
FPMem.Position=POSPTR : FStg$=FPMem.ReadStr(42) : Canvas1.TextOut (221, 218, FStg$, &H284C60, -1)
ELSE
YY=42 : DO : DEC YY : FPMem.Position=POSPTR+YY : FByte=FPMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF YY>0 THEN
FPMem.Position=POSPTR : FStg$=FPMem.ReadStr(14) : Canvas1.TextOut (221, 218, FStg$, &H284C60, -1)
IF (YY>14 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF YY>14 THEN
FPMem.Position=POSPTR+14 : FStg$=FPMem.ReadStr(14) : Canvas1.TextOut (379, 218, FStg$, &H284C60, -1)
IF (YY>28 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF YY>28 THEN
FPMem.Position=POSPTR+28 : FStg$=FPMem.ReadStr(14) : Canvas1.TextOut (601, 218, FStg$, &H284C60, -1)
IF WSDELAY>0 THEN SLEEP WSDELAY
END IF
END IF
END SUB
SUB Show_DJWords
POSPTR=CURSEQ*42 : IF SPLIT=0 THEN
DJMem.Position=POSPTR : FStg$=DJMem.ReadStr(42) : Canvas1.TextOut (221, 266, FStg$, &HFFFFFF, -1)
ELSE
YY=42 : DO : DEC YY : DJMem.Position=POSPTR+YY : FByte=DJMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF YY>0 THEN
DJMem.Position=POSPTR : FStg$=DJMem.ReadStr(14) : Canvas1.TextOut (221, 266, FStg$, &HFFFFFF, -1)
IF (YY>14 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF YY>14 THEN
DJMem.Position=POSPTR+14 : FStg$=DJMem.ReadStr(14) : Canvas1.TextOut (379, 266, FStg$, &HFFFFFF, -1)
IF (YY>28 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF YY>28 THEN
DJMem.Position=POSPTR+28 : FStg$=DJMem.ReadStr(14) : Canvas1.TextOut (601, 266, FStg$, &HFFFFFF, -1)
IF WSDELAY>0 THEN SLEEP WSDELAY
END IF
END IF
END SUB
SUB Show_FJWords
POSPTR=CURSEQ*42 : IF SPLIT=0 THEN
FJMem.Position=POSPTR : FStg$=FJMem.ReadStr(42) : Canvas1.TextOut (221, 314, FStg$, &H284C60, -1)
ELSE
YY=42 : DO : DEC YY : FJMem.Position=POSPTR+YY : FByte=FJMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF YY>0 THEN
FJMem.Position=POSPTR : FStg$=FJMem.ReadStr(14) : Canvas1.TextOut (221, 314, FStg$, &H284C60, -1)
IF (YY>14 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF YY>14 THEN
FJMem.Position=POSPTR+14 : FStg$=FJMem.ReadStr(14) : Canvas1.TextOut (379, 314, FStg$, &H284C60, -1)
IF (YY>28 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF YY>28 THEN
FJMem.Position=POSPTR+28 : FStg$=FJMem.ReadStr(14) : Canvas1.TextOut (601, 314, FStg$, &H284C60, -1)
IF WSDELAY>0 THEN SLEEP WSDELAY
END IF
END IF
END SUB
SUB Show_DVWords
POSPTR=CURSEQ*42 : IF SPLIT=0 THEN
DVMem.Position=POSPTR : FStg$=DVMem.ReadStr(42) : Canvas1.TextOut (221, 362, FStg$, &HFFFFFF, -1)
ELSE
YY=42 : DO : DEC YY : DVMem.Position=POSPTR+YY : FByte=DVMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF YY>0 THEN
DVMem.Position=POSPTR : FStg$=DVMem.ReadStr(14) : Canvas1.TextOut (221, 362, FStg$, &HFFFFFF, -1)
IF (YY>14 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF YY>14 THEN
DVMem.Position=POSPTR+14 : FStg$=DVMem.ReadStr(14) : Canvas1.TextOut (379, 362, FStg$, &HFFFFFF, -1)
IF (YY>28 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF YY>28 THEN
DVMem.Position=POSPTR+28 : FStg$=DVMem.ReadStr(14) : Canvas1.TextOut (601, 362, FStg$, &HFFFFFF, -1)
IF WSDELAY>0 THEN SLEEP WSDELAY
END IF
END IF
END SUB
SUB Show_FVWords
POSPTR=CURSEQ*42 : IF SPLIT=0 THEN
FVMem.Position=POSPTR : FStg$=FVMem.ReadStr(42) : Canvas1.TextOut (221, 410, FStg$, &H284C60, -1)
ELSE
YY=42 : DO : DEC YY : FVMem.Position=POSPTR+YY : FByte=FVMem.ReadNum(1) : LOOP UNTIL (FByte<>32 OR YY=0)
IF (YY>=0 AND FByte<>32) THEN INC YY
IF YY>0 THEN
FVMem.Position=POSPTR : FStg$=FVMem.ReadStr(14) : Canvas1.TextOut (221, 410, FStg$, &H284C60, -1)
IF (YY>14 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF YY>14 THEN
FVMem.Position=POSPTR+14 : FStg$=FVMem.ReadStr(14) : Canvas1.TextOut (379, 410, FStg$, &H284C60, -1)
IF (YY>28 AND WSDELAY>0) THEN SLEEP WSDELAY
END IF
IF YY>28 THEN
FVMem.Position=POSPTR+28 : FStg$=FVMem.ReadStr(14) : Canvas1.TextOut (601, 410, FStg$, &H284C60, -1)
IF WSDELAY>0 THEN SLEEP WSDELAY
END IF
END IF
END SUB
SUB Next_Words
Clear_Words
IF DP=1 THEN
IF SPELL=1 THEN
Spell_DPWords
ELSE
Show_DPWords
END IF
END IF
IF (DP=1 AND FP=1 AND RVDELAY>0) THEN SLEEP RVDELAY
IF FP=1 THEN
IF SPELL=1 THEN
Spell_FPWords
ELSE
Show_FPWords
END IF
END IF
IF (DP=1 AND FP=1 AND NAVDELAY>0) THEN SLEEP NAVDELAY
IF DJ=1 THEN
IF SPELL=1 THEN
Spell_DJWords
ELSE
Show_DJWords
END IF
END IF
IF (DJ=1 AND FJ=1 AND RVDELAY>0) THEN SLEEP RVDELAY
IF FJ=1 THEN
IF SPELL=1 THEN
Spell_FJWords
ELSE
Show_FJWords
END IF
END IF
IF (DJ=1 AND FJ=1 AND NAVDELAY>0) THEN SLEEP NAVDELAY
IF DV=1 THEN
IF SPELL=1 THEN
Spell_DVWords
ELSE
Show_DVWords
END IF
END IF
IF (DV=1 AND FV=1 AND RVDELAY>0) THEN SLEEP RVDELAY
IF FV=1 THEN
IF SPELL=1 THEN
Spell_FVWords
ELSE
Show_FVWords
END IF
END IF
IF (DV=1 AND FV=1 AND NAVDELAY>0) THEN SLEEP NAVDELAY
OLDSEQ=CURSEQ
IF SEQRND=0 THEN
INC CURSEQ : IF CURSEQ>BLen(CURCP+44) THEN CURSEQ=ALen(CURCP+44)
ELSE
CURSEQ=ALen(CURCP+44)+RND(CLen(CURCP+44))-1 : IF CURSEQ<ALen(CURCP+44) THEN CURSEQ=ALen(CURCP+44)
END IF
NX=1 : FWD=0 : NEXTSEQ=CURSEQ
END SUB
SUB Reveal_Words
IF NX=1 THEN
CURSEQ=OLDSEQ : NX=2
IF (DP=0 AND FP=1) THEN
IF SPELL=1 THEN
Spell_DPWords
ELSE
Show_DPWords
END IF
ELSEIF (DP=1 AND FP=0) THEN
IF SPELL=1 THEN
Spell_FPWords
ELSE
Show_FPWords
END IF
END IF
IF (DJ=0 AND FJ=1) THEN
IF SPELL=1 THEN
Spell_DJWords
ELSE
Show_DJWords
END IF
ELSEIF (DJ=1 AND FJ=0) THEN
IF SPELL=1 THEN
Spell_FJWords
ELSE
Show_FJWords
END IF
END IF
IF (DV=0 AND FV=1) THEN
IF SPELL=1 THEN
Spell_DVWords
ELSE
Show_DVWords
END IF
ELSEIF (DV=1 AND FV=0) THEN
IF SPELL=1 THEN
Spell_FVWords
ELSE
Show_FVWords
END IF
END IF
CURSEQ=NEXTSEQ : NX=0
END IF
END SUB
SUB Show_Up
POSPTR=CURSEQ*42 : IF LRN=0 THEN
DPMem.Position=POSPTR : FStg$=DPMem.ReadStr(42) : Canvas1.TextOut (221, 171, FStg$, &HFFFFFF, -1)
FPMem.Position=POSPTR : FStg$=FPMem.ReadStr(42) : Canvas1.TextOut (221, 218, FStg$, &H284C60, -1)
DJMem.Position=POSPTR : FStg$=DJMem.ReadStr(42) : Canvas1.TextOut (221, 266, FStg$, &HFFFFFF, -1)
FJMem.Position=POSPTR : FStg$=FJMem.ReadStr(42) : Canvas1.TextOut (221, 314, FStg$, &H284C60, -1)
DVMem.Position=POSPTR : FStg$=DVMem.ReadStr(42) : Canvas1.TextOut (221, 362, FStg$, &HFFFFFF, -1)
FVMem.Position=POSPTR : FStg$=FVMem.ReadStr(42) : Canvas1.TextOut (221, 410, FStg$, &H284C60, -1)
ELSE
DS1Mem.Position=POSPTR : FStg$=DS1Mem.ReadStr(42) : Canvas1.TextOut (221, 16, FStg$, &HFFFFFF, -1)
DS2Mem.Position=POSPTR : FStg$=DS2Mem.ReadStr(42) : Canvas1.TextOut (221, 44, FStg$, &HFFFFFF, -1)
FS1Mem.Position=POSPTR : FStg$=FS1Mem.ReadStr(42) : Canvas1.TextOut (221, 93, FStg$, &H284C60, -1)
FS2Mem.Position=POSPTR : FStg$=FS2Mem.ReadStr(42) : Canvas1.TextOut (221, 121, FStg$, &H284C60, -1)
END IF
END SUB
SUB Show_Down
OLDSEQ=CURSEQ : POSPTR=CURSEQ*42 : IF LRN=0 THEN
DPMem.Position=POSPTR : FStg$=DPMem.ReadStr(42) : Canvas1.TextOut (221, 171, FStg$, &HFFFFFF, -1)
FPMem.Position=POSPTR : FStg$=FPMem.ReadStr(42) : Canvas1.TextOut (221, 218, FStg$, &H284C60, -1)
DJMem.Position=POSPTR : FStg$=DJMem.ReadStr(42) : Canvas1.TextOut (221, 266, FStg$, &HFFFFFF, -1)
FJMem.Position=POSPTR : FStg$=FJMem.ReadStr(42) : Canvas1.TextOut (221, 314, FStg$, &H284C60, -1)
DVMem.Position=POSPTR : FStg$=DVMem.ReadStr(42) : Canvas1.TextOut (221, 362, FStg$, &HFFFFFF, -1)
FVMem.Position=POSPTR : FStg$=FVMem.ReadStr(42) : Canvas1.TextOut (221, 410, FStg$, &H284C60, -1)
ELSE
DS1Mem.Position=POSPTR : FStg$=DS1Mem.ReadStr(42) : Canvas1.TextOut (221, 16, FStg$, &HFFFFFF, -1)
DS2Mem.Position=POSPTR : FStg$=DS2Mem.ReadStr(42) : Canvas1.TextOut (221, 44, FStg$, &HFFFFFF, -1)
FS1Mem.Position=POSPTR : FStg$=FS1Mem.ReadStr(42) : Canvas1.TextOut (221, 93, FStg$, &H284C60, -1)
FS2Mem.Position=POSPTR : FStg$=FS2Mem.ReadStr(42) : Canvas1.TextOut (221, 121, FStg$, &H284C60, -1)
END IF
END SUB
SUB Up_SW
IF LRN=0 THEN
Clear_Words : Show_Up : OLDSEQ=CURSEQ : INC CURSEQ : IF CURSEQ>BLen(CURCP+44) THEN CURSEQ=ALen(CURCP+44)
ELSE
Clear_Sentences : Show_Up : OLDSEQ=CURSEQ : INC CURSEQ : IF CURSEQ>BLen(CURCP) THEN CURSEQ=ALen(CURCP)
END IF
NEXTSEQ=CURSEQ : NX=1 : FWD=0
END SUB
SUB Down_SW
NEXTSEQ=OLDSEQ : CURSEQ=OLDSEQ : DEC CURSEQ
IF LRN=0 THEN
Clear_Words : IF CURSEQ<ALen(CURCP+44) THEN CURSEQ=BLen(CURCP+44)
Show_Down
ELSE
Clear_Sentences : IF CURSEQ<ALen(CURCP) THEN CURSEQ=BLen(CURCP)
Show_Down
END IF
CURSEQ=NEXTSEQ : NX=1 : FWD=1
END SUB
SUB LDS1_Check (Number AS BYTE)
File.CLOSE
IF COUNT<9 THEN
SHOWMESSAGE(FName$(Number)+"\n\n A @ marker is missing - CATEGORY: "+CHR$(49+COUNT))
ELSEIF (COUNT>8 AND COUNT<19) THEN
SHOWMESSAGE(FName$(Number)+"\n\n A @ marker is missing - CATEGORY: 1"+CHR$(48+(COUNT-9)))
ELSEIF (COUNT>18 AND COUNT<29) THEN
SHOWMESSAGE(FName$(Number)+"\n\n A @ marker is missing - CATEGORY: 2"+CHR$(48+(COUNT-19)))
END IF
Application.Terminate
END SUB
SUB LDS2_Check (Number AS BYTE)
File.CLOSE
IF COUNT<9 THEN
SHOWMESSAGE(FName$(Number)+"\n\nWord/Sentence declaration is out of Range 2-1500 - CATEGORY: "+CHR$(49+COUNT))
ELSEIF (COUNT>8 AND COUNT<19) THEN
SHOWMESSAGE(FName$(Number)+"\n\nWord/Sentence declaration is out of Range 2-1500 - CATEGORY: 1"+CHR$(48+(COUNT-9)))
ELSEIF (COUNT>18 AND COUNT<29) THEN
SHOWMESSAGE(FName$(Number)+"\n\nWord/Sentence declaration is out of Range 2-1500 - CATEGORY: 2"+CHR$(48+(COUNT-19)))
END IF
Application.Terminate
END SUB
SUB LDS3_Check (Number AS BYTE)
File.CLOSE
IF COUNT<9 THEN
SHOWMESSAGE(FName$(Number)+"\n\nA * marker is missing - CATEGORY: "+CHR$(49+COUNT))
ELSEIF (COUNT>8 AND COUNT<19) THEN
SHOWMESSAGE(FName$(Number)+"\n\nA * marker is missing - CATEGORY: 1"+CHR$(48+(COUNT-9)))
ELSEIF (COUNT>18 AND COUNT<29) THEN
SHOWMESSAGE(FName$(Number)+"\n\nA * marker is missing - CATEGORY: 2"+CHR$(48+(COUNT-19)))
END IF
Application.Terminate
END SUB
SUB Load_Files (Number AS BYTE)
Totals(Number)=0 : COUNT=0
IF DIREXISTS (DName$(0)) <> 0 THEN
IF FILEEXISTS (FName$(Number)) <> 0 THEN
IF File.OPEN (FName$(Number), fmOpenRead) <> 0 THEN
FLen=File.Size
IF (FLen>=4094 AND FLen<103000) THEN
DO
FByte=File.ReadNum(1)
IF FByte=64 THEN
FStg$=File.ReadBinStr(4) : FWord=VAL(FStg$)
IF (FWord>1 AND FWord<1501) THEN
File.Position=File.Position+2
IF Number=2 THEN
CLen(COUNT)=FWord
ALen(COUNT)=Totals(Number)
Totals(Number)=Totals(Number)+FWord
BLen(COUNT)=Totals(Number)-1
FOR Z=1 TO FWord : DS1Mem.CopyFrom(File, 42) : File.Position=File.Position+2
DS2Mem.CopyFrom(File, 42) : File.Position=File.Position+2 : NEXT
ELSEIF Number=3 THEN
CLen(COUNT+22)=FWord
ALen(COUNT+22)=Totals(Number)
Totals(Number)=Totals(Number)+FWord
BLen(COUNT+22)=Totals(Number)-1
FOR Z=1 TO FWord : FS1Mem.CopyFrom(File, 42) : File.Position=File.Position+2
FS2Mem.CopyFrom(File, 42) : File.Position=File.Position+2 : NEXT
ELSEIF Number=4 THEN
CLen(COUNT+44)=FWord
ALen(COUNT+44)=Totals(Number)
Totals(Number)=Totals(Number)+FWord
BLen(COUNT+44)=Totals(Number)-1
FOR Z=1 TO FWord : DPMem.CopyFrom(File, 42) : File.Position=File.Position+2 : NEXT
ELSEIF Number=5 THEN
CLen(COUNT+66)=FWord
ALen(COUNT+66)=Totals(Number)
Totals(Number)=Totals(Number)+FWord
BLen(COUNT+66)=Totals(Number)-1
FOR Z=1 TO FWord : FPMem.CopyFrom(File, 42) : File.Position=File.Position+2 : NEXT
ELSEIF Number=6 THEN
CLen(COUNT+88)=FWord
ALen(COUNT+88)=Totals(Number)
Totals(Number)=Totals(Number)+FWord
BLen(COUNT+88)=Totals(Number)-1
FOR Z=1 TO FWord : DJMem.CopyFrom(File, 42) : File.Position=File.Position+2 : NEXT
ELSEIF Number=7 THEN
CLen(COUNT+110)=FWord
ALen(COUNT+110)=Totals(Number)
Totals(Number)=Totals(Number)+FWord
BLen(COUNT+110)=Totals(Number)-1
FOR Z=1 TO FWord : FJMem.CopyFrom(File, 42) : File.Position=File.Position+2 : NEXT
ELSEIF Number=8 THEN
CLen(COUNT+132)=FWord
ALen(COUNT+132)=Totals(Number)
Totals(Number)=Totals(Number)+FWord
BLen(COUNT+132)=Totals(Number)-1
FOR Z=1 TO FWord : DVMem.CopyFrom(File, 42) : File.Position=File.Position+2 : NEXT
ELSEIF Number=9 THEN
CLen(COUNT+154)=FWord
ALen(COUNT+154)=Totals(Number)
Totals(Number)=Totals(Number)+FWord
BLen(COUNT+154)=Totals(Number)-1
FOR Z=1 TO FWord : FVMem.CopyFrom(File, 42) : File.Position=File.Position+2 : NEXT
END IF
FByte=File.ReadNum(1)
IF FByte=42 THEN
File.Position=File.Position+2
INC COUNT
ELSE
LDS3_Check(Number)
END IF
ELSE
LDS2_Check(Number)
END IF
ELSE
LDS1_Check(Number)
END IF
LOOP UNTIL COUNT=22
File.CLOSE
ELSE
File.CLOSE
SHOWMESSAGE(FName$(Number)+"\n\nWrong File Size (not between 4094 and 99000 Bytes in size)")
Application.Terminate
END IF
ELSE
SHOWMESSAGE(FName$(Number)+"\n\n The above file was Not Loaded")
Application.Terminate
END IF
ELSE
SHOWMESSAGE(FName$(Number)+"\n\n The above file was Not Found")
Application.Terminate
END IF
ELSE
SHOWMESSAGE(DName$(0)+"\n\nThis Directory/Folder was Not Found")
Application.Terminate
END IF
END SUB
SUB LT1_Check (Number AS BYTE)
IF YY<9 THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: "+CHR$(49+Z)+" COLUMN: "+CHR$(49+YY))
ELSEIF (YY>8 AND YY<19) THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: "+CHR$(49+Z)+" COLUMN: 1"+CHR$(48+(YY-9)))
ELSEIF (YY>18 AND YY<29) THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: "+CHR$(49+Z)+" COLUMN: 2"+CHR$(48+(YY-19)))
END IF
END SUB
SUB LT2_Check (Number AS BYTE)
IF YY<9 THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: 1"+CHR$(48+(Z-9))+" COLUMN: "+CHR$(49+YY))
ELSEIF (YY>8 AND YY<19) THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: 1"+CHR$(48+(Z-9))+" COLUMN: 1"+CHR$(48+(YY-9)))
ELSEIF (YY>18 AND YY<29) THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: 1"+CHR$(48+(Z-9))+" COLUMN: 2"+CHR$(48+(YY-19)))
END IF
END SUB
SUB LT3_Check (Number AS BYTE)
IF YY<9 THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: 2"+CHR$(48+(Z-19))+" COLUMN: "+CHR$(49+YY))
ELSEIF (YY>8 AND YY<19) THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: 2"+CHR$(48+(Z-19))+" COLUMN: 1"+CHR$(48+(YY-9)))
ELSEIF (YY>18 AND YY<29) THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: 2"+CHR$(48+(Z-19))+" COLUMN: 2"+CHR$(48+(YY-19)))
END IF
END SUB
SUB LT4_Check (Number AS BYTE)
IF YY<9 THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: 3"+CHR$(48+(Z-29))+" COLUMN: "+CHR$(49+YY))
ELSEIF (YY>8 AND YY<19) THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: 3"+CHR$(48+(Z-29))+" COLUMN: 1"+CHR$(48+(YY-9)))
ELSEIF (YY>18 AND YY<29) THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: 3"+CHR$(48+(Z-29))+" COLUMN: 2"+CHR$(48+(YY-19)))
END IF
END SUB
SUB LT5_Check (Number AS BYTE)
IF YY<9 THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: 4"+CHR$(48+(Z-39))+" COLUMN: "+CHR$(49+YY))
ELSEIF (YY>8 AND YY<19) THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: 4"+CHR$(48+(Z-39))+" COLUMN: 1"+CHR$(48+(YY-9)))
ELSEIF (YY>18 AND YY<29) THEN
SHOWMESSAGE(FName$(Number)+"\n\n Invalid Character - LINE: 4"+CHR$(48+(Z-39))+" COLUMN: 2"+CHR$(48+(YY-19)))
END IF
END SUB
SUB Load_Titles (Number AS BYTE)
IF DIREXISTS (DName$(0)) <> 0 THEN
IF FILEEXISTS (FName$(Number)) <> 0 THEN
IF File.OPEN (FName$(Number), fmOpenRead) <> 0 THEN
FLen=File.Size : IF FLen=1366 THEN
FOR Z=0 TO 43 : FPos=File.Position : FOR YY=0 TO 28 : FByte=File.ReadNum(1)
IF (FByte<32 OR (FByte>125 AND FByte<191)) THEN
IF Z<9 THEN
LT1_Check(Number)
ELSEIF (Z>8 AND Z<19) THEN
LT2_Check(Number)
ELSEIF (Z>18 AND Z<29) THEN
LT3_Check(Number)
ELSEIF (Z>28 AND Z<39) THEN
LT4_Check(Number)
ELSEIF (Z>38 AND Z<49) THEN
LT5_Check(Number)
END IF
File.CLOSE : Application.Terminate
END IF
NEXT
File.Position=FPos
IF Number=0 THEN
DTitles(Z)=File.ReadStr(29)
ELSE
FTitles(Z)=File.ReadStr(29)
END IF
File.Position=File.Position+2
NEXT
File.CLOSE
ELSE
File.CLOSE
IF FLen<1366 THEN
SHOWMESSAGE(FName$(Number)+"\n\n This Titles file is Too Small")
ELSEIF FLen>1366 THEN
SHOWMESSAGE(FName$(Number)+"\n\n This Titles file is Too Large")
END IF
Application.Terminate
END IF
ELSE
SHOWMESSAGE(FName$(Number)+"\n\n This Titles file was Not Loaded")
Application.Terminate
END IF
ELSE
SHOWMESSAGE(FName$(Number)+"\n\n This Titles file was Not Found")
Application.Terminate
END IF
ELSE
SHOWMESSAGE(DName$(0)+"\n\nThis Directory/Folder was Not Found")
Application.Terminate
END IF
END SUB
SUB Load_FNSpeech
IF DIREXISTS (DName$(0)) <> 0 THEN
IF FILEEXISTS (FName$(13)) <> 0 THEN
IF File.OPEN (FName$(13), fmOpenRead) <> 0 THEN
FLen=File.Size : IF (FLen>30 AND FLen<70001) THEN
FStg$=File.ReadBinStr(4) : FWord=VAL(FStg$) : FNNUM=FWord
IF (FWord>0 AND FWord<1501) THEN
File.Position=File.Position+2 : COUNT=0
DO : FNFN$(COUNT+1)=File.ReadLine : FPos=File.Position : INC COUNT
LOOP UNTIL (COUNT=FNNUM OR FPos=>FLen)
IF COUNT=FNNUM THEN
COUNT=0 : DO : FStg$=File.ReadBinStr(4) : FWord=VAL(FStg$) : YY=FWord*25
IF (FWord>0 AND FWord<1501) THEN
File.Position=File.Position+2 : FNAss(FWord)=1 : COUNT=1 : Z=0
DO : FStg$=File.ReadBinStr(4) : FWord=VAL(FStg$)
IF (FWord>0 AND FWord<(FNNUM+1)) THEN
FNSyl(YY+Z)=FWord : INC Z
ELSE
IF (FWord=9999 AND Z=0) THEN
SHOWMESSAGE(FName$(13)+"\n\n No Word (WAV) Assignment - Only 9999")
Application.Terminate
END IF
IF FWord<>9999 THEN
SHOWMESSAGE(FName$(13)+"\n\nNumber of WAVs files declared is Out Of Range [1-"+STR$(FNNUM)+"]\nAssignment "+STR$(FWord)+" - Or a 9999 marker is Invalid")
Application.Terminate
END IF
END IF
LOOP UNTIL (FWord=9999 AND Z>0)
File.Position=File.Position+2
IF Z>26 THEN
SHOWMESSAGE(FName$(13)+"\n\n Too many ("+STR$(Z)+") Word (WAV) Assignments")
Application.Terminate
ELSE
FNSyl(YY+Z)=-1
END IF
ELSE
IF FWord<>8888 THEN
SHOWMESSAGE(FName$(13)+"\n\nSpeaking Word To Be Activated is Out Of Range [1-"+STR$(FNNUM)+"]\nWord Assignment "+STR$(FWord)+" - Or there are no Assignments")
Application.Terminate
END IF
IF (FWord=8888 AND COUNT=0) THEN
SHOWMESSAGE(FName$(13)+"\n\n There are no Word Assignments")
Application.Terminate
END IF
END IF
LOOP UNTIL (FWord=8888)
ELSE
SHOWMESSAGE(FName$(13)+"\n\n Invalid File Format")
Application.Terminate
END IF
ELSE
SHOWMESSAGE(FName$(13)+"\n\nThe number of WAV files declared is Out Of Range [1-1500]")
Application.Terminate
END IF
File.CLOSE
ELSE
File.CLOSE
IF FLen<31 THEN
SHOWMESSAGE(FName$(13)+"\n\n This Speech file is Too Small")
ELSEIF FLen>70000 THEN
SHOWMESSAGE(FName$(13)+"\n\n This Speech file is Too Large")
END IF
Application.Terminate
END IF
ELSE
SHOWMESSAGE(FName$(13)+"\n\n This Speech file was Not Loaded")
Application.Terminate
END IF
ELSE
SHOWMESSAGE(FName$(13)+"\n\n This Speech file was Not Found")
Application.Terminate
END IF
ELSE
SHOWMESSAGE(DName$(LANG)+"\n\nThis Directory/Folder was Not Found")
Application.Terminate
END IF
END SUB
SUB Load_FSSpeech
IF DIREXISTS (DName$(0)) <> 0 THEN
IF FILEEXISTS (FName$(11)) <> 0 THEN
IF File.OPEN (FName$(11), fmOpenRead) <> 0 THEN
FLen=File.Size : IF (FLen>30 AND FLen<70001) THEN
FStg$=File.ReadBinStr(4) : FWord=VAL(FStg$) : FSNUM=FWord
IF (FWord>0 AND FWord<1501) THEN
File.Position=File.Position+2 : COUNT=0
DO : FSFN$(COUNT+1)=File.ReadLine : FPos=File.Position : INC COUNT
LOOP UNTIL (COUNT=FSNUM OR FPos=>FLen)
IF COUNT=FSNUM THEN
COUNT=0 : DO : FStg$=File.ReadBinStr(4) : FWord=VAL(FStg$) : YY=FWord*25
IF (FWord>0 AND FWord<1501) THEN
File.Position=File.Position+2 : FSAss(FWord)=1 : COUNT=1 : Z=0
DO : FStg$=File.ReadBinStr(4) : FWord=VAL(FStg$)
IF (FWord>0 AND FWord<(FSNUM+1)) THEN
FSSyl(YY+Z)=FWord : INC Z
ELSE
IF (FWord=9999 AND Z=0) THEN
SHOWMESSAGE(FName$(11)+"\n\n No Sentence (WAV) Assignment - Only 9999")
Application.Terminate
END IF
IF FWord<>9999 THEN
SHOWMESSAGE(FName$(11)+"\n\nNumber of WAVs files declared is Out Of Range [1-"+STR$(FSNUM)+"]\nAssignment "+STR$(FWord)+" - Or a 9999 marker is Invalid")
Application.Terminate
END IF
END IF
LOOP UNTIL (FWord=9999 AND Z>0)
File.Position=File.Position+2
IF Z>26 THEN
SHOWMESSAGE(FName$(11)+"\n\n Too many ("+STR$(Z)+") Sentence (WAV) Assignments")
Application.Terminate
ELSE
FSSyl(YY+Z)=-1
END IF
ELSE
IF FWord<>8888 THEN
SHOWMESSAGE(FName$(11)+"\n\nSpeaking Sentence To Be Activated is Out Of Range [1-"+STR$(FSNUM)+"]\nSentence Assignment "+STR$(FWord)+" - Or there are no Assignments")
Application.Terminate
END IF
IF (FWord=8888 AND COUNT=0) THEN
SHOWMESSAGE(FName$(11)+"\n\n There are no Sentence Assignments")
Application.Terminate
END IF
END IF
LOOP UNTIL (FWord=8888)
ELSE
SHOWMESSAGE(FName$(11)+"\n\n Invalid File Format")
Application.Terminate
END IF
ELSE
SHOWMESSAGE(FName$(11)+"\n\nThe number of WAV files declared is Out Of Range [1-1500]")
Application.Terminate
END IF
File.CLOSE
ELSE
File.CLOSE
IF FLen<31 THEN
SHOWMESSAGE(FName$(11)+"\n\n This Speech file is Too Small")
ELSEIF FLen>70000 THEN
SHOWMESSAGE(FName$(11)+"\n\n This Speech file is Too Large")
END IF
Application.Terminate
END IF
ELSE
SHOWMESSAGE(FName$(11)+"\n\n This Speech file was Not Loaded")
Application.Terminate
END IF
ELSE
SHOWMESSAGE(FName$(11)+"\n\n This Speech file was Not Found")
Application.Terminate
END IF
ELSE
SHOWMESSAGE(DName$(LANG)+"\n\nThis Directory/Folder was Not Found")
Application.Terminate
END IF
END SUB
SUB SO_Change
IF SO=0 THEN
Canvas1.Rectangle (311, 457, 400, 487, &H000000)
Canvas1.FillRect (313, 459, 398, 485, &H00A0A0)
Canvas1.Line (312, 458, 398, 458, &H00C0C0)
Canvas1.Line (398, 459, 398, 485, &H00C0C0)
Canvas1.Line (312, 458, 312, 485, &H008080)
Canvas1.Line (313, 485, 398, 485, &H008080)
Canvas1.TextOut (308, 457, " SPEAK", &H007070, -1)
Canvas1.TextOut (308, 457, " S", &HFFFFFF, -1)
ELSE
Canvas1.Rectangle (311, 457, 400, 487, &H000000)
Canvas1.FillRect (313, 459, 398, 485, &H00B0D0)
Canvas1.Line (312, 458, 398, 458, &H00C0E0)
Canvas1.Line (398, 459, 398, 485, &H00C0E0)
Canvas1.Line (312, 458, 312, 485, &H00A0C0)
Canvas1.Line (313, 485, 398, 485, &H00A0C0)
Canvas1.TextOut (308, 457, " SPEAK", &H0080A0, -1)
IF ((mmbp=41) OR (mmbp=51) OR (mmbp=61)) THEN
Canvas1.TextOut (308, 457, " SPEAK", &HFFFFFF, -1)
END IF
END IF
END SUB
SUB SO_Check
IF SO=0 THEN
SO=1
ELSE
SO=0
END IF
SO_Change
END SUB
SUB PO_Change
IF PO=0 THEN
Canvas1.Rectangle (3, 457, 92, 487, &H000000)
Canvas1.FillRect (5, 459, 90, 485, &H00A0A0)
Canvas1.Line (4, 458, 90, 458, &H00C0C0)
Canvas1.Line (90, 459, 90, 485, &H00C0C0)
Canvas1.Line (4, 458, 4, 485, &H008080)
Canvas1.Line (5, 485, 90, 485, &H008080)
Canvas1.TextOut (0, 457, " PAUSE", &H007070, -1)
Canvas1.TextOut (0, 457, " P", &HFFFFFF, -1)
ELSE
Canvas1.Rectangle (3, 457, 92, 487, &H000000)
Canvas1.FillRect (5, 459, 90, 485, &H00B0D0)
Canvas1.Line (4, 458, 90, 458, &H00C0E0)
Canvas1.Line (90, 459, 90, 485, &H00C0E0)
Canvas1.Line (4, 458, 4, 485, &H00A0C0)
Canvas1.Line (5, 485, 90, 485, &H00A0C0)
Canvas1.TextOut (0, 457, " PAUSE", &H0080A0, -1)
END IF
END SUB
SUB PO_Check
PST=0 : PO=1 : PO_Change
IF STOPDELAY>0 THEN
SLEEP STOPDELAY : PO=0 : PO_Change
ELSE
PST=1 : AMT=1
END IF
END SUB
SUB MN_Change
IF MN=0 THEN
Canvas1.Rectangle (414, 457, 524, 487, &H000000)
Canvas1.FillRect (416, 459, 522, 485, &H00A0A0)
Canvas1.Line (415, 458, 522, 458, &H00C0C0)
Canvas1.Line (522, 459, 522, 485, &H00C0C0)
Canvas1.Line (415, 458, 415, 485, &H008080)
Canvas1.Line (416, 485, 522, 485, &H008080)
Canvas1.TextOut (411, 457, " MANUAL", &H007070, -1)
Canvas1.TextOut (411, 457, " M", &HFFFFFF, -1)
ELSE
Canvas1.Rectangle (414, 457, 524, 487, &H000000)
Canvas1.FillRect (416, 459, 522, 485, &H00B0D0)
Canvas1.Line (415, 458, 522, 458, &H00C0E0)
Canvas1.Line (522, 459, 522, 485, &H00C0E0)
Canvas1.Line (415, 458, 415, 485, &H00A0C0)
Canvas1.Line (416, 485, 522, 485, &H00A0C0)
Canvas1.TextOut (429, 457, " AUTO", &H0080A0, -1)
Canvas1.TextOut (429, 457, " A", &HFFFFFF, -1)
END IF
END SUB
SUB MN_Check
IF MN=0 THEN
MN=1
ELSE
MN=0
END IF
MN_Change
END SUB
SUB Auto_Mode
AMT=1 : IF LRN=0 THEN
Clear_Words : Next_Words
IF (DP=1 AND FP=1 AND DJ=1 AND FJ=1 AND DV=1 AND FV=1) THEN
IF AMDELAY>0 THEN SLEEP AMDELAY
SO_Check : Speak_ToMe : SO_Check
ELSEIF (DP=0 AND FP=0 AND DJ=0 AND FJ=0 AND DV=0 AND FV=0) THEN
ELSE
IF RVDELAY>0 THEN SLEEP RVDELAY
Reveal_Words : IF AMDELAY>0 THEN SLEEP AMDELAY
SO_Check : Speak_ToMe : SO_Check
END IF
ELSE
Clear_Sentences : Next_Sentences
IF (DS=1 AND FS=1) THEN
IF AMDELAY>0 THEN SLEEP AMDELAY
SO_Check : Speak_ToMe : SO_Check
ELSEIF (DS=0 AND FS=0) THEN
ELSE
IF RVDELAY>0 THEN SLEEP RVDELAY
Reveal_Sentences : IF AMDELAY>0 THEN SLEEP AMDELAY
SO_Check : Speak_ToMe : SO_Check
END IF
END IF
AMT=0
END SUB
SUB Auto_Timer
AutoTimer.Interval=3000 : IF (AMT=0 AND MN=1) THEN Auto_Mode
END SUB
SUB DS_Change
IF DS=1 THEN
Canvas1.Rectangle (16, 38, 43, 58, &H000000)
Canvas1.FillRect (18, 40, 41, 56, &H80E0F0)
Canvas1.Line (17, 39, 41, 39, &H90F0FF)
Canvas1.Line (41, 40, 41, 56, &H90F0FF)
Canvas1.Line (17, 39, 17, 56, &H70D0E0)
Canvas1.Line (17, 56, 41, 56, &H70D0E0)
ELSE
Canvas1.Rectangle (16, 38, 43, 58, &H000000)
Canvas1.FillRect (18, 40, 41, 56, &H98BCD0)
Canvas1.Line (17, 39, 41, 39, &HC0E4F8)
Canvas1.Line (41, 40, 41, 56, &HC0E4F8)
Canvas1.Line (17, 39, 17, 56, &H7094A8)
Canvas1.Line (17, 56, 41, 56, &H7094A8)
END IF
END SUB
SUB FS_Change
IF FS=1 THEN
Canvas1.Rectangle (16, 115, 43, 135, &H000000)
Canvas1.FillRect (18, 117, 41, 133, &H80E0F0)
Canvas1.Line (17, 116, 41, 116, &H90F0FF)
Canvas1.Line (41, 117, 41, 133, &H90F0FF)
Canvas1.Line (17, 116, 17, 133, &H70D0E0)
Canvas1.Line (17, 133, 41, 133, &H70D0E0)
ELSE
Canvas1.Rectangle (16, 115, 43, 135, &H000000)
Canvas1.FillRect (18, 117, 41, 133, &H98BCD0)
Canvas1.Line (17, 116, 41, 116, &HC0E4F8)
Canvas1.Line (41, 117, 41, 133, &HC0E4F8)
Canvas1.Line (17, 116, 17, 133, &H7094A8)
Canvas1.Line (17, 133, 41, 133, &H7094A8)
END IF
END SUB
SUB DP_Change
IF DP=1 THEN
Canvas1.Rectangle (16, 173, 43, 193, &H000000)
Canvas1.FillRect (18, 175, 41, 191, &H80E0F0)
Canvas1.Line (17, 174, 41, 174, &H90F0FF)
Canvas1.Line (41, 175, 41, 191, &H90F0FF)
Canvas1.Line (17, 174, 17, 191, &H70D0E0)
Canvas1.Line (17, 191, 41, 191, &H70D0E0)
ELSE
Canvas1.Rectangle (16, 173, 43, 193, &H000000)
Canvas1.FillRect (18, 175, 41, 191, &H98BCD0)
Canvas1.Line (17, 174, 41, 174, &HC0E4F8)
Canvas1.Line (41, 175, 41, 191, &HC0E4F8)
Canvas1.Line (17, 174, 17, 191, &H7094A8)
Canvas1.Line (17, 191, 41, 191, &H7094A8)
END IF
END SUB
SUB FP_Change
IF FP=1 THEN
Canvas1.Rectangle (16, 220, 43, 240, &H000000)
Canvas1.FillRect (18, 222, 41, 238, &H80E0F0)
Canvas1.Line (17, 221, 41, 221, &H90F0FF)
Canvas1.Line (41, 222, 41, 238, &H90F0FF)
Canvas1.Line (17, 221, 17, 238, &H70D0E0)
Canvas1.Line (17, 238, 41, 238, &H70D0E0)
ELSE
Canvas1.Rectangle (16, 220, 43, 240, &H000000)
Canvas1.FillRect (18, 222, 41, 238, &H98BCD0)
Canvas1.Line (17, 221, 41, 221, &HC0E4F8)
Canvas1.Line (41, 222, 41, 238, &HC0E4F8)
Canvas1.Line (17, 221, 17, 238, &H7094A8)
Canvas1.Line (17, 238, 41, 238, &H7094A8)
END IF
END SUB
SUB DJ_Change
IF DJ=1 THEN
Canvas1.Rectangle (16, 269, 43, 289, &H000000)
Canvas1.FillRect (18, 271, 41, 287, &H80E0F0)
Canvas1.Line (17, 270, 41, 270, &H90F0FF)
Canvas1.Line (41, 271, 41, 287, &H90F0FF)
Canvas1.Line (17, 270, 17, 287, &H70D0E0)
Canvas1.Line (17, 287, 41, 287, &H70D0E0)
ELSE
Canvas1.Rectangle (16, 269, 43, 289, &H000000)
Canvas1.FillRect (18, 271, 41, 287, &H98BCD0)
Canvas1.Line (17, 270, 41, 270, &HC0E4F8)
Canvas1.Line (41, 271, 41, 287, &HC0E4F8)
Canvas1.Line (17, 270, 17, 287, &H7094A8)
Canvas1.Line (17, 287, 41, 287, &H7094A8)
END IF
END SUB
SUB FJ_Change
IF FJ=1 THEN
Canvas1.Rectangle (16, 316, 43, 336, &H000000)
Canvas1.FillRect (18, 318, 41, 334, &H80E0F0)
Canvas1.Line (17, 317, 41, 317, &H90F0FF)
Canvas1.Line (41, 318, 41, 334, &H90F0FF)
Canvas1.Line (17, 317, 17, 334, &H70D0E0)
Canvas1.Line (17, 334, 41, 334, &H70D0E0)
ELSE
Canvas1.Rectangle (16, 316, 43, 336, &H000000)
Canvas1.FillRect (18, 318, 41, 334, &H98BCD0)
Canvas1.Line (17, 317, 41, 317, &HC0E4F8)
Canvas1.Line (41, 318, 41, 334, &HC0E4F8)
Canvas1.Line (17, 317, 17, 334, &H7094A8)
Canvas1.Line (17, 334, 41, 334, &H7094A8)
END IF
END SUB
SUB DV_Change
IF DV=1 THEN
Canvas1.Rectangle (16, 366, 43, 386, &H000000)
Canvas1.FillRect (18, 368, 41, 384, &H80E0F0)
Canvas1.Line (17, 367, 41, 367, &H90F0FF)
Canvas1.Line (41, 368, 41, 384, &H90F0FF)
Canvas1.Line (17, 367, 17, 384, &H70D0E0)
Canvas1.Line (17, 384, 41, 384, &H70D0E0)
ELSE
Canvas1.Rectangle (16, 366, 43, 386, &H000000)
Canvas1.FillRect (18, 368, 41, 384, &H98BCD0)
Canvas1.Line (17, 367, 41, 367, &HC0E4F8)
Canvas1.Line (41, 368, 41, 384, &HC0E4F8)
Canvas1.Line (17, 367, 17, 384, &H7094A8)
Canvas1.Line (17, 384, 41, 384, &H7094A8)
END IF
END SUB
SUB FV_Change
IF FV=1 THEN
Canvas1.Rectangle (16, 413, 43, 433, &H000000)
Canvas1.FillRect (18, 415, 41, 431, &H80E0F0)
Canvas1.Line (17, 414, 41, 414, &H90F0FF)
Canvas1.Line (41, 415, 41, 431, &H90F0FF)
Canvas1.Line (17, 414, 17, 431, &H70D0E0)
Canvas1.Line (17, 431, 41, 431, &H70D0E0)
ELSE
Canvas1.Rectangle (16, 413, 43, 433, &H000000)
Canvas1.FillRect (18, 415, 41, 431, &H98BCD0)
Canvas1.Line (17, 414, 41, 414, &HC0E4F8)
Canvas1.Line (41, 415, 41, 431, &HC0E4F8)
Canvas1.Line (17, 414, 17, 431, &H7094A8)
Canvas1.Line (17, 431, 41, 431, &H7094A8)
END IF
END SUB
SUB DS_Check
IF MN=0 THEN
IF DS=0 THEN
DS=1
ELSE
DS=0
END IF
DS_Change
END IF
END SUB
SUB FS_Check
IF MN=0 THEN
IF FS=0 THEN
FS=1
ELSE
FS=0
END IF
FS_Change
END IF
END SUB
SUB DP_Check
IF MN=0 THEN
IF DP=0 THEN
DP=1
ELSE
DP=0
END IF
DP_Change
END IF
END SUB
SUB FP_Check
IF MN=0 THEN
IF FP=0 THEN
FP=1
ELSE
FP=0
END IF
FP_Change
END IF
END SUB
SUB DJ_Check
IF MN=0 THEN
IF DJ=0 THEN
DJ=1
ELSE
DJ=0
END IF
DJ_Change
END IF
END SUB
SUB FJ_Check
IF MN=0 THEN
IF FJ=0 THEN
FJ=1
ELSE
FJ=0
END IF
FJ_Change
END IF
END SUB
SUB DV_Check
IF MN=0 THEN
IF DV=0 THEN
DV=1
ELSE
DV=0
END IF
DV_Change
END IF
END SUB
SUB FV_Check
IF MN=0 THEN
IF FV=0 THEN
FV=1
ELSE
FV=0
END IF
FV_Change
END IF
END SUB
SUB CP_Change
IF (OLDCP>=0 AND OLDCP<11) THEN
Canvas3.Rectangle (14, (OLDCP*40)+12, 333, (OLDCP*40)+43, &H98BCD0)
Canvas3.Rectangle (15, (OLDCP*40)+13, 332, (OLDCP*40)+42, &H98BCD0)
Canvas3.Rectangle (348, (OLDCP*40)+12, 382, (OLDCP*40)+43, &H98BCD0)
Canvas3.Rectangle (349, (OLDCP*40)+13, 381, (OLDCP*40)+42, &H98BCD0)
ELSEIF (OLDCP>10 AND OLDCP<22) THEN
Canvas3.Rectangle (411, ((OLDCP-11)*40)+12, 730, ((OLDCP-11)*40)+43, &H98BCD0)
Canvas3.Rectangle (412, ((OLDCP-11)*40)+13, 729, ((OLDCP-11)*40)+42, &H98BCD0)
Canvas3.Rectangle (745, ((OLDCP-11)*40)+12, 779, ((OLDCP-11)*40)+43, &H98BCD0)
Canvas3.Rectangle (746, ((OLDCP-11)*40)+13, 778, ((OLDCP-11)*40)+42, &H98BCD0)
END IF
IF (CURCP>=0 AND CURCP<11) THEN
Canvas3.Rectangle (14, (CURCP*40)+12, 333, (CURCP*40)+43, &H000000)
Canvas3.Rectangle (15, (CURCP*40)+13, 332, (CURCP*40)+42, &H000000)
Canvas3.Rectangle (348, (CURCP*40)+12, 382, (CURCP*40)+43, &H000000)
Canvas3.Rectangle (349, (CURCP*40)+13, 381, (CURCP*40)+42, &H000000)
ELSEIF (CURCP>10 AND CURCP<22) THEN
Canvas3.Rectangle (411, ((CURCP-11)*40)+12, 730, ((CURCP-11)*40)+43, &H000000)
Canvas3.Rectangle (412, ((CURCP-11)*40)+13, 729, ((CURCP-11)*40)+42, &H000000)
Canvas3.Rectangle (745, ((CURCP-11)*40)+12, 779, ((CURCP-11)*40)+43, &H000000)
Canvas3.Rectangle (746, ((CURCP-11)*40)+13, 778, ((CURCP-11)*40)+42, &H000000)
END IF
END SUB
SUB CP_Check
OLDCP=CURCP : CURCP=CPVAL : IF CURCP<>OLDCP THEN
CP_Change
IF LRN=0 THEN
CURSEQ=ALen(CURCP+44)
ELSE
CURSEQ=ALen(CURCP)
END IF
NEXTSEQ=CURSEQ
END IF
IF LRN=0 THEN
OLDPAA=10 : CURPAA=1
ELSE
OLDPAA=10 : CURPAA=0
END IF
END SUB
SUB DT_Check
IF OLDDT<>CURDT THEN
YY=15 : IF CURDT=0 THEN
FOR Z=0 TO 10 : WCats(Z).CAPTION=DTitles(Z) : WCats(Z+11).CAPTION=DTitles(Z+11) : INC (YY,40) : NEXT
ELSEIF CURDT=1 THEN
FOR Z=0 TO 10 : WCats(Z).CAPTION=DTitles(Z+22) : WCats(Z+11).CAPTION=DTitles(Z+33) : INC (YY,40) : NEXT
ELSEIF CURDT=2 THEN
FOR Z=0 TO 10 : WCats(Z).CAPTION=FTitles(Z) : WCats(Z+11).CAPTION=FTitles(Z+11) : INC (YY,40) : NEXT
ELSEIF CURDT=3 THEN
FOR Z=0 TO 10 : WCats(Z).CAPTION=FTitles(Z+22) : WCats(Z+11).CAPTION=FTitles(Z+33) : INC (YY,40) : NEXT
END IF
OLDDT=CURDT
END IF
IF LRN=0 THEN
CURSEQ=ALen(CURCP+44)
ELSE
CURSEQ=ALen(CURCP)
END IF
NEXTSEQ=CURSEQ
END SUB
SUB Canvas1Redraw (Sender AS QCANVAS)
Canvas1.FillRect (793, 0, 800, 600, &H000000)
Canvas1.FillRect (0, 490, 800, 600, &H000000)
Canvas1.Rectangle (3, 3, 790, 453, &H000000)
Canvas1.FillRect (5, 5, 788, 451, &H98BCD0)
Canvas1.Line (4, 4, 788, 4, &HC0E4F8)
Canvas1.Line (788, 5, 788, 451, &HC0E4F8)
Canvas1.Line (4, 4, 4, 451, &H7094A8)
Canvas1.Line (5, 451, 788, 451, &H7094A8)
Canvas1.FillRect (210, 15, 778, 76, &HA8CCE0)
Canvas1.Line (209, 14, 778, 14, &HC7EBFF)
Canvas1.Line (778, 15, 778, 76, &HC7EBFF)
Canvas1.Line (209, 14, 209, 76, &H88ACC0)
Canvas1.Line (209, 76, 778, 76, &H88ACC0)
Canvas1.FillRect (210, 92, 778, 153, &HA8CCE0)
Canvas1.Line (209, 91, 778, 91, &HC7EBFF)
Canvas1.Line (778, 92, 778, 153, &HC7EBFF)
Canvas1.Line (209, 91, 209, 153, &H88ACC0)
Canvas1.Line (209, 153, 778, 153, &H88ACC0)
YY=169 : FOR Z=1 TO 6
Canvas1.FillRect (210, YY, 778, YY+32, &HA8CCE0)
Canvas1.Line (209, YY-1, 778, YY-1, &HC7EBFF)
Canvas1.Line (778, YY, 778, YY+32, &HC7EBFF)
Canvas1.Line (209, YY-1, 209, YY+32, &H88ACC0)
Canvas1.Line (209, YY+32, 778, YY+32, &H88ACC0)
INC (YY,48) : NEXT
DS_Change
FS_Change
DP_Change
FP_Change
DJ_Change
FJ_Change
DJ_Change
FJ_Change
DV_Change
FV_Change
PO_Change
Canvas1.Rectangle (106, 457, 209, 487, &H000000)
Canvas1.FillRect (108, 459, 207, 485, &H00A0A0)
Canvas1.Line (107, 458, 207, 458, &H00C0C0)
Canvas1.Line (207, 459, 207, 485, &H00C0C0)
Canvas1.Line (107, 458, 107, 485, &H008080)
Canvas1.Line (108, 485, 207, 485, &H008080)
Canvas1.Rectangle (223, 457, 297, 487, &H000000)
Canvas1.FillRect (225, 459, 295, 485, &H00A0A0)
Canvas1.Line (224, 458, 295, 458, &H00C0C0)
Canvas1.Line (295, 459, 295, 485, &H00C0C0)
Canvas1.Line (224, 458, 224, 485, &H008080)
Canvas1.Line (225, 485, 295, 485, &H008080)
SO_Change
MN_Change
Canvas1.Rectangle (538, 457, 657, 487, &H000000)
Canvas1.FillRect (540, 459, 655, 485, &H00A0A0)
Canvas1.Line (539, 458, 655, 458, &H00C0C0)
Canvas1.Line (655, 459, 655, 485, &H00C0C0)
Canvas1.Line (539, 458, 539, 485, &H008080)
Canvas1.Line (540, 485, 655, 485, &H008080)
Canvas1.Rectangle (671, 457, 697, 487, &H000000)
Canvas1.FillRect (673, 459, 695, 485, &H00A0A0)
Canvas1.Line (672, 458, 695, 458, &H00C0C0)
Canvas1.Line (695, 459, 695, 485, &H00C0C0)
Canvas1.Line (672, 458, 672, 485, &H008080)
Canvas1.Line (673, 485, 695, 485, &H008080)
Canvas1.Rectangle (711, 457, 737, 487, &H000000)
Canvas1.FillRect (713, 459, 735, 485, &H00A0A0)
Canvas1.Line (712, 458, 735, 458, &H00C0C0)
Canvas1.Line (735, 459, 735, 485, &H00C0C0)
Canvas1.Line (712, 458, 712, 485, &H008080)
Canvas1.Line (713, 485, 735, 485, &H008080)
Canvas1.Rectangle (762, 457, 790, 487, &H000000)
Canvas1.FillRect (764, 459, 788, 485, &H00A0A0)
Canvas1.Line (763, 458, 788, 458, &H00C0C0)
Canvas1.Line (788, 459, 788, 485, &H00C0C0)
Canvas1.Line (763, 458, 763, 485, &H008080)
Canvas1.Line (764, 485, 788, 485, &H008080)
Canvas1.TextOut (103, 457, " REVEAL ", &H007070, -1)
Canvas1.TextOut (103, 457, " R", &HFFFFFF, -1)
Canvas1.TextOut (220, 457, " NEXT ", &H007070, -1)
Canvas1.TextOut (220, 457, " N", &HFFFFFF, -1)
Canvas1.TextOut (536, 457, " OPTIONS ", &H007070, -1)
Canvas1.TextOut (536, 457, " O", &HFFFFFF, -1)
Canvas1.TextOut (760, 457, " X", &HFFFFFF, -1)
Canvas1.FillRect (680, 465, 688, 481, &HFFFFFF)
Canvas1.FillRect (720, 463, 728, 479, &HFFFFFF)
YY=0 : FOR Z=0 TO 7
Canvas1.Line (676+YY, 469-YY, 676+YY, 469, &HFFFFFF)
Canvas1.Line (691-YY, 469-YY, 691-YY, 469, &HFFFFFF)
Canvas1.Line (716+YY, 474, 716+YY, 474+YY, &HFFFFFF)
Canvas1.Line (731-YY, 474, 731-YY, 474+YY, &HFFFFFF)
INC YY : NEXT
IF CURDT>1 THEN
Label1.CAPTION="Sentences"
Label24.CAPTION=""
Label2.CAPTION="Pro/Nouns"
Label21.CAPTION=""
Label3.CAPTION="Adjectives"
Label22.CAPTION=""
Label4.CAPTION="Ad/Verbs"
Label23.CAPTION=""
ELSE
Label1.CAPTION=""
Label24.CAPTION="Mga Pangungusap"
Label2.CAPTION=""
Label21.CAPTION="Mga Pangngalan"
Label3.CAPTION=""
Label22.CAPTION="Mga Pang-Uri"
Label4.CAPTION=""
Label23.CAPTION="Mga Pandiwa"
END IF
END SUB
SUB Canvas3Redraw (Sender AS QCANVAS)
Canvas3.FillRect (793, 0, 800, 600, &H000000)
Canvas3.FillRect (0, 490, 800, 600, &H000000)
Canvas3.Rectangle (3, 3, 790, 453, &H000000)
Canvas3.FillRect (5, 5, 788, 451, &H98BCD0)
Canvas3.Line (4, 4, 788, 4, &HC0E4F8)
Canvas3.Line (788, 5, 788, 451, &HC0E4F8)
Canvas3.Line (4, 4, 4, 451, &H7094A8)
Canvas3.Line (5, 451, 788, 451, &H7094A8)
YY=15 : FOR Z=0 TO 10
Canvas3.FillRect (17, YY, 379, YY+25, &HA8CCE0)
Canvas3.Line (16, YY-1, 379, YY-1, &HC8ECFF)
Canvas3.Line (379, YY, 379, YY+25, &HC8ECFF)
Canvas3.Line (16, YY-1, 16, YY+25, &H88ACC0)
Canvas3.Line (17, YY+25, 379, YY+25, &H88ACC0)
Canvas3.Line (330, YY, 330, YY+24, &HC8ECFF)
Canvas3.FillRect (331, YY-1, 350, YY+26, &H98BCD0)
Canvas3.Line (350, YY-1, 350, YY+25, &H88ACC0)
Canvas3.FillRect (414, YY, 776, YY+25, &HA8CCE0)
Canvas3.Line (413, YY-1, 776, YY-1, &HC8ECFF)
Canvas3.Line (776, YY, 776, YY+25, &HC8ECFF)
Canvas3.Line (413, YY-1, 413, YY+25, &H88ACC0)
Canvas3.Line (414, YY+25, 776, YY+25, &H88ACC0)
Canvas3.Line (727, YY, 727, YY+24, &HC8ECFF)
Canvas3.FillRect (728, YY-1, 747, YY+26, &H98BCD0)
Canvas3.Line (747, YY-1, 747, YY+25, &H88ACC0)
INC (YY,40) : NEXT
CP_Change
Canvas3.Rectangle (3, 457, 109, 487, &H000000)
Canvas3.FillRect (5, 459, 107, 485, &H00A0A0)
Canvas3.Line (4, 458, 107, 458, &H00C0C0)
Canvas3.Line (107, 459, 107, 485, &H00C0C0)
Canvas3.Line (4, 458, 4, 485, &H008080)
Canvas3.Line (5, 485, 107, 485, &H008080)
Canvas3.Rectangle (123, 457, 254, 487, &H000000)
Canvas3.FillRect (125, 459, 252, 485, &H00A0A0)
Canvas3.Line (124, 458, 252, 458, &H00C0C0)
Canvas3.Line (252, 459, 252, 485, &H00C0C0)
Canvas3.Line (124, 458, 124, 485, &H008080)
Canvas3.Line (125, 485, 252, 485, &H008080)
Canvas3.Rectangle (268, 457, 371, 487, &H000000)
Canvas3.FillRect (270, 459, 369, 485, &H00A0A0)
Canvas3.Line (269, 458, 369, 458, &H00C0C0)
Canvas3.Line (369, 459, 369, 485, &H00C0C0)
Canvas3.Line (269, 458, 269, 485, &H008080)
Canvas3.Line (270, 485, 369, 485, &H008080)
Canvas3.Rectangle (385, 457, 537, 487, &H000000)
Canvas3.FillRect (387, 459, 535, 485, &H00A0A0)
Canvas3.Line (386, 458, 535, 458, &H00C0C0)
Canvas3.Line (535, 459, 535, 485, &H00C0C0)
Canvas3.Line (386, 458, 386, 485, &H008080)
Canvas3.Line (387, 485, 535, 485, &H008080)
Canvas3.Rectangle (551, 457, 655, 487, &H000000)
Canvas3.FillRect (553, 459, 653, 485, &H00A0A0)
Canvas3.Line (552, 458, 653, 458, &H00C0C0)
Canvas3.Line (653, 459, 653, 485, &H00C0C0)
Canvas3.Line (552, 458, 552, 485, &H008080)
Canvas3.Line (553, 485, 653, 485, &H008080)
Canvas3.Rectangle (723, 457, 790, 487, &H000000)
Canvas3.FillRect (725, 459, 788, 485, &H00A0A0)
Canvas3.Line (724, 458, 788, 458, &H00C0C0)
Canvas3.Line (788, 459, 788, 485, &H00C0C0)
Canvas3.Line (724, 458, 724, 485, &H008080)
Canvas3.Line (725, 485, 788, 485, &H008080)
Canvas3.TextOut (0, 457, " SEARCH", &H007070, -1)
Canvas3.TextOut (0, 457, " S", &HFFFFFF, -1)
Canvas3.TextOut (120, 457, " SETTINGS", &H007070, -1)
Canvas3.TextOut (189, 457, " N", &HFFFFFF, -1)
Canvas3.TextOut (266, 457, " WORDS", &H007070, -1)
Canvas3.TextOut (266, 457, " W", &HFFFFFF, -1)
Canvas3.TextOut (382, 457, " SENTENCES", &H007070, -1)
Canvas3.TextOut (430, 457, " T", &HFFFFFF, -1)
Canvas3.TextOut (548, 457, " SPEECH", &H007070, -1)
Canvas3.TextOut (564, 457, " P", &HFFFFFF, -1)
Canvas3.TextOut (720, 457, " EXIT", &H007070, -1)
Canvas3.TextOut (720, 457, " E", &HFFFFFF, -1)
END SUB
SUB DF_Change
IF CURDF=0 THEN
Canvas4.Rectangle (18, 62, 171, 92, &H30A0E0)
Canvas4.Rectangle (17, 61, 172, 93, &H30A0E0)
Canvas4.Rectangle (18, 18, 171, 48, &H000000)
Canvas4.Rectangle (17, 17, 172, 49, &H000000)
ELSE
Canvas4.Rectangle (18, 18, 171, 48, &H30A0E0)
Canvas4.Rectangle (17, 17, 172, 49, &H30A0E0)
Canvas4.Rectangle (18, 62, 171, 92, &H000000)
Canvas4.Rectangle (17, 61, 172, 93, &H000000)
END IF
END SUB
SUB DF_Check
IF CURDF<>OLDDF THEN
DF_Change
OLDDF=CURDF
END IF
END SUB
SUB PAA_Change
IF CURPAA=1 THEN
Canvas4.Rectangle (18, 124, 171, 154, &H30A0E0)
Canvas4.Rectangle (17, 123, 172, 155, &H30A0E0)
Canvas4.Rectangle (18, 212, 171, 242, &H30A0E0)
Canvas4.Rectangle (17, 211, 172, 243, &H30A0E0)
Canvas4.Rectangle (18, 256, 171, 286, &H30A0E0)
Canvas4.Rectangle (17, 255, 172, 287, &H30A0E0)
Canvas4.Rectangle (18, 168, 171, 198, &H000000)
Canvas4.Rectangle (17, 167, 172, 199, &H000000)
ELSEIF CURPAA=2 THEN
Canvas4.Rectangle (18, 124, 171, 154, &H30A0E0)
Canvas4.Rectangle (17, 123, 172, 155, &H30A0E0)
Canvas4.Rectangle (18, 168, 171, 198, &H30A0E0)
Canvas4.Rectangle (17, 167, 172, 199, &H30A0E0)
Canvas4.Rectangle (18, 256, 171, 286, &H30A0E0)
Canvas4.Rectangle (17, 255, 172, 287, &H30A0E0)
Canvas4.Rectangle (18, 212, 171, 242, &H000000)
Canvas4.Rectangle (17, 211, 172, 243, &H000000)
ELSEIF CURPAA=3 THEN
Canvas4.Rectangle (18, 124, 171, 154, &H30A0E0)
Canvas4.Rectangle (17, 123, 172, 155, &H30A0E0)
Canvas4.Rectangle (18, 168, 171, 198, &H30A0E0)
Canvas4.Rectangle (17, 167, 172, 199, &H30A0E0)
Canvas4.Rectangle (18, 212, 171, 242, &H30A0E0)
Canvas4.Rectangle (17, 211, 172, 243, &H30A0E0)
Canvas4.Rectangle (18, 256, 171, 286, &H000000)
Canvas4.Rectangle (17, 255, 172, 287, &H000000)
ELSE
Canvas4.Rectangle (18, 168, 171, 198, &H30A0E0)
Canvas4.Rectangle (17, 167, 172, 199, &H30A0E0)
Canvas4.Rectangle (18, 212, 171, 242, &H30A0E0)
Canvas4.Rectangle (17, 211, 172, 243, &H30A0E0)
Canvas4.Rectangle (18, 256, 171, 286, &H30A0E0)
Canvas4.Rectangle (17, 255, 172, 287, &H30A0E0)
Canvas4.Rectangle (18, 124, 171, 154, &H000000)
Canvas4.Rectangle (17, 123, 172, 155, &H000000)
END IF
END SUB
SUB PAA_Check
IF CURPAA<>OLDPAA THEN
PAA_Change : OLDPAA=CURPAA
END IF
END SUB
SUB Canvas4Redraw (Sender AS QCANVAS)
Canvas4.Rectangle (3, 3, 778, 301, &H000000)
Canvas4.FillRect (5, 5, 776, 299, &H30A0E0)
Canvas4.Line (4, 4, 776, 4, &H50C0FF)
Canvas4.Line (776, 5, 776, 299, &H50C0FF)
Canvas4.Line (4, 4, 4, 299, &H1080C0)
Canvas4.Line (5, 299, 776, 299, &H1080C0)
Canvas4.Line (184, 5, 184, 298, &H50C0FF)
Canvas4.Line (185, 4, 185, 300, &H000000)
Canvas4.FillRect (186, 3, 196, 301, &H98BCD0)
Canvas4.Line (196, 4, 196, 300, &H000000)
Canvas4.Line (197, 5, 197, 299, &H1080C0)
YY=18 : FOR Z=0 TO 5
Canvas4.FillRect (20, YY+2, 169, YY+28, &H60B0E0)
Canvas4.Line (19, YY+1, 169, YY+1, &H80D0FF)
Canvas4.Line (169, YY+2, 169, YY+28, &H80D0FF)
Canvas4.Line (19, YY+1, 19, YY+28, &H4090C0)
Canvas4.Line (20, YY+28, 169, YY+28, &H4090C0)
IF Z=1 THEN YY=80
INC (YY,44) : NEXT
Canvas4.FillRect (331, 24, 761, 49, &H504030)
Canvas4.Line (330, 23, 761, 23, &H1080C0)
Canvas4.Line (761, 24, 761, 49, &H1080C0)
Canvas4.Line (330, 22, 762, 22, &H1080C0)
Canvas4.Line (762, 23, 762, 50, &H1080C0)
Canvas4.Line (330, 23, 330, 49, &H50C0FF)
Canvas4.Line (331, 49, 760, 49, &H50C0FF)
Canvas4.Line (329, 22, 329, 50, &H50C0FF)
Canvas4.Line (330, 50, 761, 50, &H50C0FF)
Canvas4.FillRect (330, 71, 762, 102, &H60B0E0)
Canvas4.Line (329, 70, 762, 70, &H80D0FF)
Canvas4.Line (762, 71, 762, 102, &H80D0FF)
Canvas4.Line (329, 70, 329, 102, &H4090C0)
Canvas4.Line (330, 102, 762, 102, &H4090C0)
Canvas4.Rectangle (329, 122, 464, 152, &H000000)
Canvas4.FillRect (331, 124, 462, 150, &H60B0E0)
Canvas4.Line (330, 123, 462, 123, &H80D0FF)
Canvas4.Line (462, 124, 462, 150, &H80D0FF)
Canvas4.Line (330, 123, 330, 150, &H4090C0)
Canvas4.Line (331, 150, 462, 150, &H4090C0)
Canvas4.FillRect (211, 171, 762, 287, &H60B0E0)
Canvas4.Line (210, 171, 762, 171, &H80D0FF)
Canvas4.Line (762, 171, 762, 287, &H80D0FF)
Canvas4.Line (210, 171, 210, 287, &H4090C0)
Canvas4.Line (211, 287, 762, 287, &H4090C0)
Canvas4.Rectangle (696, 122, 763, 152, &H000000)
Canvas4.FillRect (698, 124, 761, 150, &H3090E0)
Canvas4.Line (697, 123, 761, 123, &H50B0FF)
Canvas4.Line (761, 124, 761, 150, &H50B0FF)
Canvas4.Line (697, 123, 697, 150, &H1070C0)
Canvas4.Line (698, 150, 761, 150, &H1070C0)
Canvas4.TextOut (701, 122, "EXIT", &H004090, -1)
Canvas4.TextOut (701, 122, "E", &HFFFFFF, -1)
Canvas4.TextOut (41, 18, "DEFAULT", &H106090, -1)
Canvas4.TextOut (41, 18, "D", &HFFFFFF, -1)
Canvas4.TextOut (41, 62, "FOREIGN", &H106090, -1)
Canvas4.TextOut (41, 62, "F", &HFFFFFF, -1)
Canvas4.TextOut (31, 124, "SENTENCE", &H106090, -1)
Canvas4.TextOut (62, 124, "N", &HFFFFFF, -1)
Canvas4.TextOut (31, 168, "PRO/NOUN", &H106090, -1)
Canvas4.TextOut (124, 168, "U", &HFFFFFF, -1)
Canvas4.TextOut (30, 213, "ADJECTIVE", &H106090, -1)
Canvas4.TextOut (64, 213, "J", &HFFFFFF, -1)
Canvas4.TextOut (41, 256, "AD/VERB", &H106090, -1)
Canvas4.TextOut (116, 256, "R", &HFFFFFF, -1)
Canvas4.TextOut (335, 122, "CONTINUE", &H106090, -1)
Canvas4.TextOut (335, 122, "C", &HFFFFFF, -1)
DF_Change : PAA_Change
END SUB
SUB SPLIT_Change
Canvas5.FillRect (421, 19, 474, 47, &HE0C0A0)
IF SPLIT=0 THEN
Canvas5.TextOut (425, 18, "OFF", &HB09070, -1)
ELSE
Canvas5.TextOut (430, 18, "ON ", &HB09070, -1)
END IF
END SUB
SUB SPELL_Change
Canvas5.FillRect (421, 69, 474, 97, &HE0C0A0)
IF SPELL=0 THEN
Canvas5.TextOut (425, 68, "OFF", &HB09070, -1)
ELSE
Canvas5.TextOut (430, 68, "ON ", &HB09070, -1)
END IF
END SUB
SUB SPEECH_Change
Canvas5.FillRect (421, 119, 474, 147, &HE0C0A0)
IF SPEECH=0 THEN
Canvas5.TextOut (425, 118, "OFF", &HB09070, -1)
ELSE
Canvas5.TextOut (430, 118, "ON ", &HB09070, -1)
END IF
END SUB
SUB SEQRND_Change
Canvas5.FillRect (421, 169, 474, 197, &HE0C0A0)
IF SEQRND=0 THEN
Canvas5.TextOut (425, 168, "OFF", &HB09070, -1)
ELSE
Canvas5.TextOut (430, 168, "ON ", &HB09070, -1)
END IF
END SUB
SUB MISC_Change
Canvas5.FillRect (421, 219, 474, 247, &HE0C0A0)
IF MISC=0 THEN
Canvas5.TextOut (425, 218, "OFF", &HB09070, -1)
ELSE
Canvas5.TextOut (430, 218, "ON ", &HB09070, -1)
END IF
END SUB
SUB DRIVE_Change
Canvas5.FillRect (692, 20, 743, 46, &HE0C0A0)
Canvas5.TextOut (698, 18, LEFT$(drive$(Drv_Cnt), 3), &HB09070, -1)
END SUB
SUB DWAV_Change
Canvas5.FillRect (692, 70, 753, 96, &HE0C0A0)
IF DWAV=1 THEN
Canvas5.TextOut (698, 68, "ENG", &HB09070, -1)
ELSEIF DWAV=2 THEN
Canvas5.TextOut (698, 68, "FRE", &HB09070, -1)
ELSEIF DWAV=3 THEN
Canvas5.TextOut (698, 68, "GER", &HB09070, -1)
ELSEIF DWAV=4 THEN
Canvas5.TextOut (698, 68, "IND", &HB09070, -1)
ELSEIF DWAV=5 THEN
Canvas5.TextOut (698, 68, "ITA", &HB09070, -1)
ELSEIF DWAV=6 THEN
Canvas5.TextOut (698, 68, "KOR", &HB09070, -1)
ELSEIF DWAV=7 THEN
Canvas5.TextOut (698, 68, "NOR", &HB09070, -1)
ELSEIF DWAV=8 THEN
Canvas5.TextOut (696, 68, "SWE", &HB09070, -1)
ELSEIF DWAV=9 THEN
Canvas5.TextOut (698, 68, "SPA", &HB09070, -1)
ELSEIF DWAV=10 THEN
Canvas5.TextOut (698, 68, "TAG", &HB09070, -1)
END IF
END SUB
SUB FWAV_Change
Canvas5.FillRect (692, 120, 753, 146, &HE0C0A0)
IF FWAV=1 THEN
Canvas5.TextOut (698, 118, "ENG", &HB09070, -1)
ELSEIF FWAV=2 THEN
Canvas5.TextOut (698, 118, "FRE", &HB09070, -1)
ELSEIF FWAV=3 THEN
Canvas5.TextOut (698, 118, "GER", &HB09070, -1)
ELSEIF FWAV=4 THEN
Canvas5.TextOut (698, 118, "IND", &HB09070, -1)
ELSEIF FWAV=5 THEN
Canvas5.TextOut (698, 118, "ITA", &HB09070, -1)
ELSEIF FWAV=6 THEN
Canvas5.TextOut (698, 118, "KOR", &HB09070, -1)
ELSEIF FWAV=7 THEN
Canvas5.TextOut (698, 118, "NOR", &HB09070, -1)
ELSEIF FWAV=8 THEN
Canvas5.TextOut (696, 118, "SWE", &HB09070, -1)
ELSEIF FWAV=9 THEN
Canvas5.TextOut (698, 118, "SPA", &HB09070, -1)
ELSEIF FWAV=10 THEN
Canvas5.TextOut (698, 118, "TAG", &HB09070, -1)
END IF
END SUB
SUB DSFILE_Change
Canvas5.FillRect (692, 170, 753, 196, &HE0C0A0)
IF DSFILE=1 THEN
Canvas5.TextOut (698, 168, "ENG", &HB09070, -1)
ELSEIF DSFILE=2 THEN
Canvas5.TextOut (698, 168, "FRE", &HB09070, -1)
ELSEIF DSFILE=3 THEN
Canvas5.TextOut (698, 168, "GER", &HB09070, -1)
ELSEIF DSFILE=4 THEN
Canvas5.TextOut (698, 168, "IND", &HB09070, -1)
ELSEIF DSFILE=5 THEN
Canvas5.TextOut (698, 168, "ITA", &HB09070, -1)
ELSEIF DSFILE=6 THEN
Canvas5.TextOut (698, 168, "KOR", &HB09070, -1)
ELSEIF DSFILE=7 THEN
Canvas5.TextOut (698, 168, "NOR", &HB09070, -1)
ELSEIF DSFILE=8 THEN
Canvas5.TextOut (696, 168, "SWE", &HB09070, -1)
ELSEIF DSFILE=9 THEN
Canvas5.TextOut (698, 168, "SPA", &HB09070, -1)
ELSEIF DSFILE=10 THEN
Canvas5.TextOut (698, 168, "TAG", &HB09070, -1)
END IF
END SUB
SUB FSFILE_Change
Canvas5.FillRect (692, 220, 753, 246, &HE0C0A0)
IF FSFILE=1 THEN
Canvas5.TextOut (698, 218, "ENG", &HB09070, -1)
ELSEIF FSFILE=2 THEN
Canvas5.TextOut (698, 218, "FRE", &HB09070, -1)
ELSEIF FSFILE=3 THEN
Canvas5.TextOut (698, 218, "GER", &HB09070, -1)
ELSEIF FSFILE=4 THEN
Canvas5.TextOut (698, 218, "IND", &HB09070, -1)
ELSEIF FSFILE=5 THEN
Canvas5.TextOut (698, 218, "ITA", &HB09070, -1)
ELSEIF FSFILE=6 THEN
Canvas5.TextOut (698, 218, "KOR", &HB09070, -1)
ELSEIF FSFILE=7 THEN
Canvas5.TextOut (698, 218, "NOR", &HB09070, -1)
ELSEIF FSFILE=8 THEN
Canvas5.TextOut (696, 218, "SWE", &HB09070, -1)
ELSEIF FSFILE=9 THEN
Canvas5.TextOut (698, 218, "SPA", &HB09070, -1)
ELSEIF FSFILE=10 THEN
Canvas5.TextOut (698, 218, "TAG", &HB09070, -1)
END IF
END SUB
SUB LANG_Change
Canvas5.FillRect (421, 270, 594, 296, &HE0C0A0)
IF LANG=1 THEN
Canvas5.TextOut (429, 268, "ENGLISH", &HB09070, -1)
ELSEIF LANG=2 THEN
Canvas5.TextOut (429, 268, "FRENCH", &HB09070, -1)
ELSEIF LANG=3 THEN
Canvas5.TextOut (429, 268, "GERMAN", &HB09070, -1)
ELSEIF LANG=4 THEN
Canvas5.TextOut (429, 268, "INDONESIAN", &HB09070, -1)
ELSEIF LANG=5 THEN
Canvas5.TextOut (429, 268, "ITALIAN", &HB09070, -1)
ELSEIF LANG=6 THEN
Canvas5.TextOut (429, 268, "KOREAN", &HB09070, -1)
ELSEIF LANG=7 THEN
Canvas5.TextOut (429, 268, "NORWEGIAN", &HB09070, -1)
ELSEIF LANG=8 THEN
Canvas5.TextOut (429, 268, "SWEDISH", &HB09070, -1)
ELSEIF LANG=9 THEN
Canvas5.TextOut (429, 268, "SPANISH", &HB09070, -1)
ELSEIF LANG=10 THEN
Canvas5.TextOut (429, 268, "TAGALOG", &HB09070, -1)
END IF
END SUB
SUB SPLIT_Check
INC SPLIT : IF SPLIT>1 THEN SPLIT=0
SPLIT_Change
END SUB
SUB SPELL_Check
INC SPELL : IF SPELL>1 THEN SPELL=0
SPELL_Change
END SUB
SUB SPEECH_Check
INC SPEECH : IF SPEECH>1 THEN SPEECH=0
SPEECH_Change
END SUB
SUB SEQRND_Check
INC SEQRND : IF SEQRND>1 THEN SEQRND=0
SEQRND_Change
END SUB
SUB MISC_Check
INC MISC : IF MISC>1 THEN MISC=0
MISC_Change
IF MISC=1 THEN
ALen(21)=0 : ALen(65)=0 : CURSEQ=0 : NEXTSEQ=CURSEQ
CLen(21)=Totals(2) : CLen(65)=Totals(4)
ELSE
IF LRN=0 THEN
ALen(65)=MISCEND : CURSEQ=MISCEND : NEXTSEQ=CURSEQ : CLen(65)=MISCLEN
ELSE
ALen(21)=MISCSTART : CURSEQ=MISCSTART : NEXTSEQ=CURSEQ : CLen(21)=MISCTOT
END IF
END IF
END SUB
SUB FSFILE_Dec
DEC FSFILE : IF FSFILE<1 THEN FSFILE=10
FSFILE_Change
END SUB
SUB FSFILE_Inc
INC FSFILE : IF FSFILE>10 THEN FSFILE=1
FSFILE_Change
END SUB
SUB DSFILE_Dec
DEC DSFILE : IF DSFILE<1 THEN DSFILE=10
DSFILE_Change
END SUB
SUB DSFILE_Inc
INC DSFILE : IF DSFILE>10 THEN DSFILE=1
DSFILE_Change
END SUB
SUB FWAV_Dec
DEC FWAV : IF FWAV<1 THEN FWAV=10
FWAV_Change
END SUB
SUB FWAV_Inc
INC FWAV : IF FWAV>10 THEN FWAV=1
FWAV_Change
END SUB
SUB DWAV_Dec
DEC DWAV : IF DWAV<1 THEN DWAV=10
DWAV_Change
END SUB
SUB DWAV_Inc
INC DWAV : IF DWAV>10 THEN DWAV=1
DWAV_Change
END SUB
SUB LANG_Dec
DEC LANG : IF LANG<1 THEN LANG=10
LANG_Change
END SUB
SUB LANG_Inc
INC LANG : IF LANG>10 THEN LANG=1
LANG_Change
END SUB
SUB Canvas5Redraw (Sender AS QCANVAS)
Canvas5.Rectangle (3, 3, 778, 362, &H000000)
Canvas5.FillRect (5, 5, 776, 360, &HB09070)
Canvas5.Line (4, 4, 776, 4, &HD0B090)
Canvas5.Line (776, 5, 776, 360, &HD0B090)
Canvas5.Line (4, 4, 4, 360, &H907050)
Canvas5.Line (5, 360, 776, 360, &H907050)
YY=20 : FOR Z=0 TO 6
Canvas5.FillRect (161, YY, 207, YY+25, &H504030)
Canvas5.Line (160, YY-1, 207, YY-1, &HA08060)
Canvas5.Line (207, YY, 207, YY+25, &HA08060)
Canvas5.Line (160, YY-2, 208, YY-2, &HA08060)
Canvas5.Line (208, YY-1, 208, YY+26, &HA08060)
Canvas5.Line (160, YY-1, 160, YY+25, &HE0C0A0)
Canvas5.Line (161, YY+25, 206, YY+25, &HE0C0A0)
Canvas5.Line (159, YY-2, 159, YY+26, &HE0C0A0)
Canvas5.Line (160, YY+26, 207, YY+26, &HE0C0A0)
INC (YY,50) : NEXT
YY=18 : FOR Z=0 TO 4
Canvas5.Rectangle (241, YY, 404, YY+30, &H000000)
Canvas5.FillRect (243, YY+2, 402, YY+28, &HE0C0A0)
Canvas5.Line (242, YY+1, 402, YY+1, &HFFE0C0)
Canvas5.Line (402, YY+2, 402, YY+28, &HFFE0C0)
Canvas5.Line (242, YY+1, 242, YY+28, &HC0A080)
Canvas5.Line (243, YY+28, 402, YY+28, &HC0A080)
Canvas5.FillRect (421, YY+1, 474, YY+29, &HE0C0A0)
Canvas5.Line (420, YY, 474, YY, &HFFE0C0)
Canvas5.Line (474, YY+1, 474, YY+29, &HFFE0C0)
Canvas5.Line (420, YY, 420, YY+29, &HC0A080)
Canvas5.Line (421, YY+29, 474, YY+29, &HC0A080)
Canvas5.Rectangle (511, YY, 674, YY+30, &H000000)
Canvas5.FillRect (513, YY+2, 672, YY+28, &HE0C0A0)
Canvas5.Line (512, YY+1, 672, YY+1, &HFFE0C0)
Canvas5.Line (672, YY+2, 672, YY+28, &HFFE0C0)
Canvas5.Line (512, YY+1, 512, YY+28, &HC0A080)
Canvas5.Line (513, YY+28, 672, YY+28, &HC0A080)
Canvas5.FillRect (691, YY+1, 754, YY+29, &HE0C0A0)
Canvas5.Line (690, YY, 754, YY, &HFFE0C0)
Canvas5.Line (754, YY+1, 754, YY+29, &HFFE0C0)
Canvas5.Line (690, YY, 690, YY+29, &HC0A080)
Canvas5.Line (691, YY+29, 754, YY+29, &HC0A080)
INC (YY,50) : NEXT
Canvas5.Rectangle (241, YY, 404, YY+30, &H000000)
Canvas5.FillRect (243, YY+2, 402, YY+28, &HE0C0A0)
Canvas5.Line (242, YY+1, 402, YY+1, &HFFE0C0)
Canvas5.Line (402, YY+2, 402, YY+28, &HFFE0C0)
Canvas5.Line (242, YY+1, 242, YY+28, &HC0A080)
Canvas5.Line (243, YY+28, 402, YY+28, &HC0A080)
Canvas5.FillRect (421, YY+2, 594, YY+28, &HE0C0A0)
Canvas5.Line (420, YY+1, 594, YY+1, &HFFE0C0)
Canvas5.Line (594, YY+2, 594, YY+28, &HFFE0C0)
Canvas5.Line (420, YY+1, 420, YY+28, &HC0A080)
Canvas5.Line (421, YY+28, 594, YY+28, &HC0A080)
Canvas5.Rectangle (241, 322, 450, 352, &H000000)
Canvas5.FillRect (243, 324, 448, 350, &HD0B090)
Canvas5.Line (242, 323, 448, 323, &HF0D0B0)
Canvas5.Line (448, 324, 448, 350, &HF0D0B0)
Canvas5.Line (242, 323, 242, 350, &HB09070)
Canvas5.Line (243, 350, 448, 350, &HB09070)
Canvas5.FillRect (463, 323, 687, 351, &HE0C0A0)
Canvas5.Line (462, 322, 687, 322, &HFFE0C0)
Canvas5.Line (687, 323, 687, 351, &HFFE0C0)
Canvas5.Line (462, 322, 462, 351, &HC0A080)
Canvas5.Line (463, 351, 687, 351, &HC0A080)
Canvas5.Rectangle (701, 322, 768, 352, &H000000)
Canvas5.FillRect (703, 324, 766, 350, &HD0B090)
Canvas5.Line (702, 323, 766, 323, &HF0D0B0)
Canvas5.Line (766, 324, 766, 350, &HF0D0B0)
Canvas5.Line (702, 323, 702, 350, &HB09070)
Canvas5.Line (703, 350, 766, 350, &HB09070)
Canvas5.TextOut (247, 18, "WORD SPLIT", &HB09070, -1)
Canvas5.TextOut (270, 18, "O", &HFFFFFF, -1)
Canvas5.TextOut (531, 18, "Root Drive", &HB09070, -1)
Canvas5.TextOut (592, 18, "D", &HFFFFFF, -1)
Canvas5.TextOut (265, 68, "SPELLING", &HB09070, -1)
Canvas5.TextOut (346, 68, "N", &HFFFFFF, -1)
Canvas5.TextOut (527, 68, "DEF. WAVs", &HB09070, -1)
Canvas5.TextOut (589, 68, "W", &HFFFFFF, -1)
Canvas5.TextOut (276, 118, "SPEECH", &HB09070, -1)
Canvas5.TextOut (292, 118, "P", &HFFFFFF, -1)
Canvas5.TextOut (527, 118, "FOR. WAVs", &HB09070, -1)
Canvas5.TextOut (629, 118, "V", &HFFFFFF, -1)
Canvas5.TextOut (287, 168, "ANDOM", &HB09070, -1)
Canvas5.TextOut (269, 168, "R", &HFFFFFF, -1)
Canvas5.TextOut (527, 168, "DEF. SFILE", &HB09070, -1)
Canvas5.TextOut (605, 168, "F", &HFFFFFF, -1)
Canvas5.TextOut (262, 218, "MISC. ALL", &HB09070, -1)
Canvas5.TextOut (281, 218, "I", &HFFFFFF, -1)
Canvas5.TextOut (527, 218, "FOR. SFILE", &HB09070, -1)
Canvas5.TextOut (629, 218, "L", &HFFFFFF, -1)
Canvas5.TextOut (257, 268, "LANGUAGE", &HB09070, -1)
Canvas5.TextOut (354, 268, "G", &HFFFFFF, -1)
Canvas5.TextOut (249, 322, "SAVE SETTINGS", &HA08060, -1)
Canvas5.TextOut (249, 322, "S", &HFFFFFF, -1)
Canvas5.TextOut (706, 322, "EXIT", &HA08060, -1)
Canvas5.TextOut (706, 322, "E", &HFFFFFF, -1)
SPLIT_Change
SPELL_Change
SPEECH_Change
SEQRND_Change
MISC_Change
LANG_Change
DRIVE_Change
DWAV_Change
FWAV_Change
DSFILE_Change
FSFILE_Change
END SUB
SUB Canvas6Redraw (Sender AS QCANVAS)
Canvas6.Rectangle (3, 3, 790, 295, &H000000)
Canvas6.FillRect (5, 5, 788, 293, &H0000B0)
Canvas6.Line (4, 4, 788, 4, &H0000D0)
Canvas6.Line (788, 5, 788, 293, &H0000D0)
Canvas6.Line (4, 4, 4, 293, &H000090)
Canvas6.Line (5, 293, 788, 293, &H000090)
Canvas6.Line(16, 15, 336, 15, &H0000C0)
Canvas6.Line(336, 16, 336, 233, &H0000C0)
Canvas6.Line(15, 234, 336, 234, &H0000FF)
Canvas6.Line(15, 15, 15, 233, &H0000FF)
Canvas6.Line(15, 14, 337, 14, &H0000FF)
Canvas6.Line(337, 15, 337, 235, &H0000FF)
Canvas6.Line(14, 235, 337, 235, &H0000C0)
Canvas6.Line(14, 14, 14, 234, &H0000C0)
Canvas6.FillRect (15, 248, 337, 283, &H0000C0)
Canvas6.Line(15, 247, 337, 247, &H0000E0)
Canvas6.Line(337, 247, 337, 283, &H0000E0)
Canvas6.Line(14, 283, 337, 283, &H0000A0)
Canvas6.Line(14, 247, 14, 282, &H0000A0)
Canvas6.TextOut (22, 250, LEFT$(LB1.Item(currentVoice), 22), &H000076, -1)
YY=16 : FOR Z=0 TO 2
Canvas6.FillRect (473, YY+2, 567, YY+44, &H504030)
Canvas6.FillRect (473, YY+2, 567, YY+4, &H0000A0)
Canvas6.FillRect (565, YY+4, 567, YY+44, &H0000A0)
Canvas6.FillRect (473, YY+42, 565, YY+44, &H0000C0)
Canvas6.FillRect (473, YY+4, 475, YY+42, &H0000C0)
Canvas6.Pixel (473, YY+3)=&H0000C0
Canvas6.Pixel (565, YY+43)=&H0000C0
Canvas6.FillRect (589, YY+9, 765, YY+37, &H0000E0)
Canvas6.Line (588, YY+8, 765, YY+8, &H0000FF)
Canvas6.Line (765, YY+9, 765, YY+37, &H0000FF)
Canvas6.Line (588, YY+8, 588, YY+37, &H0000C0)
Canvas6.Line (589, YY+37, 765, YY+37, &H0000C0)
IF TB1.position=0 THEN
Canvas6.TextOut (593, 24, "Lowest", &H000076, -1)
ELSEIF TB1.position=1 THEN
Canvas6.TextOut (593, 24, "1 Quarter", &H000076, -1)
ELSEIF TB1.position=2 THEN
Canvas6.TextOut (593, 24, "Half", &H000076, -1)
ELSEIF TB1.position=3 THEN
Canvas6.TextOut (593, 24, "3 Quarters", &H000076, -1)
ELSEIF TB1.position=4 THEN
Canvas6.TextOut (593, 24, "Highest", &H000076, -1)
ELSEIF TB1.position=5 THEN
Canvas6.TextOut (593, 24, "Default", &H000076, -1)
END IF
IF TB2.position=0 THEN
Canvas6.TextOut (593, 74, "Lowest", &H000076, -1)
ELSEIF TB2.position=1 THEN
Canvas6.TextOut (593, 74, "1 Quarter", &H000076, -1)
ELSEIF TB2.position=2 THEN
Canvas6.TextOut (593, 74, "Half", &H000076, -1)
ELSEIF TB2.position=3 THEN
Canvas6.TextOut (593, 74, "3 Quarters", &H000076, -1)
ELSEIF TB2.position=4 THEN
Canvas6.TextOut (593, 74, "Highest", &H000076, -1)
ELSEIF TB2.position=5 THEN
Canvas6.TextOut (593, 74, "Default", &H000076, -1)
END IF
IF TB3.position=0 THEN
Canvas6.TextOut (593, 124, "Lowest", &H000076, -1)
ELSEIF TB3.position=1 THEN
Canvas6.TextOut (593, 124, "1 Quarter", &H000076, -1)
ELSEIF TB3.position=2 THEN
Canvas6.TextOut (593, 124, "Half", &H000076, -1)
ELSEIF TB3.position=3 THEN
Canvas6.TextOut (593, 124, "3 Quarters", &H000076, -1)
ELSEIF TB3.position=4 THEN
Canvas6.TextOut (593, 124, "Highest", &H000076, -1)
ELSEIF TB3.position=5 THEN
Canvas6.TextOut (593, 124, "Default", &H000076, -1)
END IF
INC (YY,50) : NEXT : INC (YY,40)
Canvas6.Rectangle (360, YY, 518, YY+30, &H000000)
Canvas6.FillRect (362, YY+2, 516, YY+28, &H0000E0)
Canvas6.Line (361, YY+1, 516, YY+1, &H0000FF)
Canvas6.Line (516, YY+2, 516, YY+28, &H0000FF)
Canvas6.Line (361, YY+1, 361, YY+28, &H0000C0)
Canvas6.Line (362, YY+28, 516, YY+28, &H0000C0)
Canvas6.TextOut (367, YY, "VOICE TEST", &H000076, -1)
Canvas6.TextOut (450, YY, "T", &HFFFFFF, -1)
Canvas6.Rectangle (560, YY, 768, YY+30, &H000000)
Canvas6.FillRect (562, YY+2, 766, YY+28, &H0000E0)
Canvas6.Line (561, YY+1, 766, YY+1, &H0000FF)
Canvas6.Line (766, YY+2, 766, YY+28, &H0000FF)
Canvas6.Line (561, YY+1, 561, YY+28, &H0000C0)
Canvas6.Line (562, YY+28, 766, YY+28, &H0000C0)
Canvas6.TextOut (567, YY, "SAVE .WAV FILE", &H000076, -1)
Canvas6.TextOut (567, YY, "S", &HFFFFFF, -1)
INC (YY,48)
Canvas6.Rectangle (360, YY, 506, YY+30, &H000000)
Canvas6.FillRect (362, YY+2, 504, YY+28, &H0000E0)
Canvas6.Line (361, YY+1, 504, YY+1, &H0000FF)
Canvas6.Line (504, YY+2, 504, YY+28, &H0000FF)
Canvas6.Line (361, YY+1, 361, YY+28, &H0000C0)
Canvas6.Line (362, YY+28, 504, YY+28, &H0000C0)
Canvas6.TextOut (367, YY, "USE VOICE", &H000076, -1)
Canvas6.TextOut (367, YY, "U", &HFFFFFF, -1)
Canvas6.FillRect (523, YY+2, 578, YY+28, &H0000E0)
Canvas6.Line (522, YY+1, 578, YY+1, &H0000FF)
Canvas6.Line (578, YY+2, 578, YY+28, &H0000FF)
Canvas6.Line (522, YY+1, 522, YY+28, &H0000C0)
Canvas6.Line (523, YY+28, 578, YY+28, &H0000C0)
IF vSpeech=0 THEN
Canvas6.TextOut (528, YY, "NO", &H000076, -1)
ELSE
Canvas6.TextOut (528, YY, "YES", &H000076, -1)
END IF
DEC (YY,88)
Canvas6.FillRect (436, YY+2, 779, YY+29, &H504030)
Canvas6.FillRect (436, YY+2, 779, YY+4, &H0000A0)
Canvas6.FillRect (777, YY+4, 779, YY+29, &H0000A0)
Canvas6.FillRect (436, YY+27, 777, YY+29, &H0000C0)
Canvas6.FillRect (436, YY+4, 438, YY+27, &H0000C0)
Canvas6.Pixel (436, YY+3)=&H0000C0
Canvas6.Pixel (777, YY+28)=&H0000C0
Canvas6.Rectangle (712, 254, 779, 284, &H000000)
Canvas6.FillRect (714, 256, 777, 282, &H0000E0)
Canvas6.Line (713, 255, 777, 255, &H0000FF)
Canvas6.Line (777, 256, 777, 282, &H0000FF)
Canvas6.Line (713, 255, 713, 282, &H0000C0)
Canvas6.Line (714, 282, 777, 282, &H0000C0)
Canvas6.TextOut (360, 25, "VOLUME", &H000076, -1)
Canvas6.TextOut (360, 75, "PITCH", &H000076, -1)
Canvas6.TextOut (360, 125, "SPEED", &H000076, -1)
Canvas6.TextOut (360, 167, "TEXT", &H000076, -1)
Canvas6.TextOut (717, 254, "EXIT", &H000076, -1)
Canvas6.TextOut (717, 254, "E", &HFFFFFF, -1)
END SUB
SUB MouseDown (Button AS BYTE, X AS WORD, Y AS WORD, Shift AS INTEGER)
IF MN=0 THEN
IF Button=0 AND Shift=noCKeys THEN
IF (Y>456 AND Y<487) THEN
IF (X>105 AND X<209) THEN
IF LRN=0 THEN
Reveal_Words
ELSE
Reveal_Sentences
END IF
ELSEIF (X>222 AND X<297) THEN
IF LRN=0 THEN
Next_Words
ELSE
Next_Sentences
END IF
ELSEIF (X>310 AND X<400) THEN
SO_Check : Speak_ToMe : SO_Check
ELSEIF (X>413 AND X<524) THEN
MN=1 : MN_Change
ELSEIF (X>537 AND X<657) THEN
Window3.SHOWMODAL
ELSEIF (X>670 AND X<697) THEN
Up_SW
ELSEIF (X>710 AND X<737) THEN
Down_SW
ELSEIF (X>761 AND X<790) THEN
CleanUp
Window1.CLOSE
END IF
ELSE
END IF
IF (X>15 AND X<43) THEN
IF (Y>37 AND Y<58) THEN
DS_Check
ELSEIF (Y>114 AND Y<135) THEN
FS_Check
ELSEIF (Y>172 AND Y<193) THEN
DP_Check
ELSEIF (Y>219 AND Y<240) THEN
FP_Check
ELSEIF (Y>268 AND Y<289) THEN
DJ_Check
ELSEIF (Y>315 AND Y<336) THEN
FJ_Check
ELSEIF (Y>365 AND Y<386) THEN
DV_Check
ELSEIF (Y>412 AND Y<433) THEN
FV_Check
ELSE
END IF
ELSE
END IF
ELSE
END IF
ELSE
IF PST=0 THEN
IF (Y>456 AND Y<487) THEN
IF (X>2 AND X<92) THEN
PO_Check
ELSEIF (X>413 AND X<524) THEN
MN=0 : MN_Change
END IF
END IF
ELSE
IF (Y>456 AND Y<487) THEN
IF (X>2 AND X<92) THEN
AMT=0 : PST=0 : PO=0 : PO_Change
END IF
END IF
END IF
END IF
END SUB
SUB KeyDown(Key AS WORD, Shift AS INTEGER)
IF MN=0 THEN
IF Shift=noCKeys THEN
IF Key=82 THEN
IF LRN=0 THEN
Reveal_Words
ELSE
Reveal_Sentences
END IF
ELSEIF Key=78 THEN
IF LRN=0 THEN
Next_Words
ELSE
Next_Sentences
END IF
ELSEIF Key=83 THEN
SO_Check : Speak_ToMe : SO_Check
ELSEIF Key=79 THEN
Window3.SHOWMODAL
ELSEIF Key=38 THEN
Up_SW
ELSEIF Key=40 THEN
Down_SW
ELSEIF Key=65 THEN
MN=1 : MN_Change
END IF
ELSEIF Shift=ssShift THEN
IF Key=88 THEN
CleanUp
Window1.CLOSE
END IF
END IF
ELSE
IF PST=0 THEN
IF Key=80 THEN
PO_Check
ELSEIF Key=77 THEN
MN=0 : MN_Change
END IF
ELSE
IF Key=80 THEN
AMT=0 : PST=0 : PO=0 : PO_Change
END IF
END IF
END IF
END SUB
SUB Key3Down(Key AS WORD, Shift AS INTEGER)
IF Shift=noCKeys THEN
IF (Key>48 AND Key<58) THEN
CPVAL=(Key-49) : CP_Check
ELSEIF Key=48 THEN
CPVAL=9 : CP_Check
ELSEIF Key=189 THEN
CPVAL=10 : CP_Check
ELSEIF Key=38 THEN
DEC CPVAL
IF CPVAL=65535 THEN CPVAL=21
CP_Check
ELSEIF Key=40 THEN
INC CPVAL
IF CPVAL>21 THEN CPVAL=0
CP_Check
ELSEIF Key=83 THEN
SRCHSTS=0 : Window4.SHOWMODAL
ELSEIF Key=78 THEN
Window5.SHOWMODAL
ELSEIF Key=87 THEN
CURDT=0 : LRN=0 : OLDPAA=10 : CURPAA=1 : DT_Check
ELSEIF Key=84 THEN
CURDT=1 : LRN=1 : OLDPAA=10 : CURPAA=0 : DT_Check
ELSEIF Key=80 THEN
IF (slib=1 AND voiceTotal>0) THEN Window6.SHOWMODAL
ELSEIF Key=69 THEN
Window3.CLOSE
END IF
ELSEIF Shift=ssShift THEN
IF (Key>48 AND Key<58) THEN
CPVAL=(Key-38) : CP_Check
ELSEIF Key=48 THEN
CPVAL=20 : CP_Check
ELSEIF Key=189 THEN
CPVAL=21 : CP_Check
ELSEIF Key=87 THEN
CURDT=2 : LRN=0 : OLDPAA=10 : CURPAA=1 : DT_Check
ELSEIF Key=84 THEN
CURDT=3 : LRN=0 : OLDPAA=10 : CURPAA=1 : DT_Check
END IF
END IF
END SUB
SUB Mouse3Down (Button AS BYTE, X AS WORD, Y AS WORD, Shift AS INTEGER)
DIM CHK AS BYTE
CHK=0
IF Button=0 AND Shift=noCKeys THEN
IF (Y>456 AND Y<487) THEN
IF (X>2 AND X<109) THEN
SRCHSTS=0 : Window4.SHOWMODAL
ELSEIF (X>122 AND X<254) THEN
Window5.SHOWMODAL
ELSEIF (X>267 AND X<371) THEN
CURDT=0 : LRN=0 : OLDPAA=10 : CURPAA=1 : DT_Check
ELSEIF (X>384 AND X<538) THEN
CURDT=1 : LRN=1 : OLDPAA=10 : CURPAA=0 : DT_Check
ELSEIF (X>550 AND X<655) THEN
IF (slib=1 AND voiceTotal>0) THEN Window6.SHOWMODAL
ELSEIF (X>722 AND X<790) THEN
Window3.CLOSE
END IF
ELSEIF ((X>350 AND X<380) OR (X>747 AND X<777)) THEN
CHK=1
IF (Y>13 AND Y<41) THEN
CPVAL=0 : CHK=2
ELSEIF (Y>53 AND Y<81) THEN
CPVAL=1 : CHK=2
ELSEIF (Y>93 AND Y<121) THEN
CPVAL=2 : CHK=2
ELSEIF (Y>133 AND Y<161) THEN
CPVAL=3 : CHK=2
ELSEIF (Y>173 AND Y<201) THEN
CPVAL=4 : CHK=2
ELSEIF (Y>213 AND Y<241) THEN
CPVAL=5 : CHK=2
ELSEIF (Y>253 AND Y<281) THEN
CPVAL=6 : CHK=2
ELSEIF (Y>293 AND Y<321) THEN
CPVAL=7 : CHK=2
ELSEIF (Y>333 AND Y<361) THEN
CPVAL=8 : CHK=2
ELSEIF (Y>373 AND Y<401) THEN
CPVAL=9 : CHK=2
ELSEIF (Y>413 AND Y<441) THEN
CPVAL=10 : CHK=2
END IF
IF CHK=2 THEN
IF (X>727 AND X<777) THEN INC (CPVAL,11)
CP_Check
END IF
END IF
ELSEIF Button=1 AND Shift=noCKeys THEN
IF (Y>456 AND Y<487) THEN
IF (X>267 AND X<371) THEN
CURDT=2 : LRN=0 : OLDPAA=10 : CURPAA=1 : DT_Check
ELSEIF (X>384 AND X<538) THEN
CURDT=3 : LRN=1 : OLDPAA=10 : CURPAA=0 : DT_Check
END IF
END IF
END IF
END SUB
SUB Key4Down(Key AS WORD, Shift AS INTEGER)
IF Shift=ssCtrl THEN
IF Key=69 THEN
Window4.CLOSE
ELSEIF Key=68 THEN
CURDF=0 : DF_Check
ELSEIF Key=70 THEN
CURDF=1 : DF_Check
ELSEIF Key=78 THEN
IF LRN=1 THEN
CURPAA=0 : PAA_Check
END IF
ELSEIF Key=85 THEN
IF LRN=0 THEN
CURPAA=1 : PAA_Check
END IF
ELSEIF Key=74 THEN
IF LRN=0 THEN
CURPAA=2 : PAA_Check
END IF
ELSEIF Key=82 THEN
IF LRN=0 THEN
CURPAA=3 : PAA_Check
END IF
ELSEIF Key=67 THEN
Continue_WS
END IF
ELSE
IF Key=13 THEN
Search_WS
END IF
END IF
END SUB
SUB Mouse4Down (Button AS BYTE, X AS WORD, Y AS WORD, Shift AS INTEGER)
IF (Button=0 AND Shift=noCKeys) THEN
IF (X>18 AND X<171) THEN
IF (Y>18 AND Y<47) THEN
CURDF=0 : DF_Check
ELSEIF (Y>62 AND Y<91) THEN
CURDF=1 : DF_Check
ELSEIF (Y>124 AND Y<153) THEN
IF LRN=1 THEN
CURPAA=0 : PAA_Check
END IF
ELSEIF (Y>168 AND Y<197) THEN
IF LRN=0 THEN
CURPAA=1 : PAA_Check
END IF
ELSEIF (Y>212 AND Y<241) THEN
IF LRN=0 THEN
CURPAA=2 : PAA_Check
END IF
ELSEIF (Y>256 AND Y<285) THEN
IF LRN=0 THEN
CURPAA=3 : PAA_Check
END IF
END IF
ELSEIF (X>328 AND X<464) THEN
IF (Y>121 AND Y<152) THEN
Continue_WS
END IF
ELSEIF (X>695 AND X<763) THEN
IF (Y>121 AND Y<152) THEN
Window4.CLOSE
END IF
END IF
END IF
END SUB
SUB Settings_Error(err AS BYTE)
SHOWMESSAGE("Settings File - Invalid Value"+" "+STR$(err))
Application.Terminate
END SUB
SUB Load_Settings
IF DIREXISTS ("C:\\LanguageGUI\\") <> 0 THEN
IF FILEEXISTS ("C:\\LanguageGUI\\LGUI.Settings") <> 0 THEN
IF File.OPEN ("C:\\LanguageGUI\\LGUI.Settings", fmOpenRead) <> 0 THEN
FLen=File.Size
IF FLen=107 THEN
LANG=File.ReadNum(1) : IF (LANG<1 OR LANG>10) THEN Settings_Error(0)
Root_Dir$=File.ReadLine()
DName$(0)=Root_Dir$
DName$(1)=Root_Dir$+"LGUI_English"
DName$(2)=Root_Dir$+"LGUI_French"
DName$(3)=Root_Dir$+"LGUI_German"
DName$(4)=Root_Dir$+"LGUI_Indonesian"
DName$(5)=Root_Dir$+"LGUI_Italian"
DName$(6)=Root_Dir$+"LGUI_Korean"
DName$(7)=Root_Dir$+"LGUI_Norwegian"
DName$(8)=Root_Dir$+"LGUI_Spanish"
DName$(9)=Root_Dir$+"LGUI_Swedish"
DName$(10)=Root_Dir$+"LGUI_Tagalog"
FName$(0)=DName$(LANG)+"\\DASCII_Files\\DTitles.txt"
FName$(1)=DName$(LANG)+"\\FASCII_Files\\FTitles.txt"
FName$(2)=DName$(LANG)+"\\DASCII_Files\\DSentences.txt"
FName$(3)=DName$(LANG)+"\\FASCII_Files\\FSentences.txt"
FName$(4)=DName$(LANG)+"\\DASCII_Files\\DNouns.txt"
FName$(5)=DName$(LANG)+"\\FASCII_Files\\FNouns.txt"
FName$(6)=DName$(LANG)+"\\DASCII_Files\\DAdjectives.txt"
FName$(7)=DName$(LANG)+"\\FASCII_Files\\FAdjectives.txt"
FName$(8)=DName$(LANG)+"\\DASCII_Files\\DVerbs.txt"
FName$(9)=DName$(LANG)+"\\FASCII_Files\\FVerbs.txt"
DS=File.ReadNum(1) : IF (DS<0 OR DS>1) THEN Settings_Error(1)
FS=File.ReadNum(1) : IF (FS<0 OR FS>1) THEN Settings_Error(2)
DP=File.ReadNum(1) : IF (DP<0 OR DP>1) THEN Settings_Error(3)
FP=File.ReadNum(1) : IF (FP<0 OR FP>1) THEN Settings_Error(4)
DJ=File.ReadNum(1) : IF (DJ<0 OR DJ>1) THEN Settings_Error(5)
FJ=File.ReadNum(1) : IF (FJ<0 OR FJ>1) THEN Settings_Error(6)
DV=File.ReadNum(1) : IF (DV<0 OR DV>1) THEN Settings_Error(7)
FV=File.ReadNum(1) : IF (FV<0 OR FV>1) THEN Settings_Error(8)
MN=File.ReadNum(1) : IF (MN<0 OR MN>1) THEN Settings_Error(9)
LRN=File.ReadNum(1) : IF (LRN<0 OR LRN>1) THEN Settings_Error(10)
NX=File.ReadNum(1) : IF (NX<0 OR NX>1) THEN Settings_Error(11)
FWD=File.ReadNum(1) : IF (FWD<0 OR FWD>1) THEN Settings_Error(12)
SPLIT=File.ReadNum(1) : IF (SPLIT<0 OR SPLIT>1) THEN Settings_Error(13)
SPELL=File.ReadNum(1) : IF (SPELL<0 OR SPELL>1) THEN Settings_Error(14)
SPEECH=File.ReadNum(1) : IF (SPEECH<0 OR SPEECH>1) THEN Settings_Error(15)
MISC=File.ReadNum(1) : IF (MISC<0 OR MISC>1) THEN Settings_Error(16)
SEQRND=File.ReadNum(1) : IF (SEQRND<0 OR SEQRND>1) THEN Settings_Error(17)
DFDELAY=File.ReadNum(1)
IF (DFDELAY<0 OR DFDELAY>9) THEN
Settings_Error(18)
ELSE
Edit1.Text=STR$(DFDELAY)
END IF
AMDELAY=File.ReadNum(1)
IF (AMDELAY<0 OR AMDELAY>9) THEN
Settings_Error(19)
ELSE
Edit2.Text=STR$(AMDELAY)
END IF
SPDELAY=File.ReadNum(1)
IF (SPDELAY<0 OR SPDELAY>9) THEN
Settings_Error(20)
ELSE
Edit3.Text=STR$(SPDELAY)
END IF
WSDELAY=File.ReadNum(1)
IF (WSDELAY<0 OR WSDELAY>9) THEN
Settings_Error(21)
ELSE
Edit4.Text=STR$(WSDELAY)
END IF
RVDELAY=File.ReadNum(1)
IF (RVDELAY<0 OR RVDELAY>9) THEN
Settings_Error(22)
ELSE
Edit5.Text=STR$(RVDELAY)
END IF
STOPDELAY=File.ReadNum(1)
IF (STOPDELAY<0 OR STOPDELAY>9) THEN
Settings_Error(23)
ELSE
Edit6.Text=STR$(STOPDELAY)
END IF
NAVDELAY=File.ReadNum(1)
IF (NAVDELAY<0 OR NAVDELAY>9) THEN
Settings_Error(24)
ELSE
Edit7.Text=STR$(NAVDELAY)
END IF
OLDCP=File.ReadNum(1)
CURCP=File.ReadNum(1)
CPVAL=File.ReadNum(1)
OLDDF=File.ReadNum(1)
CURDF=File.ReadNum(1)
OLDPAA=File.ReadNum(1)
CURPAA=File.ReadNum(1)
OLDDT=File.ReadNum(1)
CURDT=File.ReadNum(1)
OLDSEQ=File.ReadNum(4)
CURSEQ=File.ReadNum(4)
NEXTSEQ=File.ReadNum(4)
DWAV=File.ReadNum(1)
FWAV=File.ReadNum(1)
DSFILE=File.ReadNum(1)
FSFILE=File.ReadNum(1)
rtn=File.ReadNum(4)
rtn=File.ReadNum(4)
rtn=File.ReadNum(4)
rtn=File.ReadNum(4)
rtn=File.ReadNum(4)
rtn=File.ReadNum(4)
rtn=File.ReadNum(4)
rtn=File.ReadNum(4)
rtn=File.ReadNum(4)
rtn=File.ReadNum(4)
IF DWAV=1 THEN
DSpeech_Dir$="English_WAVs\\"
ELSEIF DWAV=2 THEN
DSpeech_Dir$="French_WAVs\\"
ELSEIF DWAV=3 THEN
DSpeech_Dir$="German_WAVs\\"
ELSEIF DWAV=4 THEN
DSpeech_Dir$="Indonesian_WAVs\\"
ELSEIF DWAV=5 THEN
DSpeech_Dir$="Italian_WAVs\\"
ELSEIF DWAV=6 THEN
DSpeech_Dir$="Korean_WAVs\\"
ELSEIF DWAV=7 THEN
DSpeech_Dir$="Norwegian_WAVs\\"
ELSEIF DWAV=8 THEN
DSpeech_Dir$="Spanish_WAVs\\"
ELSEIF DWAV=9 THEN
DSpeech_Dir$="Swedish_WAVs\\"
ELSEIF DWAV=10 THEN
DSpeech_Dir$="Tagalog_WAVs\\"
END IF
IF FWAV=1 THEN
FSpeech_Dir$="English_WAVs\\"
ELSEIF FWAV=2 THEN
FSpeech_Dir$="French_WAVs\\"
ELSEIF FWAV=3 THEN
FSpeech_Dir$="German_WAVs\\"
ELSEIF FWAV=4 THEN
FSpeech_Dir$="Indonesian_WAVs\\"
ELSEIF FWAV=5 THEN
FSpeech_Dir$="Italian_WAVs\\"
ELSEIF FWAV=6 THEN
FSpeech_Dir$="Korean_WAVs\\"
ELSEIF FWAV=7 THEN
FSpeech_Dir$="Norwegian_WAVs\\"
ELSEIF FWAV=8 THEN
FSpeech_Dir$="Spanish_WAVs\\"
ELSEIF FWAV=9 THEN
FSpeech_Dir$="Swedish_WAVs\\"
ELSEIF FWAV=10 THEN
FSpeech_Dir$="Tagalog_WAVs\\"
END IF
FName$(10)=DName$(DSFILE)+"\\DASCII_Files\\DSSpeech.txt"
FName$(11)=DName$(FSFILE)+"\\FASCII_Files\\FSSpeech.txt"
FName$(12)=DName$(DSFILE)+"\\DASCII_Files\\DPSpeech.txt"
FName$(13)=DName$(FSFILE)+"\\FASCII_Files\\FPSpeech.txt"
FName$(14)=DName$(DSFILE)+"\\DASCII_Files\\DJSpeech.txt"
FName$(15)=DName$(FSFILE)+"\\FASCII_Files\\FJSpeech.txt"
FName$(16)=DName$(DSFILE)+"\\DASCII_Files\\DVSpeech.txt"
FName$(17)=DName$(FSFILE)+"\\FASCII_Files\\FVSpeech.txt"
File.CLOSE
ELSE
File.CLOSE
SHOWMESSAGE("C:\\LanguageGUI\\LGUI.Settings\n\n File Has An Incorrect Size")
Application.Terminate
END IF
ELSE
SHOWMESSAGE("C:\\LanguageGUI\\LGUI.Settings\n\n File Was NOT Loaded")
Application.Terminate
END IF
ELSE
SHOWMESSAGE("C:\\LanguageGUI\\LGUI.Settings\n\n File Was NOT Found")
Application.Terminate
END IF
ELSE
SHOWMESSAGE(" C:\\LanguageGUI\n\nDirectory/Folder Was NOT Found")
Application.Terminate
END IF
END SUB
SUB Save_Settings
Canvas5.FillRect (463, 323, 687, 351, &HE0C0A0)
IF DIREXISTS ("C:\\LanguageGUI\\") <> 0 THEN
IF File.OPEN ("C:\\LanguageGUI\\LGUI.Settings", fmCreate) <> 0 THEN
File.WriteNum(LANG, 1)
FStg$=REPLACE$(Root_Dir$, LEFT$(drive$(Drv_Cnt), 1), 1)
File.WriteLine(FStg$)
File.WriteNum(DS, 1)
File.WriteNum(FS, 1)
File.WriteNum(DP, 1)
File.WriteNum(FP, 1)
File.WriteNum(DJ, 1)
File.WriteNum(FJ, 1)
File.WriteNum(DV, 1)
File.WriteNum(FV, 1)
File.WriteNum(MN, 1)
File.WriteNum(LRN, 1)
File.WriteNum(NX, 1)
File.WriteNum(FWD, 1)
File.WriteNum(SPLIT, 1)
File.WriteNum(SPELL, 1)
File.WriteNum(SPEECH, 1)
File.WriteNum(MISC, 1)
File.WriteNum(SEQRND, 1)
File.WriteNum(DFDELAY, 1)
File.WriteNum(AMDELAY, 1)
File.WriteNum(SPDELAY, 1)
File.WriteNum(WSDELAY, 1)
File.WriteNum(RVDELAY, 1)
File.WriteNum(STOPDELAY, 1)
File.WriteNum(NAVDELAY, 1)
File.WriteNum(OLDCP, 1)
File.WriteNum(CURCP, 1)
File.WriteNum(CPVAL, 1)
File.WriteNum(OLDDF, 1)
File.WriteNum(CURDF, 1)
OLDPAA=10
File.WriteNum(OLDPAA, 1)
File.WriteNum(CURPAA, 1)
OLDDT=10
File.WriteNum(OLDDT, 1)
File.WriteNum(CURDT, 1)
File.WriteNum(OLDSEQ, 4)
File.WriteNum(CURSEQ, 4)
File.WriteNum(NEXTSEQ, 4)
File.WriteNum(DWAV, 1)
File.WriteNum(FWAV, 1)
File.WriteNum(DSFILE, 1)
File.WriteNum(FSFILE, 1)
File.WriteNum(23, 4)
File.WriteNum(23, 4)
File.WriteNum(23, 4)
File.WriteNum(23, 4)
File.WriteNum(23, 4)
File.WriteNum(23, 4)
File.WriteNum(23, 4)
File.WriteNum(23, 4)
File.WriteNum(23, 4)
File.WriteNum(23, 4)
File.CLOSE
Canvas5.TextOut(470, 322, "Settings Saved", &HB09070, -1)
ELSE
Canvas5.TextOut (470, 322, "File Not Opened", &HB09070, -1)
END IF
ELSE
Canvas5.TextOut (470, 322, "Dir. Not Found", &HB09070, -1)
END IF
END SUB
SUB Update_Delays
IF Edit1.Text="" THEN
Edit1.Text="0"
DFDELAY=VAL(Edit1.Text)
END IF
IF Edit2.Text="" THEN
Edit2.Text="0"
AMDELAY=VAL(Edit2.Text)
END IF
IF Edit3.Text="" THEN
Edit3.Text="0"
SPDELAY=VAL(Edit3.Text)
END IF
IF Edit4.Text="" THEN
Edit4.Text="0"
WSDELAY=VAL(Edit4.Text)
END IF
IF Edit5.Text="" THEN
Edit5.Text="0"
RVDELAY=VAL(Edit5.Text)
END IF
IF Edit6.Text="" THEN
Edit6.Text="0"
STOPDELAY=VAL(Edit6.Text)
END IF
IF Edit7.Text="" THEN
Edit7.Text="0"
NAVDELAY=VAL(Edit7.Text)
END IF
END SUB
SUB Key5Down(Key AS WORD, Shift AS INTEGER)
IF Shift=ssCtrl THEN
IF Key=69 THEN
Update_Delays
Window5.CLOSE
ELSEIF Key=68 THEN
INC Drv_Cnt
IF Drv_Cnt=>NumDrives THEN
Drv_Cnt=0
END IF
DRIVE_Change
ELSEIF Key=70 THEN
DSFILE_Inc
ELSEIF Key=71 THEN
LANG_Inc
ELSEIF Key=76 THEN
FSFILE_Inc
ELSEIF Key=79 THEN
SPLIT_Check
ELSEIF Key=78 THEN
SPELL_Check
ELSEIF Key=80 THEN
SPEECH_Check
ELSEIF Key=82 THEN
SEQRND_Check
ELSEIF Key=73 THEN
MISC_Check
ELSEIF Key=87 THEN
DWAV_Inc
ELSEIF Key=86 THEN
FWAV_Inc
ELSEIF Key=83 THEN
SAVE_Settings
END IF
ELSEIF Shift=ssShift THEN
IF Key=71 THEN
LANG_Dec
END IF
ELSE
IF Key=13 THEN Update_Delays
END IF
END SUB
SUB Mouse5Down (Button AS BYTE, X AS WORD, Y AS WORD, Shift AS INTEGER)
IF (Button=0 AND Shift=noCKeys) THEN
IF (X>240 AND X<404) THEN
IF (Y>17 AND Y<48) THEN
SPLIT_Check
ELSEIF (Y>67 AND Y<98) THEN
SPELL_Check
ELSEIF (Y>117 AND Y<148) THEN
SPEECH_Check
ELSEIF (Y>167 AND Y<198) THEN
SEQRND_Check
ELSEIF (Y>217 AND Y<248) THEN
MISC_Check
ELSEIF (Y>267 AND Y<298) THEN
LANG_Inc
END IF
END IF
IF (X>510 AND X<674) THEN
IF (Y>17 AND Y<48) THEN
INC Drv_Cnt
IF Drv_Cnt=>NumDrives THEN
Drv_Cnt=0
END IF
DRIVE_Change
ELSEIF (Y>67 AND Y<98) THEN
DWAV_Inc
ELSEIF (Y>117 AND Y<148) THEN
FWAV_Inc
ELSEIF (Y>167 AND Y<198) THEN
DSFILE_Inc
ELSEIF (Y>217 AND Y<248) THEN
FSFILE_Inc
ELSEIF (Y>267 AND Y<298) THEN
END IF
END IF
IF (Y>321 AND Y<352) THEN
IF (X>240 AND X<450) THEN
SAVE_Settings
ELSEIF (X>700 AND X<768) THEN
Update_Delays
Window5.CLOSE
END IF
END IF
ELSEIF (Button=1 AND Shift=noCKeys) THEN
IF (Y>317 AND Y<348) THEN
LANG_Dec
END IF
END IF
END SUB
SUB Update_Voices
IF TB1.position=0 THEN
cvolume(currentVoice)=0
ELSEIF TB1.position=1 THEN
cvolume(currentVoice)=&H20002000
ELSEIF TB1.position=2 THEN
cvolume(currentVoice)=&H40004000
ELSEIF TB1.position=3 THEN
cvolume(currentVoice)=&H7FFF7FFF
ELSEIF TB1.position=4 THEN
cvolume(currentVoice)=&HFFFFFFFF
ELSEIF TB1.position=5 THEN
cvolume(currentVoice)=dvolume(currentVoice)
END IF
IF TB2.position=0 THEN
cpitch(currentVoice)=0
ELSEIF TB2.position=1 THEN
cpitch(currentVoice)=&H2000
ELSEIF TB2.position=2 THEN
cpitch(currentVoice)=&H4000
ELSEIF TB2.position=3 THEN
cpitch(currentVoice)=&H7FFF
ELSEIF TB2.position=4 THEN
cpitch(currentVoice)=&HFFFF
ELSEIF TB2.position=5 THEN
cpitch(currentVoice)=dpitch(currentVoice)
END IF
IF TB3.position=0 THEN
cspeed(currentVoice)=0
ELSEIF TB3.position=1 THEN
cspeed(currentVoice)=63
ELSEIF TB3.position=2 THEN
cspeed(currentVoice)=127
ELSEIF TB3.position=3 THEN
cspeed(currentVoice)=191
ELSEIF TB3.position=4 THEN
cspeed(currentVoice)=255
ELSEIF TB3.position=5 THEN
cspeed(currentVoice)=dspeed(currentVoice)
END IF
Canvas6.FillRect (589, 25, 765, 53, &H0000E0)
IF TB1.position=0 THEN
Canvas6.TextOut (593, 24, "Lowest", &H000076, -1)
ELSEIF TB1.position=1 THEN
Canvas6.TextOut (593, 24, "1 Quarter", &H000076, -1)
ELSEIF TB1.position=2 THEN
Canvas6.TextOut (593, 24, "Half", &H000076, -1)
ELSEIF TB1.position=3 THEN
Canvas6.TextOut (593, 24, "3 Quarters", &H000076, -1)
ELSEIF TB1.position=4 THEN
Canvas6.TextOut (593, 24, "Highest", &H000076, -1)
ELSEIF TB1.position=5 THEN
Canvas6.TextOut (593, 24, "Default", &H000076, -1)
END IF
Canvas6.FillRect (589, 75, 765, 103, &H0000E0)
IF TB2.position=0 THEN
Canvas6.TextOut (593, 74, "Lowest", &H000076, -1)
ELSEIF TB2.position=1 THEN
Canvas6.TextOut (593, 74, "1 Quarter", &H000076, -1)
ELSEIF TB2.position=2 THEN
Canvas6.TextOut (593, 74, "Half", &H000076, -1)
ELSEIF TB2.position=3 THEN
Canvas6.TextOut (593, 74, "3 Quarters", &H000076, -1)
ELSEIF TB2.position=4 THEN
Canvas6.TextOut (593, 74, "Highest", &H000076, -1)
ELSEIF TB2.position=5 THEN
Canvas6.TextOut (593, 74, "Default", &H000076, -1)
END IF
Canvas6.FillRect (589, 125, 765, 153, &H0000E0)
IF TB3.position=0 THEN
Canvas6.TextOut (593, 124, "Lowest", &H000076, -1)
ELSEIF TB3.position=1 THEN
Canvas6.TextOut (593, 124, "1 Quarter", &H000076, -1)
ELSEIF TB3.position=2 THEN
Canvas6.TextOut (593, 124, "Half", &H000076, -1)
ELSEIF TB3.position=3 THEN
Canvas6.TextOut (593, 124, "3 Quarters", &H000076, -1)
ELSEIF TB3.position=4 THEN
Canvas6.TextOut (593, 124, "Highest", &H000076, -1)
ELSEIF TB3.position=5 THEN
Canvas6.TextOut (593, 124, "Default", &H000076, -1)
END IF
END SUB
SUB WAVFile_Save
spk$="" : rFile$=""
SaveDialog.hwndOwner=window6.Handle
rtn=GetSaveFileName(SaveDialog)
IF rtn THEN
rFile$=LEFT$(sFile$,INSTR(sFile$,CHR$(0))-1)
IF LEN(rFile$)>0 THEN
IF INSTR(rFile$,".wav") OR INSTR(rFile$,".WAV") THEN
ELSE
rFile$=rFile$+".wav"
END IF
END IF
Update_Voices
spk$=Edit12.Text
Speak_String(USE_TEXT,VARPTR(spk$),CLEAR_TEXTSPEECH_BUFFER,currentVoice,NEW_TTS_ALWAYS,USE_DEFINED_VOLUME,cvolume(currentVoice),USE_DEFINED_PITCH,cpitch(currentVoice),USE_DEFINED_SPEED,cspeed(currentVoice))
Save_WAVFileEx(rFile$,5000,USE_TEXT,VARPTR(spk$),CLEAR_TEXT_BUFFER,currentVoice,USE_DEFINED_VOLUME,cvolume(currentVoice),USE_DEFINED_PITCH,cpitch(currentVoice),USE_DEFINED_SPEED,cspeed(currentVoice))
SHOWMESSAGE(rFile$+" has been Saved")
END IF
END SUB
SUB Key6Down(Key AS WORD, Shift AS INTEGER)
IF Shift=ssCtrl THEN
IF Key=69 THEN
Update_Voices
Window6.CLOSE
ELSEIF Key=83 THEN
WAVFile_Save
ELSEIF Key=84 THEN
Update_Voices
vstg$=Edit12.Text
Speak_String(USE_TEXT,VARPTR(vstg$),CLEAR_TEXTSPEECH_BUFFER,currentVoice,NEW_TTS_ALWAYS,USE_DEFINED_VOLUME,cvolume(currentVoice),USE_DEFINED_PITCH,cpitch(currentVoice),USE_DEFINED_SPEED,cspeed(currentVoice))
ELSEIF Key=85 THEN
INC vSpeech
IF vSpeech>1 THEN vSpeech=0
Canvas6.FillRect (523, 256, 578, 282, &H0000E0)
IF vSpeech=0 THEN
Canvas6.TextOut (528, 254, "NO", &H000076, -1)
ELSE
Canvas6.TextOut (528, 254, "YES", &H000076, -1)
END IF
END IF
ELSEIF Shift=ssShift THEN
IF Key=71 THEN
END IF
ELSE
IF Key=13 THEN Update_Voices
END IF
END SUB
SUB TB1Clicked
Update_Voices
END SUB
SUB Mouse6Down (Button AS BYTE, X AS WORD, Y AS WORD, Shift AS INTEGER)
IF (Button=0 AND Shift=noCKeys) THEN
IF (Y>205 AND Y<236) THEN
IF (X>359 AND X<518) THEN
Update_Voices
vstg$=Edit12.Text
Speak_String(USE_TEXT,VARPTR(vstg$),CLEAR_TEXTSPEECH_BUFFER,currentVoice,NEW_TTS_ALWAYS,USE_DEFINED_VOLUME,cvolume(currentVoice),USE_DEFINED_PITCH,cpitch(currentVoice),USE_DEFINED_SPEED,cspeed(currentVoice))
ELSEIF (X>559 AND X<768) THEN
WAVFile_Save
END IF
END IF
IF (Y>253 AND Y<284) THEN
IF (X>359 AND X<506) THEN
INC vSpeech
IF vSpeech>1 THEN vSpeech=0
Canvas6.FillRect (523, 256, 578, 282, &H0000E0)
IF vSpeech=0 THEN
Canvas6.TextOut (528, 254, "NO", &H000076, -1)
ELSE
Canvas6.TextOut (528, 254, "YES", &H000076, -1)
END IF
ELSEIF (X>711 AND X<779) THEN
Update_Voices
Window6.CLOSE
END IF
END IF
ELSEIF (Button=1 AND Shift=noCKeys) THEN
IF (Y>317 AND Y<348) THEN
END IF
END IF
END SUB
SUB Key10Down(Key AS WORD, Shift AS INTEGER)
IF Shift=noCKeys THEN
IF ((Key>47) AND (Key<58)) THEN
Edit1.Text=STR$(Key-48)
DFDELAY=VAL(Edit1.Text)
ELSE
Edit1.Text="0"
DFDELAY=0
END IF
ELSEIF Shift=ssCtrl THEN
Key5Down(Key, Shift)
END IF
END SUB
SUB Key11Down(Key AS WORD, Shift AS INTEGER)
IF Shift=noCKeys THEN
IF ((Key>47) AND (Key<58)) THEN
Edit2.Text=STR$(Key-48)
AMDELAY=VAL(Edit2.Text)
ELSE
Edit2.Text="0"
AMDELAY=0
END IF
ELSEIF Shift=ssCtrl THEN
Key5Down(Key, Shift)
END IF
END SUB
SUB Key12Down(Key AS WORD, Shift AS INTEGER)
IF Shift=noCKeys THEN
IF ((Key>47) AND (Key<58)) THEN
Edit3.Text=STR$(Key-48)
SPDELAY=VAL(Edit3.Text)
ELSE
Edit3.Text="0"
SPDELAY=0
END IF
ELSEIF Shift=ssCtrl THEN
Key5Down(Key, Shift)
END IF
END SUB
SUB Key13Down(Key AS WORD, Shift AS INTEGER)
IF Shift=noCKeys THEN
IF ((Key>47) AND (Key<58)) THEN
Edit4.Text=STR$(Key-48)
WSDELAY=VAL(Edit4.Text)
ELSE
Edit4.Text="0"
WSDELAY=0
END IF
ELSEIF Shift=ssCtrl THEN
Key5Down(Key, Shift)
END IF
END SUB
SUB Key14Down(Key AS WORD, Shift AS INTEGER)
IF Shift=noCKeys THEN
IF ((Key>47) AND (Key<58)) THEN
Edit5.Text=STR$(Key-48)
RVDELAY=VAL(Edit5.Text)
ELSE
Edit5.Text="0"
RVDELAY=0
END IF
ELSEIF Shift=ssCtrl THEN
Key5Down(Key, Shift)
END IF
END SUB
SUB Key15Down(Key AS WORD, Shift AS INTEGER)
IF Shift=noCKeys THEN
IF ((Key>47) AND (Key<58)) THEN
Edit6.Text=STR$(Key-48)
STOPDELAY=VAL(Edit6.Text)
ELSE
Edit6.Text="0"
STOPDELAY=0
END IF
ELSEIF Shift=ssCtrl THEN
Key5Down(Key, Shift)
END IF
END SUB
SUB Key16Down(Key AS WORD, Shift AS INTEGER)
IF Shift=noCKeys THEN
IF ((Key>47) AND (Key<58)) THEN
Edit7.Text=STR$(Key-48)
NAVDELAY=VAL(Edit7.Text)
ELSE
Edit7.Text="0"
NAVDELAY=0
END IF
ELSEIF Shift=ssCtrl THEN
Key5Down(Key, Shift)
END IF
END SUB
SUB LB1Clicked
IF voiceTotal>0 THEN
oldVoice=currentVoice
currentVoice=LB1.ItemIndex
Canvas6.FillRect (15, 248, 337, 283, &H0000C0)
Canvas6.Line(15, 247, 337, 247, &H0000E0)
Canvas6.Line(337, 247, 337, 283, &H0000E0)
Canvas6.Line(14, 283, 337, 283, &H0000A0)
Canvas6.Line(14, 247, 14, 282, &H0000A0)
Canvas6.TextOut (22, 250, LEFT$(LB1.Item(currentVoice), 22), &H000076, -1)
Edit9.Text=STR$(cvolume(currentVoice))
Edit10.Text=STR$(cpitch(currentVoice))
Edit11.Text=STR$(cspeed(currentVoice))
END IF
END SUB
dtw=GetDesktopWindow()
dtw_dc=GetDC(dtw)
IF dtw_dc<>0 THEN
fontsize=GetDeviceCaps(dtw_dc,LOGPIXELSX)
ReleaseDC(dtw,dtw_dc)
END IF
Window1.Left=0 : Window1.Top=0 : Window1.Width=800 : Window1.Height=600
Window1.BorderStyle=bsNone : Window1.WindowState=wsNormal : Window1.COLOR=&HB8CCD8
Window1.FormStyle=fsStayOnTop : Window1.CAPTION="LanguageGUI"
Window1.OnKeyDown=KeyDown : Window1.OnShow=Blank_Window
Font10.Name="Tahoma Bold" : Font10.Size=11 : Font10.COLOR=&HFFFFFF
Font13.Name="Verdana" : Font13.Size=17 : Font13.COLOR=&HFFFFFF
IF fontsize=72 THEN
Font1.Name="Tahoma Bold" : Font1.Size=24 : Font1.COLOR=&H000000
Font2.Name="Verdana" : Font2.Size=23 : Font2.COLOR=&H000000
Font3.Name="Verdana" : Font3.Size=19 : Font3.COLOR=&H000000
Font4.Name="Tahoma" : Font4.Size=21 : Font4.COLOR=&H000000
Font5.Name="Verdana" : Font5.Size=17 : Font5.COLOR=&H587C90
Font6.Name="Tahoma Bold" : Font6.Size=24 : Font6.COLOR=&H907050
Font7.Name="Tahoma Bold" : Font7.Size=16 : Font7.COLOR=&HFFFFFF
Font8.Name="Tahoma Bold" : Font8.Size=24 : Font8.COLOR=&H005090
Font9.Name="Tahoma Bold" : Font9.Size=12 : Font9.COLOR=&H00FFFF
Font11.Name="Tahoma Bold" : Font11.Size=12 : Font11.COLOR=&H0000FF
Font12.Name="Arial" : Font12.Size=19 : Font12.COLOR=&H000000
ELSEIF fontsize=96 THEN
Font1.Name="Tahoma Bold" : Font1.Size=18 : Font1.COLOR=&H000000
Font2.Name="Verdana" : Font2.Size=17 : Font2.COLOR=&H000000
Font3.Name="Verdana" : Font3.Size=14 : Font3.COLOR=&H000000
Font4.Name="Tahoma" : Font4.Size=16 : Font4.COLOR=&H000000
Font5.Name="Verdana" : Font5.Size=13 : Font5.COLOR=&H587C90
Font6.Name="Tahoma Bold" : Font6.Size=18 : Font6.COLOR=&H907050
Font7.Name="Tahoma Bold" : Font7.Size=12 : Font7.COLOR=&HFFFFFF
Font8.Name="Tahoma Bold" : Font8.Size=18 : Font8.COLOR=&H005090
Font9.Name="Tahoma Bold" : Font9.Size=10 : Font9.COLOR=&H00FFFF
Font11.Name="Tahoma Bold" : Font11.Size=10 : Font11.COLOR=&H0000FF
Font12.Name="Arial" : Font12.Size=14 : Font12.COLOR=&H000000
ELSEIF fontsize=120 THEN
Font1.Name="Tahoma Bold" : Font1.Size=15 : Font1.COLOR=&H000000
Font2.Name="Verdana" : Font2.Size=14 : Font2.COLOR=&H000000
Font3.Name="Verdana" : Font3.Size=11 : Font3.COLOR=&H000000
Font4.Name="Tahoma" : Font4.Size=13 : Font4.COLOR=&H000000
Font5.Name="Verdana" : Font5.Size=10 : Font5.COLOR=&H587C90
Font6.Name="Tahoma Bold" : Font6.Size=15 : Font6.COLOR=&H907050
Font7.Name="Arial" : Font7.Size=12 : Font7.COLOR=&HFFFFFF
Font8.Name="Tahoma Bold" : Font8.Size=15 : Font8.COLOR=&H005090
Font9.Name="Tahoma Bold" : Font9.Size=8 : Font9.COLOR=&H00FFFF
Font11.Name="Tahoma Bold" : Font11.Size=8 : Font11.COLOR=&H0000FF
Font12.Name="Arial" : Font12.Size=11 : Font12.COLOR=&H000000
ELSE
SHOWMESSAGE("The current Desktop Font is not supported.")
Application.Terminate
END IF
Canvas1.PARENT=Window1 : Canvas1.Font=Font2 : Canvas1.Left=0
Canvas1.Top=0 : Canvas1.Width=800 : Canvas1.Height=600
Canvas1.OnMouseDown=MouseDown : Canvas1.OnPaint=Canvas1Redraw
Label1.PARENT=Window1 : Label1.Font=Font1 : Label1.Angle=0
Label1.Left=57 : Label1.Top=33 : Label1.CAPTION="Sentences"
Label1.COLOR=&H98BCD0 : Label1.Cursor=crDefault
Label24.PARENT=Window1 : Label24.Font=Font12 : Label24.Angle=0
Label24.Left=47 : Label24.Top=114 : Label24.CAPTION="Mga Pangungusap"
Label24.COLOR=&H98BCD0 : Label24.Cursor=crDefault
Label2.PARENT=Window1 : Label2.Font=Font1 : Label2.Angle=0
Label2.Left=59 : Label2.Top=168 : Label2.CAPTION="Pro/Nouns"
Label2.COLOR=&H98BCD0 : Label2.Cursor=crDefault
Label21.PARENT=Window1 : Label21.Font=Font12 : Label21.Angle=0
Label21.Left=55 : Label21.Top=219 : Label21.CAPTION="Mga Pangngalan"
Label21.COLOR=&H98BCD0 : Label21.Cursor=crDefault
Label3.PARENT=Window1 : Label3.Font=Font1 : Label3.Angle=0
Label3.Left=64 : Label3.Top=264 : Label3.CAPTION="Adjectives"
Label3.COLOR=&H98BCD0 : Label3.Cursor=crDefault
Label22.PARENT=Window1 : Label22.Font=Font12 : Label22.Angle=0
Label22.Left=68 : Label22.Top=315 : Label22.CAPTION="Mga Pang-Uri"
Label22.COLOR=&H98BCD0 : Label22.Cursor=crDefault
Label4.PARENT=Window1 : Label4.Font=Font1 : Label4.Angle=0
Label4.Left=70 : Label4.Top=361 : Label4.CAPTION="Ad/Verbs"
Label4.COLOR=&H98BCD0 : Label4.Cursor=crDefault
Label23.PARENT=Window1 : Label23.Font=Font12 : Label23.Angle=0
Label23.Left=69 : Label23.Top=412 : Label23.CAPTION="Mga Pandiwa"
Label23.COLOR=&H98BCD0 : Label23.Cursor=crDefault
Label19.PARENT=Window1 : Label19.Font=Font11 : Label19.Angle=0
Label19.Left=90 : Label19.Top=552 : Label19.CAPTION="Please feel free to contact me if you need any help with LanguageGUI and/or Tagalog or English."
Label19.COLOR=&H000000 : Label19.Cursor=crDefault
Label7.PARENT=Window1 : Label7.Font=Font9 : Label7.Angle=0
Label7.Left=3 : Label7.Top=574 : Label7.CAPTION="LanguageGUI Hompage"
Label7.COLOR=&H000000 : Label7.Cursor=crDefault
Label20.PARENT=Window1 : Label20.Font=Font7 : Label20.Angle=0
Label20.Left=164 : Label20.Top=572 : Label20.CAPTION="http://web.onetel.net.uk/~yoingco/yoingco/"
Label20.COLOR=&H000000 : Label20.Cursor=crDefault
Label18.PARENT=Window1 : Label18.Font=Font9 : Label18.Angle=0
Label18.Left=545 : Label18.Top=574 : Label18.CAPTION="Helping Language Learners Worldwide."
Label18.COLOR=&H000000 : Label18.Cursor=crDefault
Window3.Left=0 : Window3.Top=0 : Window3.Width=800 : Window3.Height=600
Window3.CAPTION=" Options Window" : Window3.BorderStyle=bsNone
Window3.WindowState=wsNormal : Window3.FormStyle=fsStayOnTop
Window3.COLOR=&HB8CCD8 : Window3.OnKeyDown=Key3Down
Canvas3.PARENT=Window3 : Canvas3.Font=Font2 : Canvas3.Left=0
Canvas3.Top=0 : Canvas3.Width=800 : Canvas3.Height=600
Canvas3.COLOR=&HB8CCD8 : Canvas3.OnPaint=Canvas3Redraw
Canvas3.OnMouseDown=Mouse3Down
FOR Z=0 TO 41 : DTitles(Z)=SPACE$(29) : FTitles(Z)=SPACE$(29) : NEXT
YY=15 : FOR Z=0 TO 10
WCats(Z).PARENT=Window3 : WCats(Z).Font=Font5 : WCats(Z).COLOR=&HA8CCE0
WCats(Z).Angle=0 : WCats(Z).Left=25 : WCats(Z).Top=YY : WCats(Z).Cursor=crDefault
WCats(Z+11).PARENT=Window3 : WCats(Z+11).Font=Font5 : WCats(Z+11).COLOR=&HA8CCE0
WCats(Z+11).Angle=0 : WCats(Z+11).Left=422 : WCats(Z+11).Top=YY : WCats(Z+11).Cursor=crDefault
INC (YY,40) : NEXT
Window4.Left=6 : Window4.Top=50 : Window4.Width=781 : Window4.Height=316
Window4.BorderStyle=bsNone : Window4.WindowState=wsNormal : Window4.COLOR=&H98BCD0
Window4.FormStyle=fsStayOnTop : Window4.OnKeyDown=Key4Down
Canvas4.PARENT=Window4 : Canvas4.Font=Font2 : Canvas4.Left=0
Canvas4.Top=0 : Canvas4.Width=782 : Canvas4.Height=316
Canvas4.OnMouseDown=Mouse4Down : Canvas4.OnPaint=Canvas4Redraw
Label15.PARENT=Window4 : Label15.Font=Font8 : Label15.Angle=0
Label15.Left=220 : Label15.Top=22 : Label15.CAPTION="Search"
Label15.COLOR=&H30A0E0 : Label15.Cursor=crDefault
Label16.PARENT=Window4 : Label16.Font=Font8 : Label16.Angle=0
Label16.Left=338 : Label16.Top=72 : Label16.CAPTION=""
Label16.COLOR=&H60B0E0 : Label16.Cursor=crDefault
Edit8.PARENT=Window4 : Edit8.Font=Font7 : Edit8.CharCase=ecNormal
Edit8.Left=344 : Edit8.Top=25 : Edit8.Width=320 : Edit8.Height=23
Edit8.MaxLength=42 : Edit8.BorderStyle=bsNone : Edit8.COLOR=&H504030
Edit8.Hint=" Enter 1 or more Characters (or Words) "
Edit8.Text="" : Edit8.ShowHint=True : Edit8.OnKeyUp=Key4Down
Window5.Left=6 : Window5.Top=46 : Window5.Width=781 : Window5.Height=366
Window5.BorderStyle=bsNone : Window5.WindowState=wsNormal : Window5.COLOR=&H98BCD0
Window5.FormStyle=fsStayOnTop
Canvas5.PARENT=Window5 : Canvas5.Font=Font2 : Canvas5.Left=0
Canvas5.Top=0 : Canvas5.Width=782 : Canvas5.Height=366 : Canvas5.COLOR=&H000000
Canvas5.OnMouseDown=Mouse5Down : Canvas5.OnPaint=Canvas5Redraw
Label9.PARENT=Window5 : Label9.Font=Font6 : Label9.Angle=0
Label9.Left=24 : Label9.Top=16 : Label9.CAPTION="D/F Lines"
Label9.COLOR=&HB09070 : Label9.Cursor=crDefault
Label10.PARENT=Window5 : Label10.Font=Font6 : Label10.Angle=0
Label10.Left=18 : Label10.Top=66 : Label10.CAPTION="Automatic"
Label10.COLOR=&HB09070 : Label10.Cursor=crDefault
Label11.PARENT=Window5 : Label11.Font=Font6 : Label11.Angle=0
Label11.Left=45 : Label11.Top=116 : Label11.CAPTION="Spelling"
Label11.COLOR=&HB09070 : Label11.Cursor=crDefault
Label12.PARENT=Window5 : Label12.Font=Font6 : Label12.Angle=0
Label12.Left=13 : Label12.Top=166 : Label12.CAPTION="Word Split"
Label12.COLOR=&HB09070 : Label12.Cursor=crDefault
Label13.PARENT=Window5 : Label13.Font=Font6 : Label13.Angle=0
Label13.Left=60 : Label13.Top=216 : Label13.CAPTION="Reveal"
Label13.COLOR=&HB09070 : Label13.Cursor=crDefault
Label14.PARENT=Window5 : Label14.Font=Font6 : Label14.Angle=0
Label14.Left=69 : Label14.Top=266 : Label14.CAPTION="Pause"
Label14.COLOR=&HB09070 : Label14.Cursor=crDefault
Label17.PARENT=Window5 : Label17.Font=Font6 : Label17.Angle=0
Label17.Left=22 : Label17.Top=316 : Label17.CAPTION="NAV Lines"
Label17.COLOR=&HB09070 : Label17.Cursor=crDefault
Edit1.PARENT=Window5 : Edit1.Font=Font7 : Edit1.CharCase=ecNormal
Edit1.Left=166 : Edit1.Top=21 : Edit1.Width=36 : Edit1.Height=23
Edit1.MaxLength=1 : Edit1.BorderStyle=bsNone : Edit1.COLOR=&H504030
Edit1.Hint=" Default/Foreign Lines - Delay (In Seconds) "
Edit1.EditText="0" : Edit1.ShowHint=True : Edit1.OnKeyDown=Key10Down
Edit2.PARENT=Window5 : Edit2.Font=Font7 : Edit2.CharCase=ecNormal
Edit2.Left=166 : Edit2.Top=71 : Edit2.Width=36 : Edit2.Height=23
Edit2.MaxLength=1 : Edit2.BorderStyle=bsNone : Edit2.COLOR=&H504030
Edit2.Hint=" Automatic Mode - Delay (In Seconds) "
Edit2.EditText="0" : Edit2.ShowHint=True : Edit2.OnKeyDown=Key11Down
Edit3.PARENT=Window5 : Edit3.Font=Font7 : Edit3.CharCase=ecNormal
Edit3.Left=166 : Edit3.Top=121 : Edit3.Width=36 : Edit3.Height=23
Edit3.MaxLength=1 : Edit3.BorderStyle=bsNone : Edit3.COLOR=&H504030
Edit3.Hint=" Spelling - Delay (In Seconds) "
Edit3.EditText="0" : Edit3.ShowHint=True : Edit3.OnKeyDown=Key12Down
Edit4.PARENT=Window5 : Edit4.Font=Font7 : Edit4.CharCase=ecNormal
Edit4.Left=166 : Edit4.Top=171 : Edit4.Width=36 : Edit4.Height=23
Edit4.MaxLength=1 : Edit4.BorderStyle=bsNone : Edit4.COLOR=&H504030
Edit4.Hint=" Word Split - Delay (In Seconds) "
Edit4.EditText="0" : Edit4.ShowHint=True : Edit4.OnKeyDown=Key13Down
Edit5.PARENT=Window5 : Edit5.Font=Font7 : Edit5.CharCase=ecNormal
Edit5.Left=166 : Edit5.Top=221 : Edit5.Width=36 : Edit5.Height=23
Edit5.MaxLength=1 : Edit5.BorderStyle=bsNone : Edit5.COLOR=&H504030
Edit5.Hint=" Reveal Next Item - Delay (In Seconds) "
Edit5.EditText="0" : Edit5.ShowHint=True : Edit5.OnKeyDown=Key14Down
Edit6.PARENT=Window5 : Edit6.Font=Font7 : Edit6.CharCase=ecNormal
Edit6.Left=166 : Edit6.Top=271 : Edit6.Width=36 : Edit6.Height=23
Edit6.MaxLength=1 : Edit6.BorderStyle=bsNone : Edit6.COLOR=&H504030
Edit6.Hint=" Pause LGUI - Delay (In Seconds) "
Edit6.EditText="0" : Edit6.ShowHint=True : Edit6.OnKeyDown=Key15Down
Edit7.PARENT=Window5 : Edit7.Font=Font7 : Edit7.CharCase=ecNormal
Edit7.Left=166 : Edit7.Top=321 : Edit7.Width=36 : Edit7.Height=23
Edit7.MaxLength=1 : Edit7.BorderStyle=bsNone : Edit7.COLOR=&H504030
Edit7.Hint=" Noun Adjective Verb Lines - Delay (In Seconds) "
Edit7.EditText="0" : Edit7.ShowHint=True : Edit7.OnKeyDown=Key16Down
Window6.Left=0 : Window6.Top=88 : Window6.Width=790 : Window6.Height=298
Window6.CAPTION=" Speech Window" : Window6.BorderStyle=bsNone
Window6.WindowState=wsNormal : Window6.FormStyle=fsStayOnTop
Window6.COLOR=&HB8CCD8 : Window6.OnKeyDown=Key6Down
Window6.Top=0
Canvas6.PARENT=Window6 : Canvas6.Font=Font13 : Canvas6.Left=0
Canvas6.Top=0 : Canvas6.Width=800 : Canvas6.Height=400
Canvas6.COLOR=&HB8CCD8 : Canvas6.OnPaint=Canvas6Redraw
Canvas6.OnMouseDown=Mouse6Down
Edit12.PARENT=Window6 : Edit12.Font=Font7 : Edit12.CharCase=ecNormal
Edit12.Left=443 : Edit12.Top=170 : Edit12.Width=324 : Edit12.Height=23
Edit12.MaxLength=101 : Edit12.BorderStyle=bsNone : Edit12.COLOR=&H504030
Edit12.Hint=" Enter some text for Speech test "
Edit12.EditText="Language G U I Written By John White"
Edit12.ShowHint=True : Edit12.OnKeyDown=Key6Down
LB1.PARENT=Window6 : LB1.Left=16 : LB1.Top=16 : LB1.Width=320 : LB1.Height=218
LB1.BorderStyle=bsNone : LB1.COLOR=&H0000E0 : LB1.Font=Font10
LB1.Enabled=1 : LB1.Hint="Select a Voice"
LB1.ShowHint=1 : LB1.OnClick=LB1Clicked
TB1.PARENT=Window6 : TB1.Left=475 : TB1.Top=20 : TB1.Width=90 : TB1.Height=38
TB1.Orientation=tbHorizontal : TB1.Min=0 : TB1.Max=5 : TB1.Position=5
TB1.PageSize=1 : TB1.Frequency=1
TB1.TickMarks=tmBoth : TB1.TickStyle=tsAuto
TB1.Hint="Volume (Left-Right)\n\n0 Lowest\n1 Quarter\n2 Half\n3 3 Quarters\n4 Highest\n\n5 Original (Default) "
TB1.ShowHint=TRUE : TB1.OnChange=TB1Clicked
TB2.PARENT=Window6 : TB2.Left=475 : TB2.Top=70 : TB2.Width=90 : TB2.Height=38
TB2.Orientation=tbHorizontal : TB2.Min=0 : TB2.Max=5 : TB2.Position=5
TB2.PageSize=1 : TB2.Frequency=1
TB2.TickMarks=tmBoth : TB2.TickStyle=tsAuto
TB2.Hint="Pitch (Left-Right)\n\n0 Lowest\n1 Quarter\n2 Half\n3 3 Quarters\n4 Highest\n\n5 Original (Default) "
TB2.ShowHint=TRUE : TB2.OnChange=TB1Clicked
TB3.PARENT=Window6 : TB3.Left=475 : TB3.Top=120 : TB3.Width=90 : TB3.Height=38
TB3.Orientation=tbHorizontal : TB3.Min=0 : TB3.Max=5 : TB3.Position=5
TB3.PageSize=1 : TB3.Frequency=1
TB3.TickMarks=tmBoth : TB3.TickStyle=tsAuto
TB3.Hint="Speed (Left-Right)\n\n0 Lowest\n1 Quarter\n2 Half\n3 3 Quarters\n4 Highest\n\n5 Original (Default) "
TB3.ShowHint=TRUE : TB3.OnChange=TB1Clicked
RANDOMIZE(-1) : Load_Settings : Load_Titles(0) : Load_Titles(1)
Get_Drives : FOR YY=2 TO 9 : Load_Files(YY) : NEXT : DT_Check
MISCSTART=ALen(21) : MISCEND=ALen(65) : MISCTOT=CLen(21) : MISCLEN=CLen(65)
IF SPEECH=1 THEN
Load_FNSpeech : Load_FSSpeech
END IF
AutoTimer.Interval=3000 : AutoTimer.Enabled=1 : AutoTimer.OnTimer=Auto_Timer
IF SPEECH=1 THEN
slib=Begin_Speech(5000)
IF slib=1 THEN
voiceTotal=Count_Voices
IF voiceTotal>0 THEN
Enum_VoiceNames
FOR counter=0 TO (voiceTotal-1)
vnPtr=Get_VoiceName(counter)
IF vnPtr<>0 THEN LB1.AddItems VARPTR$(vnPtr)
dvolume(counter)=Get_Volume(counter)
dpitch(counter)=Get_Pitch(counter)
dspeed(counter)=Get_Speed(counter)
cvolume(counter)=dvolume(counter)
cpitch(counter)=dpitch(counter)
cspeed(counter)=dspeed(counter)
NEXT
LB1.ItemIndex=0
Edit9.Text=STR$(dvolume(0))
Edit10.Text=STR$(dpitch(0))
Edit11.Text=STR$(dspeed(0))
ELSE
SHOWMESSAGE("SAPI4 Error - SAPI4 and/or Voice Engines NOT Installed.")
END IF
ELSE
slib=0
SHOWMESSAGE("Speech Library Error - Library Speech NOT Available.")
END IF
END IF
Window1.SHOWMODAL
ELSE
SHOWMESSAGE(Application.Title+" is Already Running!")
END IF
|
|