Mined-Out is Ian Andrew’s 1983 Quicksilva game. You walk your man up from the bottom of a fenced field to the gap at the top, moving with keys 5, 6, 7 and 8, while the status line shows how many mines are adjacent to where you stand. Your trail stays on screen, so you can work out where the mines must be. Later levels add damsels to rescue and other hazards, and the score rewards crossing quickly; finishing the last level rescues Bill and wins the game.
The program is all BASIC. The Quicksilva “Game Lords of Britain” logo loader from Bob Swoger’s disk runs first.
Program Analysis
Setup at lines 9000–9008 defines 16 graphics characters from DATA and shows “DON’T GO AWAY!” while it works; the program then starts at line 9000 when loaded. The field is drawn with PRINT AT and the mines are found again by testing screen attributes with ATTR. Movement at lines 520–522 is LET x=x+(INKEY$="6")-(INKEY$="7").
Notable Techniques
- Line 1 is a REM that reads “NO CHEATING NOW !!” and several lines end in
LIST, so breaking in or failing a level lists that message instead of the program. - The high-score name starts as
H$="IAN", the author’s. - Sound effects are short
BEEPloops with the border cycling through colours.
This copy came from a Larken disk. The disk prefixes on the LOAD and SAVE lines were removed and the program’s auto-start line corrected. Tested in ZEsarUX on a stock TS2068.
Source Code
1 REM .................................... NO CHEATING NOW !! ''''''''''''''''''''''''''''''''''''
2 LET ink=9: LET bonus=0: LET lev=1: LET damsels=1: LET HSC=250 : LET DAMSELS=1
4 LET H$="IAN": GO TO 6
5 LET SPE=6: BEEP 9,-9: LIST
6 IF damsels>2 THEN GO TO 5700
7 LET PAPER=6: LET INK=9
8 LET BORDER=0: LET mines=50: LET damsels=1: LET SC=0
9 LET bonus=0: LET DAMSELS=1
10 LET ink=9: BORDER BORDER: PAPER PAPER: INK INK: CLS : BORDER BORDER
12 LET x=21: LET y=15
14 LET t$=CHR$ (x+65)+CHR$ (y+65)
16 LET XX=21: LET YY=15
18 LET TI=0
22 LET oldx=x: LET oldy=y
24 LET C$="a": LET V$="b"
26 LET CC=0: LET DD=0: LET EE=0
28 LET RR=1
30 LET OO=21: LET PP=15
32 LET X$=" < SAFE AREA > "
34 LET PA=7
36 LET ss=0
40 IF lev<>1 THEN PRINT AT 15,0;: LIST
50 GO TO 300
100 LET RN=INT (RND*13)+4
103 FOR a=3 TO 30
104 IF A=10 OR A=20 THEN NEXT A
105 PRINT AT 21,19; PAPER PAPER; INK 9;"MORE MINES"
106 IF ATTR (RN,A)=56 THEN GO TO 115
110 PRINT AT RN,a;"m"
115 LET K=RN-1+INT (RND*3)
120 IF ATTR (K,A-1)<>56 THEN PRINT AT K,a-1;"o"
130 BEEP .002,55
132 PRINT AT 21,19;" "
135 IF ATTR (RN,A)=56 THEN GO TO 150
140 PRINT AT RN,A;" "
200 NEXT a
210 GO TO 570
300 PRINT AT 0,28; PAPER 0;" "
302 PRINT AT 0,0; PAPER 0; INK 7;"ADJACENT pqrs 0";AT 0,17;"NO.";DAMSELS;" SCORE ";SC
305 PRINT AT 1,0;"fffffffffffffff fffffffffffffff"
320 FOR n=2 TO 19
330 PRINT AT n,0;"f f"
335 NEXT n
340 PRINT AT 20,0;"ffffffffffffff fffffffffffffff"
349 PRINT AT x,y;C$
390 NEXT n: IF SC=0 AND DAMSELS>2 AND BONUS=0 THEN PRINT AT 15,0;: LIST
400 PRINT AT 21,19; FLASH 1; PAPER 2; INK 7;"MINE LAYING": IF damsels=9 THEN LET mines=mines+32: LET MINES=MINES+(10-INT (SC/1000))
401 PRINT AT 21,3; FLASH 1; PAPER 2; INK 7; INVERSE 1;"LEVEL ";DAMSELS
402 FOR w=1 TO mines: PRINT AT INT (RND*16)+3,INT (RND*30)+1; INK PAPER;"o"
410 BEEP .0015,35
425 IF DAMSELS<>1 THEN NEXT W
426 IF DAMSELS<>1 THEN GO TO 439
430 PRINT AT 19,1;X$(W TO W+29)
432 PRINT AT 2,1;X$(51-W TO 51-W+29)
438 NEXT W
439 IF lev<>1 THEN PRINT AT 15,0;: LIST
440 PRINT AT 10,1; INK PAPER;"o";AT 11,15;"oo";AT 10,30;"o"
442 PRINT AT 21,0;" "
445 IF DAMSELS=1 THEN GO TO 480
446 IF damsels=9 THEN GO SUB 9900: GO TO 480
448 PRINT AT 21,0; INVERSE 1; BRIGHT 1;"RESCUE DAMSELS FOR EXTRA POINTS!": GO TO 450
450 LET CC=INT (RND*12)+4: LET DD=INT (RND*6)+6: LET EE=INT (RND*6)+19
452 FOR J=1 TO 7
455 PRINT AT CC,DD;"d";AT CC,EE;"d"
460 FOR E=1 TO 11: NEXT E
461 BEEP .002,58
462 PRINT AT CC,DD;"e";AT CC,EE;"e"
470 FOR E=1 TO 11: NEXT E
471 BEEP .002,58
475 NEXT J
480 IF damsels<>8 THEN GO TO 490
482 PRINT AT 21,0; INK 7; FLASH 1; PAPER 0; BRIGHT 1;"HIDE BETWEEN 3 MINES TO OPEN GAP"
483 PRINT AT 1,15;"ff": PRINT AT 8,11; INK 1; BRIGHT 1; PAPER 7;"GAP CLOSED"
485 FOR m=60 TO 10 STEP -2.5: FOR n=1 TO 7: NEXT n: BEEP .125,m: NEXT m
487 PRINT AT 21,0;" "
488 PRINT AT 8,11;" "
490 BEEP .0875,10
491 PRINT AT 21,0;" a "
492 PRINT AT 21,31; INK paper; PAPER paper;"h"
493 PRINT AT 21,10; INVERSE 1;"GO!": FOR n=1 TO 20: BEEP .002,n+20: NEXT n: PRINT AT 21,10;" ": BEEP .05,37
495 GO TO 535
505 LET oldx=x: LET oldy=y
520 LET x=x+(INKEY$="6")-(INKEY$="7")
521 LET x=x-(x=22)
522 LET y=y+(INKEY$="8")-(INKEY$="5")
526 LET TI=TI+1
528 IF DAMSELS>=4 THEN IF TI>(260*PAPER+70) THEN IF INT (TI/(3*PAPER+1))=(TI/(3*PAPER+1)) THEN GO SUB 543
530 IF oldx=x AND oldy=y THEN GO TO 520
532 BEEP .003,-4
535 PRINT AT oldx,oldy; PAPER PA;" "
537 LET t$=t$+CHR$ (x+65)+CHR$ (y+65)
540 IF SCREEN$ (x,y)<>" " THEN GO SUB 1000
541 IF damsels=9 AND pa<>paper AND x<17 THEN GO SUB 8000
542 GO TO 550
543 PRINT AT OO,PP; PAPER PA;" "
544 LET I$=T$+T$: IF DAMSELS>=5 AND PAPER<>PA AND TI>2000 THEN GO SUB 8000
545 LET RR=RR+2: BEEP .0018,60
546 LET OO=65-CODE I$(RR): LET PP=65-CODE I$(RR+1)
547 IF SCREEN$ (OO,PP)<>" " THEN GO SUB 1000
548 PRINT AT OO,PP; PAPER PA;"h"
549 RETURN
550 PRINT AT x,y; PAPER PA;C$
570 LET o=(SCREEN$ (x-1,y)<>" ")
571 LET p=(SCREEN$ (x+1,y)<>" ")
572 LET q=(SCREEN$ (x,y-1)<>" ")
573 LET r=(SCREEN$ (x,y+1)<>" ")
574 LET o=o+p+q+r
580 IF o THEN BEEP .04,o*10
599 PRINT AT 0,0; PAPER (4-O); INK 9;"ADJACENT pqrs ";O
600 IF x=0 THEN GO SUB 3000
604 IF o=3 AND damsels=8 THEN PRINT AT 8,12; FLASH 1;"GAP OPEN": FOR c=1 TO 40: BEEP .001,30+c/4: BORDER 0: BORDER 7: NEXT c: PRINT AT 1,15;" ": PRINT AT 8,12;" ": BORDER 2
800 IF damsels>2 AND damsels<9 AND ti>50 THEN IF RND>.98 THEN GO TO 100
900 GO TO 500
998 STOP
1000 IF X=CC THEN IF Y=DD OR Y=EE THEN GO SUB 6000: RETURN
1001 IF damsels=9 THEN IF x=8 AND y=5+ss THEN GO TO 8444
1002 FOR W=20 TO 1 STEP -1: BEEP .003,0+W: PRINT AT X,Y;"c": BEEP .002,10: PRINT AT X,Y;"o": NEXT W
1003 LET j$="MUFFED": IF RND>.8 THEN LET j$="GOOFED": IF RND>.7 THEN LET j$="BLEW"
1004 PRINT AT 0,0; PAPER 0; INK 7;" YOU ";j$;" IT ! "
1005 BEEP 1.6,-35
1020 GO SUB 2000
1021 PRINT AT X,Y; PAPER 7; INK 0; OVER 1;CHR$ (65+INT (RND*60))
1022 BEEP 1,-35
1023 IF SC>HSC THEN GO SUB 4500
1024 PRINT AT 0,28; PAPER 0;" "
1025 PRINT AT 0,0; PAPER 0; INK 7;" ";"TRY AGAIN ? LEVEL ";DAMSELS;" ";AT 0,22; FLASH 1;"SCORE ";SC
1040 PRINT AT 2,1; PAPER 0; INK 7;" PRESS ANY KEY (""I"" FOR INFO) "
1100 PRINT AT 10,9; INK 7; PAPER 2; BRIGHT 1;" GAME OVER "
1120 IF paper>=4 THEN INK 0
1130 IF paper<4 THEN INK 7
1150 PLOT 72,96: DRAW 112,0: DRAW 0,-9: DRAW -113,0: DRAW 0,9
1190 INK 9
1200 PRINT AT 21,29; PAPER BORDER; INK 9;" ";AT 21,0; PAPER BORDER; INK 9;" HIGHEST SCORE IS ";HSC;" BY ";H$
1300 FOR n=1 TO 100: NEXT n
1500 FOR N=1 TO 10000000
1510 IF SC=HSC THEN PRINT AT 21,0; PAPER border; INK 9;"d";AT 21,31;"e"
1512 IF INKEY$="" THEN FOR M=1 TO 16: NEXT M
1517 IF SC=HSC THEN PRINT AT 21,0; PAPER border; INK 9;"e";AT 21,31;"d"
1600 IF INKEY$="" THEN FOR M=1 TO 16: NEXT M
1601 LET s$=INKEY$
1605 IF s$="" THEN NEXT n
1610 IF S$="I" OR S$="i" THEN GO SUB 7000
1620 PRINT AT 2,1;" "
1650 GO TO 6
1999 STOP : REM I.ANDREW (CARDS) FOR ALL MODERN POSTCARDS
2005 FOR n=1 TO 20: NEXT n
2010 FOR a=1 TO 21
2020 PRINT AT a,0; OVER 1; INK 9;" "
2022 NEXT a
2025 PRINT AT 21,1; FLASH 1; PAPER 7; INK 0;"ACTION REPLAY"
2026 FOR n=1 TO 100: NEXT n
2028 LET y$=t$
2030 FOR t=1 TO LEN y$ STEP 2
2031 FOR m=1 TO 5: IF INKEY$="S" OR INKEY$="s" THEN GO TO 2033:
2032 NEXT m
2033 PRINT AT XX,YY; PAPER 7;" "
2034 IF damsels>1 AND T=21 THEN PRINT AT 21,0; PAPER 0; INK 7;"HOLD ""S"" FOR SPEED OR ""E"" TO END"
2035 LET xX=CODE y$(1)-65: LET yY=CODE y$(2)-65
2037 PRINT AT Xx,Yy; PAPER 7;C$
2039 BEEP .005,5+(T*40/(LEN T$))
2040 LET y$=y$(3 TO )
2045 IF INKEY$="E" OR INKEY$="e" THEN GO TO 2055
2050 NEXT t
2070 PRINT AT 21,0;" "
2080 RETURN
2998 STOP
3000 LET SS=(INT ((2000-TI)/50))*5: IF SS<50 THEN LET SS=50
3001 LET SS=SS*DAMSELS
3002 PRINT AT 0,0; PAPER DAMSELS/1.5; INK 9;" LEVEL ";DAMSELS;" SPEED SCORE = ";SS;" "
3004 IF damsels=1 AND ss<100 THEN PRINT AT 0,31; PAPER 1;" "
3005 PRINT AT 1,0;"f"
3010 FOR N=15 TO 50: BEEP .001+((50-30)/2000),(50+N/2.8): BORDER 2:: BORDER 7: BORDER 0: NEXT N
3012 BORDER border
3015 IF bonus>0 THEN LET sc=sc+bonus: PRINT AT 21,0; PAPER 7; BRIGHT 1;"INITIAL BONUS = ";BONUS: LET BONUS=0: FOR N=1 TO 20 STEP .6: BEEP .025,n+5: NEXT N: PRINT AT 21,0;" "
3020 GO SUB 2000
3022 FOR g=4 TO 22 STEP 6: BEEP .005,g+24: NEXT g
3025 FOR N=1 TO 80: BORDER 1: BORDER 2: BORDER 3: BORDER 4: BORDER 5: BORDER 6: NEXT N
3026 LET SC=SC+SS
3027 PRINT AT 0,30; PAPER 0;" "
3028 PRINT AT 0,0; PAPER 0; INK 7;"ADJACENT pqrs 0 NO.";DAMSELS;" SCORE ";SC
3030 FOR n=1 TO 120
3035 NEXT n
3060 LET MINES=MINES+10
3070 LET PAPER=PAPER-1
3072 LET DAMSELS=DAMSELS+1
3074 IF PAPER<0 THEN LET BORDER=BORDER+2: LET PAPER=6
3076 IF PAPER=6 THEN LET MINES=50
3078 IF damsels=7 THEN LET mines=20
3080 GO TO 10
4500 FOR N=1 TO 50: BORDER 1: BORDER 2: BORDER 3: BORDER 4: NEXT N: IF DAMSELS=1 THEN LIST
4600 FOR N=1 TO 50: BORDER 6: BORDER 2: BEEP .002,40+(N/10): BORDER 6: NEXT N
5002 FOR M=1 TO 4
5005 FOR N=7 TO 0 STEP -1
5010 PRINT AT 10,7; INK N;"A NEW HIGH SCORE !"
5015 BEEP .004,50-N
5020 NEXT N
5030 NEXT M
5032 PRINT AT 10,7; INK 9;"A NEW HIGH SCORE !"
5035 FOR N=1 TO 6
5040 PRINT AT 0,15;"de"
5045 FOR L=1 TO 7: NEXT L
5049 BEEP .006,13
5050 PRINT AT 0,15;"ed"
5055 FOR L=1 TO 7: NEXT L
5058 BEEP .006,16
5060 NEXT N
5080 PRINT AT 21,0; FLASH 1; PAPER 1; INK 7;" ENTER YOUR INITIALS NOW "; FLASH 0;" "
5082 LET Q$=" "
5085 FOR N=1 TO 3
5088 LET Q$(N)=INKEY$
5090 IF Q$(N)=" " THEN GO TO 5088
5095 IF CODE Q$(N)>=97 AND CODE Q$(N)<=122 THEN LET Q$(N)=CHR$ ((CODE Q$(N))-32)
5100 PRINT AT 21,(24+(2*N)); INK 7; PAPER 1;Q$(N)
5110 BEEP .12,(N*5)+20
5114 FOR m=1 TO 4: NEXT m
5120 NEXT N
5140 LET H$=Q$: LET HSC=SC
5150 PRINT AT 21,0; PAPER 7; INK 0;" WELL DONE ";H$;" "
5160 FOR N=1 TO 12: BEEP .0045,-10: BORDER 1: BORDER 2: BORDER 6: BORDER 4: NEXT N
5170 BORDER BORDER
5195 BEEP .1,8: FOR N=1 TO 4: NEXT N: BEEP .1,8: BEEP .1,8: BEEP .1,20: BEEP .1,24: BEEP .1,18: BEEP .15,29
5196 FOR N=1 TO 7: NEXT N: BEEP .12,22: FOR N=1 TO 3: NEXT N:: BEEP .07,19: BEEP .08,17: FOR N=1 TO 3: NEXT N: BEEP .1,14: BEEP .1,12
5198 PRINT AT 10,7;" "
5200 RETURN
5700 LET lev=damsels-1
5701 LET z$=" Which level to start ? "
5703 FOR n=0 TO 21: PAPER paper: BEEP .002,n+5: PRINT AT n,0; OVER 1;":: ::": NEXT n
5704 FOR n=1 TO 21: NEXT n: FOR n=0 TO 31: PAPER paper: INK paper: PLOT n*8,0: DRAW 0,175
5705 BEEP .0015,64: BEEP .0015,59
5706 PRINT AT 10,n; PAPER INT (RND*6); INK 9;z$(n+1)
5707 NEXT n
5708 INK 9: IF sc=0 AND bonus=0 THEN PRINT AT 15,0;: LIST
5710 PRINT AT 13,13; FLASH 1;"1";AT 13,14;" TO ";AT 13,18; FLASH 1;lev
5720 PRINT AT 13,13; FLASH 1;"1"
5730 PRINT AT 13,14;" TO "
5740 PRINT AT 13,18; FLASH 1;LEV
5750 BEEP .1,30: FOR n=1 TO 25: NEXT n
5751 LET l$=INKEY$: IF l$="" THEN GO TO 5751
5757 PRINT AT 21,0; INK paper; PAPER paper; INVERSE 1;" WHOOPS ! TRY AGAIN !! "
5758 PRINT AT 0,0; INK paper; PAPER paper; INVERSE 1;" WHOOPS ! TRY AGAIN !! "
5760 IF CODE l$<49 OR CODE l$>57 THEN BEEP 1,-15: GO TO 5700
5770 LET ll=VAL l$
5780 IF ll>lev OR ll<>(INT ll) OR ll<1 THEN BEEP 1,-15: GO TO 5700
5784 LET sc=0
5788 LET damsels=ll
5800 IF ll=1 THEN LET paper=6: LET border=0: LET mines=50: LET bonus=0
5802 FOR n=30 TO 34: BEEP .006,n: NEXT n
5805 IF ll=2 THEN LET paper=5: LET border=0: LET mines=60: LET bonus=250
5810 IF ll=3 THEN LET paper=4: LET border=0: LET mines=70: LET bonus=750
5815 IF ll=4 THEN LET paper=3: LET border=0: LET mines=80: LET bonus=1500
5820 IF ll=5 THEN LET paper=2: LET border=0: LET mines=90: LET bonus=2200
5825 IF ll=6 THEN LET paper=1: LET border=0: LET mines=100: LET bonus=2700
5830 IF ll=7 THEN LET paper=0: LET border=0: LET mines=20: LET bonus=3500
5832 IF ll=8 THEN LET paper=6: LET border=2: LET mines=50: LET bonus=4200
5840 IF LL=9 THEN LIST
5888 LET lev=1
5900 GO TO 10
5998 STOP
6000 PRINT AT X,Y;V$: LET C$=V$
6002 PAPER 7: LET C$=V$
6010 FOR U=25 TO 50 STEP 5: PRINT AT X,Y;"g"
6015 FOR N=1 TO 8 STEP 2: BEEP .002,n+u
6016 LET SC=SC+5
6017 PRINT AT 0,21; PAPER 0; INK 7;" SCORE ";SC
6018 NEXT n
6020 PRINT AT X,Y;"d"
6025 FOR N=1 TO 8 STEP 2: BEEP .002,n+u
6028 NEXT n
6030 NEXT U
6100 LET ti=ti+35
6150 PAPER paper
6200 RETURN
7000 REM INSTRUCTIONS
7005 LET P=0
7010 BORDER 1: PAPER 1: CLS : INK 7
7012 PRINT AT 0,0;" QUICKSILVA PRESENTS ...."
7013 FOR n=1 TO 60: NEXT n
7015 FOR N=2 TO 16
7016 PRINT AT N,0;" "
7020 NEXT N
7024 BEEP .2,30: BEEP .1,20: FOR N=1 TO 5: NEXT N: BEEP .075,26: BEEP .125,26: BEEP .1,18
7026 PRINT AT 0,0;" A GAME OF STRATEGY AND SKILL ! "
7028 FOR N=47 TO 56 STEP 3
7030 PRINT AT 9,11; PAPER P; OVER 0; INK 9;"MINED OUT!": CIRCLE INK 7;128,99,N: LET P=P+2
7032 NEXT N
7035 INK 9
7040 PRINT AT 18,0;" OR ""RESCUE BILL THE WORM FROM CERTAIN OLD AGE"""
7045 PRINT AT 9,11; INK 0; PAPER 7; FLASH 1;"MINED OUT!"
7050 PAPER 8: FOR N=3 TO 17: PRINT AT N-1,4; PAPER 8;"o";AT N-1,27;"o": PRINT AT 19-n,3;"o";AT 19-n,5;"o";AT 19-n,26;"o";AT 19-n,28;"o"
7051 BEEP .005,33: NEXT N: PAPER 1
7052 GO SUB 7057
7055 GO TO 7080
7057 PRINT AT 21,21; INVERSE 1;"PRESS A KEY"
7058 FOR n=1 TO 60: NEXT n
7060 IF INKEY$="" THEN GO TO 7060
7065 PAPER 7: INK 0
7070 CLS
7075 RETURN
7081 PRINT AT 2,0;" * MINED OUT! By Ian Andrew"
7090 PRINT ''" YOUR MISSION (should you decide to accept it) IS TO RESCUE BILL THE WORM BY REACHING HIM"''" HE LAYS DORMANT ON THE FINAL MINEFIELD (LEVEL 9)"
7100 PRINT '" THIS IS BILL ""n"""
7110 PRINT ''" YOU ""a"" BEGIN AT EACH LEVEL AT THE BOTTOM OF THE SCREEN"
7115 PRINT '" AIM FOR THE GAP AT THE TOP OF THE SCREEN"
7120 PRINT AT 21,21; INVERSE 1;"PRESS A KEY"
7130 FOR N=1 TO 40: NEXT N: FOR N=1 TO 50000: IF INKEY$="" THEN NEXT N
7140 RESTORE 9980: FOR N=1 TO 44: READ I: READ L:
7145 PRINT AT I,L;"a": BEEP .035,N/2
7150 PRINT AT I,L;" ": NEXT N
7160 CLS
7170 PRINT AT 1,0;" MOVE USING KEYS... 5,6,7 & 8"'" [ SEE ARROWS ABOVE THESE KEYS ]"
7180 PRINT ''" MINES ""o"" ARE VERY UNPLEASANT"''" YOU ARE WARNED OF ANY MINES THAT ARE ADJACENT TO YOUR POSITION AT THE TOP LEFT OF THE SCREEN"
7190 REM "HELLO THERE"
7200 PRINT '" YOU ONLY LIVE ONCE DO NOT HIT ANY MINES"
7210 PRINT ''" DAMSELS - THESE ALSO REGISTER AS MINES, BUT IF YOU ARE NEXT TO ONE DO NOT HESITATE TO RUSH IN AND RESCUE HER. YOU WILL BE REWARDED"
7220 GO SUB 7057
7230 PRINT AT 2,0;" THE BUG ""h"" (a mine with legs) WILL CHASE YOU SOMETIMES - IT CAN GET VERY AGGRESSIVE"
7235 FOR n=1 TO 15: NEXT n
7240 LET j$=" a h "
7250 FOR n=1 TO LEN j$-35: PRINT AT 6,0;j$(n TO n+31): BEEP .0018,60: FOR m=1 TO 1: NEXT m: NEXT n
7260 PRINT " AND NOW SOME..."''" TIPS - THE SAFE AREAS ARE COMPLETLY MINE FREE - SO AIM FOR THE TOP SAFE AREA (NOT JUST THE GAP) & YOU CAN SAFELY MOVE TO THE GAP FROM THERE. WHEN THE BUG IS ACTIVE (LEVEL 4 ONWARDS) KEEP ON THE MOVE - YOU CAN USUALLY MOVE QUICKER THAN THE BUG!"
7270 GO SUB 7057
7280 PRINT AT 3,0;" THE FENCE IS MINED AND WILL REGISTER AS A MINE IF YOU ARE NEXT TO IT"
7290 PRINT AT 8,0;"ffffffffffffffffffffffffffffffff"
7300 REM
7304 FOR N=1 TO 2
7305 FOR O=0 TO 1
7310 PRINT AT 6+O,14;"a"
7321 PRINT AT 0,0; PAPER (4-O); INK 9;"ADJACENT pqrs ";O
7327 IF o THEN BEEP .04,o*10
7330 FOR M=1 TO 22: NEXT M: PRINT AT 6+O,14;" ": NEXT O: NEXT N
7340 PRINT AT 6,14;"a": PRINT AT 0,0; PAPER 4; INK 9;"ADJACENT pqrs 0"
7350 PRINT AT 11,0;" IMPOSSIBLE? - IF IT SEEMS IMPOSSIBLE TO GET THROUGH - DO NOT DESPAIR - MINE SPREADERS ""m"" NOT ONLY ADD MINES BUT "
7360 PRINT " THEY ALSO REMOVE SOME HIDDEN ONES (Kind aren't they!)"
7370 PRINT ''; PAPER 1; INK 7;" PRESS ""I"" TO SEE INSTRUCTIONS AGAIN - ANY OTHER KEY TO BEGIN "
7390 LET s$=INKEY$: IF s$="" THEN GO TO 7390
7400 IF s$="I" OR s$="i" THEN GO TO 7000
7450 CLS
7500 RETURN
7990 GO TO 7990
7998 STOP
8001 LET PA=PAPER
8002 PRINT AT 21,0; FLASH 1; BRIGHT 1; INK 7; PAPER 1;"YOUR MAP HAS BLOWN AWAY! (SHAME)"
8003 PRINT AT 20,14; PAPER paper;" "
8004 FOR n=19 TO 2 STEP -.5
8005 BEEP .05,N-10: IF damsels<=8 OR n>14 THEN PRINT AT N,1; OVER 1; INK PAPER; PAPER PAPER;" "
8008 PRINT AT X,Y; PAPER PA;C$
8010 NEXT N
8016 PRINT AT 20,14; PAPER PA;" "
8018 PRINT AT 21,0;" "
8020 RETURN
8444 GO SUB 9300: LET DX=30: FOR u=.155 TO .005 STEP -.01: IF damsels<>9 OR x<>8 THEN PRINT AT 15,0;: LIST
8445 PRINT AT 0,dx; INK 0; PAPER 7;"n ": LET dx=dx-1: BEEP u,8: BEEP u,12: BEEP u,16: BORDER RND*7: NEXT u: FOR n=1 TO 16: PRINT AT 0,dx; INK 0; PAPER 7;"n ": LET dx=dx-1+(dx=0): BEEP u+.005,8: BORDER RND*7: BEEP u+.005,12: BEEP u,16: NEXT n
8446 PRINT AT 0,0; PAPER 7;" ": FOR t=0 TO 2
8448 FOR l=0 TO 7 STEP 7: INK l
8449 GO SUB 8450: GO TO 8700
8450 FOR n=1 TO 5
8500 PRINT AT x+n,y+n;"*"
8510 PRINT AT x-n,y+n;"*"
8512 PRINT AT x+n,y-n;"*"
8514 PRINT AT x-n,y-n;"*"
8580 NEXT n
8600 FOR n=1 TO 5
8610 PRINT AT x,y+n;">"
8612 PRINT AT x,y-n;"<"
8614 PRINT AT x+n,y;"#"
8616 PRINT AT x-n,y;"#"
8680 NEXT n
8685 RETURN
8700 NEXT l
8720 NEXT t
8740 INK 0
8750 GO SUB 9300
8760 PRINT AT 0,0; INK 7; PAPER 0;" TWO THOUSAND POINTS EXTRA ! "
8761 LET sc=sc+2000
8780 FOR b=0 TO 7
8781 PAPER B: INK 9: PRINT AT x,y;c$
8782 FOR n=1 TO 14: BEEP .002,50-n+b: BORDER 1: BORDER 2: BORDER 3: BORDER 4: BORDER 5: BORDER 6: BORDER 7: BORDER b: NEXT n
8784 NEXT b
8790 BORDER 6: PAPER paper: INK 9
8799 BORDER 0: PAPER 0: CLS
8800 FOR n=0 TO 30 STEP 6: FOR m=1 TO 10
8810: BEEP .008,n+m: NEXT m: NEXT n
8900 PRINT AT 3,8;"CONGRATULATIONS";'';" YOU HAVE RESCUED BILL AND THE WHOLE WORLD IS GRATEFUL ! "
8910 PRINT ''''';" YOUR SCORE = ";SC;" WHICH ISN'T"'" AT ALL BAD .... WHY NOT HAVE ANOTHER GAME AND IMPROVE YOUR SCORE ?"
8950 IF SC>HSC THEN GO SUB 4500
8960 LET DAMSELS=1: GO TO 1200
8975 LET DAMSELS=1: FOR N=1 TO 50000000: IF INKEY$="" THEN NEXT N
8980 GO TO 6
8998 STOP
9000 BORDER 1: PAPER 3: INK 9
9001 CLEAR : RESTORE : PRINT AT 10,9;"STOP THE TAPE"
9002 PAPER 2: FOR g=1 TO 50: BEEP .000650,50+g/50: BORDER 5: BORDER 2: BORDER 3: BORDER 4: BORDER 1: BORDER 4: BORDER 6: BORDER 1: NEXT g
9004 POKE 23609,32
9005 PRINT AT 10,9;"DON'T GO AWAY!"
9006 PRINT AT 0,0;" ";AT 0,31;" ";AT 21,0;" ";AT 21,31;" "
9007
9008 FOR A=1 TO 16: READ A$: FOR B=0 TO 7: READ C: POKE USR A$+B,C: NEXT B: BEEP .012,40: NEXT A
9010 DATA "o",0,0,0,0,60,126,0,0
9020 DATA "A",24,24,36,195,195,36,24,24
9025 DATA "B",90,90,36,219,219,36,90,153
9030 DATA "C",165,165,66,90,40,189,126,129
9035 DATA "D",72,84,73,62,8,28,62,62
9038 DATA "E",18,42,146,124,16,56,124,124
9040 DATA "F",8,16,8,186,93,16,8,16
9080 DATA "G",90,90,36,195,195,36,90,153
9085 BEEP .04 ,23
9088 PRINT AT 10,0; PAPER 0; INK 7;" Press ""I"" for INSTRUCTIONS "'" Any other Key to begin "
9092 BEEP .1 ,23
9095 LET s$=INKEY$: IF s$="" THEN GO TO 9095
9098 IF s$="i" OR s$="I" THEN GO SUB 7000
9100 RUN
9111 DATA "h",0,0,0,0,60,126,165,165
9120 DATA "K",0,0,0,0,0,0,85,170
9130 DATA "m",192,32,18,13,63,16,32,192
9140 DATA "N",0,0,192,192,78,74,91,112
9150 DATA "P",0,132,204,180,132,132,132,0
9160 DATA "Q",0,144,152,148,146,145,144,0
9170 DATA "R",0,159,144,158,144,144,159,0
9180 DATA "S",0,31,32,30,1,33,30,0
9200 FOR n=2 TO -1 STEP -1
9207 BEEP .003,27-n: BEEP .003,19-n: BEEP .003,29-n
9210 IF n>=0 THEN INK n
9250 IF n=-1 THEN FLASH 1: BRIGHT 0
9260 GO SUB 9300: GO TO 9340
9305 PRINT AT 4,4+ss;" :";AT 4,6+ss;": "
9310 PRINT AT 5,4+ss;" :";AT 5,6+ss;": "
9312 PRINT AT 6,4+ss;" :";AT 6,6+ss;": "
9315 PRINT AT 7,1+ss;".......:";AT 7,6+ss;":......."
9318 PRINT AT 9,1+ss;"''''''':";AT 9,6+ss;":'''''''"
9320 PRINT AT 10,4+ss;" :";AT 10,6+ss;": "
9322 PRINT AT 11,4+ss;" :";AT 11,6+ss;": "
9324 PRINT AT 12,4+ss;" :";AT 12,6+ss;": "
9333 RETURN
9340 NEXT n
9360 PRINT AT 11,5+ss; INK paper; PAPER paper;"o"
9400 FLASH 0
9450 PRINT AT 8,5+ss; FLASH 0;"n"
9490 RETURN
9499 STOP
9900 LET ss=INT (RND*11)+6: BEEP .3,-12
9901 PRINT AT 0,15;"hh";AT 1,15;"ff": BEEP .3,-12
9902 FOR n=0 TO 1: FOR m=0 TO 6: BORDER n: BEEP .003,n*m: BORDER m: BEEP .002,30+n+m*2: NEXT m: NEXT n
9903 BORDER 2: FLASH 1
9904 FOR n=0 TO 9
9905 PRINT AT n+3,ss+1; PAPER paper; INK paper;" ": NEXT n
9910 FLASH 0
9950 GO TO 9200
9980 DATA 15,6,15,6,15,6,15,6,15,6,14,6,13,6,13,7,13,8,12,8,11,8,11,7,11,6,11,5,11,4,11,3,11,2,11,1,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,0
9981 DATA 3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10,3,11,3,12,3,13,3,14,2,14,1,14,0,14
9982 DATA 0,14,0,14
9992 SAVE "minedO.B2" LINE 9e3
9998 REM was LKDOS-only
9999 REM ENDNote: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.


