25 Years of Programming
An open source source for C, C++, OWL, BASIC, MDB, XLS, DOT, and more...
Home   Projects   Up   Sitemap   Search   Blog   Forum+Chat   About Us   Privacy   Terms of Use   Feedback   FAQ   Images   Services   Ads   Donate   Humor

I think this was written while trying to solve a puzzle in a early 1980's puzzle book
called something like "The Puzzle Mountain".

1 REM ENCODE.BAS - ENCODES A GIVEN STRING INTO SEVERAL DIFFERENT MORSE-RELATED CODES.
5 'COPYRIGHT (C)1984 STEVEN WHITNEY.    
6 'Published under GNU GPL (General Public License) Version 2, with ABSOLUTELY NO WARRANTY.
10 PRINT "THIS PROGRAM CODES A WORD OR PHRASE INTO MORSE CODE"
15 PRINT "TURN ON CAPS LOCK. INPUT MUST BE UPPER CASE."
20 INPUT "WHAT IS THE WORD OR PHRASE";A1$
30 DEFSTR A,B,T
35 'COULD CONVERT TO UPPER CASE HERE, BUT I DON'T REMEMBER WHAT FUNCTIONS WERE AVAILABLE IN MBASIC.
40 FOR I=1 TO LEN(A1$)
50 A=MID$(A1$,I,1)
60 PRINT A
70 GOSUB 1280
80 T=T+B
90 IF I<>LEN(A1$) THEN T=T+"S"
100 NEXT I
104 PRINT
105 PRINT, "IN PLAIN MORSE"
106 PRINT
110 PRINT T
119 PRINT
120 PRINT, "IN BINARY MORSE -- DOT=1, DASH = 0  "
125 PRINT
130 FOR I=1 TO LEN(T)
140 IF MID$(T,I,1)="." THEN T1=T1+"1"
150 IF MID$(T,I,1)="-" THEN T1=T1+"0"
160 IF MID$(T,I,1)="S" THEN T1=T1+" "
170 NEXT I
180 PRINT T1
185 PRINT
190 PRINT, "IN DECIMAL CODED BINARY MORSE"
200 PRINT
205 DEFSTR N : DIM N(100),M(100)
206 J=0
210 FOR I=1 TO LEN(T1)
220 IF MID$(T1,I,1)=" " THEN J=J+1 ELSE N(J)=N(J)+MID$(T1,I,1)
230 NEXT I
240 FOR K=0 TO J
250 FOR L=1 TO LEN(N(K))
260 M(K)=M(K)+VAL(MID$(N(K),L,1))*(2^(LEN(N(K))-L))
270 NEXT L
280 NEXT K
290 FOR K=0 TO J
300 PRINT M(K);
310 NEXT K
320 END
1000 IF A=".-" THEN B="A":RETURN
1010 IF A="-..." THEN B="B":RETURN
1020 IF A="-.-." THEN B="C":RETURN
1030 IF A="-.." THEN B="D":RETURN
1040 IF A="." THEN B="E":RETURN
1050 IF A="..-." THEN B="F":RETURN
1060 IF A="--." THEN B="G":RETURN
1070 IF A="...." THEN B="H":RETURN
1080 IF A=".." THEN B="I":RETURN
1090 IF A=".---" THEN B="J":RETURN
1100 IF A="-.-" THEN B="K":RETURN
1110 IF A=".-.." THEN B="L":RETURN
1120 IF A="--" THEN B="M":RETURN
1130 IF A="-." THEN B="N":RETURN
1140 IF A="---" THEN B="O":RETURN
1150 IF A=".--." THEN B="P":RETURN
1160 IF A="--.-" THEN B="Q":RETURN
1170 IF A=".-." THEN B="R":RETURN
1180 IF A="..." THEN B="S":RETURN
1190 IF A="-" THEN B="T":RETURN
1200 IF A="..-"THEN B="U":RETURN
1210 IF A="...-"THEN B="V":RETURN
1220 IF A=".--" THEN B="W":RETURN
1230 IF A="-..-"THEN B="X":RETURN
1240 IF A="-.--" THEN B="Y":RETURN
1250 IF A="--.." THEN B="Z":RETURN
1260 B=" ":RETURN
1270 REM ABOVE LINE IS FOR WHEN UNDEFINED STRING SENT TO SUBROUTINE.
1280 IF A="A" THEN B=".-":RETURN
1290 IF A="B" THEN B="-...":RETURN
1300 IF A="C" THEN B="-.-.":RETURN
1310 IF A="D" THEN B="-..":RETURN
1320 IF A="E" THEN B=".":RETURN
1330 IF A="F" THEN B="..-.":RETURN
1340 IF A="G" THEN B="--.":RETURN
1350 IF A="H" THEN B="....":RETURN
1360 IF A="I" THEN B="..":RETURN
1370 IF A="J" THEN B=".---":RETURN
1380 IF A="K" THEN B="-.-":RETURN
1390 IF A="L" THEN B=".-..":RETURN
1400 IF A="M" THEN B="--":RETURN
1410 IF A="N" THEN B="-.":RETURN
1420 IF A="O" THEN B="---":RETURN
1430 IF A="P" THEN B=".--.":RETURN
1440 IF A="Q" THEN B="--.-":RETURN
1450 IF A="R" THEN B=".-.":RETURN
1460 IF A="S" THEN B="...":RETURN
1470 IF A="T" THEN B="-":RETURN
1480 IF A="U" THEN B="..-":RETURN
1490 IF A="V" THEN B="...-":RETURN
1500 IF A="W" THEN B=".--":RETURN
1510 IF A="X" THEN B="-..-":RETURN
1520 IF A="Y" THEN B="-.--":RETURN
1530 IF A="Z" THEN B="--..":RETURN
1540 B="":RETURN

 

 

Valid HTML 4.01 Transitional Valid CSS
View content labeling at ICRA.
Copyright ©2007 Steven Whitney. Last modified 09/25/2007.