0 DIM M(31,20),N(31,20),TT(4),SX(101),SYY(101),MX,MY,ST,MC,V,H,X,Y,Z,OH,OV,B,C,R
5 CLS:MC=16384
10 PRINT@11,"minefield";:POKE16404,33
20 PRINT@100,"BY KENNETH REIGHARD, JR."
30 PRINT@130,"MC-10 VERSION BY JIM GERRIE"
40 PRINT@268,"1. EASY":PRINT@300,"2. MEDIUM":PRINT@332,"3. HARD"
50 QQ$=INKEY$:H=RND(10):IF QQ$="" THEN 50
55 IF QQ$<>CHR$(49) AND QQ$<>CHR$(50) AND QQ$<>CHR$(51) THEN 50
56 SK=VAL(QQ$):IF SK<1 OR SK>3 THEN 50
58 PRINT@454,"ONE MOMENT PLEASE...";
60 ON SK GOTO 65,70,75
65 MX=9:MY=9:B=10:GOTO 80
70 MX=19:MY=12:B=40:GOTO 80
75 MX=31:MY=14:B=70
80 L=B
90 R=(MX+1)*(MY+1)-B
100 FOR Z=1 TO B
105 H=RND(MX):V=RND(MY)
110 IF M(H,V)=-1 THEN 105
112 M(H,V)=-1
115 NEXT Z
120 FOR V=0 TO MY:FOR H=0 TO MX
125 IF M(H,V)<>-1 THEN 155
130 FOR Y=-1 TO 1:FOR X=-1 TO 1
135 IF X=0 AND Y=0 THEN 150
140 IF H+X<0 OR H+X>MX OR V+Y<0 OR V+Y>MY THEN 150
145 IF M(H+X,V+Y)<>-1 THEN M(H+X,V+Y)=M(H+X,V+Y)+1
150 NEXT X:NEXT Y
155 NEXT H:NEXT V
160 CLS4
170 REM 
180 FOR X=0 TO MX
190 FOR Y=0 TO MY
200 PRINT@X+(Y*32),".";
205 NEXT Y:NEXT X
210 H=0:V=0:T=0
220 IF PEEK(MC+H+(32*V))-64>0 THEN GOSUB600
230 PRINT@495,L;CHR$(191);:IF R=0 THEN PRINT@480,"YOU WIN!            ";:GOTO440
240 QQ$=INKEY$:IF QQ$="" THEN 240
250 IF QQ$="A" THEN GOSUB620:H=H-1:IF H<0 THEN H=MX:GOTO 220
255 IF QQ$="S" THEN GOSUB620:H=H+1:IF H>MX THEN H=0:GOTO 220
260 IF QQ$="Z" THEN GOSUB620:V=V+1:IF V>MY THEN V=0:GOTO 220
265 IF QQ$="W" THEN GOSUB620:V=V-1:IF V<0 THEN V=MY:GOTO 220
270 IF QQ$=CHR$(13) AND N(H,V)=0 AND L>0 THEN PRINT@H+(V*32),"?";:N(H,V)=1:L=L-1:GOTO 220
272 IF QQ$=CHR$(13) AND N(H,V)=1 THEN PRINT@H+(V*32),".";:N(H,V)=0:L=L+1:GOTO 220
275 IF QQ$<>CHR$(32) THEN 220
280 IF N(H,V)<>0 THEN 220
285 POKEMC+H+(V*32),96
290 C=M(H,V)
295 IFC=-1THEN400
300 R=R-1
305 IF C=0 THEN N(H,V)=3:GOTO 325
310 PRINT@H+(V*32),CHR$(C+48);
315 N(H,V)=2
320 GOTO 220
325 OH=H:OV=V
330 ST=1:SX(ST)=H:SYY(ST)=V
335 IF ST=0 THEN H=OH:V=OV:GOTO 220
340 X=SX(ST):Y=SYY(ST)
345 FOR H=X-1 TO X+1:FOR V=Y-1 TO Y+1
350 IF H<0 OR H>MX OR V<0 OR V>MY THEN 390
355 IF N(H,V)<>0 THEN 390
360 IF M(H,V)>0 THEN N(H,V)=2:R=R-1:PRINT@H+(V*32),CHR$(M(H,V)+48);:GOTO390
365 IF M(H,V)=-1 THEN 390
370 POKEMC+H+(V*32),96:N(H,V)=3
380 R=R-1:ST=ST+1:SX(ST)=H:SYY(ST)=V:GOTO340
390 NEXT V:NEXT H
395 ST=ST-1:GOTO 335
400 POKEMC+H+(V*32),42:POKE49151,64:FORX=1TO15:NEXTX:SOUND 1,1:PRINT@480,"YOU LOSE.          ";
405 FOR V=0 TO MY:FOR H=0 TO MX
410 IF M(H,V)=-1 THEN PRINT@H+(V*32),"*";
415 IF N(H,V)=1 AND M(H,V)<>-1 THEN PRINT@H+(32*V),"X";
420 NEXT H:NEXT V
440 REM WIN
450 FOR V=0 TO MY:FOR H=0 TO MX
455 IF M(H,V)=-1 AND N(H,V)<>1 THEN PRINT@H+(V*32),"*";
460 NEXT H:NEXT V
480 PRINT@495,"PLAY AGAIN (Y/N)";:POKE16895,127 
560 QQ$=INKEY$:IF QQ$="Y" OR QQ$="Y" THEN RUN
570 IF QQ$<>"N" AND QQ$<>"N" THEN 560
580 END
600 POKE MC+H+(32*V),PEEK(MC+H+(32*V))-64:RETURN
620 POKE MC+H+(32*V),PEEK(MC+H+(32*V))+64:RETURN

