This Minesweeper program is easy to install. Use TI-Connect or another linking application to download the .8xp file to your TI-84 Plus CE (C Silver Edition)calculator, then simply press "prgm" look for the program named "MINES", and press "enter" twice.
Controls in the menu:
UP and DOWN arrow keys - scroll
LEFT and RIGHT arrow keys - switch selected setting
ENTER and 2ND - proceeds with an action
DEL - exits an action
CLEAR - exits the program
Other keys are also used to select "no", or "off", i.e., using "(-)" beside "enter" and "mode(quit)" beside "2nd".

In the menu:
Start Game - Begins a new save according to the difficulty set, or continues from your last save.
Style - Changes the displayed characters in the game.
Difficulty - Changes the amount of mines a new game starts with. The total amount of spaces is 260.
Beginner - 20 mines
Easy - 30 mines
Normal - 40 mines
Hard - 50 mines
Expert - 60 mines
Custom - Whatever you set it to! To change it, press enter or 2nd while the difficulty is set at custom.
Auto-Clear - Lets you toggle automatic clearing on and off to make the game faster if desired.
Custom Controls - Lets you toggle your set custom controls on and off or set new custom controls.
Statistics - shows your best times for each difficulty and the amount of mines in the most crowded minefield you've cleared!
Configure - Sets up the program to work. You only need to do this once the program is downloaded, or when Str1 has been modified. BEFORE DOING
ANYTHING ELSE, select the "Configure" option. This sets up the save, and avoids experiencing bugs when first playing the game.
Quit - Exits the program.

Controls in-game:
ARROW KEYS - move cursor
2ND or CLEAR - clear a space
ALPHA or "^" - mark a flag
STAT - saves the game
DEL - exits the game
ENTER - Tests the board to make sure it has been completed
Custom controls also apply here, for the clearing and flagging keys.

Approximate loading statistics:
Saving a game - 5 seconds
Loading a game - 18 seconds
Setting up a new map of mines - 3 seconds for every 10 mines (e.g. Normal - 12 seconds)
Automatic Clearing - 3 EMPTY spaces every second - about 10 spaces per second otherwise

5/7/17 - Update v1.1 - Save and exit are two different buttons, more user-friendly, minor fixes.

5/8/17 - Update v1.1.2 - Removed crash at beginning of program for new users, other bug-fixes improving user friendliness.

Post in the comments if you find a bug (all of which can never be exterminated!), or if you would like to suggest a new feature. I have left the program editing unlocked so that, if you find a glitch, you than reference it to me. Thank you in advance for helping out to perfect this program into a masterpiece!

What the community thinks:

I used Cemetech's SourceCoder3 to view the code. Ignore the indentions, that is how Cemetech formats it to make it feel more like Assembly (I personally hate it, though).

