home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / educ / lang2.zip / GREEK.ZIP / DRILLG.BAS < prev    next >
BASIC Source File  |  1987-05-04  |  13KB  |  378 lines

  1. 100 REM  ***********************************************************
  2. 150 REM  *                      RHEMA 1.0                           *
  3. 200 REM  *            GREEK VOCABULARY DRILL SYSTEM                 *
  4. 250 REM  *                 DRILL SUB-PROGRAM                        *
  5. 300 REM  *  COPYRIGHT 1987 BY DANIEL R. CRIDER                      *
  6. 350 REM  *       THIS PROGRAM IS RELEASED INTO THE PUBLIC DOMAIN    *
  7. 400 REM  *  ON A SHAREWARE BASIS. PLEASE SEND $15 TO DANIEL CRIDER  *
  8. 450 REM  *  FOR THE RIGHT TO USE THIS PROGRAM. THIS PROGRAM IS NOT  *
  9. 500 REM  *  TO BE RE-SOLD OR RE-RELEASED WITH ANY COMMERCIAL        *
  10. 550 REM  *  PACKAGE OR PROGRAM.                                     *
  11. 600 REM  *  FOR NOTICE OF OTHER RIGHTS AND RESTRICTIONS PLEASE      *
  12. 650 REM  *  SEE THE FILE RHEMA.DOC WHICH SHOULD BE SUPPLIED WITH    *
  13. 700 REM  *  THIS PROGRAM. PLEASE MAIL YOUR PAYMENT AND ANY COMMENTS *
  14. 750 REM  *  TO:                                                     *
  15. 900 REM  *        DANIEL CRIDER                                     *
  16. 950 REM  *        6604 CERVANTES AVE                                *
  17. 1000 REM *        FT. WORTH, TEXAS 76133                            * 
  18. 1050 REM *                                                          *
  19. 1070 REM ************************************************************
  20. 1100 REM ************  SET UP ARRAYS
  21. 1150 DIM LI(30),US(30)
  22. 1160 DIM GC(6)
  23. 1170 FOR I=1 TO 6:GC(I)=0:NEXT I
  24. 1200 ML=0
  25. 1250 DIM W1$(12),W2$(12),WD(2,12)
  26. 1300 DIM LETT$(30,9),LN$(30),CN$(15)
  27. 1350 DIM ACC$(15,3)
  28. 1400 DIM EG$(30),GZ$(6)
  29. 1450 GOSUB 4700
  30. 1500 REM ************  LOAD ALPHABET
  31. 1550 PRINT
  32. 1600 PRINT TAB(36);"RHEMA 1.0"
  33. 1650 PRINT
  34. 1700 PRINT TAB(18);"     COPYRIGHT 1987 BY DANIEL R. CRIDER"
  35. 1750 PRINT
  36. 1800 OPEN "I",1,"ALPHA.BAS"
  37. 1850 FOR I=1 TO 30
  38. 1950 PRINT "PLEASE STANDBY.....LOADING GREEK LETTERS ";I
  39. 2000 GOSUB 4850
  40. 2050 FOR J=1 TO 9
  41. 2100 LINE INPUT#1,AX$
  42. 2150 LETT$(I,J)=MID$(AX$,13,6)
  43. 2200 NEXT J
  44. 2250 NEXT I
  45. 2300 PRINT
  46. 2350 FOR I=1 TO 15
  47. 2450 PRINT "...................LOADING GREEK ACCENTS ";I
  48. 2500 GOSUB 4850
  49. 2550 FOR J=1 TO 3
  50. 2600 LINE INPUT#1,AX$
  51. 2650 ACC$(I,J)=MID$(AX$,13,6)
  52. 2700 NEXT J
  53. 2750 NEXT I
  54. 2800 PRINT
  55. 2850 CLOSE #1
  56. 2900 FOR I=1 TO 30:READ LN$(I):NEXT I
  57. 2950 FOR I=1 TO 15:READ CN$(I):NEXT I
  58. 3000 FOR I=1 TO 30:READ EG$(I):NEXT I
  59. 3020 FOR I=1 TO 6:READ GZ$(I):NEXT I
  60. 3050 PRINT
  61. 3100 PRINT
  62. 3150 PRINT "ENTER SOME NUMBER FOR THE RANDOM SEED"
  63. 3200 PRINT "THE SAME NUMBER USED EACH TIME WILL GIVE THE SAME DRILLS"
  64. 3250 RANDOMIZE
  65. 3300 REM ************  OPEN VOCABULARY FILE
  66. 3350 PRINT
  67. 3400 PRINT "PLEASE ENTER THE NAME OF YOUR VOCABULARY FILE"
  68. 3450 PRINT "STRIKE THE CARRIAGE RETURN KEY ONLY IF YOU WISH TO"
  69. 3500 PRINT "USE THE DEFAULT NAME OF VOCAB"
  70. 3550 PRINT "VOCABULARY FILE NAME.....";
  71. 3600 INPUT AX$
  72. 3650 IF AX$="" THEN AX$="VOCAB"
  73. 3700 GOSUB 4850
  74. 3750 PRINT "VOCABULARY FILE NAME.....";AX$
  75. 3800 AX$=AX$ + ".GRK"
  76. 3850 PRINT "PLEASE STANDBY...SCANNING VOCABULARY FILE"
  77. 3900 OPEN "R",#1,AX$,125
  78. 3950 FIELD #1,2 AS W1$(1),2 AS W1$(2),2 AS W1$(3),2 AS W1$(4),2 AS W1$(5),2 AS W1$(6),2 AS W1$(7),2 AS W1$(8),2 AS W1$(9),2 AS W1$(10),2 AS W1$(11),2 AS W1$(12),101 AS Y5$
  79. 4000 FIELD #1,24 AS Y4$,2 AS W2$(1),2 AS W2$(2),2 AS W2$(3),2 AS W2$(4),2 AS W2$(5),2 AS W2$(6),2 AS W2$(7),2 AS W2$(8),2 AS W2$(9),2 AS W2$(10),2 AS W2$(11),2 AS W2$(12),2 AS KG$, 65 AS DF$
  80. 4050 LR=1
  81. 4100 DL=0
  82. 4150 GET #1,LR
  83. 4160 GZ=CVI(KG$)
  84. 4170 GC(GZ)=GC(GZ)+1
  85. 4200 IF EOF(1) GOTO 4450
  86. 4250 WD(2,1)=CVI(W2$(1))
  87. 4300 IF WD(2,1)=99 THEN DL=DL+1
  88. 4350 LR=LR+1
  89. 4400 GOTO 4150
  90. 4450 LR=LR-1
  91. 4500 GOTO 5150
  92. 4550 REM ************ RING BELL CODE
  93. 4600 PRINT CHR$(7);CHR$(7);
  94. 4650 RETURN
  95. 4700 REM ************  CLEAR SCREEN CODE
  96. 4750 PRINT CHR$(26)
  97. 4800 RETURN
  98. 4850 REM ************  CURSOR UP SCREEN CODE
  99. 4900 PRINT CHR$(11);
  100. 4950 RETURN
  101. 5000 REM ************ CURSOR DOWN SCREEN CODE
  102. 5050 PRINT CHR$(10);
  103. 5100 RETURN
  104. 5150 REM ************  DISPLAY MENU
  105. 5200 REM ************* RESET SOME VARIABLES BEFORE MENU DISPLAY
  106. 5210 LM$="N"
  107. 5250 SX$=""
  108. 5300 TX=0
  109. 5350 SU=0
  110. 5400 GOSUB 4700
  111. 5450 PRINT TAB(22);"CURRENTLY ";LR-DL;" VOCABULARY WORDS ON FILE"
  112. 5500 PRINT
  113. 5550 PRINT
  114. 5600 PRINT TAB(35);"RHEMA 1.0"
  115. 5650 PRINT TAB(25);"GREEK VOCABULARY DRILL SYSTEM"
  116. 5700 PRINT TAB(35);"DRILL SUB-PROGRAM"
  117. 5750 PRINT
  118. 5850 PRINT TAB(25);"1-- REVIEW LAST X WORDS"
  119. 5900 PRINT TAB(25);"2-- REVIEW ENTIRE VOCABULARY"
  120. 5950 PRINT TAB(25);"3-- REVIEW ENTIRE VOCABULARY--"
  121. 6000 PRINT TAB(25);"    --CONCENTRATE ON LAST X WORDS"
  122. 6150 PRINT TAB(25);"4-- END PROGRAM"
  123. 6200 PRINT
  124. 6250 PRINT
  125. 6300 PRINT TAB(28);"PLEASE ENTER YOUR CHOICE ";
  126. 6350 INPUT M
  127. 6400 IF M>4 OR M<1 THEN 6300
  128. 6410 IF M=4 THEN 6450
  129. 6412 PRINT:PRINT "DO YOU WISH TO LIMIT YOUR DRILL TO A PARTICULAR TYPE OF SPEECH? ";
  130. 6414 INPUT LM$
  131. 6416 IF LM$<>"Y" AND LM$<>"N" THEN 6412
  132. 6417 IF LM$="N" THEN 6450
  133. 6418 PRINT:PRINT
  134. 6420 PRINT "ENTER YOUR SELECTED WORD TYPE TO DRILL"
  135. 6422 PRINT "1. VERBS  2. NOUNS  3. PRONOUNS  4. ADJECTIVES  5. ADVERBS  6. OTHER"
  136. 6424 PRINT "ENTER YOUR CHOICE 1-6 ";
  137. 6426 INPUT LM
  138. 6428 IF LM<1 OR LM>6 THEN 6424
  139. 6430 IF GC(LM)=0 THEN GOSUB 4550:PRINT "BUT YOU DON'T HAVE ANY ";GZ$(LM);"S ON FILE YET!":PRINT:GOTO 6420
  140. 6450 ON M GOTO 18150,19350,22900,6500
  141. 6500 REM ************  END PROGRAM
  142. 6550 PRINT "READY TO QUIT? (Y OR N) ";
  143. 6600 INPUT X$
  144. 6650 IF X$<>"Y" AND X$<>"N" THEN 6550
  145. 6700 IF X$="N" THEN 5150
  146. 6750 CLOSE #1
  147. 6800 SYSTEM
  148. 18060 REM **************** COMPUTE JZ *********************
  149. 18065 JZ=RX
  150. 18070 IF RX>30 THEN JZ=30
  151. 18075 IF LR<30 THEN JZ=LR-10
  152. 18077 IF LM$="Y" AND GT>=30 THEN JZ=20
  153. 18080 IF LM$="Y" AND GT<30 THEN JZ=10
  154. 18085 IF JZ<5 THEN JZ=5
  155. 18090 RETURN
  156. 18110 REM ******** LIMITING OFF *********
  157. 18112 GOSUB 4550
  158. 18114 PRINT "NOT ENOUGH WORDS OF TYPE ";GZ$(LM);" IN REVEIW AREA "
  159. 18116 PRINT "TO LIMIT DRILL TO."
  160. 18118 PRINT "********** LIMITING TURNED OFF *********"
  161. 18120 INPUT "STRIKE THE RETURN KEY TO CONTINUE ";AX$
  162. 18122 LM$="N"
  163. 18124 RETURN
  164. 18130 REM ************** VOCABUALRY SCAN **********
  165. 18132 GT=0
  166. 18134 PRINT "STANDBY FOR VOCABULARY SCAN"
  167. 18136 FOR I=LR-RX TO LR
  168. 18138 GET #1,I
  169. 18140 GZ=CVI(KG$)
  170. 18142 IF GZ=LM THEN GT=GT+1
  171. 18144 NEXT I
  172. 18146 RETURN
  173. 18150 REM ************  REVIEW LAST X WORDS
  174. 18200 GOSUB 4700
  175. 18250 PRINT "ENTER THE NUMBER OF YOUR MOST RECENT VOCABULARY WORDS YOU WISH TO REVIEW"
  176. 18300 INPUT "ENTER A 0 TO RETURN TO THE MAIN MENU ";RX
  177. 18350 IF RX=0 THEN 5150
  178. 18460 IF LM$="N" THEN 18500
  179. 18470 GOSUB 18130
  180. 18480 IF GT<15 THEN GOSUB 18110
  181. 18500 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0
  182. 18550 SS=0:SR=0
  183. 18570 GOSUB 18060
  184. 18600 PRINT "ENTER HALT TO RETURN TO MAIN MENU"
  185. 18650 PRINT "ENTER SCORE FOR YOUR SCORE"
  186. 18700 I=INT(RND*15)+1
  187. 18750 IF I>4 AND I<8 THEN 19200 
  188. 18800 TR=INT(RND*RX)+1
  189. 18850 TR=TR+(LR-RX)
  190. 18900 FOR I=1 TO JZ
  191. 18950 IF US(I)=TR THEN 18800
  192. 19000 NEXT I
  193. 19050 GOSUB 24100
  194. 19060 IF LM$="Y" AND GZ<>LM THEN 18800
  195. 19100 GOSUB 20950
  196. 19150 GOTO 18700
  197. 19200 REM ********** CALL MISS LIST ******
  198. 19250 GOSUB 20250
  199. 19260 IF TR=RW THEN 18800
  200. 19300 GOTO 18700
  201. 19350 REM ************  REVIEW ENTIRE VOCABULARY
  202. 19400 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0
  203. 19450 SS=0:SR=0
  204. 19500 RX=30
  205. 19502 IF LM$="N" THEN 19550
  206. 19510 GT=GC(LM)
  207. 19515 IF GT<15 THEN GOSUB 18110
  208. 19520 GOSUB 18060
  209. 19550 PRINT "ENTER HALT TO RETURN TO MAIN MENU"
  210. 19600 PRINT "ENTER SCORE FOR YOUR SCORE"
  211. 19650 I=INT(RND*15)+1
  212. 19700 IF I>4 AND I<8 THEN 20100
  213. 19750 TR=INT(RND*LR)+1
  214. 19800 FOR I=1 TO JZ
  215. 19850 IF US(I)=TR THEN 19650
  216. 19900 NEXT I
  217. 19950 GOSUB 24100
  218. 19960 IF LM$="Y" AND GZ<>LM THEN 19750
  219. 20000 GOSUB 20950
  220. 20050 GOTO 19650
  221. 20100 REM ********** CALL MISS LIST ******
  222. 20150 GOSUB 20250
  223. 20170 IF TR=RW THEN 19750
  224. 20200 GOTO 19650
  225. 20250 REM ************  GET ONE OFF OF MISS LIST
  226. 20300 IF ML=0 THEN RETURN
  227. 20350 MM=1
  228. 20400 I=INT(RND*ML)+1
  229. 20450 TR=LI(I)
  230. 20500 MI=I
  231. 20550 GOSUB 24100
  232. 20600 GOSUB 20950
  233. 20650 MM=0
  234. 20700 RETURN    
  235. 20750 REM SCORE **********************************************
  236. 20800 PRINT "OUT OF ";SS-1;" WORDS YOU HAVE GOTTEN ";SR;" RIGHT FOR A"
  237. 20850 PRINT "GRADE OF ";((SR/(SS-1))*100)
  238. 20900 RETURN
  239. 20950 REM ******************** TRY THE WORD **************************
  240. 21000 SS=SS+1
  241. 21050 UL=UL+1
  242. 21100 IF UL=LR THEN FOR I=1 TO 30:US(I-1)=0:NEXT I:UL=0
  243. 21150 IF UL=JZ THEN FOR I=2 TO JZ:US(I-1)=US(I):NEXT I:UL=UL-1
  244. 21200 US(UL)=TR
  245. 21250 GOSUB 4700
  246. 21300 IF SS<>1 THEN PRINT "GRADE CURRENTLY ";INT((SR/(SS-1))*100)
  247. 21350 GOSUB 39650
  248. 21400 PRINT
  249. 21450 PRINT "DEFINITION IS...";
  250. 21500 INPUT AX$
  251. 21550 IF AX$="OR" OR AX$="**OR**" THEN 21500
  252. 21600 IF AX$="SCORE" THEN GOSUB 20750:GOTO 21400
  253. 21650 IF AX$="HALT" THEN 5150 
  254. 21700 IF AX$="" OR AX$=" " THEN 22300
  255. 21750 X=INSTR(DF$,AX$)
  256. 21800 IF X=0 THEN 22300
  257. 21850 PRINT "*** CORRECT *** ";DF$
  258. 21900 IF MA=0 THEN SR=SR+1
  259. 21950 IF MM=0 THEN 22100
  260. 22000 FOR IJ=MI TO ML-1:LI(IJ)=LI(IJ+1):NEXT IJ
  261. 22050 ML=ML-1
  262. 22100 FOR I=1 TO 500:NEXT I
  263. 22150 IF MA<>0 THEN MA=MA-1:GOTO 21250
  264. 22200 GOTO 22250
  265. 22250 RETURN
  266. 22300 PRINT "*** INCORRECT ANSWER ***"
  267. 22350 GOSUB 4550
  268. 22400 MA=1
  269. 22410 RW=TR
  270. 22450 IF KY$="N" THEN MA=1
  271. 22500 PRINT "DEFINITION IS...";DF$
  272. 22550 ML=ML+1
  273. 22600 IF ML>30 THEN ML=30
  274. 22650 LI(ML)=TR
  275. 22700 PRINT "STRIKE ANY KEY TO CONTINUE"
  276. 22750 X$=INKEY$
  277. 22800 IF X$="" THEN 22750
  278. 22850 GOTO 20950
  279. 22900 REM ************  REVIEW ENTIRE VOCABULARY--CONCENTRATE ON LAST X WORDS
  280. 22950 GOSUB 4700
  281. 23000 PRINT "ENTER THE NUMBER OF YOUR MOST RECENT VOCABULARY WORDS YOU WISH TO REVIEW"
  282. 23050 INPUT "ENTER A 0 TO RETURN TO THE MAIN MENU ";RX
  283. 23100 IF RX=0 THEN 5150
  284. 23150 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0
  285. 23250 SS=0:SR=0
  286. 23251 IF LM$="N" THEN 23300
  287. 23253 GOSUB 18130
  288. 23255 IF GT<15 THEN GOSUB 18110
  289. 23260 GOSUB 18060
  290. 23300 PRINT "ENTER HALT TO RETURN TO MAIN MENU"
  291. 23350 PRINT "ENTER SCORE FOR YOUR SCORE"
  292. 23400 I=INT(RND*15)+1
  293. 23450 IF I>4 AND I<8 THEN 23950
  294. 23500 IF I>7 AND I<10 THEN TR=INT(RND*LR)+1:GOTO 23650
  295. 23550 TR=INT(RND*RX)+1
  296. 23600 TR=TR+(LR-RX)
  297. 23650 FOR I=1 TO JZ
  298. 23700 IF US(I)=TR THEN 23550
  299. 23750 NEXT I
  300. 23800 GOSUB 24100
  301. 23810 IF LM$="Y" AND GZ<>LM THEN 23550
  302. 23850 GOSUB 20950
  303. 23900 GOTO 23400
  304. 23950 REM ********** CALL MISS LIST ******
  305. 24000 GOSUB 20250
  306. 24020 IF TR=RW THEN 23550
  307. 24050 GOTO 23400
  308. 24100 REM ************  READ A WORD
  309. 24150 GET #1, TR
  310. 24200 EL$=""
  311. 24250 FOR I=1 TO 12
  312. 24300 WD(1,I)=CVI(W1$(I))
  313. 24350 WD(2,I)=CVI(W2$(I))
  314. 24400 EL$=EL$ + EG$(WD(2,I))
  315. 24450 NEXT I
  316. 24455 X=INSTR(EL$,"GG")
  317. 24456 IF X=0 THEN 24460
  318. 24457 MID$(EL$,X,2)="NG"
  319. 24460 IF WD(1,1)<> 2 AND WD(1,1)<>10 AND WD(1,1)<>11 AND WD(1,1)<>12 AND WD(1,2)<> 2 AND WD(1,2)<>10 AND WD(1,2)<> 11 AND WD(1,2)<> 12 THEN 24470
  320. 24461 Z=WD(2,1)
  321. 24462 IF Z=1 OR Z=2 OR Z=6 OR Z=8 OR Z=9 OR Z=11 OR Z=17 OR Z=23 OR Z=27 OR Z=28 THEN EL$="H" + EL$:GOTO 24470
  322. 24464 EL$=MID$(EL$,1,1) + "H" + MID$(EL$,2,11)
  323. 24470 GZ=CVI(KG$)
  324. 24500 IF WD(2,1)=99 THEN TR=TR+1:GOTO 24150
  325. 24550 RETURN
  326. 39300 REM ************  ERROR CONTROL
  327. 39350 PRINT "ERROR IS ";ERR
  328. 39400 IF ERR=61 THEN PRINT "YOUR DISK IS OUT OF SPACE"
  329. 39450 PRINT "PRESS ANY KEY TO CONTINUE"
  330. 39500 X$=INKEY$
  331. 39550 IF X$="" THEN 39500
  332. 39600 RESUME NEXT
  333. 39650 REM ************  DISPLAY WORD ROUTINE
  334. 39700 FOR I = 1 TO 11
  335. 39750 IF WD(2,I)=29 AND WD(2,I+1)=29 THEN WL=I-1:GOTO 39850
  336. 39800 NEXT I
  337. 39810 IF WD(2,12)=29 THEN WL=11
  338. 39820 IF WD(2,12)<>29 THEN WL=12
  339. 39850 Z=WD(2,1)
  340. 39900 TX=INT((12-WL)/2)*6
  341. 39950 SX$=""
  342. 40000 IF WL<12 THEN SX$=" "
  343. 40050 FOR J=1 TO 3
  344. 40100 PRINT TAB(TX);
  345. 40150 FOR I=1 TO WL
  346. 40200 Z=WD(1,I)
  347. 40250 PRINT ACC$(Z,J);
  348. 40300 PRINT SX$;
  349. 40350 NEXT I
  350. 40400 NEXT J
  351. 40450 PRINT
  352. 40500 REM CALL POINT FOR NEW WORD
  353. 40550 FOR J=1 TO 9
  354. 40600 PRINT TAB(TX);
  355. 40650 FOR I=1 TO WL
  356. 40700 Z=WD(2,I)
  357. 40750 PRINT LETT$(Z,J);
  358. 40800 PRINT SX$;
  359. 40850 NEXT I
  360. 40900 PRINT
  361. 40950 NEXT J
  362. 41000 PRINT
  363. 41050 X=LEN(EL$)
  364. 41100 Y=40-X/2
  365. 41150 PRINT TAB(Y);EL$
  366. 41200 RETURN
  367. 43400 DATA "ALPHA","ALPHA-IOTA DIPTHONG","BETA","GAMMA","DELTA","EPSILON","ZETA"
  368. 43450 DATA "ETA","ETA-IOTA DIPTHONG","THETA","IOTA","KAPPA","LAMBDA","MU","NU"
  369. 43500 DATA "XI","OMICRON","PI","RHO","SIGMA","FINAL SIGMA","TAU","UPSILON"
  370. 43550 DATA "PHI","CHI","PSI","OMEGA","OMEGA-IOTA DIPTHONG","BLANK","HYPHEN"
  371. 43600 DATA "SMOOTH BREATH","ROUGH BREATH","ACUTE","CIRCUMFLEX","GRAVE"
  372. 43650 DATA "DIAERSIS","SMOOTH + GRAVE","SMOOTH + ACUTE", "SMOOTH + CIRC."
  373. 43700 DATA "ROUGH + GRAVE", "ROUGH + ACUTE", "ROUGH + CIRC.","CORONIS"
  374. 43750 DATA "APOSTROPHE","BLANK (NO MARK)"
  375. 43800 DATA "A","AI","B","G","D","E","Z","E","EI","TH","I","K","L","M","N"
  376. 43850 DATA "X","O","P","R","S","S","T","U","PH","CH","PS","O","OI"," ","-"
  377. 43860 DATA "VERB","NOUN","PRONOUN","ADJECTIVE","ADVERB","OTHER"
  378. ,"O","P","R","S","S","T","U","PH","CH","PS","O","OI",