home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / educ / lang2.zip / HEBREW.ZIP / HEBREW.BAS next >
BASIC Source File  |  1987-05-04  |  31KB  |  926 lines

  1. 10  REM ----------------------------------------------------------------------
  2. 20  REM
  3. 30  REM                             DABAR 2.0
  4. 40  REM
  5. 50  REM
  6. 60  REM                  WRITTEN IN MICROSOFT BASIC 5.22
  7. 70  REM
  8. 100 REM
  9. 110 REM              BASED ON DABAR 1.0 BY DANIEL R. CRIDER
  10. 120 REM
  11. 130 REM                          COPYRIGHT 1986
  12. 140 REM
  13. 150 REM
  14. 160 REM --------------------------  SET UP ARRAYS  ----------------------------
  15. 170 CLEAR
  16. 180 GOSUB 1370
  17. 190 PRINT TAB(38) "DABAR 2.0"
  18. 200 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
  19. 210 DIM LI(30),US(30)
  20. 220 ML=0
  21. 230 DIM W$(9),W1$(9),W2#(9),WD(3,9)
  22. 240 DIM CONS$(44,7),CN$(23)
  23. 250 DIM VOW$(12,3)
  24. 260 DIM FIN$(4,10)
  25. 270 REM
  26. 280 REM -----------------------  LOAD HEBREW CHARACTERS  ----------------------
  27. 290 REM
  28. 300 PRINT:PRINT:PRINT:PRINT
  29. 310 OPEN "I",#1,"LETTERS.BAS"
  30. 320 FOR I = 1 TO 44
  31. 330 PRINT "     PLEASE STAND BY ----- LOADING HEBREW CONSONANTS [";I; "]"
  32. 340 GOSUB 1410
  33. 350 FOR J=1 TO 7
  34. 360 LINE INPUT #1,AX$
  35. 370 CONS$(I,J)=MID$(AX$,13,8)
  36. 380 NEXT J
  37. 390 NEXT I
  38. 400 PRINT
  39. 410 FOR I = 1 TO 12
  40. 420 PRINT "     ------------------------- LOADING HEBREW VOWELS [";I; "]"
  41. 430 GOSUB 1410
  42. 440 FOR J = 1 TO 3
  43. 450 LINE INPUT #1,AX$
  44. 460 VOW$(I,J)=MID$(AX$,13,8)
  45. 470 NEXT J
  46. 480 NEXT I
  47. 490 PRINT
  48. 500 FOR I = 1 TO 4
  49. 510 PRINT "     -------------------- LOADING SPECIAL CHARACTERS [";I; "]"
  50. 520 GOSUB 1410
  51. 530 FOR J = 1 TO 10
  52. 540 LINE INPUT #1,AX$
  53. 550 FIN$(I,J)=MID$(AX$,13,8)
  54. 560 NEXT J
  55. 570 NEXT I
  56. 580 CLOSE #1
  57. 590 FOR I = 1 TO 23:READ CN$(I):NEXT I
  58. 600 REM
  59. 610 REM -----------------------  RANDOMIZING  ----------------------
  60. 620 REM
  61. 630 GOSUB 1370
  62. 640 PRINT:PRINT:PRINT:PRINT
  63. 650 PRINT "     ENTER A NUMBER TO RANDOMIZE WORD SELECTION"
  64. 660 PRINT "     FOR A DIFFERENT DRILL SEQUENCE EACH TIME."
  65. 670 PRINT "     ------------------------------------------"
  66. 680 PRINT "     THE SAME NUMBER GIVES THE SAME SEQUENCE."
  67. 690 PRINT
  68. 700 RANDOMIZE
  69. 710 REM
  70. 720 REM ---------------------------  DRILL SELECTION  -------------------------
  71. 730 REM
  72. 740 GOSUB 1370
  73. 750 PRINT "_______________________________________________________________________________"
  74. 760 PRINT
  75. 770 PRINT "***  DRILL SELECTION DIRECTORY ***"
  76. 780 PRINT "_______________________________________________________________________________"
  77. 790 PRINT:PRINT
  78. 800 PRINT "     [ 1 ] THE HEBREW LETTERS               [ 11 ] VOCABULARY #1"
  79. 810 PRINT "     [ 2 ] THE HEBREW VOWELS                [ 12 ] VOCABULARY #2"
  80. 820 PRINT "     [ 3 ] THE DAGHES LENE LETTERS          [ 13 ] VOCABULARY #3"
  81. 830 PRINT "     [ 4 ] THE INSEPARABLE PREPOSITIONS     [ 14 ] VOCABULARY #4"
  82. 840 PRINT "     [ 5 ] THE COMPOSITE SHEWA              [ 15 ] VOCABULARY #5"
  83. 850 PRINT "     [ 6 ] THE INDEFINITE ARTICLE           [ 16 ] VOCABULARY #6"
  84. 860 PRINT "     [ 7 ] THE PRONOMINAL SUFFIXES          [ 17 ] VOCABULARY #7"
  85. 870 PRINT "     [ 8 ] THE PERSONAL PRONOUNS            [ 18 ] VOCABULARY #8"
  86. 880 PRINT "     [ 9 ] THE REGULAR VERB (PERFECT)       [ 19 ] VOCABULARY #9"
  87. 890 PRINT "     [ 10 ] ---------------------------     [ 20 ] VOCABULARY #10"
  88. 900 PRINT "                                            [ 21 ] EXIT TO CP/M"
  89. 910 PRINT "_______________________________________________________________________________"
  90. 920 PRINT:PRINT
  91. 930 PRINT:PRINT
  92. 940 INPUT "     WHAT IS YOUR CHOICE";CHOICE
  93. 950 IF (CHOICE = 1) THEN LET F$="VOC1"
  94. 960 IF (CHOICE = 2) THEN LET F$="VOC2"
  95. 970 IF (CHOICE = 3) THEN LET F$="VOC3"
  96. 980 IF (CHOICE = 4) THEN LET F$="VOC4"
  97. 990 IF (CHOICE = 5) THEN LET F$="VOC5"
  98. 1000 IF (CHOICE = 6) THEN LET F$="VOC6"
  99. 1010 IF (CHOICE = 7) THEN LET F$="VOC7"
  100. 1020 IF (CHOICE = 8) THEN LET F$="VOC8"
  101. 1030 IF (CHOICE = 9) THEN LET F$="VOC9"
  102. 1040 IF (CHOICE = 10) THEN LET F$="VOC10"
  103. 1050 IF (CHOICE = 11) THEN LET F$="VOC11"
  104. 1060 IF (CHOICE = 12) THEN LET F$="VOC12"
  105. 1070 IF (CHOICE = 13) THEN LET F$="VOC13"
  106. 1080 IF (CHOICE = 14) THEN LET F$="VOC14"
  107. 1090 IF (CHOICE = 15) THEN LET F$="VOC15"
  108. 1100 IF (CHOICE = 16) THEN LET F$="VOC16"
  109. 1110 IF (CHOICE = 17) THEN LET F$="VOC17"
  110. 1120 IF (CHOICE = 18) THEN LET F$="VOC18"
  111. 1130 IF (CHOICE = 19) THEN LET F$="VOC19"
  112. 1140 IF (CHOICE = 20) THEN LET F$="VOC20"
  113. 1150 IF (CHOICE = 21) THEN SYSTEM
  114. 1160 IF CHOICE<1 OR CHOICE>21 THEN 940
  115. 1170 OPEN "R",#1,F$,124
  116. 1180 GOSUB 1370
  117. 1190 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
  118. 1200 PRINT "          PLEASE STAND BY . . . SCANNING DRILL FILE."
  119. 1210 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$
  120. 1220 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$    
  121. 1230 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$
  122. 1240 LR=1
  123. 1250 DL=0
  124. 1260 GET #1,LR
  125. 1270 IF EOF(1) GOTO 1320
  126. 1280 WD(2,1)=CVI(W1$(1))
  127. 1290 IF WD(2,1)=99 THEN DL=DL+1
  128. 1300 LR=LR+1
  129. 1310 GOTO 1260
  130. 1320 LR=LR-1
  131. 1330 GOTO 3520
  132. 1340 REM ************ RING BELL CODE
  133. 1350 PRINT CHR$(7);CHR$(7);
  134. 1360 RETURN
  135. 1370 REM ************  CLEAR SCREEN CODE
  136. 1380 PRINT CHR$(26)
  137. 1390 PRINT CHR$(27) CHR$(61) CHR$(31+ROW) CHR$(31-COL);
  138. 1400 RETURN
  139. 1410 REM ************  CURSOR UP SCREEN CODE
  140. 1420 PRINT CHR$(11);
  141. 1430 RETURN
  142. 1440 REM ************ CURSOR DOWN SCREEN CODE
  143. 1450 PRINT CHR$(10);
  144. 1460 RETURN
  145. 1470 REM ************  DISPLAY MENU
  146. 1480 SU=0
  147. 1490 GOSUB 1370
  148. 1500 PRINT TAB(30); "CURRENTLY ";LR-DL;" ITEMS ON FILE."
  149. 1510 PRINT
  150. 1520 PRINT
  151. 1530 PRINT "_______________________________________________________________________________"
  152. 1540 PRINT
  153. 1550 PRINT "***  DRILL OPERATION MENU  ***"
  154. 1560 PRINT "_______________________________________________________________________________"
  155. 1570 PRINT
  156. 1580 PRINT "     [ 1 ] GO THROUGH THE ENTIRE DRILL."
  157. 1590 PRINT "     [ 2 ] REVIEW THE LAST [ ? ] ITEMS."
  158. 1600 PRINT "     [ 3 ] REVIEW ENTIRE DRILL AND CONCENTRATE ON LAST [ ? ] ITEMS"
  159. 1610 PRINT "     [ 4 ] CHOOSE ANOTHER DRILL OR END PROGRAM."
  160. 1620 PRINT "     [ 5 ] ENTER FILE UTILITY MENU."
  161. 1630 PRINT
  162. 1640 PRINT
  163. 1650 INPUT "     WHAT IS YOUR CHOICE";M
  164. 1660 IF M>5 OR M<1 THEN 1650
  165. 1670 ON M GOTO 3520,3290,4180,1680,9110
  166. 1680 REM ************  RETURN TO DRILL MENU
  167. 1690 CLOSE #1
  168. 1700 GOTO 720
  169. 1710 REM ************  ADD NEW WORDS TO VOCABULARY
  170. 1720 GOSUB 1370
  171. 1730 REM ************  SET UP CONSONANTS
  172. 1740 GOSUB 1370
  173. 1750 PRINT "ENTER NUMBER OF CONSONANTS PLEASE (ENTER 0 TO RETURN TO MENU) ";
  174. 1760 INPUT WL
  175. 1770 IF WL=0 THEN 9110
  176. 1780 IF WL<10 THEN 1960
  177. 1790 GOTO 1750
  178. 1800 REM ************  CONSONANT SELECT MENU
  179. 1810 GOSUB 1370
  180. 1820 PRINT "LIMIT IS 9 CONSONANTS"
  181. 1830 PRINT "SELECT YOUR CONSONANTS BY NUMBER"
  182. 1840 PRINT "[ 1 ]  ALEP      [ 10 ]  YOD      [ 19 ]  QOP"
  183. 1850 PRINT "[ 2 ]  BET       [ 11 ]  KAP      [ 20 ]  RES"
  184. 1860 PRINT "[ 3 ]  GIMEL     [ 12 ]  LAMED    [ 21 ]  SEEN"
  185. 1870 PRINT "[ 4 ]  DALET     [ 13 ]  MEM      [ 22 ]  SHEEN"
  186. 1880 PRINT "[ 5 ]  HE        [ 14 ]  NUN      [ 23 ]  TAW"
  187. 1890 PRINT "[ 6 ]  WAW       [ 15 ]  SAMEK    [ 24 ]  MAQQEPH -"
  188. 1900 PRINT "[ 7 ]  ZAYIN     [ 16 ]  AYIN     [ 25 ]  BLANK (NO CONSONANTS)"
  189. 1910 PRINT "[ 8 ]  HET       [ 17 ]  PE       [ 26 ]  CORRECT LAST CONSONANT"
  190. 1920 PRINT "[ 9 ]  TET       [ 18 ]  SADE"
  191. 1930 PRINT:PRINT
  192. 1940 PRINT
  193. 1950 RETURN
  194. 1960 REM ************  CONSONANT DRIVER
  195. 1970 IX=0
  196. 1980 FOR J=1 TO 9
  197. 1990 WD(2,J)=43
  198. 2000 NEXT J
  199. 2010 FOR J=0 TO 9
  200. 2020 WD(1,J)=12
  201. 2030 WD(3,J)=12
  202. 2040 NEXT J
  203. 2050 GOSUB 1800
  204. 2060 REM QUICK LOAD CONSONANTS ********************************
  205. 2070 PRINT "ENTER ALL CONSONANTS BY NUMBER AND SEPARATED BY COMMAS:"
  206. 2080 PRINT
  207. 2090 LINE INPUT L$
  208. 2100 IF LEN(L$)<>WL*3-1 THEN PRINT "WRONG NUMBER OF CONSONANTS":GOTO 2090
  209. 2110 IL=1
  210. 2120 FOR WX=WL TO 1 STEP -1
  211. 2130 IX=IX+1
  212. 2140 IZ$=MID$(L$,IL,2)
  213. 2150 IL=IL+3
  214. 2160 IZ=VAL(IZ$)
  215. 2170 GOSUB 8730
  216. 2180 NEXT WX
  217. 2190 GOTO 2330
  218. 2200 REM ************  FIX LAST CONSONANT
  219. 2210 IF IX=1 THEN PRINT "THIS IS YOUR FIRST CONSONANT":GOTO 2210
  220. 2220 PRINT "WOULD YOU LIKE TO CHANGE CONSONANT NUMBER ";IX-1;" WHICH IS NOW"
  221. 2230 FOR J=1 TO 7:Z=WD(2,WX+1):PRINT CONS$(Z,J)
  222. 2240 NEXT J
  223. 2250 INPUT "ENTER Y TO CHANGE, N TO KEEP ";AX$
  224. 2260 IF AX$<>"Y" AND AX$<>"N" THEN 2250
  225. 2270 IF AX$="N" THEN 2050
  226. 2280 WX=WX+1
  227. 2290 WD(2,WX)=43
  228. 2300 IX=IX-1
  229. 2310 GOTO 2050
  230. 2320 NEXT WX
  231. 2330 REM ************ CHECK ALL CONSONANTS
  232. 2340 WX=1
  233. 2350 IF IZ=13 THEN ID=24
  234. 2360 WD(2,WX)=ID
  235. 2370 GOSUB 1370
  236. 2380 GOSUB 8000
  237. 2390 INPUT "ARE THE CONSONANTS CORRECT";AX$
  238. 2400 IF AX$<>"Y" AND AX$<>"N" THEN 2390
  239. 2410 IF AX$="Y" THEN GOSUB 2650:GOSUB 8000:GOTO 2720
  240. 2420 REM ************  FIX SOME CONSONANT
  241. 2430 GOSUB 2450
  242. 2440 GOTO 2370
  243. 2450 REM ************  CONSONANT REPAIR SUBROUTINE
  244. 2460 PRINT "ENTER CONSONANT NUMBER TO FIX (1 IS FAR RIGHT ";WL;" IS FAR LEFT) ";
  245. 2470 INPUT IX
  246. 2480 WX=WL-IX+1
  247. 2490 PRINT "WOULD YOU LIKE TO CHANGE CONSONANT NUMBER ";IX;" WHICH IS NOW"
  248. 2500 FOR J=1 TO 7:Z=WD(2,WX):PRINT CONS$(Z,J)
  249. 2510 NEXT J
  250. 2520 INPUT "ENTER Y TO CHANGE, N TO KEEP ";AX$
  251. 2530 IF AX$<>"Y" AND AX$<>"N" THEN 2520
  252. 2540 IF AX$="N" THEN 2460
  253. 2550 WD(2,WX)=43
  254. 2560 GOSUB 1800
  255. 2570 GOSUB 1410
  256. 2580 PRINT 
  257. 2590 GOSUB 8610
  258. 2600 IF WX=1 AND IZ=13 THEN ID=23
  259. 2610 WD(2,WX)=ID
  260. 2620 RETURN 
  261. 2630 REM ************  SELECT VOWELS MENU
  262. 2640 PRINT "SELECT YOUR VOWELS BY NUMBER"
  263. 2650 PRINT CHR$(26)
  264. 2660 PRINT "[ 1 ]  HOLEM       [ 5 ]  PATHAH       [ 9 ]   HATEPH-PATHAH"
  265. 2670 PRINT "[ 2 ]  HIREQ       [ 6 ]  SEGHOL       [ 10 ]  HATEPH-SEGHOL"
  266. 2680 PRINT "[ 3 ]  SERE        [ 7 ]  QUIBBUS      [ 11 ]  HATEPH-QAMES"
  267. 2690 PRINT "[ 4 ]  QAMES       [ 8 ]  SHEWA        [ 12 ]  CORRECT LAST VOWEL"
  268. 2700 PRINT "                                       [ 13 ]  NO VOWEL (BLANK)"
  269. 2710 RETURN
  270. 2720 REM -----------------------  QUICK LOAD VOWELS  -------------------------
  271. 2730 PRINT "ENTER ALL VOWELS BY NUMBER AND SEPERATED BY COMMAS:"
  272. 2740 PRINT
  273. 2750 LINE INPUT L$
  274. 2760 IF LEN(L$)<>WL*3-1 THEN PRINT "WRONG NUMBER OF VOWELS ":GOTO 2750
  275. 2770 IL=1
  276. 2780 FOR WX=WL TO 1 STEP -1
  277. 2790 IX=IX+1
  278. 2800 IZ$=MID$(L$,IL,2)
  279. 2810 IL=IL+3
  280. 2820 IZ=VAL(IZ$)
  281. 2830 IF IZ=1 THEN WD(1,WX)=1
  282. 2840 IF IZ=13 THEN IZ=12
  283. 2850 IF IZ<>1 THEN WD(3,WX)=IZ
  284. 2860 NEXT WX
  285. 2870 GOTO 3170
  286. 2880 REM ************  FIX LAST VOWEL
  287. 2890 IF IX=1 THEN PRINT "THIS IS YOUR FIRST VOWEL.":GOTO 3240
  288. 2900 PRINT "WOULD YOU LIKE TO CHANGE VOWEL NUMBER ";IX-1;"WHICH IS NOW:"
  289. 2910 Z=WD(3,WX+1):Z2=WD(1,WX+1)
  290. 2920 IF Z=12 THEN Z=Z2
  291. 2930 IF Z=12 THEN PRINT "UNASSIGNED (NO VOWEL YET)":GOTO 3060
  292. 2940 ON Z GOTO 2950,2960,2970,2980,2990,3000,3010,3020,3030,3040,3050
  293. 2950 PRINT "HOLEM":GOTO 3060
  294. 2960 PRINT "HIREQ":GOTO 3060
  295. 2970 PRINT "SERE":GOTO 3060
  296. 2980 PRINT "QUAMES":GOTO 3060
  297. 2990 PRINT "PATHAH":GOTO 3060
  298. 3000 PRINT "SEGHOL":GOTO 3060
  299. 3010 PRINT "QUIBBUS":GOTO 3060
  300. 3020 PRINT "SHEWA":GOTO 3060
  301. 3030 PRINT "HATEPH-PATHAH":GOTO 3060
  302. 3040 PRINT "HATEPH-SEGHOL":GOTO 3060
  303. 3050 PRINT "HATEPH-QUAMES":GOTO 3060      
  304. 3060 FOR J=1 TO 3
  305. 3070 PRINT VOW$(Z,J)
  306. 3080 NEXT J
  307. 3090 INPUT "ENTER Y TO CHANGE, N TO KEEP ";AX$
  308. 3100 IF AX$<>"Y" AND AX$<>"N" THEN 3090
  309. 3110 IF AX$="N" THEN 3190
  310. 3120 WX=WX+1
  311. 3130 WD(3,WX)=12:WD(1,WX)=12
  312. 3140 IX=IX-1
  313. 3150 GOTO 3190
  314. 3160 NEXT WX
  315. 3170 REM ************  FINAL VOWEL CHECK
  316. 3180 GOSUB 1370
  317. 3190 GOSUB 8000
  318. 3200 PRINT
  319. 3210 INPUT "ARE ALL OF THE VOWELS CORRECT (Y OR N)";AX$
  320. 3220 IF AX$<>"Y" AND AX$<>"N" THEN 3210
  321. 3230 IF AX$="N" THEN 3270
  322. 3240 GOSUB 7660
  323. 3250 IF FZ$="REPAIR" THEN RETURN
  324. 3260 GOTO 1730
  325. 3270 GOSUB 4490
  326. 3280 GOTO 3170
  327. 3290 REM ************  REVIEW LAST X WORDS
  328. 3300 GOSUB 1370
  329. 3310 PRINT "ENTER THE NUMBER OF YOUR MOST RECENT VOCABULARY WORDS YOU WISH TO REVIEW"
  330. 3320 INPUT "ENTER A 0 TO RETURN TO THE MAIN MENU ";RX
  331. 3330 IF RX=0 THEN 1470
  332. 3340 RZ=RX
  333. 3350 IF RX>30 THEN RZ=30
  334. 3360 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0
  335. 3370 SS=0:SR=0
  336. 3380 GOSUB 1370
  337. 3390 I=INT(RND*15)+1
  338. 3400 IF I>4 AND I<8 THEN 3490 
  339. 3410 TR=INT(RND*RX)+1
  340. 3420 TR=TR+(LR-RX)
  341. 3430 FOR I=1 TO RZ
  342. 3440 IF US(I)=TR THEN 3410
  343. 3450 NEXT I
  344. 3460 GOSUB 4400
  345. 3470 GOSUB 3810
  346. 3480 GOTO 3390
  347. 3490 REM ********** CALL MISS LIST ******
  348. 3500 GOSUB 3680
  349. 3510 GOTO 3390
  350. 3520 REM ************  REVIEW ENTIRE VOCABULARY
  351. 3530 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0
  352. 3540 SS=0:SR=0
  353. 3550 RZ=30
  354. 3560 I=INT(RND*15)+1
  355. 3570 IF I>4 AND I<8 THEN 3650
  356. 3580 TR=INT(RND*LR)+1
  357. 3590 FOR I=1 TO 30
  358. 3600 IF US(I)=TR THEN 3560
  359. 3610 NEXT I
  360. 3620 GOSUB 4400
  361. 3630 GOSUB 3810
  362. 3640 GOTO 3560
  363. 3650 REM ********** CALL MISS LIST ******
  364. 3660 GOSUB 3680
  365. 3670 GOTO 3560
  366. 3680 REM ************  GET ONE OFF OF MISS LIST
  367. 3690 IF ML=0 THEN RETURN
  368. 3700 MM=1
  369. 3710 I=INT(RND*ML)+1
  370. 3720 TR=LI(I)
  371. 3730 MI=I
  372. 3740 GOSUB 4400
  373. 3750 GOSUB 3810
  374. 3760 MM=0
  375. 3770 RETURN    
  376. 3780 REM SCORE **********************************************
  377. 3790 PRINT "OUT OF ";SS-1;" WORDS YOU HAVE GOTTEN ";SR;"RIGHT!"
  378. 3800 RETURN
  379. 3810 REM ******************** TRY THE WORD **************************
  380. 3820 SS=SS+1
  381. 3830 UL=UL+1
  382. 3840 IF UL=LR THEN FOR I=1 TO 30:US(I-1)=0:NEXT I:UL=0
  383. 3850 IF UL=RZ THEN FOR I=2 TO RZ:US(I-1)=US(I):NEXT I:UL=UL-1
  384. 3860 US(UL)=TR
  385. 3870 GOSUB 7970
  386. 3880 REM
  387. 3890 PRINT "DEFINITION IS...";
  388. 3900 INPUT AX$
  389. 3910 IF AX$="OR" OR AX$="**OR**" THEN 3900
  390. 3920 IF AX$="SCORE" THEN GOSUB 3780:GOTO 3880
  391. 3930 IF AX$="MENU" THEN 1470
  392. 3940 IF AX$="" OR AX$=" " THEN 4060
  393. 3950 X=INSTR(DF$,AX$)
  394. 3960 IF X=0 THEN 4060
  395. 3970 PRINT "*** CORRECT *** ";DF$
  396. 3980 IF MA=0 THEN SR=SR+1
  397. 3990 IF MM=0 THEN 4020
  398. 4000 FOR IJ=MI TO ML-1:LI(IJ)=LI(IJ+1):NEXT IJ
  399. 4010 ML=ML-1
  400. 4020 FOR I = 0 TO 1500:NEXT I
  401. 4030 IF MA<>0 THEN MA=MA-1:GOTO 3870
  402. 4040 GOTO 4050
  403. 4050 RETURN
  404. 4060 PRINT "*** INCORRECT ANSWER ***"
  405. 4070 GOSUB 1340
  406. 4080 MA=2
  407. 4090 IF KY$="N" THEN MA=1
  408. 4100 PRINT "DEFINITION IS...";DF$
  409. 4110 ML=ML+1
  410. 4120 IF ML>30 THEN ML=30
  411. 4130 LI(ML)=TR
  412. 4140 PRINT "STRIKE ANY KEY TO CONTINUE"
  413. 4150 X$=INKEY$
  414. 4160 IF X$="" THEN 4150
  415. 4170 GOTO 3810
  416. 4180 REM ************  REVIEW ENTIRE VOCABULARY--CONCENTRATE ON LAST X WORDS
  417. 4190 GOSUB 1370
  418. 4200 PRINT "ENTER THE NUMBER OF YOUR MOST RECENT VOCABULARY WORDS YOU WISH TO REVIEW"
  419. 4210 INPUT "ENTER A 0 TO RETURN TO THE MAIN MENU ";RX
  420. 4220 IF RX=0 THEN 1470
  421. 4230 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0
  422. 4240 RZ=30
  423. 4250 SS=0:SR=0
  424. 4260 I=INT(RND*15)+1
  425. 4270 IF I>4 AND I<8 THEN 4370
  426. 4280 IF I>7 AND I<10 THEN TR=INT(RND*LR)+1:GOTO 4310
  427. 4290 TR=INT(RND*RX)+1
  428. 4300 TR=TR+(LR-RX)
  429. 4310 FOR I=1 TO 30
  430. 4320 IF US(I)=TR THEN 4290
  431. 4330 NEXT I
  432. 4340 GOSUB 4400
  433. 4350 GOSUB 3810
  434. 4360 GOTO 4260
  435. 4370 REM ********** CALL MISS LIST ******
  436. 4380 GOSUB 3680
  437. 4390 GOTO 4260
  438. 4400 REM ************  READ A WORD
  439. 4410 GET #1, TR
  440. 4420 FOR I=1 TO 9
  441. 4430 WD(1,I)=CVI(W$(I))
  442. 4440 WD(2,I)=CVI(W1$(I))
  443. 4450 WD(3,I)=CVI(W2$(I))
  444. 4460 NEXT I
  445. 4470 IF WD(2,1)=99 THEN TR=TR+1:GOTO 4410
  446. 4480 RETURN
  447. 4490 REM ************  CORRECT VOWEL SUBROUTINE
  448. 4500 PRINT "ENTER THE NUMBER OF THE CONSONANT WHOSE VOWEL YOU WOULD LIKE"
  449. 4510 PRINT "TO CHANGE. (1 IS FAR RIGHT, ";WL;"IS FAR LEFT)"
  450. 4520 INPUT IX
  451. 4530 IF IX=0 THEN RETURN
  452. 4540 IF IX>WL OR IX<1 THEN 4500
  453. 4550 WX=WL-IX+1
  454. 4560 PRINT "WOULD YOU LIKE TO CHANGE VOWEL NUMBER ";IX;"WHICH IS NOW:"
  455. 4570 Z=WD(3,WX):Z2=WD(1,WX)
  456. 4580 IF Z=12 THEN Z=Z2
  457. 4590 IF Z=12 THEN PRINT "UNASSIGNED (NO VOWEL YET)":GOTO 4720
  458. 4600 ON Z GOTO 4610,4620,4630,4640,4650,4660,4670,4680,4690,4700,4710
  459. 4610 PRINT "HOLEM":GOTO 4720
  460. 4620 PRINT "HIREQ":GOTO 4720
  461. 4630 PRINT "SERE":GOTO 4720
  462. 4640 PRINT "QUAMES":GOTO 4720
  463. 4650 PRINT "PATHAH":GOTO 4720
  464. 4660 PRINT "SEGHOL":GOTO 4720
  465. 4670 PRINT "QUIBBUS":GOTO 4720
  466. 4680 PRINT "SHEWA":GOTO 4720
  467. 4690 PRINT "HATEPH-PATHAH":GOTO 4720
  468. 4700 PRINT "HATEPH-SEGHOL":GOTO 4720
  469. 4710 PRINT "HATEPH-QUAMES":GOTO 4720      
  470. 4720 FOR J=1 TO 3
  471. 4730 PRINT VOW$(Z,J)
  472. 4740 NEXT J
  473. 4750 INPUT "ENTER Y TO CHANGE, N TO KEEP ";AX$
  474. 4760 IF AX$<>"Y" AND AX$<>"N" THEN 4750
  475. 4770 IF AX$="N" THEN 4490
  476. 4780 WD(3,WX)=12:WD(1,WX)=12
  477. 4790 GOSUB 2630
  478. 4800 GOSUB 8000
  479. 4810 PRINT "ENTER VOWEL NUMBER FOR CONSONANT NUMBER ";IX
  480. 4820 INPUT IZ
  481. 4830 IF IZ<1 OR IZ>12 THEN 4810
  482. 4840 IF IZ=1 THEN WD(1,WX)=1
  483. 4850 IF IZ>1 THEN WD(3,WX)=IZ
  484. 4860 IF IZ=12 THEN WD(1,WX)=12:WD(3,WX)=12
  485. 4870 RETURN
  486. 4880 REM ******************* CORRECT VOCABULARY *******************
  487. 4890 MN$="ON":QK$="N"
  488. 4900 GOSUB 1370
  489. 4910 PRINT:PRINT
  490. 4920 PRINT "_______________________________________________________________________________"
  491. 4930 PRINT
  492. 4940 PRINT "    [ ? ] ENTER THE NUMBER OF THE WORD YOU WANT TO CORRECT"
  493. 4950 PRINT "    [ 0 ] TO RETURN TO THE UTILITY MENU"
  494. 4960 PRINT "    [ S ] TO SEARCH FOR A WORD AND ITS NUMBER"
  495. 4970 PRINT
  496. 4980 PRINT "_______________________________________________________________________________"
  497. 4990 PRINT:PRINT
  498. 5000 INPUT "WHAT IS YOUR CHOICE";TR$
  499. 5010 IF TR$="S" THEN 5200
  500. 5020 TR=VAL(TR$)
  501. 5030 IF TR<0 OR TR>LR THEN 4880
  502. 5040 IF TR=0 THEN GOTO 9110
  503. 5050 GOSUB 4400
  504. 5060 DW$=DF$
  505. 5070 GOSUB 1370
  506. 5080 GOSUB 8000
  507. 5090 PRINT "WORD NUMBER ";TR
  508. 5100 PRINT "DEFINITION IS ";DW$
  509. 5110 PRINT "_______________________________________________________________________________"
  510. 5120 PRINT
  511. 5130 PRINT "[ 1 ] CORRECT CONSONANTS   [ 4 ] REDO WORD    [ 7 ] GET ANOTHER WORD"
  512. 5140 PRINT "[ 2 ] CORRECT VOWELS       [ 5 ] DELETE WORD  [ 8 ] UTILITY MENU"
  513. 5150 PRINT "[ 3 ] CORRECT DEFINITION   [ 6 ] STORE WORD"
  514. 5160 PRINT
  515. 5170 INPUT "WHAT IS YOUR CHOICE";FM
  516. 5180 IF FM>8 OR FM<1 THEN 5170
  517. 5190 ON FM GOTO 5400,5760,5830,5960,6080,6270,5470,5560
  518. 5200 REM ************* SEARCH FOR A WORD **************************
  519. 5210 GOSUB 1370
  520. 5220 PRINT "ENTER A DEFINITION TO SEARCH FOR (STRIKE ENTER KEY TO ESCAPE"
  521. 5230 INPUT "SEARCH MODE) ";AX$
  522. 5240 IF AX$="" THEN 4880
  523. 5250 PRINT "SEARCHING..... POSSIBLE WORD NUMBERS ARE:"
  524. 5260 H=0
  525. 5270 FOR TR=1 TO LR
  526. 5280 GOSUB 4400
  527. 5290 X=INSTR(DF$,AX$)
  528. 5300 IF X=0 THEN 5330
  529. 5310 H=H+1
  530. 5320 PRINT TR;" ";
  531. 5330 NEXT TR
  532. 5340 PRINT 
  533. 5350 PRINT H;" MATCHES TO SEARCH FOUND "
  534. 5360 PRINT "STRIKE ANY KEY TO CONTINUE"
  535. 5370 X$=INKEY$
  536. 5380 IF X$="" THEN 5370
  537. 5390 GOTO 4880
  538. 5400 REM *********** CORRECT CONSONANTS
  539. 5410 GOSUB 7970
  540. 5420 INPUT "DO YOU WISH TO CORRECT THE CONSONANTS IN THIS WORD";AX$
  541. 5430 IF AX$<>"Y" AND AX$<>"N" THEN 5420
  542. 5440 IF AX$="N" THEN GOSUB 1370:GOTO 5080
  543. 5450 GOSUB 2450
  544. 5460 GOTO 5400
  545. 5470 REM *********** GET ANOTHER WORD *********************
  546. 5480 PRINT "DO YOU WISH TO GET SOME OTHER WORD? "
  547. 5490 PRINT "BE WARNED....ANY CHANGES YOU HAVE MADE TO THE "
  548. 5500 PRINT "CURRENT WORD WILL BE DROPPED UNLESS YOU HAVE TAKEN OPTION 6"
  549. 5510 PRINT "AND STORED YOUR CHANGES TO DISK. STILL WANT ANOTHER WORD?"
  550. 5520 INPUT "ENTER Y TO GET ANOTHER WORD, N TO KEEP CURRENT WORD";AX$
  551. 5530 IF AX$<>"Y" AND AX$<>"N" THEN 5520
  552. 5540 IF AX$="N" THEN GOSUB 1370:GOTO 5080
  553. 5550 GOTO 4880
  554. 5560 REM ********* RETURN TO MAIN MENU ***************
  555. 5570 GOSUB 1370
  556. 5580 PRINT:PRINT
  557. 5590 PRINT "_______________________________________________________________________________"
  558. 5600 PRINT
  559. 5610 PRINT "DO YOU WISH TO RETURN TO THE UTILITY MENU?"
  560. 5620 PRINT:PRINT
  561. 5630 PRINT TAB(5) "BE WARNED ... ANY CHANGES YOU HAVE MADE TO THE CURRENT WORD"
  562. 5640 PRINT TAB(5) "WILL BE DROPPED UNLESS YOU HAVE USED OPTIN [ 6 ] AND STORED"
  563. 5650 PRINT TAB(5) "YOUR CHANGES TO DISK."
  564. 5660 PRINT:PRINT
  565. 5670 PRINT TAB(5) "[ Y ] TO RETURN TO THE UTILITY MENU"
  566. 5680 PRINT TAB(5) "[ N ] TO RETURN TO THE CORRECTION MENU"
  567. 5690 PRINT
  568. 5700 PRINT "_______________________________________________________________________________"
  569. 5710 PRINT:PRINT
  570. 5720 INPUT "WHAT IS YOUR CHOICE";AX$
  571. 5730 IF AX$<>"Y" AND AX$<>"N" THEN 5560
  572. 5740 IF AX$="N" THEN GOSUB 1370:GOTO 5080
  573. 5750 GOTO 9110
  574. 5760 REM *********** CORRECT VOWELS ***************************
  575. 5770 GOSUB 7970
  576. 5780 INPUT "DO YOU WISH TO CORRECT THE VOWELS IN THIS WORD";AX$
  577. 5790 IF AX$<>"Y" AND AX$<>"N" THEN 5780
  578. 5800 IF AX$="N" THEN GOSUB 1370:GOSUB 8000:GOTO 5110
  579. 5810 GOSUB 4490
  580. 5820 GOTO 5760
  581. 5830 REM *********** CORRECT DEFINITION ****************
  582. 5840 INPUT "DO YOU WISH TO CORRECT THE DEFINITION OF THIS WORD";AX$
  583. 5850 IF AX$<>"Y" AND AX$<>"N" THEN 5840
  584. 5860 IF AX$="N" THEN GOSUB 1370:GOTO 5080
  585. 5870 PRINT "ENTER NEW DEFINITION "
  586. 5880 INPUT DW$
  587. 5890 IF LEN(DW$)>70 THEN PRINT "DEFINITION IS TOO LONG":GOTO 5870
  588. 5900 PRINT "DEFINITION OK? "
  589. 5910 INPUT AX$
  590. 5920 IF AX$<>"N" AND AX$<>"Y" THEN 5900
  591. 5930 IF AX$="N" THEN 5870
  592. 5940 LSET DF$=DW$
  593. 5950 GOSUB 1370:GOTO 5080
  594. 5960 REM ********** RE-ENTER WORD ****************************
  595. 5970 GOSUB 1370
  596. 5980 GOSUB 8000
  597. 5990 PRINT "WOULD YOU LIKE TO RE-ENTER THIS WORD FROM SCRATCH? "
  598. 6000 PRINT "THIS IS THE ONLY WAY TO CHANGE THE NUMBER OF CONSONANTS "
  599. 6010 INPUT "IN THIS WORD....(ENTER Y TO RE-ENTER, N TO KEEP) ";AX$
  600. 6020 IF AX$<>"Y" AND AX$<>"N" THEN 5960
  601. 6030 IF AX$="N" THEN 5050
  602. 6040 FZ$="REPAIR"
  603. 6050 GOSUB 1730
  604. 6060 FZ$=""
  605. 6070 GOTO 4880
  606. 6080 REM ******** DELETE WORD *********
  607. 6090 IF TR=LR THEN 6180
  608. 6100 PRINT "NOTE: DELETED WORDS MAKE DISK SPACE VERY INEFFICIENT"
  609. 6110 PRINT "IT IS BETTER TO RE-ENTER WORD FROM SCRATCH THAN TO DELETE"
  610. 6120 INPUT "DO YOU WISH TO DELETE THIS WORD";AX$
  611. 6130 IF AX$<>"N" AND AX$<>"Y" THEN 6120
  612. 6140 IF AX$="N" THEN GOSUB 1370:GOTO 5080
  613. 6150 WD(2,1)=99:PRINT "NOW DELETING WORD # ";TR
  614. 6160 LR=LR-1
  615. 6170 GOTO 6350
  616. 6180 PRINT "THIS IS CURRENTLY THE LAST WORD IN THE FILE"
  617. 6190 GOSUB 1340:GOSUB 1340:GOSUB 1340
  618. 6200 PRINT "THE LAST RECORD CANNOT BE DELETED"
  619. 6210 PRINT "WHY DON'T YOU TRY RE-ENTERING SOME OTHER"
  620. 6220 PRINT "WORD FROM SCRATCH IN ITS PLACE?"
  621. 6230 PRINT "STRIKE ANY KEY TO CONTINUE"
  622. 6240 X$=INKEY$
  623. 6250 IF X$="" THEN 6240
  624. 6260 GOTO 4880
  625. 6270 REM ******* WRITE CORRECTED WORD TO DISK **********
  626. 6280 GOSUB 1370
  627. 6290 GOSUB 7970
  628. 6300 PRINT "DEFINITION IS ";DF$
  629. 6310 INPUT "READY TO WRITE THIS CORRECTED WORD TO DISK? ";AX$
  630. 6320 IF AX$<>"Y" AND AX$<>"N" THEN 6310
  631. 6330 IF AX$="N" THEN GOSUB 1370:GOTO 5080
  632. 6340 PRINT "NOW STORING ON RECORD NUMBER ";TR
  633. 6350 ON ERROR GOTO 7900
  634. 6360 FOR I=1 TO 9
  635. 6370 LSET W$(I)=MKI$(WD(1,I))
  636. 6380 LSET W1$(I)=MKI$(WD(2,I))
  637. 6390 LSET W2$(I)=MKI$(WD(3,I))
  638. 6400 NEXT I
  639. 6410 LSET DF$=DW$
  640. 6420 PUT #1,TR
  641. 6430 ON ERROR GOTO 0
  642. 6440 GOTO 4880
  643. 6450 REM ************  PRINT ENTIRE VOCABULARY
  644. 6460 PRINT "DO YOU WISH TO PRINT OUT THE ENTIRE VOCABULARY? (Y OR N)";
  645. 6470 INPUT AX$
  646. 6480 IF AX$<>"Y" AND AX$<>"N" THEN 6460
  647. 6490 BV=1: LV=LR:IP=0
  648. 6500 IF AX$="Y" THEN 6600
  649. 6510 PRINT "DO YOU WISH TO PRINT OUT PART OF THE VOCABULARY? (Y OR N)";
  650. 6520 INPUT AX$
  651. 6530 IF AX$<>"Y" AND AX$<>"N" THEN 6510
  652. 6540 IF AX$="N" THEN 1470
  653. 6550 INPUT "ENTER FIRST WORD NUMBER TO LIST ";BV
  654. 6560 INPUT "ENTER LAST WORD NUMBER TO LIST ";LV
  655. 6570 IF BV<1 THEN BV=1
  656. 6580 IF LV>LR THEN LV=LR
  657. 6590 GOTO 6640
  658. 6600 PRINT "DO YOU WISH A SORTED LISTING";
  659. 6610 INPUT AX$
  660. 6620 IF AX$<>"Y" AND AX$<>"N" THEN 6600
  661. 6630 IF AX$="Y" THEN 6690
  662. 6640 FOR TR=BV TO LV
  663. 6650 GOSUB 4400
  664. 6660 GOSUB 7050
  665. 6670 NEXT TR
  666. 6680 GOTO 1470
  667. 6690 REM ************ SORT ROUTINE **********************
  668. 6700 GOSUB 1370:PRINT "STANDBY FOR SORT (THIS MAY TAKE A WHILE)" 
  669. 6710 DIM SO$(LR), SO(LR)
  670. 6720 FOR TR=1 TO LR
  671. 6730 GOSUB 4400:PRINT "RECORD ";TR:GOSUB 1410
  672. 6740 FOR I=1 TO 8
  673. 6750 IF WD(2,I)=43 AND WD(2,I+1)=43 THEN WL=I-1:GOTO 6770
  674. 6760 NEXT I
  675. 6770 CD$="":FOR I=WL TO 1 STEP -1
  676. 6780 Z=WD(2,I)
  677. 6790 IF Z=24 THEN Z=22
  678. 6800 ZX=Z+65
  679. 6810 IF Z=43 THEN ZX=64
  680. 6820 CD$=CD$+CHR$(ZX)
  681. 6830 NEXT I
  682. 6840 SO$(TR)=CD$:SO(TR)=TR 
  683. 6850 NEXT TR
  684. 6860 PRINT 
  685. 6870 PRINT "FIRST PASS COMPLETE, BEGINNING SECOND PASS":PRINT
  686. 6880 FOR I=1 TO LR-1
  687. 6890 FOR J=1 TO LR-1
  688. 6900 IF SO$(J)<SO$(J+1) THEN 6950
  689. 6910 TP$=SO$(J):TP=SO(J)
  690. 6920 SO$(J)=SO$(J+1):SO(J)=SO(J+1)
  691. 6930 SO$(J+1)=TP$:SO(J+1)=TP
  692. 6940 GOSUB 1410:PRINT "I= ";I;" J= ";J
  693. 6950 NEXT J:NEXT I
  694. 6960 PRINT "SORT COMPLETE....BEGINNING PRINTOUT"
  695. 6970 FOR SI=1 TO LR
  696. 6980 TR=SO(SI)
  697. 6990 IF TR<1 OR TR>LR THEN 7010
  698. 7000 GOSUB 4400:GOSUB 7050
  699. 7010 NEXT SI
  700. 7020 LPRINT CHR$(12);CHR$(12)
  701. 7030 ERASE SO$, SO
  702. 7040 GOTO 1470
  703. 7050 REM ************ PRINT A WORD ROUTINE
  704. 7060 IP=IP+1
  705. 7070 IF IP<>4 THEN 7100
  706. 7080 IP=1:LPRINT STRING$(70,"*")
  707. 7090 FOR IZ=1 TO 17:LPRINT:NEXT IZ            
  708. 7100 LPRINT STRING$(70,"*")
  709. 7110 LPRINT "WORD NUMBER ";TR;" DEFINITION IS "
  710. 7120 LPRINT DF$
  711. 7130 Z=WD(2,1)
  712. 7140 LPRINT "   ";
  713. 7150 FOR I=1 TO 9
  714. 7160 Z=WD(1,I)
  715. 7170 LPRINT VOW$(Z,3);
  716. 7180 NEXT I
  717. 7190 LPRINT
  718. 7200 FOR J=1 TO 7
  719. 7210 FOR I=0 TO 9
  720. 7220 Z=WD(2,I)
  721. 7230 IF I<>0 THEN 7340
  722. 7240 Z2=WD(2,1)
  723. 7250 IF Z2<>18 AND Z2<>25 AND Z2<>30 AND Z2<>32 THEN 7330
  724. 7260 Z2=WD(3,1)
  725. 7270 IF J<4 OR J>6 THEN 7330
  726. 7280 Z3$=VOW$(Z2,J-3)
  727. 7290 Z4$=MID$(Z3$,4,3)
  728. 7300 LPRINT Z4$;
  729. 7310 GOTO 7340
  730. 7320 Z=WD(2,1)
  731. 7330 LPRINT "   ";
  732. 7340 IF I<>1 THEN 7410
  733. 7350 IF Z<>18 AND Z<>25 AND Z<>30 AND Z<>32 THEN 7410
  734. 7360 IF Z=18 THEN LPRINT FIN$(1,J);
  735. 7370 IF Z=25 THEN LPRINT FIN$(2,J);
  736. 7380 IF Z=30 THEN LPRINT FIN$(3,J);
  737. 7390 IF Z=32 THEN LPRINT FIN$(4,J);
  738. 7400 GOTO 7420
  739. 7410 LPRINT CONS$(Z,J);
  740. 7420 NEXT I
  741. 7430 LPRINT
  742. 7440 NEXT J
  743. 7450 FOR J=0 TO 3
  744. 7460 FOR I=0 TO 9
  745. 7470 Z2=WD(3,I)
  746. 7480 IF I<>0 THEN 7510
  747. 7490 LPRINT "   ";
  748. 7500 GOTO 7610
  749. 7510 IF I<>1 THEN GOTO 7590
  750. 7520 Z=WD(2,1)
  751. 7530 IF Z<>18 AND Z<>25 AND Z<>30 AND Z<>32 THEN 7590
  752. 7540 IF Z=18 THEN LPRINT FIN$(1,J+7);
  753. 7550 IF Z=25 THEN LPRINT FIN$(2,J+7);
  754. 7560 IF Z=30 THEN LPRINT FIN$(3,J+7);
  755. 7570 IF Z=32 THEN LPRINT FIN$(4,J+7);
  756. 7580 GOTO 7610
  757. 7590 IF J=0 THEN LPRINT "        ";
  758. 7600 IF J<>0 THEN LPRINT VOW$(Z2,J);
  759. 7610 NEXT I
  760. 7620 LPRINT
  761. 7630 NEXT J
  762. 7640 LPRINT
  763. 7650 RETURN
  764. 7660 REM ************  WRITE RECORD TO DISK
  765. 7670 ON ERROR GOTO 7900
  766. 7680 PRINT "WHAT IS THE DEFINITION OF THIS WORD?"
  767. 7690 INPUT DW$
  768. 7700 IF LEN(DW$)>70 THEN PRINT "YOUR DEFINITION IS TOO LONG, PLEASE ENTER A SHORTER ONE":GOTO 7680
  769. 7710 INPUT "READY TO WRITE ON DISK? (Y OR N) ";AX$
  770. 7720 IF AX$<>"Y" AND AX$<>"N" THEN 7710
  771. 7730 IF AX$="N" THEN 7680
  772. 7740 IF FZ$<>"REPAIR" THEN 7770
  773. 7750 LHOLD=LR
  774. 7760 LR=TR-1
  775. 7770 PRINT "STORING ON DISK RECORD ";LR+1
  776. 7780 FOR I=1 TO 9
  777. 7790 LSET W$(I)=MKI$(WD(1,I))
  778. 7800 LSET W1$(I)=MKI$(WD(2,I))
  779. 7810 LSET W2$(I)=MKI$(WD(3,I))
  780. 7820 NEXT I
  781. 7830 LSET DF$=DW$
  782. 7840 LR=LR+1
  783. 7850 PUT #1,LR
  784. 7860 ON ERROR GOTO 0
  785. 7870 IF FZ$<>"REPAIR" THEN RETURN
  786. 7880 LR=LHOLD
  787. 7890 RETURN
  788. 7900 REM ************  ERROR CONTROL
  789. 7910 PRINT "ERROR IS ";ERR
  790. 7920 IF ERR=61 THEN PRINT "YOUR DISK IS OUT OF SPACE"
  791. 7930 PRINT "PRESS ANY KEY TO CONTINUE"
  792. 7940 X$=INKEY$
  793. 7950 IF X$="" THEN 7940
  794. 7960 RESUME NEXT
  795. 7970 REM ************  DISPLAY WORD ROUTINE
  796. 7980 GOSUB 1370
  797. 7990 IF SS<>1 THEN PRINT "SCORE IS CURRENTLY: ";INT((SR/(SS-1))*100)
  798. 8000 FOR I = 1 TO 8
  799. 8010 IF WD(2,I)=43 AND WD(2,I+1)=43 THEN WL=I-1:GOTO 8030
  800. 8020 NEXT I
  801. 8030 Z=WD(2,1)
  802. 8040 TX=INT((9-WL)/2)*8
  803. 8050 PRINT TAB(TX);
  804. 8060 PRINT "   ";
  805. 8070 FOR I=1 TO WL
  806. 8080 Z=WD(1,I)
  807. 8090 PRINT VOW$(Z,3);
  808. 8100 NEXT I
  809. 8110 PRINT
  810. 8120 REM CALL POINT FOR NEW WORD
  811. 8130 FOR J=1 TO 7
  812. 8140 PRINT TAB(TX);
  813. 8150 FOR I=0 TO WL
  814. 8160 Z=WD(2,I)
  815. 8170 IF I<>0 THEN 8280
  816. 8180 Z2=WD(2,1)
  817. 8190 IF Z2<>18 AND Z2<>25 AND Z2<>30 AND Z2<>32 THEN 8270
  818. 8200 Z2=WD(3,1)
  819. 8210 IF J<4 OR J>6 THEN 8270
  820. 8220 Z3$=VOW$(Z2,J-3)
  821. 8230 Z4$=MID$(Z3$,4,3)
  822. 8240 PRINT Z4$;
  823. 8250 GOTO 8280
  824. 8260 Z=WD(2,1)
  825. 8270 PRINT "   ";
  826. 8280 IF I<>1 THEN 8350
  827. 8290 IF Z<>18 AND Z<>25 AND Z<>30 AND Z<>32 THEN 8350
  828. 8300 IF Z=18 THEN PRINT FIN$(1,J);
  829. 8310 IF Z=25 THEN PRINT FIN$(2,J);
  830. 8320 IF Z=30 THEN PRINT FIN$(3,J);
  831. 8330 IF Z=32 THEN PRINT FIN$(4,J);
  832. 8340 GOTO 8360
  833. 8350 PRINT CONS$(Z,J);
  834. 8360 NEXT I
  835. 8370 PRINT
  836. 8380 NEXT J
  837. 8390 FOR J=0 TO 3
  838. 8400 PRINT TAB(TX);
  839. 8410 FOR I=0 TO WL
  840. 8420 Z2=WD(3,I)
  841. 8430 IF I<>0 THEN 8460
  842. 8440 PRINT "   ";
  843. 8450 GOTO 8560
  844. 8460 IF I<>1 THEN GOTO 8540
  845. 8470 Z=WD(2,1)
  846. 8480 IF Z<>18 AND Z<>25 AND Z<>30 AND Z<>32 THEN 8540
  847. 8490 IF Z=18 THEN PRINT FIN$(1,J+7);
  848. 8500 IF Z=25 THEN PRINT FIN$(2,J+7);
  849. 8510 IF Z=30 THEN PRINT FIN$(3,J+7);
  850. 8520 IF Z=32 THEN PRINT FIN$(4,J+7);
  851. 8530 GOTO 8560
  852. 8540 IF J=0 THEN PRINT "        ";
  853. 8550 IF J<>0 THEN PRINT VOW$(Z2,J);
  854. 8560 NEXT I
  855. 8570 PRINT
  856. 8580 NEXT J
  857. 8590 PRINT
  858. 8600 RETURN
  859. 8610 REM ************  CONSONANT DATA MATCH SUBROUTINE
  860. 8620 PRINT "INPUT YOUR CHOICE FOR CONSONANT NUMBER ";IX
  861. 8630 INPUT IZ
  862. 8640 IF IX=1 OR IZ<>25 THEN 8710
  863. 8650 IF WD(2,WX+1)=43 THEN 8670
  864. 8660 GOTO 8700
  865. 8670 PRINT "DOUBLE BLANKS OR BLANKS AT THE BEGINNING OF A WORD"
  866. 8680 PRINT "ARE NOT ALLOWED, PLEASE TRY SOMETHING ELSE"
  867. 8690 GOTO 8620
  868. 8700 IF IZ=0 THEN GOSUB 1370:GOSUB 1840:GOSUB 7970:GOTO 8610
  869. 8710 IF IZ>26 OR IZ<1 THEN 8630
  870. 8720 IF IZ=26 THEN 9070
  871. 8730 DX$="N"
  872. 8740 IF IZ>23 THEN 8780
  873. 8750 IF WX=1 AND (IZ=11 OR IZ=13 OR IZ=14 OR IZ=18 OR IZ=19) THEN 8790
  874. 8760 IF QK$="Y" AND IZ<>1 AND IZ<>5 AND  IZ<>8 AND IZ<>16 AND IZ<>21 THEN PRINT "FOR THE ";CN$(IZ);" IN CONS # ";IX;
  875. 8770 IF IZ<>1 AND IZ<>5 AND  IZ<>8 AND IZ<>16 AND IZ<>21 THEN INPUT "DAGHES NEEDED IN LETTER? (Y OR N) ";DX$
  876. 8780 IF DX$<>"N" AND DX$<>"Y" THEN 8730
  877. 8790 ID=IZ
  878. 8800 IF IZ=3 THEN ID=4
  879. 8810 IF IZ=4 THEN ID=6
  880. 8820 IF IZ=5 THEN ID=8
  881. 8830 IF IZ=6 THEN ID=9
  882. 8840 IF IZ=6 AND DX$="N" THEN INPUT "IS THIS A SUREQ WAW? (Y OR N) ";DX$
  883. 8850 IF DX$<>"N" AND DX$<>"Y" AND IZ=6 THEN DX$="N":GOTO 8840
  884. 8860 IF IZ=7 THEN ID=11
  885. 8870 IF IZ=8 THEN ID=13
  886. 8880 IF IZ=9 THEN ID=14
  887. 8890 IF IZ=10 THEN ID=16
  888. 8900 IF IZ=11 THEN ID=18
  889. 8910 IF IZ=12 THEN ID=20
  890. 8920 IF IZ=13 THEN ID=22
  891. 8930 IF IZ=14 THEN ID=25
  892. 8940 IF IZ=15 THEN ID=27
  893. 8950 IF IZ=16 THEN ID=29
  894. 8960 IF IZ=17 THEN ID=30
  895. 8970 IF IZ=18 THEN ID=32
  896. 8980 IF IZ=19 THEN ID=34
  897. 8990 IF IZ=20 THEN ID=36
  898. 9000 IF IZ=21 THEN ID=37
  899. 9010 IF IZ=22 THEN ID=39
  900. 9020 IF IZ=23 THEN ID=41
  901. 9030 IF IZ=24 THEN ID=44
  902. 9040 IF IZ=25 THEN ID=43
  903. 9050 IF DX$="Y" THEN ID=ID+1
  904. 9060 WD(2,WX)=ID
  905. 9070 RETURN
  906. 9080 DATA "ALEP","BET","GIMEL","DALET","HE","WAW","ZAYIN","HET","TET","YOD"
  907. 9090 DATA "KAP","LAMED","MEM","NUN","SAMEK","AYIN","PE","SADE","KOP","RES"
  908. 9100 DATA "SEEN","SHEEN","TAW"
  909. 9110 GOSUB 1370
  910. 9120 PRINT "_______________________________________________________________________________"
  911. 9130 PRINT
  912. 9140 PRINT "***  FILE UTILITY MENU ***"
  913. 9150 PRINT "_______________________________________________________________________________"
  914. 9160 PRINT:PRINT
  915. 9170 PRINT "    [ 1 ] ADD NEW ITEMS TO THE DRILL FILE."
  916. 9180 PRINT "    [ 2 ] WORK ON THE CHARACTERS IN THE EXISTING FILE."
  917. 9190 PRINT "    [ 3 ] PRINT ALL THE CHARACTERS IN THE EXISTING FILE."
  918. 9200 PRINT "    [ 4 ] RETURN TO THE DRILL OPERATION MENU."
  919. 9210 PRINT "    [ 5 ] RETURN TO THE DRILL SELECTION MENU."
  920. 9220 PRINT:PRINT
  921. 9230 INPUT "    WHAT IS YOUR CHOICE";U
  922. 9240 IF U>5 OR U<1 THEN GOTO 9230
  923. 9250 ON U GOTO 1710,4880,6450,1490,1680
  924. INT:PRINT
  925. 9230 INPUT "    WHAT IS YOUR CHOICE";U
  926. 9240 IF