home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
games
/
enigma.zip
/
ENIGMA.BAS
next >
Wrap
BASIC Source File
|
1986-07-21
|
17KB
|
310 lines
1 COLOR 7,0,0:CLS:T=TIMER:RANDOMIZE(T-(32768!*FIX(T/32768!))):T=0:DEFINT A-S:
DEFINT U-Z:COLOR 2
2 '
10 PRINT "ENIGMA (C) Copyright 1986, Colonel C. F. Mowery, Jr., USAF (Ret.)"
20 PRINT " 406 Van Reed Manor Drive"
30 PRINT " Brandon FL 33511"
40 PRINT " Tel: (813) 689-4212":LOCATE 10,1:COLOR 6
45 '
46 GOSUB 2000:' *** Lines 46, 47, 53-55, 61-63, 71, and 2000-2030
47 ' are not in compiled (.EXE) version.
50 A$=INKEY$:IF A$<>"" GOTO 50
ELSE PRINT "Does your computer run at 4 MHz or 8 MHz (enter 4 or 8)? ";
51 A$=INPUT$(1):A=VAL(A$):PRINT A:PRINT
52 IF A<>4 AND A<>8 GOTO 50 ELSE IF A=8 GOTO 70
53 ' *** Note:
54 ' In compiled version (.EXE), line 60 variable settings are:
55 ' 3000 1800 20400 150 4500 900 6000
60 P1=50:P2=30:P3=680:P4=30:P5=800:P6=70:P7=200:GOTO 71
61 ' *** Note:
62 ' In compiled version (.EXE), line 70 variable settings are:
63 ' 5000 3000 32000 250 7500 1650 10000
70 P1=88:P2=53:P3=1190:P4=53:P5=1400:P6=123:P7=350
71 ' ***
72 COLOR 3:PRINT "Press any key ...";:A$=INPUT$(1):LOCATE 12,1:
PRINT "If you see the split cursor at the end of the next line,"
73 PRINT "enter Y (if you don't see the cursor, press any key): ";
74 A=CSRLIN:B=POS(0):COLOR 4:LOCATE A,B,1,7,0:A$=INPUT$(1)
75 IF A$="Y" OR A$="y" THEN C2=7:C1=0 ELSE C2=0:C1=7
90 COLOR 1,3,3:CLS:KEY OFF:FOR Z=1 TO 10:KEY Z,"":NEXT Z:C4$="PASSWORD":
FOR Z=1 TO 10:READ C$(Z):READ CL$(Z):NEXT Z
100 A=INT(RND*10+1):C5$=C$(A):CL$=CL$(A):T$(1)="E":T$(2)="N":T$(3)="I":
T$(4)="G":T$(5)="M":T$(6)="A"
110 FOR Z=1 TO LEN(C5$):L(Z)=ASC(MID$(C5$,Z,1)):NEXT Z:W=1:Y=27:LOCATE ,,0,0,0
120 LOCATE 3,Y:Q=INT(RND*6+1):IF Q=W THEN COLOR 14
130 SOUND 1000,.5:PRINT T$(Q);:COLOR 1:P=P1:GOSUB 560:IF Q=W THEN W=W+1:Y=Y+2
140 IF W<7 GOTO 120 ELSE Q=0
150 A$=INKEY$:IF A$<>"" GOTO 150 ELSE GOSUB 1490:IF Q<>1 THEN GOSUB 1780
160 A$=INKEY$:IF A$<>"" GOTO 160 ELSE Q=0:CLS:LOCATE 4,24:COLOR 0:
PRINT "Part 2 of ENIGMA"
170 LOCATE 8,19:PRINT "Select level of difficulty:":PRINT:
PRINT TAB(27)"1. Expert":PRINT:PRINT TAB(27)"2. Average":PRINT:
PRINT TAB(27)"3. Easy":PRINT
180 A$=INKEY$:IF A$<>"" GOTO 180 ELSE PRINT:PRINT TAB(27)"Choice: ";:
SOUND 700,2:SOUND 500,2:SOUND 300,4
190 A$=INPUT$(1):LE=VAL(A$):IF LE<1 OR LE>3 THEN RUN
200 A$=INKEY$:IF A$<>"" GOTO 200
210 SCREEN 1:COLOR 0,0:PSET (0,0),1:PRINT " CLUE: E(nd) & T(erminate) & S(top)"
220 LOCATE 23,3:PRINT "You have"LE*60"seconds left ...":TT=TIMER:TTT=LE*60:
TIME=LE*60:P=P2
230 IF TIME <=0 GOTO 570 ELSE A=INT(RND*16+1):IF A=7 OR (A>8 AND A<14) GOTO 230
240 GOSUB 550:IF A$<>"" GOTO 420 ELSE LINE (137,96)-(211,50),B:GOSUB 560
250 LINE (126,96)-(51,50),B:GOSUB 560
260 LINE (126,104)-(51,150),B:GOSUB 560
270 LINE (136,104)-(211,150),B:GOSUB 560
280 LINE (141,100)-(221,100),B:GOSUB 560
290 LINE (131,94)-(131,40),B:GOSUB 560
300 LINE (41,100)-(121,100),B:GOSUB 560
310 LINE (131,105)-(131,160),B:GOSUB 560
320 GOSUB 550:IF A$<>"" GOTO 420 ELSE LINE (139,102)-(201,125),B:GOSUB 560
330 LINE (139,98)-(201,75),B:GOSUB 560
340 LINE (134,94)-(151,50),B:GOSUB 560
350 LINE (129,94)-(101,50),B:GOSUB 560
360 LINE (123,97)-(51,75),B:GOSUB 560
370 LINE (123,102)-(51,125),B:GOSUB 560
380 LINE (128,106)-(106,145),B:GOSUB 560
390 LINE (133,105)-(156,150),B
400 C=INT(RND*26+65):LOCATE 13,17:PRINT CHR$(C);
410 GOSUB 560:GOSUB 560:GOSUB 550:IF A$="" GOTO 230
420 LOCATE 25,1:PRINT SPC(79):LOCATE 25,1:
IF A$="B" OR A$="I" OR A$="S" GOTO 480
ELSE IF LEFT$(A$,1)=CHR$(0) THEN SOUND 50,5:
PRINT " You're not even close ...";:GOTO 230
430 IF ASC(A$)>96 AND ASC(A$)<123 THEN SOUND 1500,3:
PRINT " You're warm...";:GOTO 450
440 IF ASC(A$)>64 AND ASC(A$)<91 THEN SOUND 1500,2:SOUND 1000,3:
PRINT " You're very warm...";
ELSE SOUND 50,5:PRINT " You're cold ...";:GOTO 230
450 IF A$="T" OR A$="E" OR A$="F" OR A$="t" OR A$="e" OR A$="f" THEN T=T+1:
IF T/3=T\3 THEN SOUND 1500,3:PRINT " Try an antonym.";:GOTO 230
460 IF A$="b" OR A$="i" OR A$="s" THEN SOUND 1000,3:PRINT "hot even...";:
T1=T1+1:IF T1/3=T1\3 THEN SOUND 1500,3:PRINT "Shift gears";
470 GOTO 230
480 IF A$="B" AND T(1)=1 GOTO 510 ELSE IF A$="B" THEN T(1)=1:LOCATE 2,9:
PRINT "B(egin)":PRINT:GOTO 520
490 IF A$="I" AND T(2)=1 GOTO 510 ELSE IF A$="I" THEN T(2)=1:LOCATE 2,17:
PRINT "I(nitiate)":PRINT:GOTO 520
500 IF A$="S" AND T(3)=1 GOTO 510 ELSE IF A$="S" THEN T(3)=1:LOCATE 2,31:
PRINT "S(tart)":PRINT:GOTO 520
510 LOCATE 4,1:PRINT SPC(79):LOCATE 4,1:SOUND 800,5:
PRINT " "A$" already entered; still";:GOTO 530
520 LOCATE 4,1:PRINT SPC(79):LOCATE 4,1:SOUND 1000,2:SOUND 1500,3:
IF T(1)+T(2)+T(3)=2 THEN PRINT " Another one!";
ELSE PRINT " You got one!";
530 IF T(1)+T(2)+T(3)=3 GOTO 570 ELSE PRINT 3-(T(1)+T(2)+T(3))"to go ...";
540 GOTO 230
550 B=INT(RND*4):LOCATE 13,17:PRINT CHR$(A):GOSUB 1400:A$=INKEY$:
IF A$=CHR$(27) THEN END ELSE RETURN
560 FOR Z=1 TO P:XX=1:NEXT Z:RETURN
570 SCREEN 2:SCREEN 0
580 COLOR 14:IF TIME>0 THEN GOSUB 1670:LOCATE 13,20,0,0,0:
PRINT "YOU MADE IT IN"(60*LE)-TIME"SECONDS!":GW=1:PLAY "MF":GOTO 610
590 SOUND 200,3:SOUND 175,3:SOUND 150,3:SOUND 125,3:SOUND 100,3:SOUND 75,3:
SOUND 40,15
600 LOCATE 13,10,0,0,0:PRINT "Sorry, time's up. Better luck next time."
610 A$=INKEY$:IF A$<>"" GOTO 610
620 PRINT:PRINT TAB(20)"Continue ...";:A$=INPUT$(1):GP=1:COLOR 1,3,3:CLS
630 LOCATE 12,30:PRINT "________:":LOCATE 17,10:COLOR 4:FOR Z=65 TO 90:
PRINT CHR$(Z);CHR$(Z+32);:NEXT Z
640 A$=INKEY$:IF A$<>"" GOTO 640
650 A$="":LOCATE 2,10:SOUND 800,5:COLOR 0:
PRINT "To skip this part, fill in this blank: ________"
660 Y=49:Y$=C4$:FOR Z=1 TO 8:LOCATE 2,Y:X$=INPUT$(1):
IF X$<>MID$(Y$,Z,1) THEN SOUND 75,5:SOUND 50,10:LOCATE 2,49:
PRINT " Sorry ...";:P=P3:GOSUB 560:GOTO 690
670 SOUND 1000,2:SOUND 1500,3:PRINT X$;:Y=Y+1:NEXT Z:GW=GW+1:GP=2
680 A$=INKEY$:IF A$<>"" GOTO 680 ELSE GOSUB 1670:GOTO 990
690 LOCATE 2,1:PRINT SPC(78)
700 A$=INKEY$:IF A$<>"" GOTO 700
ELSE LOCATE 23,10,0:SOUND 800,5:PRINT "Begin ...";:A$=INPUT$(1)
710 A$=INKEY$:IF A$<>"" GOTO 710
ELSE C=30:LOCATE 23,10:PRINT "You have"LE*90"seconds left ... ":
TT=TIMER:TTT=LE*90:GOSUB 1400:QQQ=0:LOCATE 18,35,1,0,7
720 WHILE C:A=CSRLIN:B=POS(0)
730 LOCATE A,B:A$=INKEY$:IF A$=CHR$(27) THEN END
ELSE IF LEFT$(A$,1)=CHR$(0) GOTO 780 ELSE IF A$=CHR$(13) GOTO 850
ELSE IF A$<>"" THEN SOUND 37,5
740 QQ=QQ+1:IF QQ/P4=QQ\P4 THEN GOSUB 1400:LOCATE A,B:
IF QQ=>P5 THEN QQ=0:IF C=30 AND QQQ=0 THEN GOSUB 760
750 GOTO 730
760 A=CSRLIN:B=POS(0):LOCATE 4,10:COLOR 10:
PRINT "Clue: Follow the arrows to the `mail', then":
PRINT TAB(17)"either `come back' or `go in' to send it."
770 LOCATE A,B:RETURN
780 E=ASC(RIGHT$(A$,1))
790 IF E=72 THEN A=A-1:GOTO 830
800 IF E=75 THEN B=B-1:GOTO 830
810 IF E=77 THEN B=B+1:GOTO 830
820 IF E=80 THEN A=A+1:GOTO 830
825 SOUND 37,5:GOTO 730
830 IF A>24 THEN A=1 ELSE IF A<1 THEN A=24 ELSE IF B>80 THEN B=1
ELSE IF B<1 THEN B=80
840 GOTO 730
850 L=SCREEN(A,B):LOCATE 12,C
860 ON C-29 GOTO 870,880,890,890,900,910,920,930
870 IF L=80 GOTO 950 ELSE GOTO 940
880 IF L=65 GOTO 950 ELSE GOTO 940
890 IF L=83 GOTO 950 ELSE GOTO 940
900 IF L=87 GOTO 950 ELSE GOTO 940
910 IF L=79 GOTO 950 ELSE GOTO 940
920 IF L=82 GOTO 950 ELSE GOTO 940
930 IF L=68 GOTO 950
940 SOUND 50,5:COLOR 4:PRINT "*";:COLOR 1:QQQ=1:P=P1:GOSUB 560:LOCATE 12,C:
PRINT "_":GOTO 960
950 SOUND 1000,2:SOUND 1500,3:PRINT CHR$(L);:C=C+1:IF C=38 THEN LOCATE 12,40:
PRINT "________":C=0
960 LOCATE 18,35:WEND
970 GOSUB 1670:LOCATE 20,10:PRINT SPC(60):LOCATE 20,10,0,0,0:COLOR 14:
PRINT "Well done!";:COLOR 5:
PRINT " Now all you need is the Password... (heh,heh)";:PLAY "MF"
980 A$=INKEY$:IF A$<>"" GOTO 980 ELSE LOCATE 23,10:COLOR 0:
PRINT "You had"TIME"seconds left. Continue ...";:A$=INPUT$(1):GW=GW+1:GP=2
990 COLOR 1,3,3:CLS:T=0:C=8:GOSUB 1000:PLAY "MF":GOTO 1070
1000 LOCATE 14,10:PRINT "( ) ";:FOR Z=42 TO 63:PRINT CHR$(Z)" ";:NEXT Z:
PRINT "!"
1010 LOCATE 16,10:FOR Z=65 TO 90:PRINT CHR$(Z)" ";:NEXT Z
1020 LOCATE 18,10:FOR Z=97 TO 122:PRINT CHR$(Z)" ";:NEXT Z:LOCATE 12,26:
PRINT "Password: ";:IF C<8 THEN PRINT LEFT$(C5$,8-C);
1030 FOR Z=1 TO C:PRINT "_";:NEXT Z
1040 LOCATE 3,1:PRINT "CLUES:":PRINT TAB(10)"1. ";:COLOR 14:PRINT "R";:
COLOR 1:PRINT "(eprint)":PRINT:
PRINT TAB(10)"2. Take it, then return again to leave it":PRINT
1050 PRINT TAB(10)"3. ";:IF T<3 THEN PRINT "(watch here for clue later)"
ELSE LOCATE 8,13:PRINT SPC(60):LOCATE 8,13:COLOR 5:PRINT CL$:COLOR 1
1060 RETURN
1070 LOCATE 23,10:PRINT "Begin ...";:A$=INPUT$(1):LOCATE 24,1:PRINT SPC(69);:
LOCATE 23,10:COLOR 0:PRINT "You have"LE*300"seconds left ...":COLOR 1
1080 A$=INKEY$:IF A$<>"" GOTO 1080 ELSE QQ=0:TT=TIMER:TTT=LE*300:L=0
1090 WHILE C:IF L=0 THEN LOCATE 19,35,1,6,7:A=CSRLIN:B=POS(0)
1100 A$=INKEY$:IF A$="" THEN QQ=QQ+1:IF QQ=P6 THEN QQ=0:GOSUB 1400:
LOCATE A,B:GOTO 1100 ELSE GOTO 1100
1110 IF A$=CHR$(27) THEN END ELSE IF A$="R" THEN GOSUB 1000:L=0:GOTO 1280
1120 IF LEFT$(A$,1)<>CHR$(0) GOTO 1150 ELSE E=ASC(RIGHT$(A$,1)):
IF E=72 OR E=75 OR E=77 OR E=80 THEN X=A:Y=B:IF E=72 THEN A=A-1
ELSE IF E=75 THEN B=B-1 ELSE IF E=77 THEN B=B+1 ELSE IF E=80 THEN A=A+1
1130 IF A>24 THEN A=1 ELSE IF A<1 THEN A=24 ELSE IF B>80 THEN B=1
ELSE IF B<1 THEN B=80
1140 LOCATE X,Y:PRINT " ";:LOCATE A,B:PRINT CHR$(L);:LOCATE A,B:GOTO 1100
1150 IF A$<>CHR$(13) GOTO 1280 ELSE L=SCREEN(A,B):LOCATE ,,,C2,C1:
IF A<>12 GOTO 1280 ELSE IF B<36 OR B>43 GOTO 1280
1160 ON B-35 GOTO 1170,1180,1190,1200,1210,1220,1230,1240
1170 IF L=L(1) GOTO 1260 ELSE GOTO 1250
1180 IF L=L(2) GOTO 1260 ELSE GOTO 1250
1190 IF L=L(3) GOTO 1260 ELSE GOTO 1250
1200 IF L=L(4) GOTO 1260 ELSE GOTO 1250
1210 IF L=L(5) GOTO 1260 ELSE GOTO 1250
1220 IF L=L(6) GOTO 1260 ELSE GOTO 1250
1230 IF L=L(7) GOTO 1260 ELSE GOTO 1250
1240 IF L=L(8) GOTO 1260
1250 LOCATE A,B:SOUND 50,5:COLOR 4:PRINT "*";:COLOR 1:P=P1:GOSUB 560:
LOCATE A,B:PRINT "_":GOTO 1270
1260 IF C=9-(B-35) THEN C=C-1:SOUND 1000,2:SOUND 1500,3 ELSE SOUND 800,5
1270 L=0:T=T+1:IF T=3 THEN GOSUB 1040 ELSE IF T>3 THEN T=4
1280 WEND:GOSUB 1670:CLS:LOCATE 8,25:COLOR 30:PRINT "Congratulations!!":
COLOR 1:PLAY "MF":PRINT:PRINT TAB(20)"Time remaining:"TIME"seconds":
PRINT:PRINT:GP=3:GW=GW+1:GOTO 1440
1290 END
1300 DATA "3. What?","What's the Password plus?"
1310 DATA "!enigma!","!Conundrum!"
1320 DATA " 3 keys ","Llave, clave and tecla"
1330 DATA "Sphinx ","More than one think is a rhyme"
1340 DATA "Help me!","Help yourself!"
1350 DATA "drowssaP","If you could see the monitor in a mirror"
1360 DATA "12345678","Count on me to make it easy"
1370 DATA "stuvwxyz","RIGHT$(abc$,8)"
1380 DATA "Diamond!","This is the hardest one!"
1390 DATA "BOND 007","Much more than a license to steal"
1400 IF GP=0 THEN LOCATE 23,11:SOUND 200,2:SOUND 100,2
ELSE LOCATE 23,18:SOUND 100,.25
1410 TIME=TTT-(TIMER-TT):IF GP=0 THEN PRINT INT(TIME);
ELSE COLOR 4:PRINT INT(TIME);:COLOR 1
1420 IF GP=0 OR TIME>0 THEN RETURN
1430 CLS:LOCATE 8,25:IF TIME<=0 THEN SOUND 75,10:SOUND 50,15:
PRINT "Sorry, time's up!":PRINT:PRINT
1440 PLAY "MF":PRINT TAB(23)"You solved"GW+1"puzzles.":PRINT
1450 IF GW<3 THEN PRINT TAB(23)"Better luck next time.":PRINT
1460 IF LE>1 AND GW>1 THEN PRINT TAB(17)"Next time try difficulty level"LE-1"."
1470 PRINT:PRINT:IF GW=3 THEN PRINT " The first ";:COLOR 14:
PRINT "and last";:COLOR 1:
PRINT " puzzles may change each time you play -- so play again."
1480 LOCATE 23,1,1,6,7:COLOR ,,0:END
1490 A$=INKEY$:IF A$<>"" GOTO 1490 ELSE LOCATE 6,14:SOUND 500,1:SOUND 100,2:
PRINT "Have you solved the first part before? ";
1500 A$=INKEY$:IF A$="" GOTO 1500 ELSE IF A$="Y" OR A$="y" THEN Q=1:
LOCATE 24,14:SOUND 300,3:PRINT "Ready for Part 2.";:P=P7:GOSUB 560:
LOCATE 24,31:GOTO 1660
1510 LOCATE 6,14:SOUND 800,5:PRINT " Stand by . . . ";:
DIM C(26):FOR Y=1 TO 26:IF Y=5 OR Y=25 THEN SOUND 2000,2
1520 C=INT(RND*26+1):FOR Z=1 TO Y:IF C(Z)=C GOTO 1520
ELSE IF C(Z)=0 THEN C(Z)=C ELSE NEXT Z
1530 NEXT Y:SOUND 2000,2:FOR Z=1 TO 10:READ A$(Z):C$(Z)=A$(Z):NEXT Z:
FOR Y=1 TO 10:FOR Z=1 TO LEN(A$(Y)):A=ASC(MID$(A$(Y),Z,1))
1540 IF A>64 AND A<91 THEN A=A-64:MID$(A$(Y),Z,1)=CHR$(C(A)+64):GOTO 1560
1550 IF A>96 AND A<123 THEN A=A-96:MID$(A$(Y),Z,1)=CHR$(C(A)+96)
1560 NEXT Z:NEXT Y:FOR Z=1 TO 10:X$(Z)=A$(Z):A$(Z)=C$(Z):NEXT Z:SOUND 2000,2:
SCREEN ,,1,0:Q=1:GOSUB 1570:FOR Z=1 TO 10:A$(Z)=X$(Z):X$(Z)=C$(Z):
C$(Z)=A$(Z):NEXT Z:SOUND 2000,2:SCREEN ,,2,0:Q=1:GOSUB 1570:SCREEN ,,0,0
1570 LOCATE 6,10,0:PRINT TAB(10);A$(1):PRINT
1580 PRINT TAB(10);A$(2):PRINT
1590 PRINT TAB(6);A$(3)
1600 PRINT TAB(6);A$(4)
1610 PRINT TAB(6);A$(5)
1620 PRINT TAB(6);A$(6):PRINT
1630 PRINT TAB(6);A$(7):PRINT TAB(6);A$(8):PRINT
1640 PRINT TAB(6);A$(9)
1650 PRINT TAB(6);A$(10):PRINT:IF Q=1 THEN Q=0:LOCATE ,,1:RETURN
1660 A$=INKEY$:IF A$<>"" GOTO 1660 ELSE SOUND 800,5:
PRINT SPC(5)"Begin ...";:A$=INPUT$(1):RETURN
1670 PLAY "MB O3 T220 C8C8C8G#C8C8C8G#G#4F4.":RETURN
1680 DATA "Definition: something obscure or hard to understand."
1690 DATA "Synonyms: mystery, problem, riddle, conundrum, puzzle."
1700 DATA "ENIGMA has several parts. All parts are different, and each is more"
1710 DATA "difficult than the one before. You can reach the third part, even if"
1720 DATA "you do not complete the second. However, you must complete (or skip)"
1730 DATA "the first to reach the second, and the third to go on to the rest."
1740 DATA "Clues will be provided from time to time, but the clues are as enig-"
1750 DATA "matic as ENIGMA itself and may apply to methods, solutions, or both."
1760 DATA "There are no instructions except these: watch the screen carefully,"
1770 DATA "listen, know your keyboard and use it, and escape when you want to."
1780 LOCATE 21,6,1,C2,C1:SOUND 1000,2:SOUND 500,3:
PRINT "Clue: Use the indian missiles then type a letter ... ";:
A=CSRLIN:B=POS(0):L$=""
1790 A$=INKEY$:IF A$="" GOTO 1790 ELSE IF A$=CHR$(27) THEN END
1800 IF LEFT$(A$,1)<>CHR$(0) GOTO 1840 ELSE E=ASC(RIGHT$(A$,1)):
IF E<>72 AND E<>75 AND E<>77 AND E<>80 THEN SOUND 37,5:GOTO 1830
1810 IF E=72 THEN A=A-1 ELSE IF E=75 THEN B=B-1 ELSE IF E=77 THEN B=B+1
ELSE IF E=80 THEN A=A+1
1820 IF A>24 THEN A=1 ELSE IF A<1 THEN A=24 ELSE IF B>80 THEN B=1
ELSE IF B<1 THEN B=80
1830 LOCATE A,B:GOTO 1790
1840 SCREEN ,,2,0:L=SCREEN(A,B):SCREEN ,,0,0:IF L<65 OR (L>90 AND L<97)
OR L>122 OR A<6 OR A>19 THEN SOUND 37,5:GOTO 1790
1850 L1=ASC(A$):IF L1<65 OR (L1>90 AND L1<97) OR L1>122 THEN SOUND 37,5:
GOTO 1790 ELSE COLOR 14:PRINT A$:COLOR 30:LOCATE 23,6:SOUND 800,5:
PRINT "Stand by ...";:COLOR 1:LOCATE A,B
1860 SCREEN ,,1,0:L3=SCREEN(A,B)
1870 IF L3<>L1 AND ((L1>96 AND L3<>L1-32) OR (L1<91 AND L3<>L1+32))
THEN SCREEN ,,0,0:COLOR 4:PRINT "*":COLOR 1:SOUND 50,5:P=P5:GOSUB 560:
LOCATE 23,6:PRINT SPC(50):LOCATE A,B:PRINT CHR$(L):LOCATE A,B:GOTO 1790
1880 SCREEN ,,0,0:SOUND 1000,3:LOCATE 23,14,,C2,C1:FOR Y=1 TO 10:
FOR Z=1 TO LEN(C$(Y)):L2=ASC(MID$(C$(Y),Z,1))
1890 IF L2=L OR (L>96 AND L<123 AND L2=L-32) OR (L>64 AND L<91 AND L2=L+32)
THEN IF L2<91 AND L1>96 THEN L$=CHR$(L1-32) ELSE IF L2>96 AND L1<91
THEN L$=CHR$(L1+32) ELSE L$=CHR$(L1)
1900 IF L$="" GOTO 1920
1910 MID$(A$(Y),Z,1)=L$:L$=""
1920 NEXT Z:NEXT Y:Q=1:GOSUB 1570:LOCATE 23,6,,C2,C1:PRINT SPC(50):
FOR Z=1 TO 10:IF A$(Z)=X$(Z) THEN NEXT Z:GOTO 1940
1930 A$=INKEY$:IF A$<>"" GOTO 1930 ELSE LOCATE A,B,1:GOTO 1790
1940 A$=INKEY$:IF A$<>"" GOTO 1940 ELSE GOSUB 1670:LOCATE 23,6,0,6,7:COLOR 30:
PRINT "Finished!";:COLOR 1:
PRINT SPC(5)"Note: Next time this puzzle may be slightly different."
1950 L=0:L1=0:L2=0:L3=0:Q=0:ERASE A$,C$,X$:L$="":
PRINT SPC(5)"Ready for Part 2 ...";
1960 A$=INKEY$:IF A$="" GOTO 1960 ELSE RETURN
2000 PRINT "Note: ENIGMA was written to be run in compiled format (.EXE)."
2010 PRINT " It can be run in this (.BAS) format, but it will run more"
2020 PRINT " slowly, particularly in Part 1.":PRINT
2021 PRINT " (See listing, lines 46-71 and 2000-2030.)":PRINT
2030 PRINT "Press any key to begin ...";:A$=INPUT$(1):CLS:LOCATE 10,1:RETURN