Procedure _BEST
   CMOUSE=6 : Change Mouse 6
   Unpack 8 To 0
   If _TOPAZ=1 Then Set Font _TOPAZFONT
   If SPEAK=True Then Say "prediction"
   _MENUON
   Ink 2
   _PRINTITOUT:
   _FIRSTPRT
   CMOUSE=6
   DRECT=0
   _BESTMOST
   DRECT=1
   _BESTMOST2
   _BESTMOSTCHECK
   DRECT=0
   WROW=0 : WCOL=0 : 
   _BESTLEAST
   DRECT=1
   _BESTLEAST2
   _BESTLEASTCHECK
   If NUM=0
      _BESTRANDOM_OLD
   Else _BESTRANDOM
   End If 
   PRT=0
   Change Mouse 4 : CMOUSE=4
   Repeat 
      HELP=21
      If X Mouse>187 and X Mouse<383
         HELP=24
         If Y Mouse>106 and Y Mouse<120
            _MENUOFF
            If CMOUSE<>9
               Change Mouse 9
               CMOUSE=9
            End If 
            Q=1
            MK=Mouse Key
            If MK=1 : _SCRN=3 : End If 
            If MK=2 : _SCRN=4 : End If 
            If MK<>0 : _CHANGE2OLD[Q] : Pop Proc : End If 
         Else If Y Mouse>125 and Y Mouse<139
               _MENUOFF
               If CMOUSE<>9
                  Change Mouse 9
                  CMOUSE=9
               End If 
               Q=8
               MK=Mouse Key
               If MK=1 : _SCRN=3 : End If 
               If MK=2 : _SCRN=4 : End If 
               If MK<>0 : _CHANGE2OLD[Q] : Pop Proc : End If 
            Else If Y Mouse>174 and Y Mouse<188
                  _MENUOFF
                  If CMOUSE<>9
                     Change Mouse 9
                     CMOUSE=9
                  End If 
                  Q=15
                  MK=Mouse Key
                  If MK=1 : _SCRN=3 : End If 
                  If MK=2 : _SCRN=4 : End If 
                  If MK<>0 : _CHANGE2OLD[Q] : Pop Proc : End If 
               Else If Y Mouse>193 and Y Mouse<207
                     _MENUOFF
                     If CMOUSE<>9
                        Change Mouse 9
                        CMOUSE=9
                     End If 
                     Q=22
                     MK=Mouse Key
                     If MK=1 : _SCRN=3 : End If 
                     If MK=2 : _SCRN=4 : End If 
                     If MK<>0 : _CHANGE2OLD[Q] : Pop Proc : End If 
                  Else If Y Mouse>251 and Y Mouse<265
                        _MENUOFF
                        If CMOUSE<>9
                           Change Mouse 9
                           CMOUSE=9
                        End If 
                        Q=29
                        MK=Mouse Key
                        If MK=1 : _SCRN=3 : End If 
                        If MK=2 : _SCRN=4 : End If 
                        If MK<>0 : _CHANGE2OLD[Q] : Pop Proc : End If 
                     Else HELP=21 : _MENUON
                        If CMOUSE<>4
                           Change Mouse 4
                           CMOUSE=4
                        End If 
                     End If 
                  End If 
               End If 
            End If 
         End If 
      Else HELP=21
         If CMOUSE<>4
            Change Mouse 4
            CMOUSE=4
         End If 
      End If 
      HELP$=Inkey$ : If Scancode=95 Then _HELP[HELP]
      If Upper$(HELP$)="P" Then PRT=1 : Goto _PRINTITOUT
   Until Mouse Key
   HELP=0
   _MENU
