kev@voder.UUCP (Kevin Hoskins) (01/28/88)
I am looking for programs that will generate audible Morse code through a computer's sound generation facilities. I would appreciate programs for both a Commodore 64 and an IBM XT clone. The main features that I am looking for are the ability to vary the speed that each individual letter is sent and the time between each character; i.e., send a letter's code, at say, 15 words per minute but have each individual letter sent at 5 wpm. If the program can generate random characters or convert a text file to code are also very useful. My wife and children and I are studying for the amatuer radio novice license. We have the code tapes from the ARRL. They are vary good, but after they are used for any length of time, it becomes too easy to anticipate what character will be sent next. Hopefully there is a computer program that will help us to study code without the prospect of being able to anticipate what the next letter will be. It would probably be best to send the program code to me via email. Thank you very much to all who help. Kevin Hoskins
davidsen@steinmetz.steinmetz.UUCP (William E. Davidsen Jr) (01/29/88)
In article <3049@voder.UUCP> kev@voder.UUCP (Kevin Hoskins) writes: > > I am looking for programs that will generate audible Morse code through a >computer's sound generation facilities. I would appreciate programs for both >a Commodore 64 and an IBM XT clone. The main features that I am looking for I have no idea what it will take to get this running on a C64, but it's in BASIC, so you should be able to do it. ---------------- morse.bas, I didn't write it ---------------- 10 ' A BASIC CODE TRAINER - KH6FHN/4 BOX 3292, MCLEAN VA 22103 20 ' TAKEN FROM "COMPUTER TRADER" ISSUE OF JULY, 1984 30 ' MODIFICATIONS BY N6MPP (GILLMANN@ISIB.ARPA) 40 ' PROGRAM SPEED VARIES AMONG BASIC BASICA BASCOM AND AMONG PC/AT/PCJR 45 ' SET CONSTANT M5 TO ADJUST FOR THIS 50 RANDOMIZE TIMER 60 O=VAL(MID$(TIME$,7,2))+10*VAL(MID$(TIME$,4,2)) 70 FOR I=1 TO O : R=RND : NEXT I 80 DIM A$(100) 90 HBNDA = 44 100 REM SINGLE 110 A$(1) = "E." 120 A$(2) = "T-" 130 REM DOUBLE 140 A$(3) = "A.-" 150 A$(4) = "I.." 160 A$(5) = "M--" 170 A$(6) = "N-." 180 REM TRIPLE 190 A$(7) = "D-.." 200 A$(8) = "G--." 210 A$(9) = "K-.-" 220 A$(10) = "O---" 230 A$(11) = "R.-." 240 A$(12) = "S..." 250 A$(13) = "U..-" 260 A$(14) = "W.--" 270 REM QUADRUPLE 280 A$(15) = "B-..." 290 A$(16) = "C-.-." 300 A$(17) = "F..-." 310 A$(18) = "H...." 320 A$(19) = "J.---" 330 A$(20) = "L.-.." 340 A$(21) = "P.--." 350 A$(22) = "Q--.-" 360 A$(23) = "V...-" 370 A$(24) = "X-..-" 380 A$(25) = "Y-.--" 390 A$(26) = "Z--.." 400 REM QUINTUPLE 410 A$(27) = "0-----" 420 A$(28) = "1.----" 430 A$(29) = "2..---" 440 A$(30) = "3...--" 450 A$(31) = "4....-" 460 A$(32) = "5....." 470 A$(33) = "6-...." 480 A$(34) = "7--..." 490 A$(35) = "8---.." 500 A$(36) = "9----." 510 A$(37) = "/-..-." ' DN 520 A$(38) = "=-...-" ' BT 530 A$(39) = "a.-.-." ' AR 540 REM SEXTUPLE 550 A$(40) = "..-.-.-" 560 A$(41) = ",--..--" 570 A$(42) = "?..--.." 580 A$(43) = "s...-.-" ' SK 590 REM SPECIAL (NOT ON GENERAL TEST) 600 A$(44) = "~.-...-" ' NEW LINE 610 REM START OF CODE TRAINER PROGRAM 620 CLS 630 M5 = 20 ' BASIC SPEED CONSTANT = MAX WPM, BASICA=13 BASIC=15 BASCOM=20 640 F = 837 ' TONE FREQ. IN HZ. FCC SAYS 700 TO 1000 HZ. 650 PRINT "KH6FHN CODE SENDER, MODIFIED BY N6MPP 1985" 660 PRINT "ENTER T FOR TABLE, M FOR MEMORY TEST, P FOR PRACTICE"; 670 INPUT S$ 680 IF (S$ = "P") OR (S$ = "P") GOTO 930 690 IF (S$ = "M") OR (S$ = "m") GOTO 1820 700 PRINT 710 PRINT "A .- S ... . .-.-.-" 720 PRINT "B -... T . , --..--" 730 PRINT "C -.-. U ..- ? ..--.." 740 PRINT "D -. . V ...- / -..-. (DN)" 750 PRINT "E . W .-- = -...- (BT = DOUBLE DASH)" 760 PRINT "F ..-. X -..- a .-.-. (AR = END OF MESSAGE)" 770 PRINT "G --. Y -.-- s ...-.- (SK = END OF CONTACT)" 780 PRINT "H .... Z --.. ~ .-...- (NEW LINE)" 790 PRINT "I .. 0 -----" 800 PRINT "J .--- 1 .----" 810 PRINT "K -.- 2 ..---" 820 PRINT "L .-.. 3 ...--" 830 PRINT "M -- 4 ....-" 840 PRINT "N -. 5 ....." 850 PRINT "O --- 6 -...." 860 PRINT "P .--. 7 --..." 870 PRINT "Q --.- 8 ---.." 880 PRINT "R .-. 9 ----." 890 PRINT 900 PRINT "(PRESS ANY KEY TO CONTINUE)" 910 IF INKEY$ = "" THEN 910 920 GOTO 610 930 REM PRACTICE 940 PRINT USING "ENTER DESIRED CODE SPEED 5-##";M5; 950 INPUT T1 960 IF T1 < 5 THEN 930 970 IF T1 > M5 THEN 930 980 T = M5 / T1 990 IF T1 <= 12 THEN T = M5 / (T1 - 1) 1000 IF T1 <= 11 THEN T = M5 / (T1 - 2) 1010 IF T1 <= 9 THEN T = M5 / (T1 - 3) 1020 T13 = T 1030 IF T1 < 13 THEN T13 = M5 / 13 1040 REM HERE WE CAN ALSO ENTER TONE FREQ. F (HZ) 1050 PRINT "ENTER K TO SEND FROM KBD, F TO SEND A FILE, R FOR RANDOM"; 1060 INPUT S$ 1070 IF (S$ = "K") OR (S$ = "k") THEN GOSUB 1460 1080 IF (S$ = "F") OR (S$ = "f") THEN GOSUB 1110 1090 IF (S$ = "R") OR (S$ ="r") THEN GOSUB 1530 1100 GOTO 620 1110 REM FILE SEND 1120 PRINT "ENTER THE FILE TO SEND"; 1130 INPUT DSNAME$ 1140 OPEN DSNAME$ FOR INPUT AS 1 1142 PRINT "(PRESS ANY KEY WHEN READY)" 1143 T = 1.4*T ' MORE FUDGE 1144 GOSUB 2190 : T0 = O ' TIME IN SECONDS 1146 S = 0 1148 IF INKEY$ = "" THEN 1144 1150 IF EOF(1) THEN 1250 1160 LINE INPUT # 1, REC$ 1170 LL = LEN(REC$) 1180 FOR L1 = 1 TO LL 1190 C$ = MID$(REC$, L1, 1) 1195 S = S + 1 : IF C$ > "Z" THEN S = S + 1 1200 GOSUB 1270 ' GEN MORSE 1210 NEXT L1 1220 C$ = " " : GOSUB 1270 1230 PRINT 1240 GOTO 1150 1250 CLOSE # 1 : PRINT 1252 GOSUB 2190 : O = O - T0 1255 PRINT USING "ACTUAL WPM BY FCC STANDARDS = ##.#";(S/O)*12 1257 PRINT "(PRESS ANY KEY TO CONTINUE)" 1258 IF INKEY$ = "" THEN 1258 1260 RETURN ' FILE LIST 1270 REM GENERATE MORSE FOR CHARACTER C$ AT RATE T. 1280 FOR J = 1 TO HBNDA 1290 IF MID$(A$(J), 1, 1) = C$ THEN GOSUB 1360 ' MAKE SOUND 1300 NEXT J 1310 IF F = 838 THEN RETURN 1320 IF C$ = " " THEN SOUND 32767, T*4 1330 IF C$ = "~" THEN PRINT " " 1340 IF C$ <> "~" THEN PRINT C$; 1350 RETURN ' END GENERATE MORSE 1360 REM MAKE SOUND 1370 K = LEN(A$(J)) 1380 FOR L = 2 TO K 1390 SL = 1 1400 IF MID$(A$(J), L, 1) = "-" THEN SL = 3 1410 SOUND F, T13*SL 1420 SOUND 32767, T13 ' SPACE 1430 NEXT L 1440 SOUND 32767,3*T-T13 1450 RETURN 1460 REM KEYBOARD 1470 PRINT "ENTER * TO END KEYBOARD MODE" 1480 C$ = INKEY$ 1490 IF C$ = "" THEN 1480 1500 IF C$ = "*" THEN RETURN 1510 GOSUB 1270 1520 GOTO 1480 1530 REM RANDOM 1540 PRINT "TEST WILL LAST 5 MINUTES" 1550 PRINT "STRIKE ANY KEY WHEN READY" 1560 PRINT 1570 T0=RND : IF INKEY$ = "" THEN 1570 1580 GOSUB 2190 : T0 = O ' TIME IN SECONDS 1590 S = 0 : S0 = 0 1600 Z = 7 1610 GOSUB 2110 1620 I = 0 1630 C$ = INKEY$ 1640 IF C$ <> "" THEN 1780 1650 GOSUB 2190 : IF O > T0+300 THEN 1760 1660 I = I + 1 1670 C$ = " " 1680 IF I = INT(I/6)*6 THEN 1730 ' GROUPS OF FIVE 1690 K = INT(RND*Z1)+1 1700 IF K>26 THEN IF VAL(MID$(TIME$,7,2))<15 THEN K = INT(RND*26)+1 1710 C$ = MID$(A$(K), 1, 1) 1720 S0 = S0 + 1 : S = S + 1 : IF K > 26 THEN S = S + 1 1730 GOSUB 1270 ' TOOT TOOT! 1740 IF I = INT(I/24)*24 THEN PRINT ' FOUR GROUPS 1750 GOTO 1630 1760 PRINT : IF I <> INT(I/24)*24 THEN PRINT 1770 PRINT USING "### CHARS AT ACTUAL WPM BY FCC STANDARDS OF ##.#";S0,S/25 1780 PRINT "(PRESS ANY KEY TO CONTINUE)" 1790 C$ = INKEY$ 1800 IF C$ = "" THEN 1790 1810 RETURN 1820 REM MEMORY TEST 1830 T1=13 ' WPM 1840 T=M5/T1 1850 T13=T 1860 F = 838 1870 Z=4 ' INITIAL MAX LENGTH OF SYMBOLS 1880 S=0 1890 FOR J9=1 TO 10 1900 E=0 1910 GOSUB 2110 1920 FOR I=1 TO 10 1930 K9 = INT(RND*Z1)+1 1940 B$ = A$(K9) 1950 C$ = MID$(B$, 1, 1) 1960 GOSUB 1270 1970 PRINT USING "### : ";10*(J9-1)+I; 1980 S$ = INKEY$ : IF S$ = "" THEN 1980 1990 PRINT S$; 2000 IF S$=C$ THEN S=S+1 : PRINT " RIGHT!" 2010 IF S$<>C$ THEN E=E+1 : PRINT " WRONG, IT'S ",B$ 2020 NEXT I 2030 IF E=0 THEN Z=Z+1 2040 IF Z>6 THEN Z=6 2050 IF E>1 THEN Z=Z-1 2060 NEXT J9 2070 PRINT "YOUR SCORE WAS ",S 2080 PRINT "(PRESS ANY KEY TO CONTINUE)" 2090 IF INKEY$ = "" THEN 2090 2100 GOTO 610 2110 REM SUBR TO GET MAX CHAR LEN --- Z1 2120 IF Z>= 6 THEN Z1 = 43 2130 IF Z = 5 THEN Z1 = 39 2140 IF Z = 4 THEN Z1 = 26 2150 IF Z = 3 THEN Z1 = 14 2160 IF Z = 2 THEN Z1 = 6 2170 IF Z<= 1 THEN Z1 = 2 2180 RETURN 2190 REM TIMER SUBROUTINE 2200 X$=TIME$ 2210 O1$=MID$(X$,1,2) 2220 O2$=MID$(X$,4,2) 2230 O3$=MID$(X$,7,2) 2240 O=VAL(O1$)*3600+VAL(O2$)*60+VAL(O3$) 2250 RETURN 2260 END -- bill davidsen (wedu@ge-crd.arpa) {uunet | philabs | seismo}!steinmetz!crdos1!davidsen "Stupidity, like virtue, is its own reward" -me
jbh@mibte.UUCP (James Harvey) (02/02/88)
In article <3049@voder.UUCP>, kev@voder.UUCP writes: > > I am looking for programs that will generate audible Morse code through a > computer's sound generation facilities. I would appreciate programs for both > a Commodore 64 and an IBM XT clone. The main features that I am looking for > are the ability to vary the speed that each individual letter is sent and the > time between each character; i.e., send a letter's code, at say, 15 words per > minute but have each individual letter sent at 5 wpm. If the program can > generate random characters or convert a text file to code are also very useful. > Dennis Green, KB8CS has an article on this in the January '88 Ham Radio magazine. He offers a C64 program that does what you require. I have a copy and it works quite well with independantly variable character speed and spacing, random code generation and the ability to store and retrieve text from disk. You can get a copy of the listing from Ham Radio for a SASE (44 cents), but the program is quite long to type in. Dennis has arranged for another Detroit ham, Robert Evans N8GFE, 23540 Manistee, Oak Park, Mich. 48237 to dupicate the disk. Send Eight bucks and he will mail you a copy. -- Jim Harvey | "Ask not for whom the bell Michigan Bell Telephone | tolls and you will only pay 29777 Telegraph | Station-to-Station rates." Southfield, Mich. 48034 | ihnp4!mibte!jbh or try ulysses!gamma!mibte!jbh