10 GOSUB1290:POKE53280,4:POKE53281,3:PRINT"[147]"; 20 CLR:GOSUB1200 30 PRINT"[147][156] E N I G M A "; 32 PRINT" GERMAN CIPHER MACHINE OF WORLD WAR II " 35 PRINT" -- MAIN MENU --" 40 PRINT"E[146][144] - ENCIPHER A MESSAGE" 50 PRINT"D[144][146] - DECODE AN ENCIPHERED MESSAGE" 60 PRINT"S[144][146] - SHOW MESSAGE IN BOTH CLEAR AND CODE" 80 PRINT"P[144][146] - PRINTER OUTPUT" 90 PRINT"Q[144][146] - QUIT" 92 PRINT" CURRENT CODE KEY:";:IFL$<>""THENZ1$=L$:Z2$=DI$:GOTO94 93 Z1$="NO CODE KEY YET":Z2$="" 94 PRINTZ1$"-"Z2$ 100 PRINT D$ SPC(10) "[144]SELECT A LETTER":GOSUB 1160:POKE198,. 110 GET N$:IF N$="" THEN GOSUB 1130:GOTO 110 112 IFN$="E"ORN$="[197]"THENN=1:GOTO170 113 IFN$="D"ORN$="[196]"THENN=2:GOTO170 114 IFN$="S"ORN$="[211]"THENN=3:GOTO800 115 IFN$="P"ORN$="[208]"THENN=4:GOTO1060 116 IFN$="Q"ORN$="[209]"THENGOSUB60100:GOTO110 120 GOTO110 170 I=0:X=0:GG=5 180 PRINT"[147] ENTER SECRET CODE KEY:" 190 PRINT" LETTER OF CODE (A-Z)":GOSUB 1160 200 GET L$:IF L$="" THEN GOSUB 1130:GOTO 200 210 LL=ASC(L$):IF LL<65 OR LL>90 THEN GOSUB 1160:GOTO 200 220 KE=LL-64 230 PRINT" NUMBER OF CODE (1-9)":GOSUB 1160 240 GET DI$:IF DI$="" THEN GOSUB 1130:GOTO 240 250 IF DI$ < "1" OR DI$ > "9" THEN GOSUB1160:GOTO 240 260 DI=VAL(DI$):PRINTC$ 270 PRINT SPC(6) "PRESS ANY ALPHA-NUMERIC KEYS" 280 PRINT SPC(10) "OR THE SPACE BAR." 290 PRINT X$ "(FOR MENU, OR TO END, PRESS )" D$ 300 GOSUB 960:GOSUB 1160:IF N=2 THEN 610 310 PRINT"ENTER CLEAR TEXT:" 320 GET K$(I):IF K$(I)="" THEN 320 321 IF(K$(I)<>CHR$(20))OR(I=.)THEN330 322 IFX>.THEN324 323 PRINTH$;:FORG=1TOGG+7:PRINTD$;:NEXT:PRINTSPC(39)" [157]":X=40:GG=GG-1:GOTO325 324 PRINTH$;:FORG=1TOGG+8:PRINTD$;:NEXT:PRINTSPC(X-1)" [157]" 325 I=I-1:X=X-1:IFI>.THENKE=KE(I-1):GOTO320 326 KE=LL-64:GOTO320 330 IFI=.THEN360 340 I=I-1:Z$="":E=A:E$(I)=A$(I):IF K=32 THEN W$=X$ 350 GOSUB 500:W$="*":I=I+1 360 L=0:K=ASC(K$(I)) 370 IF K=13 THEN J=I:GOTO 800 380 IF K=32 THEN A=32:KE(I)=KE:GOTO 480 390 IF K<48 OR K>90 THEN 320 400 IF K>57 AND K<65 THEN 320 410 IF K>64 THEN L=26 420 IF K<58 THEN L=10 430 PRINT H$;:FOR G=1 TO GG+8:PRINT D$;:NEXT 440 PRINT SPC(X) K$(I):GOSUB 590 450 A=K+KE 460 IF L=26 AND A>90 THEN A=A-26 470 IF L=10 AND A>57 THEN A=A-10 480 A$(I)=CHR$(A):Z$=I$:E=A:E$(I)=A$(I) 490 GOSUB 500:GOSUB 560:GOTO 320 500 PRINT H$;:FOR G=1 TO 5:PRINT D$;:NEXT 510 IF E=32 THEN PRINT D$ D$ D$ D$ Z$ TAB(23) W$ 520 IF L=10 THEN PRINT SPC(2*E-88) D$ Z$ E$(I) 530 IF L=26 AND E<78 THEN PRINT D$ D$ SPC(2*E-125) Z$ E$(I) 540 IF L=26 AND E>77 THEN PRINT D$ D$ D$ SPC(2*E-151) Z$ E$(I) 550 PRINT B$:RETURN 560 I=I+1:X=X+1:IF I=40 OR I=80 OR I=120 THEN X=0:GG=GG+1 570 IF I=160 THEN J=I:PRINT C$ "LONG ENOUGH - SELECT 3":GOTO 30 580 RETURN 590 KE=KE+(DI*I):IFKE>LTHENKE=KE-(INT(KE/L)*L) 600 KE(I)=KE:RETURN 610 PRINT"ENTER CIPHERED TEXT:" 620 GET A$(I):IF A$(I)="" THEN 620 621 IF(A$(I)<>CHR$(20))OR(I=.)THEN630 622 IFX>.THEN624 623 PRINTH$;:FORG=1TOGG+7:PRINTD$;:NEXT:PRINTSPC(39)" [157]":X=40:GG=GG-1:GOTO625 624 PRINTH$;:FORG=1TOGG+8:PRINTD$;:NEXT:PRINTSPC(X-1)" [157]" 625 I=I-1:X=X-1:IFI>.THENKE=KE(I-1):GOTO620 626 KE=LL-64:GOTO620 630 IF I=0 THEN PRINT U$:FOR G=1 TO 20:PRINT X$;:NEXT:GOTO 660 640 I=I-1:Z$="":E=K:E$(I)=K$(I):IF K=32 THEN W$=X$ 650 GOSUB 500:W$="*":I=I+1 660 L=0:A=ASC(A$(I)) 670 IF A=13 THEN J=I:GOTO 800 680 IF A=32 THEN K=32:GOTO 780 690 IF A<48 OR A>90 THEN 620 700 IF A>57 AND A<65 THEN 620 710 IF A>64 THEN L=26 720 IF A<58 THEN L=10 730 PRINT H$;:FOR G=1 TO GG+8:PRINT D$;:NEXT 740 PRINT SPC(X) R$ I$ A$(I) B$:GOSUB 590 750 K=A-KE 760 IF L=26 AND K<65 THEN K=K+26 770 IF L=10 AND K<48 THEN K=K+10 780 K$(I)=CHR$(K):Z$=R$:E=K:E$(I)=K$(I) 790 GOSUB 500:GOSUB 560:GOTO 620 800 PRINT C$;:IF I>0 THEN 850 810 PRINT SPC(9) I$ "NO MESSAGE YET!" 820 PRINT "SELECT 1 OR 2 FROM MENU FIRST:" 830 IF PR$="OPEN" THEN RETURN 840 GOTO 30 850 PRINT"YOUR MESSAGE NOT CODED:" 860 PRINT:FOR I=0 TO J-1:PRINT K$(I);:NEXT 870 PRINT:PRINT 880 PRINT "YOUR MESSAGE CODED:" 890 PRINT:FOR I=0 TO J-1 900 IF N=5 THEN PRINT A$(I);:GOTO 930 910 IF A$(I) <> X$ THEN PRINT A$(I); 920 IF A$(I)=X$ THEN PRINT B$ X$; 930 NEXT:PRINT:IF N=4 THEN RETURN 952 PRINT"[144] PRESS SPACE FOR MAIN MENU":POKE198,. 954 IFPEEK(203)<>60THEN954 956 GOTO30 960 FOR G=1 TO 40:PRINT CHR$(184);:NEXT 970 PRINT SPC(8) 980 FOR G=48 TO 57:PRINT CHR$(G) X$;:NEXT 990 PRINT:PRINT SPC(5) 1000 FOR G=65 TO 77:PRINT CHR$(G) X$;:NEXT 1010 PRINT:PRINT SPC(5) 1020 FOR G=78 TO 90:PRINT CHR$(G) X$;:NEXT 1030 PRINT:PRINT SPC(13) "SPACE BAR" 1040 FOR G=1 TO 40:PRINT CHR$(185);:NEXT 1050 PRINT:RETURN 1060 OPEN15,4,15:CLOSE15:IFST=.THEN1070 1062 PRINT" ERROR!! PRINTER NOT ONLINE!! " 1064 FORA=1TO2000:NEXT:PRINT"[145] [145][145]" 1066 GOTO110 1070 PRINT C$ SPC(10) "PRINTING" 1075 PR$="OPEN":OPEN 4,4:CMD 4 1080 GOSUB 800:PRINT#4 1090 PRINT#4,"WARNING: NEVER TRANSMIT CODE BY RADIO!" 1100 PR$="CLOSED":PRINT# 4:CLOSE 4 1110 PRINT SPC(10) U$ "FINISHED PRINTING":FORA=1TO2000:NEXT 1120 GOTO 30 1130 PRINT U$ SPC(24) W$ 1140 FOR G=1 TO 200:NEXT:PRINT U$ SPC(24) X$ 1150 FOR G=1 TO 100:NEXT:RETURN 1160 POKE S+24,15:POKE S+1,110:POKE S+5,9:POKE S+6,9 1170 POKE S+4,17:POKE S+4,16:RETURN 1180 PRINT U$ SPC(10) "END OF PROGRAM." 1190 FOR JJ=0 TO 24:POKE S+24,0:NEXT:END 1200 S=54272:GOSUB1160 1210 DIM K$(160),A$(160),E$(160),KE(160) 1220 C$="[147]":H$="":X$=" ":B$="[144]":I$="" 1230 U$="[145]":D$="":R$="":Y$="":W$="*" 1240 RETURN 1270 FOR JJ=0 TO 24:POKE S+24,0:NEXT 1280 PRINT U$ SPC(10) "END OF PROGRAM.":END 1290 POKE53280,14:POKE53281,14 1300 PRINT"[147]"CHR$(142)"[153][213][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][201]"; 1310 FORA=1TO23:PRINT"[221]"SPC(38)"[221]";:NEXT 1320 PRINT"[202][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][203][157][148][192]" 1330 FORA=217TO242:POKEA,PEEK(A)OR128:NEXT 1340 PRINT" LOADSTAR PRESENTS:" 1350 PRINT"  " 1360 PRINT"  ENIGMA  " 1370 PRINT"   " 1380 PRINT"  BY GERHARD SCHILLING  " 1390 PRINT"   " 1400 PRINT"  (C)OPYRIGHT 1987  " 1410 PRINT"   " 1420 PRINT"  " 1430 PRINT" PRESS SPACE TO CONTINUE." 1440 IFPEEK(203)<>60THEN1440 1450 RETURN 60100 PRINT"[145] ARE YOU SURE YOU WANT TO QUIT? (Y/N)" 60110 A=PEEK(203):IFA<>25ANDA<>39THEN60110 60120 IFA=25THEN60150 60130 PRINT"[145] SELECT NUMBER " 60140 PRINT"[145]":RETURN 60150 OPEN15,8,15,"R0:HELLO CONNECT=HELLO CONNECT":INPUT#15,ER:CLOSE15 60160 IFER<>63THENEND 60170 LOAD"HELLO CONNECT",8