1 REM 1560,1570 SOUND 10 '**************************** 20 ' CW TRAINING PROGRAM 30 ' BY TOM GARCIA N7CHG 40 ' AND WAYNE DAY WA5WDB 50 ' DESIGNED FOR 60 ' TRS-80 COLOR COMPUTER 70 ' COPYRIGHT (C) 1981 BY 80 ' W.D.B. ENTERPRISES 90 '**************************** 100 CLS 110 PRINT@167,"COPYRIGHT (C) 1981" 120 PRINT@239,"BY" 130 PRINT@295,"W.D.B. ENTERPRISES" 140 FOR X=1 TO 2500:NEXT X 150 CLS:S1=0:S2=0 160 PRINT@7,"MORSE CODE TRAINER" 170 PRINTSTRING$(32,43) 180 PRINT 190 PRINT 200 PRINT" *SELECT A PROGRAM" 210 PRINT" (1) RECOGNITION DRILL" 220 PRINT" (2) RANDOM CHARACTERS" 230 PRINT" (3) USER INPUTED WORDS" 240 PRINT 250 S1$=INKEY$:IF S1$="" THEN 250 260 S1=VAL(S1$) 270 IF S1>3 THEN 250 280 IF S1<1 THEN 250 290 GOSUB 1630 300 PRINT" *SELECT A SPEED" 310 PRINT" (1) BEGINNER" 320 PRINT" (2) NOVICE" 330 PRINT" (3) GENERAL" 350 PRINT 360 S2$=INKEY$:IF S2$="" THEN 360 370 S2=VAL(S2$) 380 IF S2<1>4 THEN 360 390 ON S2 GOTO 400,410,420 400 W=3:Y=12:Z=100:GOTO 440 410 W=3:Y=6:Z=68:GOTO 440 420 W=1:Y=3:Z=20:GOTO 440 440 GOSUB 1630:GOSUB 1710:IF S1=3 THEN GOTO 500 450 PRINT"DO YOU WANT LETTERS ONLY?" 460 PRINT" SELECT (Y/N) NOW" 470 Z$=INKEY$:IF Z$="" THEN 470 480 IF Z$="Y" GOSUB 1590:GOSUB 1630:GOSUB 1710:GOSUB 1790 490 IF Z$="N" GOSUB 1610:GOSUB 1630:GOSUB 1710:GOSUB 1790 500 PRINT" IS THIS CORRECT? (Y/N)" 510 S3$=INKEY$:IF S3$="" THEN 510 520 IF S3$="N" THEN GOTO 150 530 IF S3$="Y" THEN GOTO 550 540 GOTO 480 550 ON S1 GOTO 560,2500,880 560 CLS:PRINT@7,"MORSE CODE TRAINER":PRINTSTRING$(32,43); 570 PRINT"PRESS THE LETTER'S KEY WHEN YOU HEAR THE LETTER" 580 PRINT"PRESS THE ^ TO BYPASS A LETTER: PRESS THE @ TO EXIT THE PROGRAM (BACK TO MAIN MENU)" 590 PRINTSTRING$(32,43); 600 PRINT 610 A=B 620 A=RND(G):IF A=B THEN 620 630 FOR H=1 TO A:B=A 640 READ A$:NEXT H 650 GOSUB 1140 660 DATA A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,1,2,3,4,5,6,7,8,9,0,.,?,/,-,"," 670 RESTORE 680 PRINT@304,A$ 690 PRINT@388,"DON'T LOOK AT THE TV!!" 700 PRINT@417,"PRESS THE TO HEAR THE SOUND AGAIN." 710 B$=INKEY$ 720 IF B$="" THEN 710 730 IF B$=A$ THEN FOR Q=1 TO 150:NEXT Q:GOTO 620 740 IF B$=" " THEN FOR P=1 TO 200:NEXT P:GOSUB 1140:GOTO 710 750 IF B$="^" THEN FOR Q=1 TO 150:GOTO 620 760 IF B$="@" THEN 150 770 FOR C=1 TO 30:NEXT C:SOUND 120,6:FOR P=1 TO 200:NEXT P:GOSUB 1140:GOTO 710 780 ' 790 ' 800 ' 810 ' 820 ' 830 ' 840 ' 850 ' 860 ' 870 ' 880 CLS:PRINT@7,"MORSE CODE TRAINER" 890 PRINTSTRING$(32,43) 900 PRINT" * MORSE CODE SENDING PROGRAM" 910 PRINT" 920 PRINT"INPUT THE SENTENCE(S), NOT TO" 930 PRINT"EXCEED 200 WORDS TOTAL LENGTH" 940 PRINT"(INCLUDING SPACES!)" 950 PRINTSTRING$(32,"-") 960 X=0 970 LINE INPUT A1$ 980 L=LEN(A1$) 990 IF L>255 THEN PRINT"TOO LONG, TRY AGAIN":GOTO 950 1000 FOR M=1 TO L 1010 A$=MID$(A1$,M,1) 1020 IF X=0 THEN FOR W1=1 TO 500:NEXT W1 1021 IF X=0 THEN PRINT 1030 X=1 1040 PRINT A$; 1050 GOSUB 1140 1061 IF A$=" " THEN FOR SP=1 TO(W*130):NEXT SP 1071 IF A$<>" " THEN FOR PA=1 TO(W*76):NEXT PA 1080 NEXT M 1089 PRINT 1090 PRINT:PRINT" *ANOTHER LINE?" 1100 Z$=INKEY$: IF Z$="" THEN 1100 1110 IF Z$="Y" THEN GOTO 950 1120 IF Z$="N" THEN GOTO 150 1130 GOTO 1100 1140 IF A$="A" GOSUB 1560:GOSUB 1570: GOTO 1550 1150 IF A$="B" GOSUB 1570:GOSUB 1560: GOSUB 1560:GOSUB 1560:GOTO 1550 1160 IF A$="C" GOSUB 1570:GOSUB 1560: GOSUB 1570: GOSUB 1560: GOTO 1550 1170 IF A$="D" GOSUB 1570:GOSUB 1560: GOSUB 1560: GOTO 1550 1180 IF A$="E" GOSUB 1560:GOTO 1550 1190 IF A$="F" GOSUB 1560:GOSUB 1560: GOSUB 1570: GOSUB 1560:GOTO 1550 1200 IF A$="G" GOSUB 1570: GOSUB 1570: GOSUB 1560: GOTO 1550 1210 IF A$="H" GOSUB 1560:GOSUB 1560: GOSUB 1560: GOSUB1560:GOTO 1550 1220 IF A$="I" GOSUB 1560: GOSUB 1560: GOTO 1550 1230 IF A$="J" GOSUB 1560:GOSUB 1570: GOSUB 1570: GOSUB 1570: GOTO 1550 1240 IF A$="K" GOSUB 1570: GOSUB 1560: GOSUB 1570: GOTO 1550 1250 IF A$="L" GOSUB 1560:GOSUB 1570: GOSUB 1560:GOSUB 1560:GOTO 1550 1260 IF A$="M" GOSUB 1570: GOSUB 1570: GOTO 1550 1270 IF A$="N" GOSUB 1570: GOSUB 1560: GOTO 1550 1280 IF A$="O" GOSUB 1570:GOSUB 1570: GOSUB 1570: GOTO 1550 1290 IF A$="P" GOSUB 1560:GOSUB 1570: GOSUB 1570:GOSUB 1560:GOTO 1550 1300 IF A$="Q" GOSUB 1570:GOSUB 1570: GOSUB 1560: GOSUB 1570:GOTO 1550 1310 IF A$="R" GOSUB 1560:GOSUB 1570: GOSUB 1560:GOTO 1550 1320 IF A$="S" GOSUB 1560:GOSUB 1560: GOSUB 1560: GOTO 1550 1330 IF A$="T" GOSUB 1570:GOTO 1550 1340 IF A$="U" GOSUB 1560:GOSUB 1560: GOSUB 1570:GOTO 1550 1350 IF A$="V" GOSUB 1560:GOSUB 1560: GOSUB 1560: GOSUB 1570:GOTO 1550 1360 IF A$="W" GOSUB 1560: GOSUB 1570: GOSUB 1570:GOTO 1550 1370 IF A$="X" GOSUB 1570: GOSUB 1560: GOSUB 1560: GOSUB 1570: GOTO 1550 1380 IF A$="Y" GOSUB 1570: GOSUB 1560: GOSUB 1570: GOSUB 1570: GOTO 1550 1390 IF A$="Z" GOSUB 1570: GOSUB 1570: GOSUB 1560: GOSUB 1560: GOTO 1550 1400 IF A$="1" GOSUB 1560:GOSUB1570:GOSUB1570:GOSUB1570:GOSUB1570:GOTO1550 1410 IF A$="2" GOSUB1560:GOSUB1560:GOSUB1570:GOSUB1570:GOSUB1570:GOTO1550 1420 IF A$="3" GOSUB1560:GOSUB1560:GOSUB1560:GOSUB1570:GOSUB1570:GOTO1550 1430 IF A$="4" GOSUB1560:GOSUB1560:GOSUB1560:GOSUB1560:GOSUB1570:GOTO1550 1440 IF A$="5" GOSUB1560:GOSUB1560:GOSUB1560:GOSUB1560:GOSUB1560:GOTO1550 1450 IF A$="6" GOSUB1570:GOSUB1560:GOSUB1560:GOSUB1560:GOSUB1560:GOTO1550 1460 IF A$="7" GOSUB1570:GOSUB1570:GOSUB1560:GOSUB1560:GOSUB1560:GOTO1550 1470 IF A$="8" GOSUB1570:GOSUB1570:GOSUB1570:GOSUB1560:GOSUB1560:GOTO1550 1480 IF A$="9" GOSUB1570:GOSUB1570:GOSUB1570:GOSUB1570:GOSUB1560:GOTO1550 1490 IF A$="0" GOSUB1570:GOSUB1570:GOSUB1570:GOSUB1570:GOSUB1570:GOTO1550 1500 IF A$="." GOSUB1560:GOSUB1570:GOSUB1560:GOSUB1570:GOSUB1560:GOSUB1570:GOTO 1550 1510 IF A$="," GOSUB 1570:GOSUB 1570:GOSUB 1560:GOSUB1560:GOSUB 1570:GOSUB 1570:GOTO 1550 1520 IF A$="?" GOSUB 1560:GOSUB1560:GOSUB1570:GOSUB1570:GOSUB1560:GOSUB1560:GOTO 1550 1530 IF A$="-"GOSUB1570:GOSUB1560:GOSUB1560:GOSUB1560:GOSUB1570:GOTO 1550 1540 IFA$="/" GOSUB1570:GOSUB1560:GOSUB1560:GOSUB1570:GOSUB1560:GOTO1550 1550 RETURN 1560 SOUND 220,W:FOR N=1 TO Z:NEXT:RETURN 1570 SOUND 220,Y:FOR N=1 TO Z:NEXT:RETURN 1580 END 1590 G=26 1600 RETURN 1610 G=41 1620 RETURN 1630 CLS:PRINT @7,"MORSE CODE TRAINER" 1640 PRINTSTRING$(32,43) 1650 PRINT 1660 IF S1=1 THEN PRINT"* CODE RECOGNITION DRILL" 1670 IF S1=2 THEN PRINT"* RANDOM CODE CHARACTERS" 1680 IF S1=3 THEN PRINT"* USER INPUT TRANSLATED TO CODE" 1690 PRINT 1700 RETURN 1710 PRINT"* SPEED="; 1720 IF S2=1 THEN PRINT"BEGINNER" 1730 IF S2=2 THEN PRINT"NOVICE" 1740 IF S2=3 THEN PRINT"GENERAL" 1760 PRINT 1770 RETURN 1780 IF S2=3 THEN RETURN 1790 PRINT"* LETTERS"; 1800 IF Z$="Y" THEN PRINT" ONLY" 1810 IF Z$="N" THEN PRINT", NUMBERS, AND" 1820 IF Z$="N" THEN PRINT" PUNCTUATION MARKS" 1830 PRINT 1840 RETURN 2500 ' RANDOM CHARACTERS 2501 ' 2502 ' 2503 ' 2509 CLS:PRINT" *RANDOM CHARACTERS" 2510 PRINT STRING$(32,"-") 2511 INPUT"HOW MANY GROUPS OF FIVE";N 2515 IF N=0 THEN N=5 2520 IF N>20 THEN PRINT"THAT'S QUITE A BIT... TRY LESS AT ONE TIME!":GOTO 2510 2521 FOR M=1 TO 300:NEXT M 2524 FOR R=1 TO N 2525 FOR D=1 TO 5 2530 A=B 2540 A=RND(G):IF A=B THEN 2540 2550 FOR H=1 TO A:B=A 2560 READ A$:NEXT H 2570 GOSUB 1140 2580 C=C+1:RESTORE 2590 PRINT A$;:IF (C/5)=INT(C/5) THEN PRINT" "; 2600 IF (C/25)=INT(C/25) THEN PRINT " " 2609 FOR PA=1 TO (W*76):NEXT PA 2610 NEXT D 2611 FOR SP=1 TO (W*130):NEXT SP 2615 NEXT R 2618 PRINT 2620 PRINT:PRINT"ENTER 'A' TO DO ANOTHER GROUP OR 'M' TO RETURN TO THE MENU" 2630 E$=INKEY$:IF E$=""THEN 2630 2640 IF E$="M" THEN GOTO 150 2650 IF E$="A" THEN GOTO 2510 2660 GOTO 2630