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 / DABAR.BZS / DABAR.BAS
BASIC Source File  |  2000-06-30  |  30KB  |  905 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. 470 REM * PACKAGE OR PROGRAM.                                      *
  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 AVE                                *
  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. 2014 PRINT
  32. 2015 PRINT TAB(18);"     COPYRIGHT 1986 BY DANIEL R. CRIDER"
  33. 2020 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. 6175 PRINT TAB(35);"MASTER MENU"
  106. 6200 PRINT
  107. 6250 PRINT TAB(25);"1-- ADD NEW WORDS TO VOCABULARY"
  108. 6300 PRINT TAB(25);"2-- REVIEW LAST X WORDS"
  109. 6350 PRINT TAB(25);"3-- REVIEW ENTIRE VOCABULARY"
  110. 6400 PRINT TAB(25);"4-- REVIEW ENTIRE VOCABULARY--"
  111. 6450 PRINT TAB(25);"    --CONCENTRATE ON LAST X WORDS"
  112. 6500 PRINT TAB(25);"5-- PRINT VOCABULARY"
  113. 6550 PRINT TAB(25);"6-- CORRECT VOCABULARY"
  114. 6600 PRINT TAB(25);"7-- END PROGRAM"
  115. 6650 PRINT
  116. 6700 PRINT
  117. 6750 PRINT TAB(28);"PLEASE ENTER YOUR CHOICE ";
  118. 6800 INPUT M
  119. 6850 IF M>7 OR M<1 THEN 6750
  120. 6900 ON M GOTO 7300,17450,18650,22100,32200,25850,6950
  121. 6950 REM ************  END PROGRAM
  122. 7000 PRINT "READY TO QUIT? (Y OR N) ";
  123. 7050 INPUT X$
  124. 7100 IF X$<>"Y" AND X$<>"N" THEN 7000
  125. 7150 IF X$="N" THEN 5850
  126. 7200 CLOSE #1
  127. 7250 SYSTEM
  128. 7300 REM ************  ADD NEW WORDS TO VOCABULARY
  129. 7350 FZ$=""
  130. 7400 IF SU=1 THEN 7750
  131. 7450 INPUT "DO YOU WANT MENUS? (Y OR N) ";MX$
  132. 7500 MN$="ON"
  133. 7550 IF MX$<>"Y" AND MX$<>"N" THEN 7450
  134. 7600 IF MX$="N" THEN MN$="OFF"
  135. 7650 INPUT "DO YOU WANT QUICK LOAD? (Y OR N) ";QK$
  136. 7700 IF QK$<>"Y" AND QK$<>"N" THEN 7650
  137. 7750 GOSUB 4750
  138. 7800 SU=1
  139. 7850 REM ************  SET UP CONSONANTS
  140. 7900 PRINT "ENTER NUMBER OF CONSONANTS PLEASE (ENTER 0 TO RETURN TO MENU) ";
  141. 7950 INPUT WL
  142. 8000 IF WL=0 THEN 5850
  143. 8050 IF WL<10 THEN 9000
  144. 8100 PRINT "LIMIT IS 9 CONSONANTS"
  145. 8150 GOTO 7900
  146. 8200 REM ************  CONSONANT SELECT MENU
  147. 8250 GOSUB 4750
  148. 8300 PRINT "SELECT YOUR CONSONANTS BY NUMBER"
  149. 8350 IF MN$="OFF" THEN RETURN
  150. 8400 PRINT "1. ALEP   '         10. YOD    Y          19. KOP    Q"   
  151. 8450 PRINT "2. BET    B,BH      11. KAP    K,KH       20. RES    R"
  152. 8500 PRINT "3. GIMEL  G,GH      12. LAMED  L          21. SEEN   S'"
  153. 8550 PRINT "4. DALET  D,DH      13. MEM    M          22. SHEEN  SH"
  154. 8600 PRINT "5. HE     H         14. NUN    N          23. TAW    T,TH"
  155. 8650 PRINT "6. WAW    W         15. SAMEK  S          24. MAQQEPH -"
  156. 8700 PRINT "7. ZAYIN  Z         16. AYIN   '          25. BLANK (NO CONS)"
  157. 8750 PRINT "8. HET    H         17. PE     P,PH       26. CORRECT LAST CONSONANT"
  158. 8800 PRINT "9. TET    T         18. SADE   S"              
  159. 8850 PRINT:PRINT
  160. 8900 PRINT
  161. 8950 RETURN
  162. 9000 REM ************  CONSONANT DRIVER
  163. 9050 IX=0
  164. 9100 FOR J=1 TO 9
  165. 9150 WD(2,J)=43
  166. 9200 NEXT J
  167. 9250 FOR J=0 TO 9
  168. 9300 WD(1,J)=12
  169. 9350 WD(3,J)=12
  170. 9400 NEXT J
  171. 9450 IF QK$="Y" THEN 9900
  172. 9500 FOR WX=WL TO 1 STEP -1
  173. 9550 IX=IX+1
  174. 9600 GOSUB 8200
  175. 9650 GOSUB 5150:GOSUB 5150:GOSUB 5150
  176. 9700 GOSUB 40200
  177. 9750 GOSUB 42650
  178. 9800 IF IZ=26 THEN 10600
  179. 9850 IF IZ<>26 THEN 11200
  180. 9900 REM QUICK LOAD CONSONANTS ********************************
  181. 9950 GOSUB 8200
  182. 10000 PRINT "ENTER ALL CONSONANTS BY NUMBER SEPARATED BY COMMAS."
  183. 10050 LINE INPUT L$
  184. 10100 IF LEN(L$)<>WL*3-1 THEN PRINT "WRONG NUMBER OF CONSONANTS":GOTO 10050
  185. 10150 IL=1
  186. 10200 FOR WX=WL TO 1 STEP -1
  187. 10250 IX=IX+1
  188. 10300 IZ$=MID$(L$,IL,2)
  189. 10350 IL=IL+3
  190. 10400 IZ=VAL(IZ$)
  191. 10450 GOSUB 43300
  192. 10500 NEXT WX
  193. 10550 GOTO 11250
  194. 10600 REM ************  FIX LAST CONSONANT
  195. 10650 IF IX=1 THEN PRINT "THIS IS YOUR FIRST CONSONANT":GOTO 9750
  196. 10700 PRINT "WOULD YOU LIKE TO CHANGE CONSONANT NUMBER ";IX-1;" WHICH IS NOW"
  197. 10750 FOR J=1 TO 7:Z=WD(2,WX+1):PRINT CONS$(Z,J)
  198. 10800 NEXT J
  199. 10850 INPUT "ENTER Y TO CHANGE, N TO KEEP ";AX$
  200. 10900 IF AX$<>"Y" AND AX$<>"N" THEN 10850
  201. 10950 IF AX$="N" THEN 9600
  202. 11000 WX=WX+1
  203. 11050 WD(2,WX)=43
  204. 11100 IX=IX-1
  205. 11150 GOTO 9600
  206. 11200 NEXT WX
  207. 11250 REM ************ CHECK ALL CONSONANTS
  208. 11300 WX=1
  209. 11350 IF IZ=13 THEN ID=24
  210. 11400 WD(2,WX)=ID
  211. 11450 GOSUB 4750
  212. 11500 GOSUB 39550
  213. 11550 PRINT "ARE CONSONANTS CORRECT? ";
  214. 11600 INPUT AX$
  215. 11650 IF AX$<>"Y" AND AX$<>"N" THEN 11550
  216. 11700 IF AX$="Y" THEN 14300
  217. 11750 REM ************  FIX SOME CONSONANT
  218. 11800 GOSUB 11900
  219. 11850 GOTO 11450
  220. 11900 REM ************  CONSONANT REPAIR SUBROUTINE
  221. 11950 PRINT "ENTER CONSONANT NUMBER TO FIX (1 IS FAR RIGHT ";WL;" IS FAR LEFT) ";
  222. 12000 INPUT IX
  223. 12050 WX=WL-IX+1
  224. 12100 PRINT "WOULD YOU LIKE TO CHANGE CONSONANT NUMBER ";IX;" WHICH IS NOW"
  225. 12150 FOR J=1 TO 7:Z=WD(2,WX):PRINT CONS$(Z,J)
  226. 12200 NEXT J
  227. 12250 INPUT "ENTER Y TO CHANGE, N TO KEEP ";AX$
  228. 12300 IF AX$<>"Y" AND AX$<>"N" THEN 12250
  229. 12350 IF AX$="N" THEN 11950
  230. 12400 WD(2,WX)=43
  231. 12450 GOSUB 8200
  232. 12500 GOSUB 5150
  233. 12550 IF MN$="ON" THEN GOSUB 5150:GOSUB 5150
  234. 12600 IF MN$="ON" THEN PRINT "9. TET    T         18. SADE   S                                    " "
  235. 12650 PRINT 
  236. 12700 GOSUB 42650
  237. 12750 IF WX=1 AND IZ=13 THEN ID=23
  238. 12800 WD(2,WX)=ID
  239. 12850 RETURN 
  240. 12900 REM ************  SELECT VOWELS MENU
  241. 12950 GOSUB 4750
  242. 13000 PRINT "SELECT YOUR VOWELS BY NUMBER"
  243. 13050 IF MN$="OFF" THEN RETURN
  244. 13100 PRINT "1. HOLEM         5. PATHAH          9. HATEPH-PATHAH"
  245. 13150 PRINT "2. HIREQ         6. SEGHOL         10. HATEPH-SEGHOL"
  246. 13200 PRINT "3. SERE          7. QUIBBUS        11. HATEPH-QUAMES"
  247. 13250 PRINT "4. QUAMES        8. SHEWA          12. CORRECT LAST VOWEL"
  248. 13300 RETURN
  249. 13350 REM QUICK LOAD VOWELS *********************************************
  250. 13400 IF MN$="OFF" THEN 13550
  251. 13450 GOSUB 12900:PRINT "                                   13. BLANK (NO VOWEL)"
  252. 13500 GOSUB 39550
  253. 13550 PRINT "ENTER ALL VOWELS BY NUMBER"
  254. 13600 PRINT "SEPARATED BY COMMAS."
  255. 13650 LINE INPUT L$
  256. 13700 IF LEN(L$)<>WL*3-1 THEN PRINT "WRONG NUMBER OF VOWELS ":GOTO 13650
  257. 13750 IL=1
  258. 13800 FOR WX=WL TO 1 STEP -1
  259. 13850 IX=IX+1
  260. 13900 IZ$=MID$(L$,IL,2)
  261. 13950 IL=IL+3
  262. 14000 IZ=VAL(IZ$)
  263. 14050 IF IZ=1 THEN WD(1,WX)=1
  264. 14100 IF IZ=13 THEN IZ=12
  265. 14150 IF IZ<>1 THEN WD(3,WX)=IZ
  266. 14200 NEXT WX
  267. 14250 GOTO 16850
  268. 14300 REM ************  SELECT VOWELS
  269. 14350 FOR J=0 TO 9
  270. 14400 WD(1,J)=12
  271. 14450 WD(3,J)=12
  272. 14500 NEXT J
  273. 14550 IX=0
  274. 14600 IF QK$="Y" THEN 13350
  275. 14650 FOR WX=WL TO 1 STEP -1
  276. 14700 IX=IX+1
  277. 14750 GOSUB 12900
  278. 14800 PRINT "                                   13. BLANK (NO VOWEL)"
  279. 14850 PRINT
  280. 14900 GOSUB 39550
  281. 14950 PRINT "ENTER VOWEL NUMBER FOR CONSONANT NUMBER ";IX
  282. 15000 INPUT IZ
  283. 15050 IF IZ=0 AND MN$="OFF" THEN GOSUB 4750:GOSUB 13100:GOTO 14950
  284. 15100 IF IZ<1 OR IZ>13 THEN 15050
  285. 15150 IF IZ=12 THEN 15400
  286. 15200 IF IZ=1 THEN WD(1,WX)=1
  287. 15250 IF IZ=13 THEN IZ=12
  288. 15300 IF IZ<>1 THEN WD(3,WX)=IZ
  289. 15350 GOTO 16800
  290. 15400 REM ************  FIX LAST VOWEL
  291. 15450 IF IX=1 THEN PRINT "THIS IS YOUR FIRST VOWEL.":GOTO 15000
  292. 15500 PRINT "WOULD YOU LIKE TO CHANGE VOWEL NUMBER ";IX-1;"WHICH IS NOW:"
  293. 15550 Z=WD(3,WX+1):Z2=WD(1,WX+1)
  294. 15600 IF Z=12 THEN Z=Z2
  295. 15650 IF Z=12 THEN PRINT "UNASSIGNED (NO VOWEL YET)":GOTO 16300
  296. 15700 ON Z GOTO 15750,15800,15850,15900,15950,16000,16050,16100,16150,16200,16250
  297. 15750 PRINT "HOLEM":GOTO 16300
  298. 15800 PRINT "HIREQ":GOTO 16300
  299. 15850 PRINT "SERE":GOTO 16300
  300. 15900 PRINT "QUAMES":GOTO 16300
  301. 15950 PRINT "PATHAH":GOTO 16300
  302. 16000 PRINT "SEGHOL":GOTO 16300
  303. 16050 PRINT "QUIBBUS":GOTO 16300
  304. 16100 PRINT "SHEWA":GOTO 16300
  305. 16150 PRINT "HATEPH-PATHAH":GOTO 16300
  306. 16200 PRINT "HATEPH-SEGHOL":GOTO 16300
  307. 16250 PRINT "HATEPH-QUAMES":GOTO 16300      
  308. 16300 FOR J=1 TO 3
  309. 16350 PRINT VOW$(Z,J)
  310. 16400 NEXT J
  311. 16450 INPUT "ENTER Y TO CHANGE, N TO KEEP ";AX$
  312. 16500 IF AX$<>"Y" AND AX$<>"N" THEN 16450
  313. 16550 IF AX$="N" THEN 14750
  314. 16600 WX=WX+1
  315. 16650 WD(3,WX)=12:WD(1,WX)=12
  316. 16700 IX=IX-1
  317. 16750 GOTO 14750
  318. 16800 NEXT WX
  319. 16850 REM ************  FINAL VOWEL CHECK
  320. 16900 GOSUB 39550
  321. 16950 PRINT
  322. 17000 PRINT "ARE ALL VOWELS CORRECT? (Y OR N) "
  323. 17050 INPUT AX$
  324. 17100 IF AX$<>"Y" AND AX$<>"N" THEN 17000
  325. 17150 IF AX$="N" THEN 17350
  326. 17200 GOSUB 38000
  327. 17250 IF FZ$="REPAIR" THEN RETURN
  328. 17300 GOTO 7300
  329. 17350 GOSUB 23750
  330. 17400 GOTO 16850
  331. 17450 REM ************  REVIEW LAST X WORDS
  332. 17500 GOSUB 4750
  333. 17550 PRINT "ENTER THE NUMBER OF YOUR MOST RECENT VOCABULARY WORDS YOU WISH TO REVIEW"
  334. 17600 INPUT "ENTER A 0 TO RETURN TO THE MAIN MENU ";RX
  335. 17650 IF RX=0 THEN 5850
  336. 17700 RZ=RX
  337. 17750 IF RX>30 THEN RZ=30
  338. 17800 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0
  339. 17850 SS=0:SR=0
  340. 17900 PRINT "ENTER HALT TO RETURN TO MAIN MENU"
  341. 17950 PRINT "ENTER SCORE FOR YOUR SCORE"
  342. 18000 I=INT(RND*15)+1
  343. 18050 IF I>4 AND I<8 THEN 18500 
  344. 18100 TR=INT(RND*RX)+1
  345. 18150 TR=TR+(LR-RX)
  346. 18200 FOR I=1 TO RZ
  347. 18250 IF US(I)=TR THEN 18100
  348. 18300 NEXT I
  349. 18350 GOSUB 23300
  350. 18400 GOSUB 20250
  351. 18450 GOTO 18000
  352. 18500 REM ********** CALL MISS LIST ******
  353. 18550 GOSUB 19550
  354. 18600 GOTO 18000
  355. 18650 REM ************  REVIEW ENTIRE VOCABULARY
  356. 18700 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0
  357. 18750 SS=0:SR=0
  358. 18800 RZ=30
  359. 18850 PRINT "ENTER HALT TO RETURN TO MAIN MENU"
  360. 18900 PRINT "ENTER SCORE FOR YOUR SCORE"
  361. 18950 I=INT(RND*15)+1
  362. 19000 IF I>4 AND I<8 THEN 19400
  363. 19050 TR=INT(RND*LR)+1
  364. 19100 FOR I=1 TO 30
  365. 19150 IF US(I)=TR THEN 18950
  366. 19200 NEXT I
  367. 19250 GOSUB 23300
  368. 19300 GOSUB 20250
  369. 19350 GOTO 18950
  370. 19400 REM ********** CALL MISS LIST ******
  371. 19450 GOSUB 19550
  372. 19500 GOTO 18950
  373. 19550 REM ************  GET ONE OFF OF MISS LIST
  374. 19600 IF ML=0 THEN RETURN
  375. 19650 MM=1
  376. 19700 I=INT(RND*ML)+1
  377. 19750 TR=LI(I)
  378. 19800 MI=I
  379. 19850 GOSUB 23300
  380. 19900 GOSUB 20250
  381. 19950 MM=0
  382. 20000 RETURN    
  383. 20050 REM SCORE **********************************************
  384. 20100 PRINT "OUT OF ";SS-1;" WORDS YOU HAVE GOTTEN ";SR;" RIGHT FOR A"
  385. 20150 PRINT "GRADE OF ";((SR/(SS-1))*100)
  386. 20200 RETURN
  387. 20250 REM ******************** TRY THE WORD **************************
  388. 20300 SS=SS+1
  389. 20350 UL=UL+1
  390. 20400 IF UL=LR THEN FOR I=1 TO 30:US(I-1)=0:NEXT I:UL=0
  391. 20450 IF UL=RZ THEN FOR I=2 TO RZ:US(I-1)=US(I):NEXT I:UL=UL-1
  392. 20500 US(UL)=TR
  393. 20550 GOSUB 4750
  394. 20600 IF SS<>1 THEN PRINT "GRADE CURRENTLY ";INT((SR/(SS-1))*100)
  395. 20650 GOSUB 39550
  396. 20700 PRINT
  397. 20750 PRINT "DEFINITION IS...";
  398. 20800 INPUT AX$
  399. 20810 IF AX$="OR" OR AX$="**OR**" THEN 20800
  400. 20850 IF AX$="SCORE" THEN GOSUB 20050:GOTO 20700
  401. 20900 IF AX$="HALT" THEN 5850 
  402. 20950 IF AX$="" OR AX$=" " THEN 21550
  403. 21000 X=INSTR(DF$,AX$)
  404. 21050 IF X=0 THEN 21550
  405. 21100 PRINT "*** CORRECT *** ";DF$
  406. 21150 IF MA=0 THEN SR=SR+1
  407. 21200 IF MM=0 THEN 21350
  408. 21250 FOR IJ=MI TO ML-1:LI(IJ)=LI(IJ+1):NEXT IJ
  409. 21300 ML=ML-1
  410. 21350 FOR I=1 TO 500:NEXT I
  411. 21400 IF MA<>0 THEN MA=MA-1:GOTO 20550
  412. 21450 GOTO 21500
  413. 21500 RETURN
  414. 21550 PRINT "*** INCORRECT ANSWER ***"
  415. 21600 GOSUB 4600
  416. 21650 MA=2
  417. 21700 IF KY$="N" THEN MA=1
  418. 21750 PRINT "DEFINITION IS...";DF$
  419. 21800 ML=ML+1
  420. 21810 IF ML>30 THEN ML=30
  421. 21850 LI(ML)=TR
  422. 21900 PRINT "STRIKE ANY KEY TO CONTINUE"
  423. 21950 X$=INKEY$
  424. 22000 IF X$="" THEN 21950
  425. 22050 GOTO 20250
  426. 22100 REM ************  REVIEW ENTIRE VOCABULARY--CONCENTRATE ON LAST X WORDS
  427. 22150 GOSUB 4750
  428. 22200 PRINT "ENTER THE NUMBER OF YOUR MOST RECENT VOCABULARY WORDS YOU WISH TO REVIEW"
  429. 22250 INPUT "ENTER A 0 TO RETURN TO THE MAIN MENU ";RX
  430. 22300 IF RX=0 THEN 5850
  431. 22350 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0
  432. 22400 RZ=30
  433. 22450 SS=0:SR=0
  434. 22500 PRINT "ENTER HALT TO RETURN TO MAIN MENU"
  435. 22550 PRINT "ENTER SCORE FOR YOUR SCORE"
  436. 22600 I=INT(RND*15)+1
  437. 22650 IF I>4 AND I<8 THEN 23150
  438. 22700 IF I>7 AND I<10 THEN TR=INT(RND*LR)+1:GOTO 22850
  439. 22750 TR=INT(RND*RX)+1
  440. 22800 TR=TR+(LR-RX)
  441. 22850 FOR I=1 TO 30
  442. 22900 IF US(I)=TR THEN 22750
  443. 22950 NEXT I
  444. 23000 GOSUB 23300
  445. 23050 GOSUB 20250
  446. 23100 GOTO 22600
  447. 23150 REM ********** CALL MISS LIST ******
  448. 23200 GOSUB 19550
  449. 23250 GOTO 22600
  450. 23300 REM ************  READ A WORD
  451. 23350 GET #1, TR
  452. 23400 FOR I=1 TO 9
  453. 23450 WD(1,I)=CVI(W$(I))
  454. 23500 WD(2,I)=CVI(W1$(I))
  455. 23550 WD(3,I)=CVI(W2$(I))
  456. 23600 NEXT I
  457. 23650 IF WD(2,1)=99 THEN TR=TR+1:GOTO 23350
  458. 23700 RETURN
  459. 23750 REM ************  CORRECT VOWEL SUBROUTINE
  460. 23800 PRINT "ENTER THE NUMBER OF THE CONSONANT WHOSE VOWEL YOU WOULD LIKE"
  461. 23850 PRINT "TO CHANGE. (1 IS FAR RIGHT, ";WL;"IS FAR LEFT)"
  462. 23900 INPUT IX
  463. 23950 IF IX=0 THEN RETURN
  464. 24000 IF IX>WL OR IX<1 THEN 23800
  465. 24050 WX=WL-IX+1
  466. 24100 PRINT "WOULD YOU LIKE TO CHANGE VOWEL NUMBER ";IX;"WHICH IS NOW:"
  467. 24150 Z=WD(3,WX):Z2=WD(1,WX)
  468. 24200 IF Z=12 THEN Z=Z2
  469. 24250 IF Z=12 THEN PRINT "UNASSIGNED (NO VOWEL YET)":GOTO 24900
  470. 24300 ON Z GOTO 24350,24400,24450,24500,24550,24600,24650,24700,24750,24800,24850
  471. 24350 PRINT "HOLEM":GOTO 24900
  472. 24400 PRINT "HIREQ":GOTO 24900
  473. 24450 PRINT "SERE":GOTO 24900
  474. 24500 PRINT "QUAMES":GOTO 24900
  475. 24550 PRINT "PATHAH":GOTO 24900
  476. 24600 PRINT "SEGHOL":GOTO 24900
  477. 24650 PRINT "QUIBBUS":GOTO 24900
  478. 24700 PRINT "SHEWA":GOTO 24900
  479. 24750 PRINT "HATEPH-PATHAH":GOTO 24900
  480. 24800 PRINT "HATEPH-SEGHOL":GOTO 24900
  481. 24850 PRINT "HATEPH-QUAMES":GOTO 24900      
  482. 24900 FOR J=1 TO 3
  483. 24950 PRINT VOW$(Z,J)
  484. 25000 NEXT J
  485. 25050 INPUT "ENTER Y TO CHANGE, N TO KEEP ";AX$
  486. 25100 IF AX$<>"Y" AND AX$<>"N" THEN 25050
  487. 25150 IF AX$="N" THEN 23750
  488. 25200 WD(3,WX)=12:WD(1,WX)=12
  489. 25250 GOSUB 12900
  490. 25300 GOSUB 5250
  491. 25350 IF MN$="ON" THEN PRINT "4. QUAMES        8. SHEWA          12. BLANK OUT VOWEL     "
  492. 25400 PRINT      
  493. 25450 GOSUB 39550
  494. 25500 PRINT "ENTER VOWEL NUMBER FOR CONSONANT NUMBER ";IX
  495. 25550 INPUT IZ
  496. 25600 IF IZ<1 OR IZ>12 THEN 25500
  497. 25650 IF IZ=1 THEN WD(1,WX)=1
  498. 25700 IF IZ>1 THEN WD(3,WX)=IZ
  499. 25750 IF IZ=12 THEN WD(1,WX)=12:WD(3,WX)=12
  500. 25800 RETURN
  501. 25850 REM ******************* CORRECT VOCABULARY *******************
  502. 25860 MN$="ON":QK$="N"
  503. 25900 GOSUB 4750
  504. 25950 PRINT "ENTER WORD NUMBER TO CORRECT (0 RETURNS TO MAIN MENU)"
  505. 26000 PRINT "(THE LETTER 'S' WILL SEARCH FOR A WORD) ";
  506. 26050 INPUT TR$
  507. 26100 IF TR$="S" THEN 27050
  508. 26150 TR=VAL(TR$)
  509. 26200 IF TR<0 OR TR>LR THEN 25850
  510. 26250 IF TR=0 THEN GOTO 5850
  511. 26300 GOSUB 23300
  512. 26350 DW$=DF$
  513. 26400 GOSUB 39550
  514. 26450 PRINT "WORD NUMBER ";TR
  515. 26500 PRINT "DEFINITION IS ";DW$
  516. 26550 PRINT
  517. 26600 PRINT "              CHOOSE ONE OF THE FOLLOWING:"
  518. 26650 PRINT "1--- CORRECT CONSONANTS            5--- DELETE WORD"
  519. 26700 PRINT "2--- CORRECT VOWELS                6--- STORE CORRECTED WORD"
  520. 26750 PRINT "3--- CORRECT DEFINITION            7--- GET ANOTHER WORD"
  521. 26800 PRINT "4--- RE-ENTER WORD FROM SCRATCH    8--- RETURN TO MAIN MENU"
  522. 26850 PRINT
  523. 26900 INPUT "                  ENTER YOUR CHOICE ";FM
  524. 26950 IF FM>8 OR FM<1 THEN 26900
  525. 27000 ON FM GOTO 28050,29300,29650,30300,30900,31300,28400,28850
  526. 27050 REM ************* SEARCH FOR A WORD **************************
  527. 27100 GOSUB 4750
  528. 27150 PRINT "ENTER A DEFINITION TO SEARCH FOR (STRIKE ENTER KEY TO ESCAPE"
  529. 27200 INPUT "SEARCH MODE) ";AX$
  530. 27250 IF AX$="" THEN 25850
  531. 27300 PRINT "SEARCHING..... POSSIBLE WORD NUMBERS ARE:"
  532. 27350 H=0
  533. 27400 FOR TR=1 TO LR
  534. 27450 GOSUB 23300
  535. 27500 X=INSTR(DF$,AX$)
  536. 27550 IF X=0 THEN 27700
  537. 27600 H=H+1
  538. 27650 PRINT TR;" ";
  539. 27700 NEXT TR
  540. 27750 PRINT 
  541. 27800 PRINT H;" MATCHES TO SEARCH FOUND "
  542. 27850 PRINT "STRIKE ANY KEY TO CONTINUE"
  543. 27900 X$=INKEY$
  544. 27950 IF X$="" THEN 27900
  545. 28000 GOTO 25850
  546. 28050 REM *********** CORRECT CONSONANTS
  547. 28100 GOSUB 39550
  548. 28150 INPUT "DO YOU WISH TO CORRECT THE CONSONANTS IN THIS WORD? ";AX$
  549. 28200 IF AX$<>"Y" AND AX$<>"N" THEN 28150
  550. 28250 IF AX$="N" THEN GOSUB 4750:GOTO 26400
  551. 28300 GOSUB 11900
  552. 28350 GOTO 28050
  553. 28400 REM *********** GET ANOTHER WORD *********************
  554. 28450 PRINT "DO YOU WISH TO GET SOME OTHER WORD? "
  555. 28500 PRINT "BE WARNED....ANY CHANGES YOU HAVE MADE TO THE "
  556. 28550 PRINT "CURRENT WORD WILL BE DROPPED UNLESS YOU HAVE TAKEN OPTION 6"
  557. 28600 PRINT "AND STORED YOUR CHANGES TO DISK. STILL WANT ANOTHER WORD?"
  558. 28650 INPUT "ENTER Y TO GET ANOTHER WORD, N TO KEEP CURRENT WORD";AX$
  559. 28700 IF AX$<>"Y" AND AX$<>"N" THEN 28650
  560. 28750 IF AX$="N" THEN GOSUB 4750:GOTO 26400
  561. 28800 GOTO 25850
  562. 28850 REM ********* RETURN TO MAIN MENU ***************
  563. 28900 PRINT "DO YOU WISH TO RETURN TO MAIN MENU? "
  564. 28950 PRINT "BE WARNED...ANY CHANGES YOU HAVE MADE TO THE "
  565. 29000 PRINT "CURRENT WORD WILL BE DROPPED UNLESS YOU HAVE TAKEN OPTION 6"
  566. 29050 PRINT "AND STORED YOUR CHANGES TO DISK. DO YOU STILL WISH TO RETURN"
  567. 29100 INPUT "TO THE MAIN MENU? ENTER Y TO RETURN, N TO STAY IN CORRECTION MODE ";AX$
  568. 29150 IF AX$<>"Y" AND AX$<>"N" THEN 28850
  569. 29200 IF AX$="N" THEN GOSUB 4750:GOTO 26400
  570. 29250 GOTO 5850
  571. 29300 REM *********** CORRECT VOWELS ***************************
  572. 29350 GOSUB 39550
  573. 29400 INPUT "DO YOU WISH TO CORRECT THE VOWELS IN THIS WORD? ";AX$
  574. 29450 IF AX$<>"Y" AND AX$<>"N" THEN 29400
  575. 29500 IF AX$="N" THEN GOSUB 4750:GOTO 26400
  576. 29550 GOSUB 23750
  577. 29600 GOTO 29300
  578. 29650 REM *********** CORRECT DEFINITION ****************
  579. 29700 INPUT "DO YOU WISH TO CORRECT THE DEFINITION OF THIS WORD? ";AX$
  580. 29750 IF AX$<>"Y" AND AX$<>"N" THEN 29700
  581. 29800 IF AX$="N" THEN GOSUB 4750:GOTO 26400
  582. 29850 PRINT "ENTER NEW DEFINITION "
  583. 29900 INPUT DW$
  584. 29950 IF LEN(DW$)>70 THEN PRINT "DEFINITION IS TOO LONG":GOTO 29850
  585. 30000 PRINT "DEFINITION OK? "
  586. 30050 INPUT AX$
  587. 30100 IF AX$<>"N" AND AX$<>"Y" THEN 30000
  588. 30150 IF AX$="N" THEN 29850
  589. 30200 LSET DF$=DW$
  590. 30250 GOSUB 4750:GOTO 26400
  591. 30300 REM ********** RE-ENTER WORD ****************************
  592. 30350 GOSUB 4750
  593. 30400 GOSUB 39550
  594. 30450 PRINT "WOULD YOU LIKE TO RE-ENTER THIS WORD FROM SCRATCH? "
  595. 30500 PRINT "THIS IS THE ONLY WAY TO CHANGE THE NUMBER OF CONSONANTS "
  596. 30550 INPUT "IN THIS WORD....(ENTER Y TO RE-ENTER, N TO KEEP) ";AX$
  597. 30600 IF AX$<>"Y" AND AX$<>"N" THEN 30300
  598. 30650 IF AX$="N" THEN 26300
  599. 30700 FZ$="REPAIR"
  600. 30750 GOSUB 7850
  601. 30800 FZ$=""
  602. 30850 GOTO 25850
  603. 30900 REM ******** DELETE WORD *********
  604. 30920 IF TR=LR THEN 31260
  605. 30950 PRINT "NOTE: DELETED WORDS MAKE DISK SPACE VERY INEFFICIENT"
  606. 31000 PRINT "IT IS BETTER TO RE-ENTER WORD FROM SCRATCH THAN TO DELETE"
  607. 31050 INPUT "DO YOU WISH TO DELETE THIS WORD? ";AX$
  608. 31100 IF AX$<>"N" AND AX$<>"Y" THEN 31050
  609. 31150 IF AX$="N" THEN GOSUB 4750:GOTO 26400
  610. 31200 WD(2,1)=99:PRINT "NOW DELETING WORD # ";TR
  611. 31220 LR=LR-1
  612. 31250 GOTO 31700
  613. 31260 PRINT "THIS IS CURRENTLY THE LAST WORD IN THE FILE"
  614. 31265 GOSUB 4600:GOSUB 4600:GOSUB 4600
  615. 31270 PRINT "THE LAST RECORD CANNOT BE DELETED"
  616. 31275 PRINT "WHY DON'T YOU TRY RE-ENTERING SOME OTHER"
  617. 31280 PRINT "WORD FROM SCRATCH IN ITS PLACE?"
  618. 31285 PRINT "STRIKE ANY KEY TO CONTINUE"
  619. 31290 X$=INKEY$
  620. 31292 IF X$="" THEN 31290
  621. 31294 GOTO 25850
  622. 31300 REM ******* WRITE CORRECTED WORD TO DISK **********
  623. 31350 GOSUB 4750
  624. 31400 GOSUB 39550
  625. 31450 PRINT "DEFINITION IS ";DF$
  626. 31500 INPUT "READY TO WRITE THIS CORRECTED WORD TO DISK? ";AX$
  627. 31550 IF AX$<>"Y" AND AX$<>"N" THEN 31500
  628. 31600 IF AX$="N" THEN GOSUB 4750:GOTO 26400
  629. 31650 PRINT "NOW STORING ON RECORD NUMBER ";TR
  630. 31700 ON ERROR GOTO 39200
  631. 31750 FOR I=1 TO 9
  632. 31800 LSET W$(I)=MKI$(WD(1,I))
  633. 31850 LSET W1$(I)=MKI$(WD(2,I))
  634. 31900 LSET W2$(I)=MKI$(WD(3,I))
  635. 31950 NEXT I
  636. 32000 LSET DF$=DW$
  637. 32050 PUT #1,TR
  638. 32100 ON ERROR GOTO 0
  639. 32150 GOTO 25850
  640. 32200 REM ************  PRINT ENTIRE VOCABULARY
  641. 32250 PRINT "DO YOU WISH TO PRINT OUT THE ENTIRE VOCABULARY? (Y OR N)";
  642. 32300 INPUT AX$
  643. 32350 IF AX$<>"Y" AND AX$<>"N" THEN 32250
  644. 32400 BV=1: LV=LR:IP=0
  645. 32450 IF AX$="Y" THEN 32850
  646. 32500 PRINT "DO YOU WISH TO PRINT OUT PART OF THE VOCABULARY? (Y OR N)";
  647. 32550 INPUT AX$
  648. 32600 IF AX$<>"Y" AND AX$<>"N" THEN 32500
  649. 32650 IF AX$="N" THEN 5850
  650. 32700 INPUT "ENTER FIRST WORD NUMBER TO LIST ";BV
  651. 32750 INPUT "ENTER LAST WORD NUMBER TO LIST ";LV
  652. 32760 IF BV<1 THEN BV=1
  653. 32770 IF LV>LR THEN LV=LR
  654. 32800 GOTO 33050
  655. 32850 PRINT "DO YOU WANT A SORTED LISTING? ";
  656. 32900 INPUT AX$
  657. 32950 IF AX$<>"Y" AND AX$<>"N" THEN 32850
  658. 33000 IF AX$="Y" THEN 33300
  659. 33050 FOR TR=BV TO LV
  660. 33100 GOSUB 23300
  661. 33150 GOSUB 34950
  662. 33200 NEXT TR
  663. 33250 GOTO 5850
  664. 33300 REM ************ SORT ROUTINE **********************
  665. 33350 GOSUB 4750:PRINT "STANDBY FOR SORT (THIS MAY TAKE A WHILE)" 
  666. 33400 DIM SO$(LR), SO(LR)
  667. 33450 FOR TR=1 TO LR
  668. 33500 GOSUB 23300:PRINT "RECORD ";TR:GOSUB 5150
  669. 33550 FOR I=1 TO 8
  670. 33600 IF WD(2,I)=43 AND WD(2,I+1)=43 THEN WL=I-1:GOTO 33700
  671. 33650 NEXT I
  672. 33700 CD$="":FOR I=WL TO 1 STEP -1
  673. 33750 Z=WD(2,I)
  674. 33755 IF Z=24 THEN Z=22
  675. 33760 ZX=Z+65
  676. 33800 IF Z=43 THEN ZX=64
  677. 33850 CD$=CD$+CHR$(ZX)
  678. 33900 NEXT I
  679. 33950 SO$(TR)=CD$:SO(TR)=TR 
  680. 34000 NEXT TR
  681. 34050 PRINT 
  682. 34100 PRINT "FIRST PASS COMPLETE, BEGINNING SECOND PASS":PRINT
  683. 34150 FOR I=1 TO LR-1
  684. 34200 FOR J=1 TO LR-1
  685. 34250 IF SO$(J)<SO$(J+1) THEN 34500
  686. 34300 TP$=SO$(J):TP=SO(J)
  687. 34350 SO$(J)=SO$(J+1):SO(J)=SO(J+1)
  688. 34400 SO$(J+1)=TP$:SO(J+1)=TP
  689. 34450 GOSUB 5150:PRINT "I= ";I;" J= ";J
  690. 34500 NEXT J:NEXT I
  691. 34550 PRINT "SORT COMPLETE....BEGINNING PRINTOUT"
  692. 34600 FOR SI=1 TO LR
  693. 34650 TR=SO(SI)
  694. 34700 GOSUB 23300:GOSUB 34950
  695. 34750 NEXT SI
  696. 34800 LPRINT CHR$(12);CHR$(12)
  697. 34850 ERASE SO$, SO
  698. 34900 GOTO 5850
  699. 34950 REM ************ PRINT A WORD ROUTINE
  700. 35000 IP=IP+1
  701. 35050 IF IP<>4 THEN 35200
  702. 35100 IP=1:LPRINT STRING$(70,"*")
  703. 35150 FOR IZ=1 TO 17:LPRINT:NEXT IZ            
  704. 35200 LPRINT STRING$(70,"*")
  705. 35250 LPRINT "WORD NUMBER ";TR;" DEFINITION IS "
  706. 35300 LPRINT DF$
  707. 35350 Z=WD(2,1)
  708. 35400 LPRINT "   ";
  709. 35450 FOR I=1 TO 9
  710. 35500 Z=WD(1,I)
  711. 35550 LPRINT VOW$(Z,3);
  712. 35600 NEXT I
  713. 35650 LPRINT
  714. 35700 FOR J=1 TO 7
  715. 35750 FOR I=0 TO 9
  716. 35800 Z=WD(2,I)
  717. 35850 IF I<>0 THEN 36400
  718. 35900 Z2=WD(2,1)
  719. 35950 IF Z2<>18 AND Z2<>25 AND Z2<>30 AND Z2<>32 THEN 36350
  720. 36000 Z2=WD(3,1)
  721. 36050 IF J<4 OR J>6 THEN 36350
  722. 36100 Z3$=VOW$(Z2,J-3)
  723. 36150 Z4$=MID$(Z3$,4,3)
  724. 36200 LPRINT Z4$;
  725. 36250 GOTO 36400
  726. 36300 Z=WD(2,1)
  727. 36350 LPRINT "   ";
  728. 36400 IF I<>1 THEN 36750
  729. 36450 IF Z<>18 AND Z<>25 AND Z<>30 AND Z<>32 THEN 36750
  730. 36500 IF Z=18 THEN LPRINT FIN$(1,J);
  731. 36550 IF Z=25 THEN LPRINT FIN$(2,J);
  732. 36600 IF Z=30 THEN LPRINT FIN$(3,J);
  733. 36650 IF Z=32 THEN LPRINT FIN$(4,J);
  734. 36700 GOTO 36800
  735. 36750 LPRINT CONS$(Z,J);
  736. 36800 NEXT I
  737. 36850 LPRINT
  738. 36900 NEXT J
  739. 36950 FOR J=0 TO 3
  740. 37000 FOR I=0 TO 9
  741. 37050 Z2=WD(3,I)
  742. 37100 IF I<>0 THEN 37250
  743. 37150 LPRINT "   ";
  744. 37200 GOTO 37750
  745. 37250 IF I<>1 THEN GOTO 37650
  746. 37300 Z=WD(2,1)
  747. 37350 IF Z<>18 AND Z<>25 AND Z<>30 AND Z<>32 THEN 37650
  748. 37400 IF Z=18 THEN LPRINT FIN$(1,J+7);
  749. 37450 IF Z=25 THEN LPRINT FIN$(2,J+7);
  750. 37500 IF Z=30 THEN LPRINT FIN$(3,J+7);
  751. 37550 IF Z=32 THEN LPRINT FIN$(4,J+7);
  752. 37600 GOTO 37750
  753. 37650 IF J=0 THEN LPRINT "        ";
  754. 37700 IF J<>0 THEN LPRINT VOW$(Z2,J);
  755. 37750 NEXT I
  756. 37800 LPRINT
  757. 37850 NEXT J
  758. 37900 LPRINT
  759. 37950 RETURN
  760. 38000 REM ************  WRITE RECORD TO DISK
  761. 38050 ON ERROR GOTO 39200
  762. 38100 PRINT "WHAT IS THE DEFINITION OF THIS WORD?"
  763. 38150 INPUT DW$
  764. 38200 IF LEN(DW$)>70 THEN PRINT "YOUR DEFINITION IS TOO LONG, PLEASE ENTER A SHORTER ONE":GOTO 38100
  765. 38250 INPUT "READY TO WRITE ON DISK? (Y OR N) ";AX$
  766. 38300 IF AX$<>"Y" AND AX$<>"N" THEN 38250
  767. 38350 IF AX$="N" THEN 38100
  768. 38400 IF FZ$<>"REPAIR" THEN 38550
  769. 38450 LHOLD=LR
  770. 38500 LR=TR-1
  771. 38550 PRINT "STORING ON DISK RECORD ";LR+1
  772. 38600 FOR I=1 TO 9
  773. 38650 LSET W$(I)=MKI$(WD(1,I))
  774. 38700 LSET W1$(I)=MKI$(WD(2,I))
  775. 38750 LSET W2$(I)=MKI$(WD(3,I))
  776. 38800 NEXT I
  777. 38850 LSET DF$=DW$
  778. 38900 LR=LR+1
  779. 38950 PUT #1,LR
  780. 39000 ON ERROR GOTO 0
  781. 39050 IF FZ$<>"REPAIR" THEN RETURN
  782. 39100 LR=LHOLD
  783. 39150 RETURN
  784. 39200 REM ************  ERROR CONTROL
  785. 39250 PRINT "ERROR IS ";ERR
  786. 39300 IF ERR=61 THEN PRINT "YOUR DISK IS OUT OF SPACE"
  787. 39350 PRINT "PRESS ANY KEY TO CONTINUE"
  788. 39400 X$=INKEY$
  789. 39450 IF X$="" THEN 39400
  790. 39500 RESUME NEXT
  791. 39550 REM ************  DISPLAY WORD ROUTINE
  792. 39600 FOR I = 1 TO 8
  793. 39650 IF WD(2,I)=43 AND WD(2,I+1)=43 THEN WL=I-1:GOTO 39750
  794. 39700 NEXT I
  795. 39750 Z=WD(2,1)
  796. 39800 TX=INT((9-WL)/2)*8
  797. 39850 PRINT TAB(TX);
  798. 39900 PRINT "   ";
  799. 39950 FOR I=1 TO WL
  800. 40000 Z=WD(1,I)
  801. 40050 PRINT VOW$(Z,3);
  802. 40100 NEXT I
  803. 40150 PRINT
  804. 40200 REM CALL POINT FOR NEW WORD
  805. 40250 FOR J=1 TO 7
  806. 40300 PRINT TAB(TX);
  807. 40350 FOR I=0 TO WL
  808. 40400 Z=WD(2,I)
  809. 40450 IF I<>0 THEN 41000
  810. 40500 Z2=WD(2,1)
  811. 40550 IF Z2<>18 AND Z2<>25 AND Z2<>30 AND Z2<>32 THEN 40950
  812. 40600 Z2=WD(3,1)
  813. 40650 IF J<4 OR J>6 THEN 40950
  814. 40700 Z3$=VOW$(Z2,J-3)
  815. 40750 Z4$=MID$(Z3$,4,3)
  816. 40800 PRINT Z4$;
  817. 40850 GOTO 41000
  818. 40900 Z=WD(2,1)
  819. 40950 PRINT "   ";
  820. 41000 IF I<>1 THEN 41350
  821. 41050 IF Z<>18 AND Z<>25 AND Z<>30 AND Z<>32 THEN 41350
  822. 41100 IF Z=18 THEN PRINT FIN$(1,J);
  823. 41150 IF Z=25 THEN PRINT FIN$(2,J);
  824. 41200 IF Z=30 THEN PRINT FIN$(3,J);
  825. 41250 IF Z=32 THEN PRINT FIN$(4,J);
  826. 41300 GOTO 41400
  827. 41350 PRINT CONS$(Z,J);
  828. 41400 NEXT I
  829. 41450 PRINT
  830. 41500 NEXT J
  831. 41550 FOR J=0 TO 3
  832. 41600 PRINT TAB(TX);
  833. 41650 FOR I=0 TO WL
  834. 41700 Z2=WD(3,I)
  835. 41750 IF I<>0 THEN 41900
  836. 41800 PRINT "   ";
  837. 41850 GOTO 42400
  838. 41900 IF I<>1 THEN GOTO 42300
  839. 41950 Z=WD(2,1)
  840. 42000 IF Z<>18 AND Z<>25 AND Z<>30 AND Z<>32 THEN 42300
  841. 42050 IF Z=18 THEN PRINT FIN$(1,J+7);
  842. 42100 IF Z=25 THEN PRINT FIN$(2,J+7);
  843. 42150 IF Z=30 THEN PRINT FIN$(3,J+7);
  844. 42200 IF Z=32 THEN PRINT FIN$(4,J+7);
  845. 42250 GOTO 42400
  846. 42300 IF J=0 THEN PRINT "        ";
  847. 42350 IF J<>0 THEN PRINT VOW$(Z2,J);
  848. 42400 NEXT I
  849. 42450 PRINT
  850. 42500 NEXT J
  851. 42550 PRINT
  852. 42600 RETURN
  853. 42650 REM ************  CONSONANT DATA MATCH SUBROUTINE
  854. 42700 PRINT "INPUT YOUR CHOICE FOR CONSONANT NUMBER ";IX
  855. 42750 INPUT IZ
  856. 42800 IF IX=1 OR IZ<>25 THEN 43150
  857. 42850 IF WD(2,WX+1)=43 THEN 43000
  858. 42900 IF WX>2 AND WD(2,WX-1)=43 AND WD(2,WX-2)<>43 THEN 43000
  859. 42950 GOTO 43150
  860. 43000 PRINT "DOUBLE BLANKS OR BLANKS AT THE BEGINNING OF A WORD"
  861. 43050 PRINT "ARE NOT ALLOWED, PLEASE TRY SOMETHING ELSE"
  862. 43100 GOTO 42700
  863. 43150 IF IZ=0 THEN GOSUB 4750:GOSUB 8400:GOSUB 39550:GOTO 42650
  864. 43200 IF IZ>26 OR IZ<1 THEN 42750
  865. 43250 IF IZ=26 THEN 45000
  866. 43300 DX$="N"
  867. 43350 IF IZ>23 THEN 43550
  868. 43400 IF WX=1 AND (IZ=11 OR IZ=13 OR IZ=14 OR IZ=18 OR IZ=19) THEN 43600
  869. 43450 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;
  870. 43500 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$
  871. 43550 IF DX$<>"N" AND DX$<>"Y" THEN 43300
  872. 43600 ID=IZ
  873. 43650 IF IZ=3 THEN ID=4
  874. 43700 IF IZ=4 THEN ID=6
  875. 43750 IF IZ=5 THEN ID=8
  876. 43800 IF IZ=6 THEN ID=9
  877. 43850 IF IZ=6 AND DX$="N" THEN INPUT "IS THIS A SUREQ WAW? (Y OR N) ";DX$
  878. 43900 IF DX$<>"N" AND DX$<>"Y" AND IZ=6 THEN DX$="N":GOTO 43850
  879. 43950 IF IZ=7 THEN ID=11
  880. 44000 IF IZ=8 THEN ID=13
  881. 44050 IF IZ=9 THEN ID=14
  882. 44100 IF IZ=10 THEN ID=16
  883. 44150 IF IZ=11 THEN ID=18
  884. 44200 IF IZ=12 THEN ID=20
  885. 44250 IF IZ=13 THEN ID=22
  886. 44300 IF IZ=14 THEN ID=25
  887. 44350 IF IZ=15 THEN ID=27
  888. 44400 IF IZ=16 THEN ID=29
  889. 44450 IF IZ=17 THEN ID=30
  890. 44500 IF IZ=18 THEN ID=32
  891. 44550 IF IZ=19 THEN ID=34
  892. 44600 IF IZ=20 THEN ID=36
  893. 44650 IF IZ=21 THEN ID=37
  894. 44700 IF IZ=22 THEN ID=39
  895. 44750 IF IZ=23 THEN ID=41
  896. 44800 IF IZ=24 THEN ID=44
  897. 44850 IF IZ=25 THEN ID=43
  898. 44900 IF DX$="Y" THEN ID=ID+1
  899. 44950 WD(2,WX)=ID
  900. 45000 RETURN
  901. 45050 DATA "ALEP","BET","GIMEL","DALET","HE","WAW","ZAYIN","HET","TET","YOD"
  902. 45100 DATA "KAP","LAMED","MEM","NUN","SAMEK","AYIN","PE","SADE","KOP","RES"
  903. 45150 DATA "SEEN","SHEEN","TAW"
  904. ET","TET","YOD"
  905. 45100 DATA "KAP","LAMED","