End Proc
Procedure _BESTMOST
   NL(50)=0
   If PRT=1 Then Change Mouse 14 : Lprint "Generated:" : Change Mouse CMOUSE
   If SPEAK=True Then Say "line 1"
   For Q=0 To 8
      BNL(Q)=0
   Next Q
   Q=1
   Repeat 
      For A=1 To 49
         For B=(A+1) To 49
            For W=1 To Q-1
               If B=50 Then B=49
               If A=BNL(W) Then Exit 2
               If B=BNL(W) and BNL(W)=49 Then B=50 : Goto _AGAIN
               If B=BNL(W) Then Goto _AGAIN2
            Next W
            _CHECKIT:
            If NL(A)<NL(B) Then A=B
            _AGAIN:
            If(NL(A)>=NL(B)) and B>=49
               _BESTROWCOL[A]
               BNL(Q)=A
               FIRST(Q)=A
               If BNL(Q)>=0
                  Ink 3
               End If 
               If BNL(Q)>=10
                  Ink 4
               End If 
               If BNL(Q)>=20
                  Ink 5
               End If 
               If BNL(Q)>=30
                  Ink 6
               End If 
               If BNL(Q)>=40
                  Ink 7
               End If 
               If Q<7 : Text QL(Q)-5,74,Str$(BNL(Q)) : End If 
               BALL(Q)=BNL(Q)
               If PRT=1 and Q<7
                  Change Mouse 14
                  Lprint Str$(BNL(Q));"   ";
                  Change Mouse CMOUSE
               End If 
               If SPEAK=True and Q<7 : Say Str$(BNL(Q))+", " : End If 
               Inc Q
               A=50
            End If 
            _AGAIN2:
         Next B
      Next A
   Until Q=8
   _BESTCKRC
   Text 14,74,Str$(WROW)
   Text 278,74,Str$(WCOL)
   If PRT=1 Then Change Mouse 14 : Lprint : Change Mouse CMOUSE
End Proc
Procedure _BESTMOST2
   If SPEAK=True Then Say "line 2"
   NL(0)=0
   For Q=0 To 8
      BNL(Q)=0
   Next Q
   Q=1
   Repeat 
      For A=49 To 1 Step -1
         For B=(A-1) To 1 Step -1
            For W=1 To Q-1
               If B=0 Then B=1
               If A=BNL(W) Then Exit 2
               If B=BNL(W) and BNL(W)=1 Then B=0 : Goto _AGAIN
               If B=BNL(W) Then Goto _AGAIN2
            Next W
            _CHECKIT:
            If NL(A)<NL(B) Then A=B
            _AGAIN:
            If(NL(A)>=NL(B)) and B<=1
               _BESTROWCOL[A]
               BNL(Q)=A
               SECOND(Q)=A
               If BNL(Q)>=0
                  Ink 3
               End If 
               If BNL(Q)>=10
                  Ink 4
               End If 
               If BNL(Q)>=20
                  Ink 5
               End If 
               If BNL(Q)>=30
                  Ink 6
               End If 
               If BNL(Q)>=40
                  Ink 7
               End If 
               If Q<7 : Text QL(Q)-5,93,Str$(BNL(Q)) : End If 
               BALL(Q+7)=BNL(Q)
               If PRT=1 and Q<7
                  Change Mouse 14
                  Lprint Str$(BNL(Q));"   ";
                  Change Mouse CMOUSE
               End If 
               If SPEAK=True and Q<7 : Say Str$(BNL(Q))+", " : End If 
               Q=Q+1
               A=0
            End If 
            _AGAIN2:
         Next B
      Next A
   Until Q=8
   _BESTCKRC
   Text 14,93,Str$(WROW)
   Text 278,93,Str$(WCOL)
End Proc
Procedure _BESTMOSTCHECK
   If PRT=1 Then Change Mouse 14 : Lprint : Lprint "Best:" : Change Mouse CMOUSE
   If SPEAK=True Then Say "line 3, best"
   Z=0
   For X=1 To 6
      For Y=1 To 6
         If FIRST(X)=SECOND(Y)
            Inc Z
            If FIRST(X)>=0
               Ink 3
            End If 
            If FIRST(X)>=10
               Ink 4
            End If 
            If FIRST(X)>=20
               Ink 5
            End If 
            If FIRST(X)>=30
               Ink 6
            End If 
            If FIRST(X)>=40
               Ink 7
            End If 
            Text QL(Z)-5,112,Str$(FIRST(X))
            If PRT=1
               Change Mouse 14
               Lprint Str$(FIRST(X));"   ";
               Change Mouse CMOUSE
            End If 
            If SPEAK=True : Say Str$(FIRST(X))+", " : End If 
            Y=7
         End If 
      Next Y
   Next X
   _CHECKBESTROWCOL
   If WROW<>0 Then Text 14,112,Str$(WROW)
   If WCOL<>0 Then Text 278,112,Str$(WCOL)
