1010  REM: AUTHOR. RANDY WONG  1 AUG 1975
1020  PRINT "LAST-REVISED. 25 AUG 1976"
1025  PRINT 
1030  REM: EDP RESOURCE CENTER, 400 MANSELL ST, SAN FRANCISCO CA  94134
1040  REM: (415) 239-6460
1050  DIM A$[72],C$[72],L$[72],M$[72],X$[72],Z$[72]
1060  PRINT "INT'L MORSE CODE PRGM--TO QUIT A MODE ENTER A NULL RETURN";
1065  PRINT "MODE '0' (ZERO) GIVES RUDEMENTARY DIRECTIONS";
1070  REM: RANDOMIZE P
1080  ENTER #P
1090  LET C$="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/:-,?.'"
1100  LET M$="                          #################"
1110  PRINT 
1120  PRINT 
1130  RESTORE 2440
1140  PRINT "MODE NO.: ";
1150  ENTER 255,R,M
1160  IF R<0 THEN 9999
1170  IF M>0 AND M<9 AND INT(M)=M THEN 1240
1180  PRINT LIN(2);"MODE  DESCRIPTION";LIN(1);" 0    LISTS MODES"
1190  FOR Z9=1 TO 8
1200  READ X$
1210  PRINT Z9;X$
1220  NEXT Z9
1230  GOTO 1120
1240  FOR Z9=1 TO M
1250  READ X$
1260  NEXT Z9
1270  PRINT TAB(15);X$;LIN(1)
1280  GOTO M OF 1400,1530,1550,1550,1640,1690,1750,1810
1290  PRINT 
1300  LET Z8=1
1310  FOR Z9=1 TO LEN(X$)
1320  IF X$[Z9,Z9] <> " " THEN 1370
1330  LET Z$=X$[Z8,Z9-1+(Z9=LEN(X$))]
1340  GOSUB 2170
1350  PRINT L$[1,1];
1360  LET Z8=Z9+1
1370  IF Z9=LEN(X$) AND Z8 <= Z9 THEN 1330
1380  NEXT Z9
1390  PRINT 
1400  PRINT "CODE: ";
1410  GOTO 1880
1420  LET A$="  "
1430  PRINT 
1440  FOR Z9=1 TO LEN(X$)
1450  LET Z$=X$[Z9,Z9]
1460  GOSUB 2230
1470  LET A$[1,1]=X$[Z9,Z9]
1480  LET A$[3]=L$[2]
1490  LET A$[LEN(A$)+1]="   "
1500  PRINT A$;
1510  NEXT Z9
1520  PRINT 
1530  PRINT "TEXT: ";
1540  GOTO 1880
1550  PRINT "C/X:CHR:CODE"
1560  GOSUB 1980
1570  IF M <> 4 THEN 1600
1580  PRINT "   : ";L$[1,1];" :";
1590  LET A$=L$[2]
1600  IF M <> 3 THEN 1630
1610  PRINT "       :";L$[2];LIN(0);"   : ";
1620  LET A$=L$[1,1]
1630  GOTO 1880
1640  PRINT "   DECIPHER:";
1650  GOSUB 2080
1660  PRINT Z$
1670  PRINT "   TEXT: ";
1680  GOTO 1880
1690  PRINT "   ENCIPHER: ";
1700  GOSUB 2080
1710  PRINT A$
1720  LET A$=Z$[2]
1730  PRINT "   CODE: ";
1740  GOTO 1880
1750  PRINT C$;LIN(0);M$;LIN(2);"OBSCURE THE CHARACTERS NOT DESIRED ";
1760  PRINT "IN D/P MODES.";LIN(2);C$;LIN(0);
1770  LET M$="                                           "
1780  GOTO 1880
1790  LET M$[1,LEN(X$)]=X$
1800  GOTO 1110
1810  RESTORE 2290
1820  READ X$
1830  IF X$[1,1]='92 THEN 1820
1840  IF X$="#NOT-FOUND" THEN 1820
1850  IF X$="#END-REFERENCE-MATERIAL" THEN 1110
1860  PRINT X$[1,1];"  ";X$[2]
1870  GOTO 1820
1880  ENTER 255,R,X$
1890  IF R<0 THEN 9999
1900  IF  NOT LEN(X$) THEN 1110
1910  IF M=7 THEN 1790
1920  GOTO M OF 1290,1420
1930  IF X$ <> A$ THEN 1960
1940  PRINT " C"
1950  GOTO 1970
1960  PRINT " X"
1970  GOTO M-2 OF 1560,1560,1640,1690
1980  REM: LET L$=RANDOM-L$ .ST. L$::LOOK-UP
1990  RESTORE 2290
2000  LET Z9=LEN(M$)
2010  LET Z8=INT(RND(P)*Z9+1)
2020  LET Z8=Z8+13-(Z8+13>Z9)*Z9
2030  IF M$[Z8,Z8] <> " " THEN 2020
2040  FOR Z9=1 TO Z8
2050  READ L$
2060  NEXT Z9
2070  RETURN 
2080  REM: GENERATE-GROUP-PROBLEM
2090  LET Z$=Z$[2,1]
2100  FOR Z7=1 TO RND(P)+RND(P)+RND(P)+RND(P)+RND(P)+3
2110  GOSUB 1980
2120  LET A$[Z7]=L$[1,1]
2130  LET L$[1,1]=" "
2140  LET Z$[LEN(Z$)+1]=L$
2150  NEXT Z7
2160  RETURN 
2170  REM: LET L$=LOOK-UP(Z$) .ST. Z$::MORSE
2180  RESTORE 2290
2190  READ L$
2200  IF L$[2]=Z$ THEN 2220
2210  IF L$ <> "#NOT-FOUND" THEN 2190
2220  RETURN 
2230  REM: LET L$=LOOK-UP(Z$) .ST. Z$::ALPHAMERIC
2240  RESTORE 2290
2250  READ L$
2260  IF L$[1,1]=Z$ THEN 2280
2270  IF L$ <> "#NOT-FOUND" THEN 2250
2280  RETURN 
2290  DATA "A0-","B-000","C-0-0","D-00","E0"
2300  DATA "F00-0","G--0","H0000","I00","J0---"
2310  DATA "K-0-","L0-00","M--","N-0","0---"
2320  DATA "P0--0","Q--0-","R0-0","S000","T-"
2330  DATA "U00-","V000-","W0--","X-00-","Y-0--","Z--00"
2340  DATA "0-----","10----","200---","3000--","40000-"
2350  DATA "500000","6-0000","7--000","8---00","9----0"
2360  DATA "/-00-0",":-0-0-0","--0000-",",--00--","?00--00"
2370  DATA ".00--0-","'0----0",'92"-0--0-","(-0--0-",")-0--0-"
2380  DATA "  ","#NOT-FOUND"
2390  DATA " SPECIAL CHARACTERS NOT SUPPORTED BY COMPUTER PROGRAM"
2400  DATA "  "," 00000000  ERROR"," -000-  DOUBLE-DASH"," 0-000  WAIT"
2410  DATA " -0-  INVITATION TO TRANSMIT"," 000-0-  END OF WORK"
2420  DATA " -0--0-  PARENTHESIS (ONLY PARTIALLY SUPPORTED)"
2430  DATA "#END-REFERENCE-MATERIAL"
2440  DATA "DECIPHER CODED TEXT...DOT: '0'  DASH: '-'"
2450  DATA "ENCIPHER TEXT","D/P DECIPHERING","D/P ENCIPHERING"
2460  DATA "D/P DECIPHERING GROUPS","D/P ENCIPHERING GROUPS"
2470  DATA "D/P PARAMETER ADJUSTMENTS"
2480  DATA "INT'L MORSE CODE REFERENCE INFORMATION"
9999  END 
