90 CLEAR 300 100 DATA "-...-/",".-.-.-","-..-./","-----/" 110 DATA ".----/","..---/" 120 DATA "...--/","....-/","...../","-..../","--.../" 130 DATA "---../","----./" 140 DATA ".-/","-.../","-.-./","-../","./","..-./","--./" 150 DATA "..../","../",".---/","-.-/",".-../","--/" 160 DATA "-./","---/",".--./","--.-/",".-./",".../" 170 DATA "-/","..-","...-/",".--/","-..-/","-.--/","--../" 180 T=100 190 DIM C$(39) 200 FOR I=0 TO 38: READ A$: C$(I)=A$: NEXT I 210 CLS: PRINT @7,"MORSE CODE" 220 PRINT@64,"SELECT ONE OF THE FOLLOWING:" 230 PRINT@100,"1. SEND AN INPUT STRING" 240 PRINT@132,"2. CODE PRACTICE" 250 PRINT@196,"WHICH ONE";:A$=INKEY$ 260 IF (A$<>"1" AND A$<>"2") THEN 250 270 IF A$="2" THEN GOTO 400 280 CLS: PRINT @64,"SEND AN INPUT STRING" 290 GOSUB 570: GOSUB 620 300 PRINT @160,"ENTER STRING":INPUT A$ 310 FOR I=1 TO LEN(A$) 320 V=ASC(MID$(A$,I,1))-52 330 IF V=-20 THEN GOSUB 800: GOTO 370 340 IF V>38 THEN 840 350 IF V<13 THEN V=V+7: IF V<0 THEN 840 360 GOSUB 720: GOSUB 800 370 NEXT I 380 GOSUB 670: IF R$="R" THEN GOTO 210 390 PRINT @192,"":PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:GOTO 300 400 CLS: PRINT @64,"CODE PRACTICE" 410 GOSUB 570: GOSUB 620 420 PRINT @160,"TO PRINTER (Y OR N)";: INPUT PR$ 430 IF NOT(PR$="Y" OR PR$="N") THEN PRINT @245,"": GOTO 420 440 V=RND(90): IF V<45 THEN 440 450 IF (V>57 AND V<65) THEN 440 460 C=C+1: IF C-INT(C/6)*6=0 THEN GOSUB 800: PRINT " ";:GOTO 440 470 REM ***CHANGE NEXT "PRINT#-2," TO "LPRINT" FOR MC_10*** 480 PRINT CHR$(V);: IF PR$="Y" THEN PRINT#-2,CHR$(V); 490 V=V-52: IF V<13 THEN V=V+7 500 GOSUB 720 510 IF INKEY$<>"" THEN 210 520 GOTO 440 530 SOUND T,S1:FOR K=0 TO S:NEXT K:RETURN 540 RETURN 550 SOUND T,S3:FOR K=0 TO S:NEXT K:RETURN 560 RETURN 570 PRINT @96,"ENTER SPEED";:INPUT S 580 IF (S<5 OR S>16) THEN PRINT @96,"": GOTO 570 590 IF S>10 THEN S=2*(S-10)+10 600 S=528/S : S1 =S/24: S3=S/8 610 RETURN 620 PRINT@128,"ENTER TONE-H(I),M(ED),L(OW)";:INPUT T$ 630 IF TS="L" THEN T=50 640 IF T$="M" THEN T=100 650 IF T$="H" THEN T=150 660 RETURN 670 PRINT @416,"ENTER R FOR RESTART, OR JUST" 680 PRINT @448," FOR SAME";: INPUT R$ 690 IF NOT (R$="R" OR R$="") THEN PRINT @465,"": GOTO 670 700 PRINT @416,"":PRINT 710 RETURN 720 D$=C$(V) 730 FOR J=1 TO 6 740 EL$=MID$(D$,J,1) 750 IF EL$="." THEN GOSUB 530 760 IF EL$="-" THEN GOSUB 550 770 IF EL$="/" THEN 790 780 NEXT J 790 RETURN 800 FOR K=0 TO 1*S: NEXT K 810 RETURN 820 FOR K=0 TO 9*S: NEXT K 830 RETURN 840 PRINT @416,"BAD CHARACTER--INPUT AGAIN" 850 FOR I=1 TO 600: NEXT I: PRINT @416,"": GOTO 390