home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / beehive / utilitys / language.arc / LANGUAGE.BAS < prev    next >
BASIC Source File  |  1980-01-01  |  5KB  |  129 lines

  1. 10 REM LANGUAGE.BAS
  2. 20 REM This program tests vocabulary and spelling
  3. 30 REM               written by Daniel Kaan
  4. 40 CL$=CHR$(26)
  5. 50 PRINT CL$
  6. 60 PRINT "              LANGUAGE TRANSLATOR"
  7. 70 PRINT
  8. 80 PRINT
  9. 90 PRINT "Please set LOCK to upper case.":PRINT
  10. 100 INPUT "Which language do you wish to deal with";L$
  11. 110 PRINT:PRINT "please wait...";
  12. 120 N=1:C1=0:C2=0
  13. 130 K$=LEFT$(L$,8)+".DAT"
  14. 140 OPEN "R",#1,K$,29
  15. 150 FIELD #1,1 AS F$,14 AS E$,14 AS A$
  16. 160 GET #1,N:IF F$=CHR$(255) THEN LET N=N+1:GOTO 160
  17. 170 PRINT CL$:PRINT "There are ";N-1;" entries in the ";L$;" file.":PRINT
  18. 180 IF N=1 THEN GOSUB 580
  19. 190 GOTO 420
  20. 200 PRINT "Do you wish to give the ENGLISH words for ";L$;" words? (Y/N)";
  21. 210 GOSUB 730:PRINT CL$
  22. 220 REM Q$=QUESTION, R$=RESPONSE
  23. 230 PRINT "If you wish to finish type Q for Quit, or <RETURN> only for Don't Know.":PRINT
  24. 240 IF Y=0 THEN PRINT "Give the ENGLISH words for the following ";L$;" words.":PRINT ELSE PRINT "Give the ";L$;" words for the following ENGLISH words.":PRINT
  25. 250 GET #1,INT(RND*(N-1)+1)
  26. 260 T=0
  27. 270 IF Y=0 THEN LET Q$=A$:R$=E$ ELSE LET Q$=E$:R$=A$
  28. 280 PRINT Q$;"  ";:INPUT; "",AN$
  29. 290 IF AN$="Q" THEN 400
  30. 300 IF T=0 THEN C1=C1+1
  31. 310 IF AN$="" THEN 360
  32. 320 FOR S=LEN(AN$)+1 TO 14:AN$=AN$+" ":NEXT S
  33. 330 T=T+1
  34. 340 IF AN$<>"" AND AN$=R$ THEN PRINT ,"correct":C2=C2+1:GOTO 250
  35. 350 IF T<3 THEN PRINT ,"try again":GOTO 280
  36. 360 PRINT:PRINT "The correct answer is:  ";R$
  37. 370 PRINT "Hit any key to continue or Q to quit.";
  38. 380 U$=INKEY$:IF U$="" THEN 380
  39. 390 IF U$="Q" THEN 400 ELSE PRINT:PRINT:GOTO 250
  40. 400 PRINT CL$:REM QUIT OPTIONS
  41. 410 PRINT "You have scored";C2;"correct answers out of";C1;"tries.";:IF C1=0 THEN PRINT:PRINT:GOTO 420 ELSE PRINT "  (";INT(100*C2/C1);"% )":PRINT:PRINT
  42. 420 PRINT "Select one of the following:":PRINT:PRINT
  43. 430 PRINT "          1.  ";L$;" drill":PRINT
  44. 440 PRINT "          2.  Add entries":PRINT
  45. 450 PRINT "          3.  List entries":PRINT
  46. 460 PRINT "          4.  Correct an entry":PRINT
  47. 470 PRINT "          5.  Start again (another language)":PRINT
  48. 480 PRINT
  49. 490 PRINT "          0.  Quit programme":PRINT:PRINT
  50. 500 PRINT "                  0/1/2/3/4/5?";
  51. 510 X$=INKEY$:IF X$="" OR (X$<>"0" AND X$<>"1" AND X$<>"2" AND X$<>"3" AND X$<>"4" AND X$<>"5") THEN 510
  52. 520 X=VAL(X$):IF X<0 OR X>5 THEN 510
  53. 530 PRINT CL$
  54. 540 IF X=0 THEN CLOSE #1:SYSTEM
  55. 550 ON X GOSUB 1200,580,800,980,780
  56. 560 IF X=1 THEN GOTO 200
  57. 570 PRINT CL$:GOTO 420
  58. 580 REM Enter new words
  59. 590 PRINT "Type Q to quit.":PRINT
  60. 600 PRINT "The maximun length for any word is 14 characters.":PRINT:PRINT:PRINT
  61. 610 LSET F$=CHR$(255)
  62. 620 PRINT L$;:INPUT " word:  ",V$
  63. 630 IF V$="Q" THEN PRINT CL$:RETURN
  64. 640 LSET A$=V$
  65. 650 INPUT "ENGLISH word:  ",W$
  66. 660 IF W$="Q" THEN PRINT CL$:RETURN
  67. 670 LSET E$=W$
  68. 680 PRINT
  69. 690 PUT #1,N
  70. 700 IF P=1 THEN RETURN
  71. 710 N=N+1
  72. 720 GOTO 610
  73. 730 REM (Y/N), "Y":Y=0, "N":Y=1
  74. 740 Y$=INKEY$:RA=RND:IF Y$="" THEN 740
  75. 750 IF Y$<>"N" AND Y$<>"Y" THEN 740
  76. 760 IF Y$="Y" OR Y$="y" THEN LET Y=0:RETURN
  77. 770 Y=1:RETURN
  78. 780 REM START AGAIN
  79. 790 CLOSE #1:PRINT CL$:GOTO 100
  80. 800 REM LIST ENTRIES
  81. 810 PRINT CL$
  82. 820 PRINT "Press <SPACE> to stop and start listing.":PRINT
  83. 830 INPUT "At which number do you wish to start the listing";N1
  84. 840 IF N1>=N THEN PRINT "Number may not be larger than";N-1:GOTO 830
  85. 850 FOR B=N1 TO N-1
  86. 860 GET #1,B
  87. 870 PRINT B,A$;" ";E$
  88. 880 U$=INKEY$:IF U$<>" " THEN 930
  89. 890 PRINT "<SPACE> to continue, Q to quit.";
  90. 900 U$=INKEY$:IF U$<>" " AND U$<>"Q" THEN 900
  91. 910 PRINT
  92. 920 IF U$="Q" THEN RETURN
  93. 930 NEXT B
  94. 940 IF P=1 THEN RETURN
  95. 950 PRINT:PRINT "Press any key to continue."
  96. 960 K$=INKEY$:IF K$="" THEN 960
  97. 970 RETURN
  98. 980 REM CORRECT AN ENTRY
  99. 990 PRINT:PRINT "Use L option to list words so that you know the reference number.":PRINT
  100. 1000 PRINT "Use Q to Quit.":PRINT
  101. 1010 INPUT "Enter refernce number/L/Q:",Z$
  102. 1020 IF Z$="Q" THEN RETURN
  103. 1030 IF Z$="L" THEN LET P=1:GOSUB 800:P=0:PRINT:PRINT:GOTO 1010
  104. 1040 REF=VAL(Z$)
  105. 1050 IF REF>N-1 THEN PRINT "Number may not be larger than";N-1:PRINT:GOTO 980
  106. 1060 PRINT:PRINT "Is this the entry you wish to change?"
  107. 1070 GET #1,REF
  108. 1080 PRINT REF,A$;" ";E$;"  (Y/N)?";:GOSUB 730:PRINT:PRINT
  109. 1090 IF Y=1 THEN RETURN
  110. 1100 PRINT L$;" word:  ";
  111. 1110 INPUT "",H$
  112. 1120 IF H$="Q" THEN RETURN
  113. 1130 INPUT "ENGLISH word:  ",I$
  114. 1140 IF I$="Q" THEN RETURN
  115. 1150 LSET F$=CHR$(255)
  116. 1160 LSET A$=H$
  117. 1170 LSET E$=I$
  118. 1180 PUT #1,REF
  119. 1190 RETURN
  120. 1200 REM CONTINUE SAME FILE
  121. 1210 PRINT CL$
  122. 1220 C1=0:C2=0
  123. 1230 RETURN
  124. $=H$
  125. 1170 LSET E$=I$
  126. 1180 PUT #1,REF
  127. 1190 RETURN
  128. 1200 REM CONTINUE SAME FILE
  129. 1210 PRINT CL$