End Proc
Procedure _BESTLEAST
   If PRT=1 Then Change Mouse 14 : Lprint : Lprint "Generated:" : Change Mouse CMOUSE
   If SPEAK=True Then Say "line 4"
   NL(50)=FIRST(1)+10
   For Q=0 To 8
      BNL(Q)=0
   Next Q
   Q=1
   Repeat 
      For A=1 To 49
         For B=(A+1) To 49
            For W=1 To Q-1
               If B=50 Then B=49
               If A=BNL(W) Then Exit 2
               If B=BNL(W) and BNL(W)=49 Then B=50 : Goto _AGAINNEW
               If B=BNL(W) Then Goto _AGAINNEW2
            Next W
            _CHECKITNEW:
            If NL(A)>NL(B) Then A=B
            _AGAINNEW:
            '      If(NL(A)<=NL(B)) and B>=49
            If B>=49
               _BESTROWCOL[A]
               BNL(Q)=A
               FIRST(Q)=A
               If BNL(Q)>=0
                  Ink 3
               End If 
               If BNL(Q)>=10
                  Ink 4
               End If 
               If BNL(Q)>=20
                  Ink 5
               End If 
               If BNL(Q)>=30
                  Ink 6
               End If 
               If BNL(Q)>=40
                  Ink 7
               End If 
               If Q<7 : Text QL(Q)-5,142,Str$(BNL(Q)) : End If 
               BALL(Q+14)=BNL(Q)
               If PRT=1 and Q<7
                  Change Mouse 14
                  Lprint Str$(BNL(Q));"   ";
                  Change Mouse CMOUSE
               End If 
               If SPEAK=True and Q<7 : Say Str$(BNL(Q))+", " : End If 
               Q=Q+1
               A=50
            End If 
            _AGAINNEW2:
         Next B
      Next A
   Until Q=8
   _BESTCKRC
   Text 14,142,Str$(WROW)
   Text 278,142,Str$(WCOL)
   If PRT=1 Then Change Mouse 14 : Lprint : Change Mouse CMOUSE
End Proc
Procedure _BESTLEAST2
   If SPEAK=True Then Say "line 5"
   NL(0)=FIRST(1)+10
   For Q=0 To 8
      BNL(Q)=0
   Next Q
   Q=1
   Repeat 
      For A=49 To 1 Step -1
         For B=(A-1) To 1 Step -1
            For W=1 To Q-1
               If B=0 Then B=1
               If A=BNL(W) Then Exit 2
               If B=BNL(W) and BNL(W)=1 Then B=0 : Goto _AGAINNEW
               If B=BNL(W) Then Goto _AGAINNEW2
            Next W
            _CHECKITNEW:
            If NL(A)>NL(B) Then A=B
            _AGAINNEW:
            '            If(NL(A)<=NL(B)) and B<=1 
            If B<=1
               _BESTROWCOL[A]
               BNL(Q)=A
               SECOND(Q)=A
               If BNL(Q)>=0
                  Ink 3
               End If 
               If BNL(Q)>=10
                  Ink 4
               End If 
               If BNL(Q)>=20
                  Ink 5
               End If 
               If BNL(Q)>=30
                  Ink 6
               End If 
               If BNL(Q)>=40
                  Ink 7
               End If 
               If Q<7 : Text QL(Q)-5,161,Str$(BNL(Q)) : End If 
               BALL(Q+21)=BNL(Q)
               If PRT=1 and Q<7
                  Change Mouse 14
                  Lprint Str$(BNL(Q));"   ";
                  Change Mouse CMOUSE
               End If 
               If SPEAK=True and Q<7 : Say Str$(BNL(Q))+", " : End If 
               Q=Q+1
               A=0
            End If 
            _AGAINNEW2:
         Next B
      Next A
   Until Q=8
   _BESTCKRC
   Text 14,161,Str$(WROW)
   Text 278,161,Str$(WCOL)
End Proc
Procedure _BESTLEASTCHECK
   If PRT=1 Then Change Mouse 14 : Lprint : Lprint "Best:" : Change Mouse CMOUSE
   If SPEAK=True Then Say "line 6, best"
   Z=0
   For X=1 To 6
      For Y=1 To 6
         If FIRST(X)=SECOND(Y)
            Inc Z
            If FIRST(X)>=0
               Ink 3
            End If 
            If FIRST(X)>=10
               Ink 4
            End If 
            If FIRST(X)>=20
               Ink 5
            End If 
            If FIRST(X)>=30
               Ink 6
            End If 
            If FIRST(X)>=40
               Ink 7
            End If 
            Text QL(Z)-5,180,Str$(FIRST(X))
            If PRT=1
               Change Mouse 14
               Lprint Str$(FIRST(X));"   ";
               Change Mouse CMOUSE
            End If 
            If SPEAK=True : Say Str$(FIRST(X))+", " : End If 
            Y=7
         End If 
      Next Y
   Next X
   _CHECKBESTROWCOL
   If WROW<>0 Then Text 14,180,Str$(WROW)
   If WCOL<>0 Then Text 278,180,Str$(WCOL)
End Proc
