Guidance
指路人
g.yi.org
software / rapidq / examples / gui / LanguageGUI / LGUI.BAS

Register 
注册
Search 搜索
首页 
Home Home
Software
Upload

  
' LanguageGUI - (C) John White, 1992-2003. All Rights Reserved.

     $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 '000391
     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.SelStart=0 : TB1.SelEnd=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.SelStart=0 : TB2.SelEnd=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.SelStart=0 : TB3.SelEnd=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

'Save_Settings
'Application.Terminate

     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
掌柜推荐
 
 
 
 
 
 
 
 
 
 
 
 
© Sun 2026-10-18  Guidance Laboratory Inc.
Email:webmaster1g.yi.org Hits:0 Last modified:2003-08-12 21:43:24