1HOME:DIM a$(150)
2FOR i=1 TO 38:READ a$(i):NEXT i
3?:?:? TAB(5); "MORSE CODE PRACTICE"
4?:?:? "Hit any key to continue":GET k$:HOME
5? "What speed?":INPUT sp
9 d=20/sp
20 a$(65)=".-/": a$(66)="-.../": a$(67)="-.-./":             a$(68)="-../"
25 a$(97)=".-/": a$(98)="-.../": a$(99)="-.-./":             a$(100)="-../"
30 a$(69)="./": a$(70)="..-./": a$(71)="--./":               a$(72)="..../"
35 a$(101)="./": a$(102)="..-./": a$(103)="--./":            a$(104)="..../"
40 a$(73)="../": a$(74)=".---/": a$(75)="-.-/":              a$(76)=".-../"
45 a$(105)="../": a$(106)=".---/": a$(107)="-.-/":           a$(108)=".-../"
50 a$(77)="--/": a$(78)="-./": a$(79)="---/": a$(80)=".--./"
55 a$(109)="--/": a$(110)="-./": a$(111)="---/":             a$(112)=".--./"
60 a$(81)="--.-/": a$(82)=".-./": a$(83)=".../": a$(84)="-/"
65 a$(113)="--.-/": a$(114)=".-./": a$(115)=".../":          a$(116)="-/"
70 a$(85)="..-/": a$(86)="...-/": a$(87)=".--/":             a$(88)="-..-/"
75 a$(117)="..-/": a$(118)="...-/": a$(119)=".--/":          a$(120)="-..-/"
80 a$(89)="-.--/": a$(90)="--../": a$(48)="-----/":          a$(49)=".----/"
85 a$(121)="-.--/": a$(122)="--../": a$(63)="..--../"
90 a$(50)="..---/": a$(51)="...--/": a$(52)="....-/":        a$(53)="...../"
100 a$(54)="-..../": a$(55)="--.../": a$(56)="---../":       a$(57)="----./"
110 a$(46)=".-.-.-/": a$(32)="//": a$(44)="--..--/"
120HOME:?:? TAB(5); "Choose one:"
121? TAB(8); "1...Send a message"
122? TAB(8); "2...Send random letters/numbers"
123? TAB(8); "3...Change speed"
124? TAB(8); "4...Quit"
125GET l$
126IF l$="1" THEN GOTO 130
127IF l$="3" THEN GOTO 5
128IF l$="2" THEN GOSUB 300
129IF l$="4" THEN END
130INPUT "Print message and hit <return>  "; b$
140GOSUB 160
150GOTO 120
160FOR i=1 TO LEN(b$)
170FOR m=1 TO LEN(a$(ASC(MID$(b$, i, 1))))
180IF MID$(a$(ASC(MID$(b$, i, 1))), m, 1)="." THEN           s=d:GOSUB 2000
190IF MID$(a$(ASC(MID$(b$, i, 1))), m, 1)="-" THEN           s=3*d:GOSUB 2000
200IF MID$(a$(ASC(MID$(b$, i, 1))), m, 1)="/" THEN           s=d:GOSUB 2050:GOSUB 2050
220NEXT m
230NEXT i
240RETURN
300REM   ** RANDOM LETTERS**
310INPUT "How many random numbers?"; nm
319HOME
320FOR p=1 TO nm
330 x=INT(38*RND(2))+1
340 b$=a$(x)
350GOSUB 160
351? a$(x); "  "; 
360NEXT p
361? "":? "Hit any key to continue":GET k$
380GOTO 120
1000DATA                                                     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,0,1,2,3,4,5,6,7,8,9,.,?
2000FOR j=0 TO s:? CHR$(7); :NEXT:RETURN
2050FOR j=0 TO 20*s:NEXT:RETURN

