RosettaCodeData/Task/Morse-code/Commodore-BASIC/morse-code.basic

54 lines
1.4 KiB
Plaintext

100 DI$="IA" : REM DIT = EIGHTH NOTE
110 DA$="Q.A": REM DA = DOTTED QUARTER NOTE
120 IS$="IR" : REM SPACE BETWEEN SYMS=1xDOT
130 IC$="QR" : REM EXTRA BETWEEN CHARS=2xDOT(TOTAL 3)
140 IW$="HR" : REM SPACE BETWEEN WORDS=4xDOT(TOTAL 7)
150 DIM MC$(127): REM READ CODE TABLE
160 DO
170 : READ C$
180 : IF C$="" THEN EXIT
190 : C=ASC(C$)
200 : READ C$
210 : MC$(C) = C$
220 LOOP
230 PRINT "ENTER MESSAGE:"
240 OPEN1,0:INPUT#1,M$:CLOSE1
250 TEMPO 128
260 P$="T7": REM ENVELOPE = ORGAN
270 FOR I=1 TO LEN(M$)
280 : A=ASC(MID$(M$,I))
290 : IF A=32 THEN BEGIN
300 : P$=P$+IW$
310 : BEND:ELSE IF MC$(A)<>"" THEN BEGIN
320 : C$=MC$(A)
330 : FOR J=1 TO LEN(C$)
340 : S$=MID$(C$,J,1)
350 : IF S$="." THEN BEGIN
360 : P$=P$+DI$
370 : BEND:ELSE BEGIN
380 : P$=P$+DA$
390 : BEND
400 : P$=P$+IS$
410 : NEXT J
420 : P$=P$+IC$
430 : BEND
440 NEXT I
450 PLAY P$
460 END
470 REM MORSE CODE TABLE DATA
500 DATA A,".-", B,"-...", C,"-.-."
510 DATA D,"-..", E,".", F,"..-.",G,"--."
520 DATA H,"....", I,"..", J,".---"
530 DATA K,"-.-", L,".-..", M,"--",N,"-."
540 DATA O,"---", P,".--.", Q,"--.-"
550 DATA R,".-.", S,"...", T,"-",U,"..-"
560 DATA V,"...-", W,".--", X,"-..-"
570 DATA Y,"-.--", Z,"--.."
580 DATA 0,"-----",1,".----",2,"..---"
590 DATA 3,"...--",4,"....-",5,"....."
600 DATA 6,"-....",7,"--...",8,"---.."
610 DATA 9,"----."
620 DATA ".",".-.-.-", ",","--..--"
630 DATA "?","..--.."
640 DATA ""