home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / EDUCATIN / HEBREW.LBR / DRILL.BZS / DRILL.BAS
BASIC Source File  |  2000-06-30  |  10KB  |  321 lines

  1. 100 REM ***********************************************************
  2. 110 REM *                      DABAR 1.0                          *
  3. 150 REM *           HEBREW VOCABULARY DRILL SYSTEM                *
  4. 200 REM *                                                         *
  5. 250 REM * COPYRIGHT 1986 BY DANIEL R. CRIDER                      *
  6. 300 REM *      THIS PROGRAM IS RELEASED INTO THE PUBLIC DOMAIN    *
  7. 350 REM * ON A SHAREWARE BASIS. PLEASE SEND $10 TO DANIEL CRIDER  *
  8. 400 REM * FOR THE RIGHT TO USE THIS PROGRAM. THIS PROGRAM IS NOT  *
  9. 450 REM * TO BE RE-SOLD OR RE-RELEASED WITH ANY COMMERCIAL        *
  10. 475 REM * PACKAGE OR PRODUCT.                                     *
  11. 500 REM * FOR NOTICE OF OTHER RIGHTS AND RESTRICTIONS PLEASE      *
  12. 550 REM * SEE THE FILE DABAR.DOC WHICH SHOULD BE SUPPLIED WITH    *
  13. 600 REM * THIS PROGRAM. PLEASE MAIL YOUR PAYMENT AND ANY COMMENTS *
  14. 950 REM * TO:                                                     *
  15. 1000 REM *                                                        *
  16. 1050 REM *       DANIEL CRIDER                                     *
  17. 1070 REM *       6604 CERVANTES                                    *
  18. 1100 REM *       FT. WORTH, TEXAS 76133                            * 
  19. 1150 REM *                                                         *
  20. 1600 REM ************  SET UP ARRAYS
  21. 1650 DIM LI(30),US(30)
  22. 1700 ML=0
  23. 1750 DIM W$(9),W1$(9),W2$(9),WD(3,9)
  24. 1800 DIM CONS$(44,7), CN$(23)
  25. 1850 DIM VOW$(12,3)
  26. 1900 DIM FIN$(4,10)
  27. 1950 GOSUB 4750
  28. 2000 REM ************  LOAD ALPHABET
  29. 2005 PRINT
  30. 2010 PRINT TAB(36);"DABAR 1.0"
  31. 2020 PRINT
  32. 2030 PRINT TAB(23);"COPYRIGHT 1986 BY DANIEL R. CRIDER"
  33. 2040 PRINT
  34. 2050 OPEN "I",1,"LETTERS.BAS"
  35. 2100 FOR I=1 TO 44
  36. 2150 PRINT "PLEASE STANDBY.....LOADING HEBREW CONSONANTS ";I
  37. 2200 GOSUB 5150
  38. 2250 FOR J=1 TO 7
  39. 2300 LINE INPUT#1,AX$
  40. 2350 CONS$(I,J)=MID$(AX$,13,8)
  41. 2400 NEXT J
  42. 2450 NEXT I
  43. 2500 PRINT
  44. 2550 FOR I=1 TO 12
  45. 2600 PRINT "...................LOADING HEBREW VOWELS ";I
  46. 2650 GOSUB 5150
  47. 2700 FOR J=1 TO 3
  48. 2750 LINE INPUT#1,AX$
  49. 2800 VOW$(I,J)=MID$(AX$,13,8)
  50. 2850 NEXT J
  51. 2900 NEXT I
  52. 2950 PRINT
  53. 3000 FOR I=1 TO 4
  54. 3050 PRINT "...................LOADING SPECIAL CHARACTERS ";I
  55. 3100 GOSUB 5150 
  56. 3150 FOR J=1 TO 10
  57. 3200 LINE INPUT#1,AX$
  58. 3250 FIN$(I,J)=MID$(AX$,13,8)
  59. 3300 NEXT J
  60. 3350 NEXT I
  61. 3400 CLOSE #1
  62. 3450 FOR I=1 TO 23:READ CN$(I):NEXT I
  63. 3500 PRINT
  64. 3550 PRINT
  65. 3600 PRINT "ENTER SOME NUMBER FOR THE RANDOM SEED"
  66. 3650 PRINT "THE SAME NUMBER USED EACH TIME WILL GIVE THE SAME DRILLS"
  67. 3700 RANDOMIZE
  68. 3750 REM ************  OPEN VOCABULARY FILE
  69. 3800 PRINT
  70. 3850 PRINT "PLEASE STANDBY...SCANNING VOCABULARY FILE"
  71. 3900 OPEN "R",#1,"VOCAB",124
  72. 3950 FIELD #1,2 AS W$(1),2 AS W$(2),2 AS W$(3),2 AS W$(4),2 AS W$(5),2 AS W$(6),2 AS W$(7),2 AS W$(8),2 AS W$(9),106 AS Y$
  73. 4000 FIELD #1,18 AS Y3$,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),88 AS Y5$    
  74. 4050 FIELD #1,36 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),70 AS DF$
  75. 4100 LR=1
  76. 4150 DL=0
  77. 4200 GET #1,LR
  78. 4250 IF EOF(1) GOTO 4500
  79. 4300 WD(2,1)=CVI(W1$(1))
  80. 4350 IF WD(2,1)=99 THEN DL=DL+1
  81. 4400 LR=LR+1
  82. 4450 GOTO 4200
  83. 4500 LR=LR-1
  84. 4550 GOTO 5850
  85. 4600 REM ************ RING BELL CODE
  86. 4650 PRINT CHR$(7);CHR$(7);
  87. 4700 RETURN
  88. 4750 REM ************  CLEAR SCREEN CODE
  89. 4850 PRINT CHR$(26)
  90. 4900 RETURN
  91. 5150 REM ************  CURSOR UP SCREEN CODE
  92. 5250 PRINT CHR$(11);
  93. 5300 RETURN
  94. 5500 REM ************ CURSOR DOWN SCREEN CODE
  95. 5600 PRINT CHR$(10);
  96. 5650 RETURN
  97. 5850 REM ************  DISPLAY MENU
  98. 5900 SU=0
  99. 5950 GOSUB 4750
  100. 6000 PRINT TAB(22);"CURRENTLY ";LR-DL;" VOCABULARY WORDS ON FILE"
  101. 6050 PRINT
  102. 6100 PRINT
  103. 6150 PRINT TAB(35);"DABAR 1.0"
  104. 6160 PRINT TAB(25);"HEBREW VOCABULARY DRILL SYSTEM"
  105. 6170 PRINT TAB(34);"DRILL PROGRAM"
  106. 6175 PRINT TAB(35);"MASTER MENU"
  107. 6200 PRINT
  108. 6300 PRINT TAB(25);"1-- REVIEW LAST X WORDS"
  109. 6350 PRINT TAB(25);"2-- REVIEW ENTIRE VOCABULARY"
  110. 6400 PRINT TAB(25);"3-- REVIEW ENTIRE VOCABULARY--"
  111. 6450 PRINT TAB(25);"    --CONCENTRATE ON LAST X WORDS"
  112. 6600 PRINT TAB(25);"4-- END PROGRAM"
  113. 6650 PRINT
  114. 6700 PRINT
  115. 6750 PRINT TAB(28);"PLEASE ENTER YOUR CHOICE ";
  116. 6800 INPUT M
  117. 6850 IF M>4 OR M<1 THEN 6750
  118. 6900 ON M GOTO 17450,18650,22100,6950
  119. 6950 REM ************  END PROGRAM
  120. 7000 PRINT "READY TO QUIT? (Y OR N) ";
  121. 7050 INPUT X$
  122. 7100 IF X$<>"Y" AND X$<>"N" THEN 7000
  123. 7150 IF X$="N" THEN 5850
  124. 7200 CLOSE #1
  125. 7250 SYSTEM
  126. 17450 REM ************  REVIEW LAST X WORDS
  127. 17500 GOSUB 4750
  128. 17550 PRINT "ENTER THE NUMBER OF YOUR MOST RECENT VOCABULARY WORDS YOU WISH TO REVIEW"
  129. 17600 INPUT "ENTER A 0 TO RETURN TO THE MAIN MENU ";RX
  130. 17650 IF RX=0 THEN 5850
  131. 17700 RZ=RX
  132. 17750 IF RX>30 THEN RZ=30
  133. 17800 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0
  134. 17850 SS=0:SR=0
  135. 17900 PRINT "ENTER HALT TO RETURN TO MAIN MENU"
  136. 17950 PRINT "ENTER SCORE FOR YOUR SCORE"
  137. 18000 I=INT(RND*15)+1
  138. 18050 IF I>4 AND I<8 THEN 18500 
  139. 18100 TR=INT(RND*RX)+1
  140. 18150 TR=TR+(LR-RX)
  141. 18200 FOR I=1 TO RZ
  142. 18250 IF US(I)=TR THEN 18100
  143. 18300 NEXT I
  144. 18350 GOSUB 23300
  145. 18400 GOSUB 20250
  146. 18450 GOTO 18000
  147. 18500 REM ********** CALL MISS LIST ******
  148. 18550 GOSUB 19550
  149. 18600 GOTO 18000
  150. 18650 REM ************  REVIEW ENTIRE VOCABULARY
  151. 18700 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0
  152. 18750 SS=0:SR=0
  153. 18800 RZ=30
  154. 18850 PRINT "ENTER HALT TO RETURN TO MAIN MENU"
  155. 18900 PRINT "ENTER SCORE FOR YOUR SCORE"
  156. 18950 I=INT(RND*15)+1
  157. 19000 IF I>4 AND I<8 THEN 19400
  158. 19050 TR=INT(RND*LR)+1
  159. 19100 FOR I=1 TO 30
  160. 19150 IF US(I)=TR THEN 18950
  161. 19200 NEXT I
  162. 19250 GOSUB 23300
  163. 19300 GOSUB 20250
  164. 19350 GOTO 18950
  165. 19400 REM ********** CALL MISS LIST ******
  166. 19450 GOSUB 19550
  167. 19500 GOTO 18950
  168. 19550 REM ************  GET ONE OFF OF MISS LIST
  169. 19600 IF ML=0 THEN RETURN
  170. 19650 MM=1
  171. 19700 I=INT(RND*ML)+1
  172. 19750 TR=LI(I)
  173. 19800 MI=I
  174. 19850 GOSUB 23300
  175. 19900 GOSUB 20250
  176. 19950 MM=0
  177. 20000 RETURN    
  178. 20050 REM SCORE **********************************************
  179. 20100 PRINT "OUT OF ";SS-1;" WORDS YOU HAVE GOTTEN ";SR;" RIGHT FOR A"
  180. 20150 PRINT "GRADE OF ";((SR/(SS-1))*100)
  181. 20200 RETURN
  182. 20250 REM ******************** TRY THE WORD **************************
  183. 20300 SS=SS+1
  184. 20350 UL=UL+1
  185. 20400 IF UL=LR THEN FOR I=1 TO 30:US(I-1)=0:NEXT I:UL=0
  186. 20450 IF UL=RZ THEN FOR I=2 TO RZ:US(I-1)=US(I):NEXT I:UL=UL-1
  187. 20500 US(UL)=TR
  188. 20550 GOSUB 4750
  189. 20600 IF SS<>1 THEN PRINT "GRADE CURRENTLY ";INT((SR/(SS-1))*100)
  190. 20650 GOSUB 39550
  191. 20700 PRINT
  192. 20750 PRINT "DEFINITION IS...";
  193. 20800 INPUT AX$
  194. 20810 IF AX$="OR" OR AX$="**OR**" THEN 20800
  195. 20850 IF AX$="SCORE" THEN GOSUB 20050:GOTO 20700
  196. 20900 IF AX$="HALT" THEN 5850 
  197. 20950 IF AX$="" OR AX$=" " THEN 21550
  198. 21000 X=INSTR(DF$,AX$)
  199. 21050 IF X=0 THEN 21550
  200. 21100 PRINT "*** CORRECT *** ";DF$
  201. 21150 IF MA=0 THEN SR=SR+1
  202. 21200 IF MM=0 THEN 21350
  203. 21250 FOR IJ=MI TO ML-1:LI(IJ)=LI(IJ+1):NEXT IJ
  204. 21300 ML=ML-1
  205. 21350 FOR I=1 TO 500:NEXT I
  206. 21400 IF MA<>0 THEN MA=MA-1:GOTO 20550
  207. 21450 GOTO 21500
  208. 21500 RETURN
  209. 21550 PRINT "*** INCORRECT ANSWER ***"
  210. 21600 GOSUB 4600
  211. 21650 MA=2
  212. 21700 IF KY$="N" THEN MA=1
  213. 21750 PRINT "DEFINITION IS...";DF$
  214. 21800 ML=ML+1
  215. 21810 IF ML>30 THEN ML=30
  216. 21850 LI(ML)=TR
  217. 21900 PRINT "STRIKE ANY KEY TO CONTINUE"
  218. 21950 X$=INKEY$
  219. 22000 IF X$="" THEN 21950
  220. 22050 GOTO 20250
  221. 22100 REM ************  REVIEW ENTIRE VOCABULARY--CONCENTRATE ON LAST X WORDS
  222. 22150 GOSUB 4750
  223. 22200 PRINT "ENTER THE NUMBER OF YOUR MOST RECENT VOCABULARY WORDS YOU WISH TO REVIEW"
  224. 22250 INPUT "ENTER A 0 TO RETURN TO THE MAIN MENU ";RX
  225. 22300 IF RX=0 THEN 5850
  226. 22350 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0
  227. 22400 RZ=30
  228. 22450 SS=0:SR=0
  229. 22500 PRINT "ENTER HALT TO RETURN TO MAIN MENU"
  230. 22550 PRINT "ENTER SCORE FOR YOUR SCORE"
  231. 22600 I=INT(RND*15)+1
  232. 22650 IF I>4 AND I<8 THEN 23150
  233. 22700 IF I>7 AND I<10 THEN TR=INT(RND*LR)+1:GOTO 22850
  234. 22750 TR=INT(RND*RX)+1
  235. 22800 TR=TR+(LR-RX)
  236. 22850 FOR I=1 TO 30
  237. 22900 IF US(I)=TR THEN 22750
  238. 22950 NEXT I
  239. 23000 GOSUB 23300
  240. 23050 GOSUB 20250
  241. 23100 GOTO 22600
  242. 23150 REM ********** CALL MISS LIST ******
  243. 23200 GOSUB 19550
  244. 23250 GOTO 22600
  245. 23300 REM ************  READ A WORD
  246. 23350 GET #1, TR
  247. 23400 FOR I=1 TO 9
  248. 23450 WD(1,I)=CVI(W$(I))
  249. 23500 WD(2,I)=CVI(W1$(I))
  250. 23550 WD(3,I)=CVI(W2$(I))
  251. 23600 NEXT I
  252. 23650 IF WD(2,1)=99 THEN TR=TR+1:GOTO 23350
  253. 23700 RETURN
  254. 39550 REM ************  DISPLAY WORD ROUTINE
  255. 39600 FOR I = 1 TO 8
  256. 39650 IF WD(2,I)=43 AND WD(2,I+1)=43 THEN WL=I-1:GOTO 39750
  257. 39700 NEXT I
  258. 39750 Z=WD(2,1)
  259. 39800 TX=INT((9-WL)/2)*8
  260. 39850 PRINT TAB(TX);
  261. 39900 PRINT "   ";
  262. 39950 FOR I=1 TO WL
  263. 40000 Z=WD(1,I)
  264. 40050 PRINT VOW$(Z,3);
  265. 40100 NEXT I
  266. 40150 PRINT
  267. 40200 REM CALL POINT FOR NEW WORD
  268. 40250 FOR J=1 TO 7
  269. 40300 PRINT TAB(TX);
  270. 40350 FOR I=0 TO WL
  271. 40400 Z=WD(2,I)
  272. 40450 IF I<>0 THEN 41000
  273. 40500 Z2=WD(2,1)
  274. 40550 IF Z2<>18 AND Z2<>25 AND Z2<>30 AND Z2<>32 THEN 40950
  275. 40600 Z2=WD(3,1)
  276. 40650 IF J<4 OR J>6 THEN 40950
  277. 40700 Z3$=VOW$(Z2,J-3)
  278. 40750 Z4$=MID$(Z3$,4,3)
  279. 40800 PRINT Z4$;
  280. 40850 GOTO 41000
  281. 40900 Z=WD(2,1)
  282. 40950 PRINT "   ";
  283. 41000 IF I<>1 THEN 41350
  284. 41050 IF Z<>18 AND Z<>25 AND Z<>30 AND Z<>32 THEN 41350
  285. 41100 IF Z=18 THEN PRINT FIN$(1,J);
  286. 41150 IF Z=25 THEN PRINT FIN$(2,J);
  287. 41200 IF Z=30 THEN PRINT FIN$(3,J);
  288. 41250 IF Z=32 THEN PRINT FIN$(4,J);
  289. 41300 GOTO 41400
  290. 41350 PRINT CONS$(Z,J);
  291. 41400 NEXT I
  292. 41450 PRINT
  293. 41500 NEXT J
  294. 41550 FOR J=0 TO 3
  295. 41600 PRINT TAB(TX);
  296. 41650 FOR I=0 TO WL
  297. 41700 Z2=WD(3,I)
  298. 41750 IF I<>0 THEN 41900
  299. 41800 PRINT "   ";
  300. 41850 GOTO 42400
  301. 41900 IF I<>1 THEN GOTO 42300
  302. 41950 Z=WD(2,1)
  303. 42000 IF Z<>18 AND Z<>25 AND Z<>30 AND Z<>32 THEN 42300
  304. 42050 IF Z=18 THEN PRINT FIN$(1,J+7);
  305. 42100 IF Z=25 THEN PRINT FIN$(2,J+7);
  306. 42150 IF Z=30 THEN PRINT FIN$(3,J+7);
  307. 42200 IF Z=32 THEN PRINT FIN$(4,J+7);
  308. 42250 GOTO 42400
  309. 42300 IF J=0 THEN PRINT "        ";
  310. 42350 IF J<>0 THEN PRINT VOW$(Z2,J);
  311. 42400 NEXT I
  312. 42450 PRINT
  313. 42500 NEXT J
  314. 42550 PRINT
  315. 42600 RETURN
  316. 45050 DATA "ALEP","BET","GIMEL","DALET","HE","WAW","ZAYIN","HET","TET","YOD"
  317. 45100 DATA "KAP","LAMED","MEM","NUN","SAMEK","AYIN","PE","SADE","KOP","RES"
  318. 45150 DATA "SEEN","SHEEN","TAW"
  319. ET","TET","YOD"
  320. 45100 DATA "KAP","LAMED","MEM","NUN","SAMEK","AYIN","PE","SADE","KOP","RES"
  321. 45150