home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PROGRAMS / UTILS / HAMRADIO / MCODE.ZIP / MORSE3.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1986-09-19  |  3.9 KB  |  141 lines

  1. 100  CLS
  2. 110  PRINT "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
  3. 120  PRINT "++                                                                ++"
  4. 130  PRINT "++                M O R S E    M E N T O R                        ++"
  5. 140  PRINT "++                                                                ++"
  6. 150  PRINT "++         Copyright 1983  -  Software Bulletin Board             ++"
  7. 160  PRINT "++                                                                ++"
  8. 170  PRINT "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
  9. 180  REM
  10. 190  OPTION BASE 1
  11. 200  PLAY "MF"
  12. 210  DIM CODE$(40), MORS$(40), GESS$(50)
  13. 220  DIM GRP(50)
  14. 230  DATA ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---"
  15. 240  DATA "-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-"
  16. 250  DATA "..-","...-",".--","-..-","-.--","--.."
  17. 260  FOR I=1 TO 26: READ CODE$(I):NEXT I
  18. 270  ST$="Press any key to continue ... "
  19. 280  PRINT ST$;
  20. 290  INPUT Z$
  21. 300  REM --------------------------------------------------------------------
  22. 310  CLS
  23. 320  PRINT
  24. 330  PRINT "Select tone -- High (3) - Mid (2) - Low (1): ";
  25. 340  INPUT TONE
  26. 350  IF TONE<1 OR TONE>3 THEN 330
  27. 360  TONE=INT(TONE)
  28. 370  IF TONE=1 THEN PLAY "o2"
  29. 380  IF TONE=2 THEN PLAY "o3"
  30. 390  IF TONE=3 THEN PLAY "o4"
  31. 400  REM
  32. 410  REM --------------------------------------------------------------------
  33. 420  PRINT
  34. 430  PRINT "How many Words Per Minute (5-35): ";
  35. 440  INPUT WPM
  36. 450  DLA=6000/WPM
  37. 460  DL2=400+INT(6000/WPM)
  38. 470  DL3=INT(DL2/5)
  39. 480  XPM=WPM*2.5
  40. 490  SHORT$=" G"+STR$(INT(3*XPM/5)+1)
  41. 500  LONG$=" G"+STR$(INT(XPM/5)+1)
  42. 510  REM --------------------------------------------------------------------
  43. 520  CLS
  44. 530  PRINT
  45. 540  PRINT "Please choose training option:"
  46. 550  PRINT "   1. Send non-stop random groups without display"
  47. 560  PRINT "   2. Send non-stop random groups with display"
  48. 570  PRINT "   3. Send random groups -- pause briefly for response"
  49. 580  PRINT "   4. Press key -- hear code"
  50. 590  PRINT "   9. End program"
  51. 600  PRINT "Enter option number: ";
  52. 610  INPUT OPT
  53. 620  IF OPT=9 THEN STOP
  54. 630  IF OPT=1 THEN DEF FNA(I)=32
  55. 640  IF OPT=2 THEN DEF FNA(I)=GRP(I)+64
  56. 650  REM -------------------------------------------------------------------
  57. 660  CLS
  58. 670  PRINT
  59. 680  PRINT "INITIALIZING ---- Please Wait"
  60. 683  IF OPT=3 THEN PRINT "AFTER EACH NOTE IS SENT -- PRESS APPROPRIATE KEY!"
  61. 690  FOR I=1 TO 26
  62. 700  MORS$(I)=""
  63. 710  LC=LEN(CODE$(I))
  64. 720  FOR N=1 TO LC
  65. 730  X$=MID$(CODE$(I),N,1)
  66. 740  IF X$="." THEN MORS$(I)=MORS$(I)+SHORT$ ELSE MORS$(I)=MORS$(I)+LONG$
  67. 750  NEXT N
  68. 760  MORS$(I)=MORS$(I)+" p"+STR$(INT(XPM/4.8))
  69. 770  NEXT I
  70. 780  IF OPT=4 THEN 1300
  71. 790  REM -------------------------------------------------------------------
  72. 800  REM SELECT RANDOM GROUPING
  73. 810  SD=(VAL(MID$(TIME$,7,2))*100)+VAL(MID$(TIME$,4,2))
  74. 820  RANDOMIZE(SD)
  75. 830  FOR I=1 TO 50
  76. 840  GRP(I)=(INT(RND(SD)*26)+1)
  77. 850  NEXT I
  78. 860  CLS
  79. 870  PRINT "GET READY!"
  80. 880  FOR K=1 TO 2000:NEXT K
  81. 890  IF OPT=3 THEN 1120
  82. 900  REM --------------------------------------------------------------------
  83. 910  REM NON-STOP GROUPS
  84. 920  S0=VAL(MID$(TIME$,7,2))
  85. 930  M0=VAL(MID$(TIME$,4,2))
  86. 940  H0=VAL(MID$(TIME$,1,2))
  87. 950  REM
  88. 960  FOR I=1 TO 50
  89. 970  PLAY MORS$(GRP(I))
  90. 980  PRINT CHR$(FNA(I)),
  91. 990  IF (I/5)-INT(I/5)<>0 THEN 1010
  92. 1000  FOR K=1 TO DLA:NEXT K
  93. 1010  NEXT I
  94. 1020  REM
  95. 1030  S1=VAL(MID$(TIME$,7,2))
  96. 1040  M1=VAL(MID$(TIME$,4,2))
  97. 1050  H1=VAL(MID$(TIME$,1,2))
  98. 1060  DIF=((H1-H0)*3600)+((M1-M0)*60)+(S1-S0)
  99. 1070  CPM=600/DIF
  100. 1080  PRINT USING "W P M =  ##.#";CPM
  101. 1090  PRINT "Another session (Y/N): ";
  102. 1100  INPUT Z$
  103. 1110  IF Z$="y" OR Z$="Y" THEN 300 ELSE STOP
  104. 1120  REM --------------------------------------------------------------------
  105. 1130  REM SEND AND RECEIVE
  106. 1140  CLS
  107. 1150  FOR I=1 TO 50
  108. 1160  PLAY MORS$(GRP(I))
  109. 1170  FOR K=1 TO DL2
  110. 1180  GESS$(I)=INKEY$
  111. 1190  IF GESS$(I)<>"" THEN 1210
  112. 1200  NEXT K
  113. 1210  FOR D=1 TO DL3
  114. 1220  NEXT D
  115. 1230  NEXT I
  116. 1239  RIGHT=0
  117. 1240  FOR I=1 TO 50
  118. 1242  IF CHR$(GRP(I)+64)=GESS$(I) THEN RIGHT=RIGHT+1
  119. 1250  PRINT CHR$(GRP(I)+64);"/";GESS$(I),
  120. 1260  NEXT I
  121. 1265  PRCT=(RIGHT*2)
  122. 1266  PRINT:PRINT "YOUR HAD ";PRCT;" PERCENT CORRECT"
  123. 1270  PRINT "Another session (Y/N): :;
  124. 1280  INPUT Z$
  125. 1290  IF Z$="Y" OR Z$="y" THEN 300 ELSE STOP
  126. 1300  REM -------------------------------------------------------------------
  127. 1310  REM PRESS KEY -- HEAR CODE
  128. 1320  CLS
  129. 1330  PRINT "PRESS EQUAL SIGN (=) TO END"
  130. 1340  GP$=INKEY$
  131. 1350  IF GP$="" THEN 1340
  132. 1360  IF GP$="=" THEN 1420
  133. 1370  GP=ASC(GP$)-64
  134. 1380  LOCATE 12,40
  135. 1390  PRINT GP$
  136. 1400  PLAY MORS$(GP)
  137. 1410  GOTO 1340
  138. 1420  PRINT "Another session: ";
  139. 1430  INPUT Z$
  140. 1440  IF Z$="Y" OR Z$="y" THEN 300 ELSE STOP
  141.