Repeat 0
ClrHome
Output(1,1,"MINESWEEPER+CE")
2->L
Output(2,2,"N[|e]|w G[|a]m[|e]")
Output(3,2,"Lo[|a][|d] G[|a]m[|e]")
Output(4,2,"S[t]yl[|e]: <-#DeltaP->")
1->S
Output(5,2,"Diffi[|c]|ul[t]y: <-Normal->")
40->M
Output(6,2,"Co[n]fig|u[r][|e]")
Output(7,2,"C|u[s][t]om")
Output(8,2,"Q|ui[t]")
Repeat K=105 and (L=2 or L=3)
Output(L,1,">")
getKey->K
If (K=24 or K=26 or K=105) and L=4
Then
5-S->S
Output(4,11,sub(Str1,S,3))
End
If K=26 and L=5
Then
UnArchive |LMINES
M+10->M
If M=|LMINES(261)+10
Then
Output(5,16,"B[|e]gi[n][n][|e][r]->")
20->M
End
If M=30
Then
Output(5,16,"E[|a][s]y-> ")
End
If M=40
Then
Output(5,16,"Normal-> ")
End
If M=50
Then
Output(5,16,"H[|a][r][|d]-> ")
End
If M=60
Then
Output(5,16,"Ex[p][|e][r][t]-> ")
End
If M=70
Then
Output(5,16,"C|u[s][t]om-> ")
|LMINES(261)->M
End
End
If (K=24 or K=105) and L=5
Then
UnArchive |LMINES
M-10->M
If M=|LMINES(261)-10
Then
Output(5,16,"Ex[p][|e][r][t]-> ")
60->M
End
If M=10
Then
Output(5,16,"C|u[s][t]om-> ")
|LMINES(261)->M
End
If M=20
Then
Output(5,16,"B[|e]gi[n][n][|e][r]->")
End
If M=30
Then
Output(5,16,"E[|a][s]y-> ")
End
If M=40
Then
Output(5,16,"Normal-> ")
End
If M=50
Then
Output(5,16,"H[|a][r][|d]-> ")
End
End
If K=105 and L=6
Then
Output(10,1,"RESET Str1 ?")
0->K
Repeat K
getKey->K
End
If K=105
Then
SetUpEditor |LMINES
781->dim(|LMINES)
"#DeltaP+^P"->Str1
End
Output(10,1," ")
End
If K=105 and L=7
Then
Output(10,1,"# of mi[n][|e][s]:_")
Repeat (abs(iPart(K/10)-8)<2 or K=102) and abs(10fPart(K/10)-3)<2
getKey->K
End
260-30iPart(K/10)+100fPart(K/10)+20(K=102)->|LMINES(781)
Output(10,12,|LMINES(781))
Output(10,13,"_")
Repeat (abs(iPart(K/10)-8)<2 or K=102) and abs(10fPart(K/10)-3)<2
getKey->K
End
|LMINES(781)+26-3iPart(K/10)+10fPart(K/10)+2(K=102)->|LMINES(781)
Output(10,12,|LMINES(781))
0->K
Repeat K
getKey->K
End
Output(10,1," ")
End
If K=105 and L=8
Then
Archive |LMINES
ClrHome
Return
End
If K=25
Then
Output(L,1," ")
L-1-7int((L-3)/7)->L
End
If K=34
Then
Output(L,1," ")
L+1-7int((L-1)/7)->L
End
End
{10,26}->dim([A])
{10,26}->dim([B])
{10,26}->dim([C])
ClrHome
If L=3
Then
For(A,1,10)
For(B,1,26)
|LMINES(26A+B-26)->[A](A,B)
End
End
For(A,1,10)
For(B,1,26)
|LMINES(26A+B+234)->[B](A,B)
End
End
For(A,1,10)
For(B,1,26)
|LMINES(26A+B+494)->[C](A,B)
If [C](A,B)<0
Output(A,B,sub(Str1,S,1))
If [C](A,B)=0
Output(A,B," ")
If [C](A,B)>0
Output(A,B,[C](A,B)
End
End
Else
Fill(0,[A])
Fill(0,[B])
Fill(~2,[C])
For(A,1,10)
Output(A,1,sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1))
End
5->A
13->B
Output(5,13,sub(Str1,S+1,1))
Repeat K=21 or K=45
getKey->K
If K=24 and B>1
Then
Output(A,B,sub(Str1,S,1))
B-1->B
Output(A,B,sub(Str1,S+1,1))
End
If K=25 and A>1
Then
Output(A,B,sub(Str1,S,1))
A-1->A
Output(A,B,sub(Str1,S+1,1))
End
If K=26 and B<26
Then
Output(A,B,sub(Str1,S,1))
B+1->B
Output(A,B,sub(Str1,S+1,1))
End
If K=34 and A<10
Then
Output(A,B,sub(Str1,S,1))
A+1->A
Output(A,B,sub(Str1,S+1,1))
End
End
For(C,1,M)
Repeat [A](X,Y)=0 and not(abs(X-A)<2 and abs(Y-B)<2)
randInt(1,10)->X
randInt(1,26)->Y
End
1->[A](X,Y)
~1->[C](X,Y)
End
ClrList L1,L2
A->L1(1)
B->L2(1)
1->T
Repeat T>dim(L1)
L1(T)->A
L2(T)->B
T+1->T
0->M
If A>1
Then
If [A](A-1,B)
M+1->M
If B>1
If [A](A-1,B-1)
M+1->M
If B<26
If [A](A-1,B+1)
M+1->M
End
If A<10
Then
If [A](A+1,B)
M+1->M
If B>1
If [A](A+1,B-1)
M+1->M
If B<26
If [A](A+1,B+1)
M+1->M
End
If B>1
If [A](A,B-1)
M+1->M
If B<26
If [A](A,B+1)
M+1->M
If B=1 or B=26
Then
M-3->M
If A=1 or A=10
M+1->M
End
M->[C](A,B)
If M>0
Output(A,B,M)
If M=0
Then
Output(A,B," ")
If A>1
Then
If [B](A-1,B)=0
Then
A-1->L1(dim(L1)+1)
B->L2(dim(L2)+1)
1->[B](A-1,B)
End
If B>1
Then
If [B](A-1,B-1)=0
Then
A-1->L1(dim(L1)+1)
B-1->L2(dim(L2)+1)
1->[B](A-1,B-1)
End
End
If B<26
Then
If [B](A-1,B+1)=0
Then
A-1->L1(dim(L1)+1)
B+1->L2(dim(L2)+1)
1->[B](A-1,B+1)
End
End
End
If A<10
Then
If [B](A+1,B)=0
Then
A+1->L1(dim(L1)+1)
B->L2(dim(L2)+1)
1->[B](A+1,B)
End
If B>1
Then
If [B](A+1,B-1)=0
Then
A+1->L1(dim(L1)+1)
B-1->L2(dim(L2)+1)
1->[B](A+1,B-1)
End
End
If B<26
Then
If [B](A+1,B+1)=0
Then
A+1->L1(dim(L1)+1)
B+1->L2(dim(L2)+1)
1->[B](A+1,B+1)
End
End
End
If B>1
Then
If [B](A,B-1)=0
Then
A->L1(dim(L1)+1)
B-1->L2(dim(L2)+1)
1->[B](A,B-1)
End
End
If B<26
Then
If [B](A,B+1)=0
Then
A->L1(dim(L1)+1)
B+1->L2(dim(L2)+1)
1->[B](A,B+1)
End
End
End
End
End
0->O
5->X
13->Y
Repeat O
Output(X,Y,sub(Str1,S+1,1))
Repeat (K=21 or K=45 or K=23) and fPart([C](X,Y))=0
getKey->K
If K=24 and Y>1
Then
If [C](X,Y)=0
Output(X,Y," ")
If [C](X,Y)<0
Output(X,Y,sub(Str1,S,1))
If [C](X,Y)>0
Output(X,Y,[C](X,Y))
If fPart([C](X,Y))=~0.5
Output(X,Y,sub(Str1,S+2,1))
Y-1->Y
Output(X,Y,sub(Str1,S+1,1))
End
If K=25 and X>1
Then
If [C](X,Y)=0
Output(X,Y," ")
If [C](X,Y)<0
Output(X,Y,sub(Str1,S,1))
If [C](X,Y)>0
Output(X,Y,[C](X,Y))
If fPart([C](X,Y))=~0.5
Output(X,Y,sub(Str1,S+2,1))
X-1->X
Output(X,Y,sub(Str1,S+1,1))
End
If K=26 and Y<26
Then
If [C](X,Y)=0
Output(X,Y," ")
If [C](X,Y)<0
Output(X,Y,sub(Str1,S,1))
If [C](X,Y)>0
Output(X,Y,[C](X,Y))
If fPart([C](X,Y))=~0.5
Output(X,Y,sub(Str1,S+2,1))
Y+1->Y
Output(X,Y,sub(Str1,S+1,1))
End
If K=34 and X<10
Then
If [C](X,Y)=0
Output(X,Y," ")
If [C](X,Y)<0
Output(X,Y,sub(Str1,S,1))
If [C](X,Y)>0
Output(X,Y,[C](X,Y))
If fPart([C](X,Y))=~0.5
Output(X,Y,sub(Str1,S+2,1))
X+1->X
Output(X,Y,sub(Str1,S+1,1))
End
If (K=31 or K=55) and [C](X,Y)<0
[C](X,Y)-2fPart([C](X,Y))-0.5->[C](X,Y)
If K=105
Then
1->Z
Output(X,Y,"?")
For(A,1,10)
For(B,1,26):
If iPart([C](A,B))=~2
Then
Output(X,Y,sub(Str1,S+1,1))
10->A
26->B
0->Z
End
End
End
If Z
Then
ClrHome
Repeat K=23
getKey->K
End
Output(1,1,"G[r][|e][|a][t] Jo[|b]!")
End
End
End
X->A
Y->B
If [A](A,B)
Then
1->O
Else
If [C](A,B)=~2
Then
ClrList L1,L2
A->L1(1)
B->L2(1)
1->T
Repeat T>dim(L1)
L1(T)->A
L2(T)->B
T+1->T
1->[B](A,B)
0->M
If A>1
Then
If [A](A-1,B)
M+1->M
If B>1
If [A](A-1,B-1)
M+1->M
If B<26
If [A](A-1,B+1)
M+1->M
End
If A<10
Then
If [A](A+1,B)
M+1->M
If B>1
If [A](A+1,B-1)
M+1->M
If B<26
If [A](A+1,B+1)
M+1->M
End
If B>1
If [A](A,B-1)
M+1->M
If B<26
If [A](A,B+1)
M+1->M
If B=1 or B=26
Then
M-3->M
If A=1 or A=10
M+1->M
End
M->[C](A,B)
If M>0
Output(A,B,M)
If M=0
Then
Output(A,B," ")
If A>1
Then
If [B](A-1,B)=0
Then
A-1->L1(dim(L1)+1)
B->L2(dim(L2)+1)
1->[B](A-1,B)
End
If B>1
Then
If [B](A-1,B-1)=0
Then
A-1->L1(dim(L1)+1)
B-1->L2(dim(L2)+1)
1->[B](A-1,B-1)
End
End
If B<26
Then
If [B](A-1,B+1)=0
Then
A-1->L1(dim(L1)+1)
B+1->L2(dim(L2)+1)
1->[B](A-1,B+1)
End
End
End
If A<10
Then
If [B](A+1,B)=0
Then
A+1->L1(dim(L1)+1)
B->L2(dim(L2)+1)
1->[B](A+1,B)
End
If B>1
Then
If [B](A+1,B-1)=0
Then
A+1->L1(dim(L1)+1)
B-1->L2(dim(L2)+1)
1->[B](A+1,B-1)
End
End
If B<26
Then
If [B](A+1,B+1)=0
Then
A+1->L1(dim(L1)+1)
B+1->L2(dim(L2)+1)
1->[B](A+1,B+1)
End
End
End
If B>1
Then
If [B](A,B-1)=0
Then
A->L1(dim(L1)+1)
B-1->L2(dim(L2)+1)
1->[B](A,B-1)
End
End
If B<26
Then
If [B](A,B+1)=0
Then
A->L1(dim(L1)+1)
B+1->L2(dim(L2)+1)
1->[B](A,B+1)
End
End
End
End
Else
If [C](A,B)>0
Then
ClrList L1,L2
0->M
If A>1
Then
If fPart([C](A-1,B))
Then
M+1->M
Else
If [C](A-1,B)<0
Then
A-1->L1(dim(L1)+1)
B->L2(dim(L2)+1)
End
End
If B>1
Then
If fPart([C](A-1,B-1))
Then
M+1->M
Else
If [C](A-1,B-1)<0
Then
A-1->L1(dim(L1)+1)
B-1->L2(dim(L2)+1)
End
End
End
If B<26
Then
If fPart([C](A-1,B+1))
Then
M+1->M
Else
If [C](A-1,B+1)<0
Then
A-1->L1(dim(L1)+1)
B+1->L2(dim(L2)+1)
End
End
End
End
If A<10
Then
If fPart([C](A+1,B))
Then
M+1->M
Else
If [C](A+1,B)<0
Then
A+1->L1(dim(L1)+1)
B->L2(dim(L2)+1)
End
End
If B>1
Then
If fPart([C](A+1,B-1))
Then
M+1->M
Else
If [C](A+1,B-1)<0
Then
A+1->L1(dim(L1)+1)
B-1->L2(dim(L2)+1)
End
End
End
If B<26
Then
If fPart([C](A+1,B+1))
Then
M+1->M
Else
If [C](A+1,B+1)<0
Then
A+1->L1(dim(L1)+1)
B+1->L2(dim(L2)+1)
End
End
End
End
If B>1
Then
If fPart([C](A,B-1))
Then
M+1->M
Else
If [C](A,B-1)<0
Then
A->L1(dim(L1)+1)
B-1->L2(dim(L2)+1)
End
End
End
If B<26
Then
If fPart([C](A,B+1))
Then
M+1->M
Else
If [C](A,B+1)<0
Then
A->L1(dim(L1)+1)
B+1->L2(dim(L2)+1)
End
End
End
If M=[C](A,B) and dim(L1)>0
Then
1->T
Repeat T>dim(L1)
L1(T)->A
L2(T)->B
If [A](L1(T),L2(T))
T->O
T+1->T
1->[B](A,B)
0->M
If A>1
Then
If [A](A-1,B)
M+1->M
If B>1
If [A](A-1,B-1)
M+1->M
If B<26
If [A](A-1,B+1)
M+1->M
End
If A<10
Then
If [A](A+1,B)
M+1->M
If B>1
If [A](A+1,B-1)
M+1->M
If B<26
If [A](A+1,B+1)
M+1->M
End
If B>1
If [A](A,B-1)
M+1->M
If B<26
If [A](A,B+1)
M+1->M
If B=1 or B=26
Then
M-3->M
If A=1 or A=10
M+1->M
End
M->[C](A,B)
If M>0
Output(A,B,M)
If M=0
Then
Output(A,B," ")
If A>1
Then
If [B](A-1,B)=0
Then
A-1->L1(dim(L1)+1)
B->L2(dim(L2)+1)
1->[B](A-1,B)
End
If B>1
Then
If [B](A-1,B-1)=0
Then
A-1->L1(dim(L1)+1)
B-1->L2(dim(L2)+1)
1->[B](A-1,B-1)
End
End
If B<26
Then
If [B](A-1,B+1)=0
Then
A-1->L1(dim(L1)+1)
B+1->L2(dim(L2)+1)
1->[B](A-1,B+1)
End
End
End
If A<10
Then
If [B](A+1,B)=0
Then
A+1->L1(dim(L1)+1)
B->L2(dim(L2)+1)
1->[B](A+1,B)
End
If B>1
Then
If [B](A+1,B-1)=0
Then
A+1->L1(dim(L1)+1)
B-1->L2(dim(L2)+1)
1->[B](A+1,B-1)
End
End
If B<26
Then
If [B](A+1,B+1)=0
Then
A+1->L1(dim(L1)+1)
B+1->L2(dim(L2)+1)
1->[B](A+1,B+1)
End
End
End
If B>1
Then
If [B](A,B-1)=0
Then
A->L1(dim(L1)+1)
B-1->L2(dim(L2)+1)
1->[B](A,B-1)
End
End
If B<26
Then
If [B](A,B+1)=0
Then
A->L1(dim(L1)+1)
B+1->L2(dim(L2)+1)
1->[B](A,B+1)
End
End
End
End
End
End
End
End
If K=23
Then
1->O
For(A,1,10)
For(B,1,26)
[A](A,B)->|LMINES(26A+B-26)
End
End
For(A,1,10)
For(B,1,26)
[B](A,B)->|LMINES(26A+B+234)
End
End
For(A,1,10)
For(B,1,26)
[C](A,B)->|LMINES(26A+B+494)
End
End
End
End
If K-23
Then
If [A](A,B)=1
Then
Output(A,B,"X")
Else
Output(L1(O),L2(O),"X")
End
Repeat getKey=23
End
ClrHome
Output(1,1,"K[|a]-BOOM!")
End
End

