home *** CD-ROM | disk | FTP | other *** search
/ World of Ham Radio 1997 / WOHR97_AmSoft_(1997-02-01).iso / basic / morse.bas < prev    next >
BASIC Source File  |  1997-02-01  |  9KB  |  80 lines

  1. 'MODIFIED FOR QUICKBASIC IN LINE 26
  2. 1 KEY OFF: COLOR 14, 0, 0: SCREEN 0, 0, 0, 0: WIDTH 80: KEY OFF: COLOR 14, 0, 0: LOCATE 1, 1, 1: DIM A$(256), WRONG(256): DEFINT C, X: EXAM$ = "NO": GOSUB 39: GOSUB 8: GOSUB 19: X = RND(-VAL(RIGHT$(TIME$, 2)))
  3. 2 IF EXAM$ = "YES" THEN GOSUB 59: H$ = CHR$(27): GOTO 6 ELSE GOSUB 12
  4. 3 GOSUB 9
  5. 4 H$ = INKEY$: IF H$ = "" THEN GOTO 4 ELSE IF H$ > CHR$(96) THEN H$ = CHR$(ASC(H$) - 32)
  6. 5 IF H$ = " " THEN GOTO 3
  7. 6 IF H$ = CHR$(27) THEN GOSUB 14
  8. 7 CHRCOUNT = CHRCOUNT + 1: IF H$ = CHR$(13) THEN PRINT CHR$(C); " "; : GOTO 3 ELSE IF ASC(H$) = C THEN PRINT CHR$(C); " "; : CORRECTCOUNT = CORRECTCOUNT + 1: GOTO 2 ELSE SOUND 200, 10: SOUND Z, 10: WRONGCOUNT = WRONGCOUNT + 1: WRONG(C) = WRONG(C) +  _
  9. 1: GOTO 3
  10. 8 FOR I = ASC("A") TO ASC("Z"): READ A$(I): NEXT I: READ I: FOR J = 1 TO I: READ C$, A$(ASC(C$)): NEXT J: RETURN
  11. 9 C$ = A$(C): IF (C <> 32) = 0 THEN 11 ELSE IF LEN(C$) = 0 THEN RETURN ELSE FOR I = 1 TO LEN(C$): IF MID$(C$, I, 1) <> "a" THEN SOUND F, ISS ELSE SOUND F, AS1
  12. 10 SOUND Z, ISS: NEXT I: SOUND Z, AS1: RETURN: GOTO 12
  13. 11 SOUND Z, AS1 * 3: RETURN
  14. 12 X = RND(1) * LEN(CHRS$) + .5: IF X > LEN(CHRS$) OR X < 1 THEN GOTO 12 ELSE C = ASC(MID$(CHRS$, X, 1)): RETURN: DATA "ia","aiii","aiai","aii","i","iiai","aai","iiii","ii": DATA "iaaa","aia","iaii","aa","ai","aaa","iaai","aaia","iai"
  15. 13 DATA "iii","a","iia","iiia","iaa","aiia","aiaa","aaii": DATA 15: DATA 0,"aaaaa",1,"iaaaaa",2,"iiaaa",3,"iiiaa",4,"iiiia",5,"iiiii": DATA 6,aiiii,7,aaiii,8,aaaii,9,aaaai,"?",iiaaii,",",aaiiaa: DATA ".",iaiaia,"/",aiiai,"-",aiiia
  16. 14 CLS : IF (EXAM$ = "NO") = 0 THEN 17 ELSE PRINT "Total Characters - "; CHRCOUNT: PRINT "Right            - "; CORRECTCOUNT: PRINT "Wrong            - "; WRONGCOUNT
  17. 15 IF CHRCOUNT <> 0 THEN PRINT USING "&###"; "Percentage Right - "; (CORRECTCOUNT / CHRCOUNT) * 100
  18. 16 GOSUB 33: CHRCOUNT = CHRCOUNT - 1
  19. 17 PRINT : PRINT : PRINT "Would you like to change parameters "; : INPUT A$: A$ = LEFT$(A$, 1): IF A$ = "Y" OR A$ = "y" THEN GOSUB 19 ELSE IF EXAM$ = "NO" THEN GOSUB 32
  20. 18 C = 32: H$ = CHR$(C): CORRECTCOUNT = -1: CHRCOUNT = -1: WRONGCOUNT = 0: FOR I = 1 TO 256: WRONG(I) = 0: NEXT I: RETURN
  21. 19 CLS : LOCATE 3, 25: PRINT "Code Practice Parameter Setup": LOCATE 7, 5: PRINT "Speed (Words Per Minute)    - ": LOCATE 9, 5: PRINT "Characters to Practice      - ": LOCATE 11, 5: PRINT "Sample Exam                 - "
  22. 20 IF WPM = 0 THEN WPM = 7.5
  23. 21 LOCATE 7, 35: PRINT WPM: IF CHRS$ = "" THEN CHRS$ = "EISH5-"
  24. 22 LOCATE 9, 36: PRINT CHRS$: LOCATE 11, 36: PRINT EXAM$: LOCATE 15, 5: PRINT "Type the new value or press enter to accept the value shown": GOSUB 38
  25. 23 LOCATE 7, 36: LINE INPUT ; ANS$: IF ANS$ = "" THEN ANS = WPM ELSE ANS = VAL(ANS$)
  26. 24 IF ANS > 20 OR ANS < 1 THEN LOCATE 8, 10: PRINT "Speed must be between 1 and 20 WPM": LOCATE 7, 35: ANS = WPM: PRINT SPC(20); : LOCATE 7, 35: PRINT ANS; : GOTO 23 ELSE LOCATE 8, 10: PRINT SPC(60); : LOCATE 7, 35: PRINT SPC(20); : LOCATE 7, 35:  _
  27. PRINT ANS;
  28. 25 WPM = ANS: SM = 15 / WPM
  29. 26 LOCATE 9, 36: LINE INPUT ; ANS$
  30.    FOR I = 1 TO LEN(ANS$): ANS = ASC(MID$(ANS$, I, 1)): IF ANS > 96 THEN ANS = ANS - 32: MID$(ANS$, I, 1) = CHR$(ANS)
  31. 27 IF A$(ANS) = "" THEN LOCATE 10, 10: PRINT "Character "; MID$(ANS$, I, 1); "  is not acceptable - Please retype line": LOCATE 9, 36: PRINT SPC(44); : LOCATE 9, 36: PRINT CHRS$: GOSUB 36: GOTO 26
  32.    NEXT I
  33.    IF ANS$ <> "" THEN CHRS$ = ANS$
  34. 28 LOCATE 9, 36: PRINT SPC(44); : LOCATE 9, 36: PRINT CHRS$: LOCATE 10, 10: PRINT SPC(70); : GOSUB 45: ISS = 1 * SM: Z = 32767: AS1 = 3 * SM: LOCATE 14, 10: PRINT SPC(70); : F = 600
  35. 29 LOCATE 24, 1: PRINT "Press ENTER to begin or ESC to make more changes"; SPC(20);
  36. 30 ANS$ = INKEY$: IF ANS$ = "" THEN LOCATE 24, 1: PRINT SPC(70); : GOTO 29 ELSE IF (ANS$ = CHR$(13)) = 0 THEN 31 ELSE IF EXAM$ = "YES" THEN LOCATE 1, 1: RETURN ELSE GOTO 32
  37. 31 IF ANS$ = CHR$(27) THEN GOTO 19 ELSE GOTO 30
  38. 32 CLS : LOCATE 22, 1: PRINT "Press the SPACE BAR to re-sound the character.": LOCATE 23, 1: PRINT "Press the ENTER key to see the character": LOCATE 24, 1: PRINT "Press the ESC key to see results or change parameters.": LOCATE 1, 1: RETURN
  39. 33 LOCATE 7, 1: PRINT "Characters and number of misses": NCNT = 0: FOR I = 1 TO 256: IF A$(I) <> "" AND WRONG(I) <> 0 THEN NCNT = 1: PRINT USING "[ ! - ## ]"; CHR$(I); WRONG(I);
  40. 34 NEXT I: IF NCNT = 0 THEN PRINT " - None - "
  41. 35 RETURN
  42. 36 LOCATE 24, 1: PRINT "Valid characters are: "; : FOR I = 1 TO 256: IF A$(I) <> "" THEN PRINT CHR$(I);
  43. 37 NEXT I: RETURN
  44. 38 LOCATE 21, 1: PRINT "    It is suggested that you study the code in the following groups:": PRINT : PRINT "        EISH5-  TMO0,/  ARLWJ1P  UF2V34?.  NDB689X  GQZ7KCY": RETURN
  45. 39 CLS : PRINT : PRINT "                                E Z C O D E  ": PRINT : PRINT "                                Version 2.0": PRINT : PRINT "                     Copyright - Jerry W. Segers - 1984": PRINT : PRINT
  46. 40 PRINT "This  program is designed to teach International Morse Code for the purpose  of": FALSE = 0: TRUE = NOT FALSE: PRINT "passing the code portion of the amateur radio license examination.  If you find"
  47. 41 PRINT "the program to be of value, please help the author produce additional  programs": PRINT "of this type by sending a donation ($10.00 suggested) to:": PRINT : PRINT "                           Jerry W. Segers"
  48. 42 PRINT "                           Route 2, Roper Road": PRINT "                           Canton, Georgia  30114": PRINT : PRINT : PRINT "You are asked to make copies of this program and pass them along to anyone that"
  49. 43 PRINT "might like to use it provided this banner is not modified or removed.   If  you": PRINT "would like to be notified of updates or other programs please include your name": PRINT "and address with your donation."
  50. 44 LOCATE 24, 1: PRINT "Press any key to begin."; : WHILE INKEY$ = "": WEND: RETURN
  51. 45 LOCATE 11, 36: LINE INPUT ANS$: IF ANS$ = "" THEN ANS = ASC(EXAM$) ELSE ANS = ASC(ANS$)
  52. 46 IF ANS > 96 THEN ANS = ANS - 32
  53. 47 IF ANS <> 89 AND ANS <> 78 THEN LOCATE 12, 10: PRINT "Please answer YES or NO"; : LOCATE 11, 36: PRINT SPC(40); : LOCATE 11, 36: ANS$ = EXAM$: PRINT ANS$; : GOTO 45 ELSE IF ANS = 89 THEN EXAM$ = "YES" ELSE EXAM$ = "NO"
  54. 48 LOCATE 11, 36: PRINT SPC(30); : LOCATE 11, 36: PRINT EXAM$: LOCATE 12, 10: PRINT SPC(60); : IF EXAM$ = "NO" THEN RETURN ELSE CLOSE #1: GOSUB 57: LOCATE 13, 5: PRINT "Exam file name              - "
  55. 49 LOCATE 13, 36: PRINT FILNAM$: LOCATE 13, 36: LINE INPUT ; ANS$: IF (ANS$ = "") = 0 THEN 51 ELSE IF FILNAM$ = "" THEN EXAM$ = "NO": GOTO 19 ELSE ANS$ = FILNAM$
  56. 50 GOTO 52
  57. 51 FILNAM$ = ANS$
  58. 52 GOSUB 53: IF PRESENT THEN OPEN FILNAM$ FOR INPUT AS #1: RETURN ELSE FILNAM$ = "": LOCATE 14, 10: PRINT "File not present - try again or press return to cancel": GOTO 49
  59. 53 ON ERROR GOTO 54: NAME FILNAM$ AS FILNAM$
  60. 54 M = ERR: RESUME 55
  61. 55 ON ERROR GOTO 0: IF M <> 58 THEN PRESENT = FALSE ELSE PRESENT = TRUE
  62. 56 RETURN
  63. 57 LOCATE 15, 1: PRINT SPC(60); : LOCATE 15, 1: PRINT "Enter  the name of the file containing the text to be used for the  test.  The ": LOCATE 16, 1: PRINT "file  can  be prepared  with  your favorite text editor.  It's name  should  be"
  64. 58 LOCATE 17, 1: PRINT "entered as - X:NAME.EXT - where: X is the drive specifier, NAME is the filename": LOCATE 18, 1: PRINT "and EXT is the extension": RETURN
  65. 59 CLOSE #2: CLS : PRINT "You may type the letters as you hear them.   If you miss a letter type a  blank and continue with the next one.  Press any key to begin.": OPEN "qqqqjwsq" FOR OUTPUT AS #2: WHILE INKEY$ = "": WEND: CLS : LOCATE 24, 1
  66. 60 PRINT " Press ESC to terminate the test"; : LOCATE 1, 1
  67. 61 IF EOF(1) THEN GOTO 64 ELSE LINE INPUT #1, ANS$: FOR L = 1 TO LEN(ANS$): H$ = INKEY$: IF (H$ <> "") = 0 THEN 62 ELSE IF H$ = CHR$(27) THEN GOTO 64 ELSE GOSUB 72
  68. 62 C = ASC(MID$(ANS$, L, 1)): IF C > 96 THEN C = C - 32
  69. 63 GOSUB 9: NEXT L: GOTO 61
  70. 64 ROW = CSRLIN: COL = POS(0)
  71. 65 LOCATE 24, 1: PRINT SPC(70); : LOCATE 24, 1: PRINT "Press ESC to begin grading."; : LOCATE ROW, COL
  72. 66 H$ = INKEY$: IF H$ = "" THEN GOTO 65 ELSE IF H$ = CHR$(27) THEN GOTO 67 ELSE GOSUB 72: GOTO 66
  73. 67 CLS : PRINT "Text as presented:": PRINT : CLOSE #1: CLOSE #2: OPEN FILNAM$ FOR INPUT AS #1: OPEN "qqqqjwsq" FOR INPUT AS #2
  74. 68 IF EOF(1) THEN GOTO 69 ELSE LINE INPUT #1, ANS$: PRINT ANS$: GOTO 68
  75. 69 PRINT : PRINT "Text as you entered it.": PRINT : CLOSE #1: OPEN FILNAM$ FOR INPUT AS #1
  76. 70 IF EOF(2) THEN GOTO 71 ELSE LINE INPUT #2, ANS$: PRINT ANS$: GOTO 70
  77. 71 LOCATE 24, 1: PRINT SPC(79); : LOCATE 24, 1: PRINT "Press the ENTER key to continue."; : CLOSE #2: KILL "qqqqjwsq": INPUT ; ANS$: RETURN
  78. 72 PRINT #2, H$; : PRINT H$; : RETURN
  79.  
  80.