I will optimize this when I have time. I noticed some that can be done easily

Edit: I got it down to 6487 bytes from 6829, will look for algorithmic optimizations later.

Repeat 0
ClrHome
Output(1,1,"MINESWEEPER+CE"
2→L
Output(2,2,"New Game"
Output(3,2,"Load Game"
Output(4,2,"Style: <-#ΔP→"
1→S
Output(5,2,"Difficulty: <-Normal→"
40→M
Output(6,2,"Configure"
Output(7,2,"Custom"
Output(8,2,"Quit"
Repeat K=105 and sum(L={2,3
Output(L,1,">"
getKey→K
If sum(K={24,26,105}) and L=4
Then
5-S→S
Output(4,11,sub(Str1,S,3)
End
If K=26 and L=5
Then
UnArchive ʟMINES
M+10→M
If M=ʟMINES(261)+10
Then
Output(5,16,"Beginner→"
20→M
End
If M=30:Output(5,16,"Easy→ "
If M=40:Output(5,16,"Normal→ "
If M=50:Output(5,16,"Hard→ "
If M=60:Output(5,16,"Expert→ "
If M=70
Then
Output(5,16,"Custom→ "
ʟMINES(261)→M
End
End
If sum(K={24,25}) and L=5
Then
UnArchive ʟMINES
M-10→M
If M=ʟMINES(261)-10
Then
Output(5,16,"Expert→ "
60→M
End
If M=10
Then
Output(5,16,"Custom→ "
ʟMINES(261)→M
End
If M=20:Output(5,16,"Beginner→"
If M=30:Output(5,16,"Easy→ "
If M=40:Output(5,16,"Normal→ "
If M=50:Output(5,16,"Hard→ "
End
If K=105 and L=6
Then
Output(10,1,"RESET Str1 ?"
0→K
Repeat K
getKey→K
End
If K=105
Then
SetUpEditor ʟMINES
781→dim(ʟMINES
"#ΔP+^P"→Str1
End
Output(10,1," "
End
If K=105 and L=7
Then
Output(10,1,"# of mines:_"
Repeat (abs(iPart(K/10)-8)<2 or K=102) and abs(10fPart(K/10)-3)<2
getKey→K
End
260-30iPart(K/10)+100fPart(K/10)+20(K=102)→ʟMINES(781)
Output(10,12,ʟMINES(781)
Output(10,13,"_"
Repeat (abs(iPart(K/10)-8)<2 or K=102) and abs(10fPart(K/10)-3)<2
getKey→K
End
ʟMINES(781)+26-3iPart(K/10)+10fPart(K/10)+2(K=102)→ʟMINES(781)
Output(10,12,ʟMINES(781)
0→K
Repeat K
getKey→K
End
Output(10,1," "
End
If K=105 and L=8
Then
Archive ʟMINES
ClrHome
Return
End
If K=25
Then
Output(L,1," "
L-1-7int((L-3)/7)→L
End
If K=34
Then
Output(L,1," "
L+1-7int((L-1)/7)→L
End
End
{10,26}→dim([A])
{10,26}→dim([B])
{10,26}→dim([C])
ClrHome
If L=3
Then
For(A,1,10
For(B,1,26
ʟMINES(26A+B-26)→[A](A,B)
End
End
For(A,1,10
For(B,1,26
ʟMINES(26A+B+234)→[B](A,B)
End
End
For(A,1,10
For(B,1,26
ʟMINES(26A+B+494)→[C](A,B)
If [C](A,B)<0
Output(A,B,sub(Str1,S,1
If [C](A,B)=0
Output(A,B," "
If [C](A,B)>0
Output(A,B,[C](A,B)
End
End
Else
Fill(0,[A]
Fill(0,[B]
Fill(⁻2,[C]
For(A,1,10
Output(A,1,sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)+sub(Str1,S,1)
End
5→A
13→B
Output(5,13,sub(Str1,S+1,1
Repeat K=21 or K=45
getKey→K
If K=24 and B>1
Then
Output(A,B,sub(Str1,S,1
B-1→B
Output(A,B,sub(Str1,S+1,1
End
If K=25 and A>1
Then
Output(A,B,sub(Str1,S,1
A-1→A
Output(A,B,sub(Str1,S+1,1
End
If K=26 and B<26
Then
Output(A,B,sub(Str1,S,1
B+1→B
Output(A,B,sub(Str1,S+1,1
End
If K=34 and A<10
Then
Output(A,B,sub(Str1,S,1
A+1→A
Output(A,B,sub(Str1,S+1,1
End
End
For(C,1,M
Repeat [A](X,Y)=0 and not(abs(X-A)<2 and abs(Y-B)<2)
randInt(1,10→X
randInt(1,26→Y
End
1→[A](X,Y)
⁻1→[C](X,Y)
End
ClrList L₁,L₂
A→L₁(1)
B→L₂(1)
1→T
Repeat T>dim(L₁)
L₁(T)→A
L₂(T)→B
T+1→T
0→M
If A>1
Then
If [A](A-1,B)
M+1→M
If B>1
If [A](A-1,B-1)
M+1→M
If B<26
If [A](A-1,B+1)
M+1→M
End
If A<10
Then
If [A](A+1,B)
M+1→M
If B>1
If [A](A+1,B-1)
M+1→M
If B<26
If [A](A+1,B+1)
M+1→M
End
If B>1
If [A](A,B-1)
M+1→M
If B<26
If [A](A,B+1)
M+1→M
If sum(B={1,26
Then
M-3→M
If sum(A={1,10
M+1→M
End
M→[C](A,B)
If M>0
Output(A,B,M
If not(M
Then
Output(A,B," "
If A>1
Then
If not([B](A-1,B)
Then
A-1→L₁(1+dim(L₁
B→L₂(1+dim(L₂
1→[B](A-1,B)
End
If B>1
Then
If not([B](A-1,B-1)
Then
A-1→L₁(1+dim(L₁
B-1→L₂(1+dim(L₂
1→[B](A-1,B-1)
End
End
If B<26
Then
If not([B](A-1,B+1)
Then
A-1→L₁(1+dim(L₁
B+1→L₂(1+dim(L₂
1→[B](A-1,B+1)
End
End
End
If A<10
Then
If not([B](A+1,B)
Then
A+1→L₁(1+dim(L₁
B→L₂(1+dim(L₂
1→[B](A+1,B)
End
If B>1
Then
If not([B](A+1,B-1)
Then
A+1→L₁(1+dim(L₁
B-1→L₂(1+dim(L₂
1→[B](A+1,B-1)
End
End
If B<26
Then
If not([B](A+1,B+1)
Then
A+1→L₁(1+dim(L₁
B+1→L₂(1+dim(L₂
1→[B](A+1,B+1)
End
End
End
If B>1
Then
If not([B](A,B-1)
Then
A→L₁(1+dim(L₁
B-1→L₂(1+dim(L₂
1→[B](A,B-1)
End
End
If B<26
Then
If not([B](A,B+1)
Then
A→L₁(1+dim(L₁
B+1→L₂(1+dim(L₂
1→[B](A,B+1)
End
End
End
End
End
0→O
5→X
13→Y
Repeat O
Output(X,Y,sub(Str1,S+1,1
Repeat sum(K={21,45,23}) and not(fPart([C](X,Y)
getKey→K
If K=24 and Y>1
Then
If not([C](X,Y)
Output(X,Y," "
If [C](X,Y)<0
Output(X,Y,sub(Str1,S,1
If [C](X,Y)>0
Output(X,Y,[C](X,Y)
If fPart([C](X,Y))=⁻0.5
Output(X,Y,sub(Str1,S+2,1
Y-1→Y
Output(X,Y,sub(Str1,S+1,1
End
If K=25 and X>1
Then
If not([C](X,Y)
Output(X,Y," "
If [C](X,Y)<0
Output(X,Y,sub(Str1,S,1
If [C](X,Y)>0
Output(X,Y,[C](X,Y)
If fPart([C](X,Y))=⁻0.5
Output(X,Y,sub(Str1,S+2,1
X-1→X
Output(X,Y,sub(Str1,S+1,1
End
If K=26 and Y<26
Then
If not([C](X,Y)
Output(X,Y," "
If [C](X,Y)<0
Output(X,Y,sub(Str1,S,1
If [C](X,Y)>0
Output(X,Y,[C](X,Y)
If fPart([C](X,Y))=⁻0.5
Output(X,Y,sub(Str1,S+2,1
Y+1→Y
Output(X,Y,sub(Str1,S+1,1
End
If K=34 and X<10
Then
If not([C](X,Y)
Output(X,Y," "
If [C](X,Y)<0
Output(X,Y,sub(Str1,S,1
If [C](X,Y)>0
Output(X,Y,[C](X,Y)
If fPart([C](X,Y))=⁻0.5
Output(X,Y,sub(Str1,S+2,1
X+1→X
Output(X,Y,sub(Str1,S+1,1
End
If sum(K={31,55}) and [C](X,Y)<0
[C](X,Y)-2fPart([C](X,Y))-0.5→[C](X,Y)
If K=105
Then
1→Z
Output(X,Y,"?"
For(A,1,10
For(B,1,26
If iPart([C](A,B))=⁻2
Then
Output(X,Y,sub(Str1,S+1,1
10→A
26→B
0→Z
End
End
End
If Z
Then
ClrHome
Repeat K=23
getKey→K
End
Output(1,1,"Great Job!"
End
End
End
X→A
Y→B
If [A](A,B)
Then
1→O
Else
If [C](A,B)=⁻2
Then
ClrList L₁,L₂
A→L₁(1)
B→L₂(1)
1→T
Repeat T>dim(L₁)
L₁(T)→A
L₂(T)→B
T+1→T
1→[B](A,B)
0→M
If A>1
Then
If [A](A-1,B)
M+1→M
If B>1
If [A](A-1,B-1)
M+1→M
If B<26
If [A](A-1,B+1)
M+1→M
End
If A<10
Then
If [A](A+1,B)
M+1→M
If B>1
If [A](A+1,B-1)
M+1→M
If B<26
If [A](A+1,B+1)
M+1→M
End
If B>1
If [A](A,B-1)
M+1→M
If B<26
If [A](A,B+1)
M+1→M
If sum(B={1,26
Then
M-3→M
If sum(A={1,10
M+1→M
End
M→[C](A,B)
If M>0
Output(A,B,M
If not(M
Then
Output(A,B," "
If A>1
Then
If not([B](A-1,B)
Then
A-1→L₁(1+dim(L₁
B→L₂(1+dim(L₂
1→[B](A-1,B)
End
If B>1
Then
If not([B](A-1,B-1)
Then
A-1→L₁(1+dim(L₁
B-1→L₂(1+dim(L₂
1→[B](A-1,B-1)
End
End
If B<26
Then
If not([B](A-1,B+1)
Then
A-1→L₁(1+dim(L₁
B+1→L₂(1+dim(L₂
1→[B](A-1,B+1)
End
End
End
If A<10
Then
If not([B](A+1,B)
Then
A+1→L₁(1+dim(L₁
B→L₂(1+dim(L₂
1→[B](A+1,B)
End
If B>1
Then
If not([B](A+1,B-1)
Then
A+1→L₁(1+dim(L₁
B-1→L₂(1+dim(L₂
1→[B](A+1,B-1)
End
End
If B<26
Then
If not([B](A+1,B+1)
Then
A+1→L₁(1+dim(L₁
B+1→L₂(1+dim(L₂
1→[B](A+1,B+1)
End
End
End
If B>1
Then
If not([B](A,B-1)
Then
A→L₁(1+dim(L₁
B-1→L₂(1+dim(L₂
1→[B](A,B-1)
End
End
If B<26
Then
If not([B](A,B+1)
Then
A→L₁(1+dim(L₁
B+1→L₂(1+dim(L₂
1→[B](A,B+1)
End
End
End
End
Else
If [C](A,B)>0
Then
ClrList L₁,L₂
0→M
If A>1
Then
If fPart([C](A-1,B)
Then
M+1→M
Else
If [C](A-1,B)<0
Then
A-1→L₁(1+dim(L₁
B→L₂(1+dim(L₂
End
End
If B>1
Then
If fPart([C](A-1,B-1)
Then
M+1→M
Else
If [C](A-1,B-1)<0
Then
A-1→L₁(1+dim(L₁
B-1→L₂(1+dim(L₂
End
End
End
If B<26
Then
If fPart([C](A-1,B+1)
Then
M+1→M
Else
If [C](A-1,B+1)<0
Then
A-1→L₁(1+dim(L₁
B+1→L₂(1+dim(L₂
End
End
End
End
If A<10
Then
If fPart([C](A+1,B)
Then
M+1→M
Else
If [C](A+1,B)<0
Then
A+1→L₁(1+dim(L₁
B→L₂(1+dim(L₂
End
End
If B>1
Then
If fPart([C](A+1,B-1)
Then
M+1→M
Else
If [C](A+1,B-1)<0
Then
A+1→L₁(1+dim(L₁
B-1→L₂(1+dim(L₂
End
End
End
If B<26
Then
If fPart([C](A+1,B+1)
Then
M+1→M
Else
If [C](A+1,B+1)<0
Then
A+1→L₁(dim(L₁)+1)
B+1→L₂(dim(L₂)+1)
End
End
End
End
If B>1
Then
If fPart([C](A,B-1)
Then
M+1→M
Else
If [C](A,B-1)<0
Then
A→L₁(1+dim(L₁
B-1→L₂(1+dim(L₂
End
End
End
If B<26
Then
If fPart([C](A,B+1)
Then
M+1→M
Else
If [C](A,B+1)<0
Then
A→L₁(1+dim(L₁
B+1→L₂(1+dim(L₂
End
End
End
If M=[C](A,B) and dim(L₁)>0
Then
1→T
Repeat T>dim(L₁)
L₁(T)→A
L₂(T)→B
If [A](L₁(T),L₂(T))
T→O
T+1→T
1→[B](A,B)
0→M
If A>1
Then
If [A](A-1,B)
M+1→M
If B>1
If [A](A-1,B-1)
M+1→M
If B<26
If [A](A-1,B+1)
M+1→M
End
If A<10
Then
If [A](A+1,B)
M+1→M
If B>1
If [A](A+1,B-1)
M+1→M
If B<26
If [A](A+1,B+1)
M+1→M
End
If B>1
If [A](A,B-1)
M+1→M
If B<26
If [A](A,B+1)
M+1→M
If sum(B={1,26
Then
M-3→M
If sum(A={1,10
M+1→M
End
M→[C](A,B)
If M>0
Output(A,B,M
If not(M
Then
Output(A,B," "
If A>1
Then
If not([B](A-1,B)
Then
A-1→L₁(1+dim(L₁
B→L₂(1+dim(L₂
1→[B](A-1,B)
End
If B>1
Then
If not([B](A-1,B-1)
Then
A-1→L₁(1+dim(L₁
B-1→L₂(1+dim(L₂
1→[B](A-1,B-1)
End
End
If B<26
Then
If not([B](A-1,B+1)
Then
A-1→L₁(1+dim(L₁
B+1→L₂(1+dim(L₂
1→[B](A-1,B+1)
End
End
End
If A<10
Then
If not([B](A+1,B)
Then
A+1→L₁(1+dim(L₁
B→L₂(1+dim(L₂
1→[B](A+1,B)
End
If B>1
Then
If not([B](A+1,B-1)
Then
A+1→L₁(1+dim(L₁
B-1→L₂(1+dim(L₂
1→[B](A+1,B-1)
End
End
If B<26
Then
If not([B](A+1,B+1)
Then
A+1→L₁(1+dim(L₁
B+1→L₂(1+dim(L₂
1→[B](A+1,B+1)
End
End
End
If B>1
Then
If not([B](A,B-1)
Then
A→L₁(1+dim(L₁
B-1→L₂(1+dim(L₂
1→[B](A,B-1)
End
End
If B<26
Then
If not([B](A,B+1)
Then
A→L₁(1+dim(L₁
B+1→L₂(1+dim(L₂
1→[B](A,B+1)
End
End
End
End
End
End
End
End
If K=23
Then
1→O
For(A,1,10
For(B,1,26
[A](A,B)→ʟMINES(26A+B-26)
End
End
For(A,1,10
For(B,1,26
[B](A,B)→ʟMINES(26A+B+234)
End
End
For(A,1,10
For(B,1,26
[C](A,B)→ʟMINES(26A+B+494)
End
End
End
End
If K-23
Then
If [A](A,B)=1
Then
Output(A,B,"X"
Else
Output(L₁(O),L₂(O),"X"
End
Repeat getKey=23
End
ClrHome
Output(1,1,"Ka-BOOM!"
End
End

Yeah, I mean, what's with the extra square brackets and "|"s? The viewer could be useful to see how the if's and ends and other commands like repeat all line up. I find it disappointing how you can't space things out like that in any old TI-BASIC editor. Anyway, a new update fixing TONS of glitches is soon coming out. Thank you!

I didn't have time to try and understand all of your code, but I created one of my own for the ti-84+ that has some fairly optimized algorithms. I haven't gotten to the part of actually clearing more than 1 space or showing the number of mines nearby, but I have a "protect" function and a "dig" function. 2nd is to flag or unflag, enter is to dig. Uses L1 to generate 3 mines per row, and then L2-L5 for saving points which are either dug or protected. Its not nearly close to done, but it uses the graph screen and has 24 bombs on an 8*8 grid. this could easily be lowered to 16 or 8 bombs.

I commented the code heavily so you can hopefully understand each part of what I did.

//initialize the graph screen
ClrDraw
AxesOff
GridOff
//initialize our variables
{8,8→dim([A]
0→Xmin
0→Ymin
100→Xmax
100→Ymax
45→A
55→B
ClrAllLists
//make a grid
For(θ,10,90,10
Horizontal θ
Vertical θ
End
//erase the left and right
For(θ,91,100
Line(θ,0,θ,100,0
Line(100-θ,0,100-θ,100,0
End
//erase the top and bottom
For(θ,92,100
Line(0,θ,100,θ,0
Line(0,100-θ,100,100-θ,0
End
Text(57,1,"Generating. . ."
For(E,1,8
//for each row in the matrix, generate a list with 3 randomly placed mines
Repeat sum(L₁)=3
randInt(0,1,8→L₁
End
For(F,1,8
//for each column in the matrix, store the value in the list which corresponds; keep respect to the row
L₁(F)→[A](E,F)
End
End
//erase the "Generating. . . "
For(θ,0,50
Line(θ,0,θ,6,0
End
ClrHome
Pt-Change(A,B
//main loop. Clear key exits
Repeat K=45
getKey→K
//movement code
If sum(K={24,25,26,34
Then
Pt-Change(A,B
A+10(K=26)(A<85)-10(K=24)(A>15)→A
B+10(K=25)(B<85)-10(K=34)(B>15)→B
Pt-Change(A,B
End
//Code for firing
//check first to see if the space is flagged. If it is, cancel the key press
If K=105
Then
For(θ,1,dim(L₂
If A=L₂(θ) and B=L₃(θ):0→K
End
End
//if it isnt flagged, fill in the space and mark it as dug
If K=105
Then
For(θ,⁻5,5)
Line(A-5,B+θ,A+5,B+θ
End
A→L₄(1+dim(L₄
B→L₅(1+dim(L₅
Pt-Change(A,B
//test if the space we just dug matched a bomb. If it does, end the game
If [A](iPart(B/10),iPart(A/10)
Then
For(θ,5,20,5
Circle(A,B,θ
End
Text(57,1,"Game Over!
rand(125
//we set K to 45 here to avoid memory leaks in case we expand the program
45→K
End
End
//code for flagging
//check first to see if the space is dug. If it is, cancel the key press
If K=21
Then
For(θ,1,dim(L₄
If A=L₄(θ) and B=L₅(θ):0→K
End
End
//if it isnt dug, the code continues here
If K=21
Then
//F is used as a "flag" variable. This just tells the program if we have just removed the flagged square or not. We reset it every time we check
0→F
//check to see if it is already flagged. If it is, remove the flag from the list and the display
For(θ,1,dim(L₂
If A=L₂(θ) and B=L₃(θ)
Then
0→L₂(θ)
0→L₃(θ)
Pt-Off(A,B,3
Pt-Change(A,B
//tell the program we removed the flag
1→F
End
End
//if the flag wasnt removed, it must not have existed. Add the flag to the list and display the flag
If not(F
Then
A→L₂(1+dim(L₂
B→L₃(1+dim(L₃
Pt-On(A,B,3
End
End
//end of main loop
End
//cleanup
AxesOn
ClrAllLists
DelVar θ
DelVar A
DelVar B
DelVar K
DelVar E
DelVar F
DelVar [A]
ClrDraw
ClrHome

I actually found an excellent way to make the game load faster. Usually, when you select a space to clear, it looks around for mines THEN before showing that amount, but with my new build, it gathers that information BEFORE you start playing. As the program places the mines, it calculates how many mines are around each space. That way, when you request the program to clear a space and display a value, it immediately calls up that value, already loaded, and displays it. I won't release the new build yet, because I need to test it and make further improvements, but it does work SO much better.

So, the next version of minesweeper is going to be quite a leap, with better-yet user friendliness, custom controls, an option to turn automatic loading off, AND a large improvement of the time it takes to save/load a game. Stay tuned, UPDATE V1.3.0 COMING SOON!

*Edit: Also, at some point, I WILL be programming a port of this for the lower definition TI-83's and TI-84's (8x16 as opposed to 10x26).