100 REM *********************************************************** 110 REM * DABAR 1.0 * 150 REM * HEBREW VOCABULARY DRILL SYSTEM * 200 REM * * 250 REM * COPYRIGHT 1986 BY DANIEL R. CRIDER * 300 REM * THIS PROGRAM IS RELEASED INTO THE PUBLIC DOMAIN * 350 REM * ON A SHAREWARE BASIS. PLEASE SEND $10 TO DANIEL CRIDER * 400 REM * FOR THE RIGHT TO USE THIS PROGRAM. THIS PROGRAM IS NOT * 450 REM * TO BE RE-SOLD OR RE-RELEASED WITH ANY COMMERCIAL * 470 REM * PACKAGE OR PROGRAM. * 500 REM * FOR NOTICE OF OTHER RIGHTS AND RESTRICTIONS PLEASE * 550 REM * SEE THE FILE DABAR.DOC WHICH SHOULD BE SUPPLIED WITH * 600 REM * THIS PROGRAM. PLEASE MAIL YOUR PAYMENT AND ANY COMMENTS * 950 REM * TO: * 1000 REM * * 1050 REM * DANIEL CRIDER * 1070 REM * 6604 CERVANTES AVE * 1100 REM * FT. WORTH, TEXAS 76133 * 1150 REM * * 1600 REM ************ SET UP ARRAYS 1650 DIM LI(30),US(30) 1700 ML=0 1750 DIM W$(9),W1$(9),W2$(9),WD(3,9) 1800 DIM CONS$(44,7), CN$(23) 1850 DIM VOW$(12,3) 1900 DIM FIN$(4,10) 1950 GOSUB 4750 2000 REM ************ LOAD ALPHABET 2005 PRINT 2010 PRINT TAB(36);"DABAR 1.0" 2014 PRINT 2015 PRINT TAB(18);" COPYRIGHT 1986 BY DANIEL R. CRIDER" 2020 PRINT 2050 OPEN "I",1,"LETTERS.BAS" 2100 FOR I=1 TO 44 2150 PRINT "PLEASE STANDBY.....LOADING HEBREW CONSONANTS ";I 2200 GOSUB 5150 2250 FOR J=1 TO 7 2300 LINE INPUT#1,AX$ 2350 CONS$(I,J)=MID$(AX$,13,8) 2400 NEXT J 2450 NEXT I 2500 PRINT 2550 FOR I=1 TO 12 2600 PRINT "...................LOADING HEBREW VOWELS ";I 2650 GOSUB 5150 2700 FOR J=1 TO 3 2750 LINE INPUT#1,AX$ 2800 VOW$(I,J)=MID$(AX$,13,8) 2850 NEXT J 2900 NEXT I 2950 PRINT 3000 FOR I=1 TO 4 3050 PRINT "...................LOADING SPECIAL CHARACTERS ";I 3100 GOSUB 5150 3150 FOR J=1 TO 10 3200 LINE INPUT#1,AX$ 3250 FIN$(I,J)=MID$(AX$,13,8) 3300 NEXT J 3350 NEXT I 3400 CLOSE #1 3450 FOR I=1 TO 23:READ CN$(I):NEXT I 3500 PRINT 3550 PRINT 3600 PRINT "ENTER SOME NUMBER FOR THE RANDOM SEED" 3650 PRINT "THE SAME NUMBER USED EACH TIME WILL GIVE THE SAME DRILLS" 3700 RANDOMIZE 3750 REM ************ OPEN VOCABULARY FILE 3800 PRINT 3850 PRINT "PLEASE STANDBY...SCANNING VOCABULARY FILE" 3900 OPEN "R",#1,"VOCAB",124 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$ 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$ 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$ 4100 LR=1 4150 DL=0 4200 GET #1,LR 4250 IF EOF(1) GOTO 4500 4300 WD(2,1)=CVI(W1$(1)) 4350 IF WD(2,1)=99 THEN DL=DL+1 4400 LR=LR+1 4450 GOTO 4200 4500 LR=LR-1 4550 GOTO 5850 4600 REM ************ RING BELL CODE 4650 PRINT CHR$(7);CHR$(7); 4700 RETURN 4750 REM ************ CLEAR SCREEN CODE 4850 PRINT CHR$(26) 4900 RETURN 5150 REM ************ CURSOR UP SCREEN CODE 5250 PRINT CHR$(11); 5300 RETURN 5500 REM ************ CURSOR DOWN SCREEN CODE 5600 PRINT CHR$(10); 5650 RETURN 5850 REM ************ DISPLAY MENU 5900 SU=0 5950 GOSUB 4750 6000 PRINT TAB(22);"CURRENTLY ";LR-DL;" VOCABULARY WORDS ON FILE" 6050 PRINT 6100 PRINT 6150 PRINT TAB(35);"DABAR 1.0" 6160 PRINT TAB(25);"HEBREW VOCABULARY DRILL SYSTEM" 6175 PRINT TAB(35);"MASTER MENU" 6200 PRINT 6250 PRINT TAB(25);"1-- ADD NEW WORDS TO VOCABULARY" 6300 PRINT TAB(25);"2-- REVIEW LAST X WORDS" 6350 PRINT TAB(25);"3-- REVIEW ENTIRE VOCABULARY" 6400 PRINT TAB(25);"4-- REVIEW ENTIRE VOCABULARY--" 6450 PRINT TAB(25);" --CONCENTRATE ON LAST X WORDS" 6500 PRINT TAB(25);"5-- PRINT VOCABULARY" 6550 PRINT TAB(25);"6-- CORRECT VOCABULARY" 6600 PRINT TAB(25);"7-- END PROGRAM" 6650 PRINT 6700 PRINT 6750 PRINT TAB(28);"PLEASE ENTER YOUR CHOICE "; 6800 INPUT M 6850 IF M>7 OR M<1 THEN 6750 6900 ON M GOTO 7300,17450,18650,22100,32200,25850,6950 6950 REM ************ END PROGRAM 7000 PRINT "READY TO QUIT? (Y OR N) "; 7050 INPUT X$ 7100 IF X$<>"Y" AND X$<>"N" THEN 7000 7150 IF X$="N" THEN 5850 7200 CLOSE #1 7250 SYSTEM 7300 REM ************ ADD NEW WORDS TO VOCABULARY 7350 FZ$="" 7400 IF SU=1 THEN 7750 7450 INPUT "DO YOU WANT MENUS? (Y OR N) ";MX$ 7500 MN$="ON" 7550 IF MX$<>"Y" AND MX$<>"N" THEN 7450 7600 IF MX$="N" THEN MN$="OFF" 7650 INPUT "DO YOU WANT QUICK LOAD? (Y OR N) ";QK$ 7700 IF QK$<>"Y" AND QK$<>"N" THEN 7650 7750 GOSUB 4750 7800 SU=1 7850 REM ************ SET UP CONSONANTS 7900 PRINT "ENTER NUMBER OF CONSONANTS PLEASE (ENTER 0 TO RETURN TO MENU) "; 7950 INPUT WL 8000 IF WL=0 THEN 5850 8050 IF WL<10 THEN 9000 8100 PRINT "LIMIT IS 9 CONSONANTS" 8150 GOTO 7900 8200 REM ************ CONSONANT SELECT MENU 8250 GOSUB 4750 8300 PRINT "SELECT YOUR CONSONANTS BY NUMBER" 8350 IF MN$="OFF" THEN RETURN 8400 PRINT "1. ALEP ' 10. YOD Y 19. KOP Q" 8450 PRINT "2. BET B,BH 11. KAP K,KH 20. RES R" 8500 PRINT "3. GIMEL G,GH 12. LAMED L 21. SEEN S'" 8550 PRINT "4. DALET D,DH 13. MEM M 22. SHEEN SH" 8600 PRINT "5. HE H 14. NUN N 23. TAW T,TH" 8650 PRINT "6. WAW W 15. SAMEK S 24. MAQQEPH -" 8700 PRINT "7. ZAYIN Z 16. AYIN ' 25. BLANK (NO CONS)" 8750 PRINT "8. HET H 17. PE P,PH 26. CORRECT LAST CONSONANT" 8800 PRINT "9. TET T 18. SADE S" 8850 PRINT:PRINT 8900 PRINT 8950 RETURN 9000 REM ************ CONSONANT DRIVER 9050 IX=0 9100 FOR J=1 TO 9 9150 WD(2,J)=43 9200 NEXT J 9250 FOR J=0 TO 9 9300 WD(1,J)=12 9350 WD(3,J)=12 9400 NEXT J 9450 IF QK$="Y" THEN 9900 9500 FOR WX=WL TO 1 STEP -1 9550 IX=IX+1 9600 GOSUB 8200 9650 GOSUB 5150:GOSUB 5150:GOSUB 5150 9700 GOSUB 40200 9750 GOSUB 42650 9800 IF IZ=26 THEN 10600 9850 IF IZ<>26 THEN 11200 9900 REM QUICK LOAD CONSONANTS ******************************** 9950 GOSUB 8200 10000 PRINT "ENTER ALL CONSONANTS BY NUMBER SEPARATED BY COMMAS." 10050 LINE INPUT L$ 10100 IF LEN(L$)<>WL*3-1 THEN PRINT "WRONG NUMBER OF CONSONANTS":GOTO 10050 10150 IL=1 10200 FOR WX=WL TO 1 STEP -1 10250 IX=IX+1 10300 IZ$=MID$(L$,IL,2) 10350 IL=IL+3 10400 IZ=VAL(IZ$) 10450 GOSUB 43300 10500 NEXT WX 10550 GOTO 11250 10600 REM ************ FIX LAST CONSONANT 10650 IF IX=1 THEN PRINT "THIS IS YOUR FIRST CONSONANT":GOTO 9750 10700 PRINT "WOULD YOU LIKE TO CHANGE CONSONANT NUMBER ";IX-1;" WHICH IS NOW" 10750 FOR J=1 TO 7:Z=WD(2,WX+1):PRINT CONS$(Z,J) 10800 NEXT J 10850 INPUT "ENTER Y TO CHANGE, N TO KEEP ";AX$ 10900 IF AX$<>"Y" AND AX$<>"N" THEN 10850 10950 IF AX$="N" THEN 9600 11000 WX=WX+1 11050 WD(2,WX)=43 11100 IX=IX-1 11150 GOTO 9600 11200 NEXT WX 11250 REM ************ CHECK ALL CONSONANTS 11300 WX=1 11350 IF IZ=13 THEN ID=24 11400 WD(2,WX)=ID 11450 GOSUB 4750 11500 GOSUB 39550 11550 PRINT "ARE CONSONANTS CORRECT? "; 11600 INPUT AX$ 11650 IF AX$<>"Y" AND AX$<>"N" THEN 11550 11700 IF AX$="Y" THEN 14300 11750 REM ************ FIX SOME CONSONANT 11800 GOSUB 11900 11850 GOTO 11450 11900 REM ************ CONSONANT REPAIR SUBROUTINE 11950 PRINT "ENTER CONSONANT NUMBER TO FIX (1 IS FAR RIGHT ";WL;" IS FAR LEFT) "; 12000 INPUT IX 12050 WX=WL-IX+1 12100 PRINT "WOULD YOU LIKE TO CHANGE CONSONANT NUMBER ";IX;" WHICH IS NOW" 12150 FOR J=1 TO 7:Z=WD(2,WX):PRINT CONS$(Z,J) 12200 NEXT J 12250 INPUT "ENTER Y TO CHANGE, N TO KEEP ";AX$ 12300 IF AX$<>"Y" AND AX$<>"N" THEN 12250 12350 IF AX$="N" THEN 11950 12400 WD(2,WX)=43 12450 GOSUB 8200 12500 GOSUB 5150 12550 IF MN$="ON" THEN GOSUB 5150:GOSUB 5150 12600 IF MN$="ON" THEN PRINT "9. TET T 18. SADE S " " 12650 PRINT 12700 GOSUB 42650 12750 IF WX=1 AND IZ=13 THEN ID=23 12800 WD(2,WX)=ID 12850 RETURN 12900 REM ************ SELECT VOWELS MENU 12950 GOSUB 4750 13000 PRINT "SELECT YOUR VOWELS BY NUMBER" 13050 IF MN$="OFF" THEN RETURN 13100 PRINT "1. HOLEM 5. PATHAH 9. HATEPH-PATHAH" 13150 PRINT "2. HIREQ 6. SEGHOL 10. HATEPH-SEGHOL" 13200 PRINT "3. SERE 7. QUIBBUS 11. HATEPH-QUAMES" 13250 PRINT "4. QUAMES 8. SHEWA 12. CORRECT LAST VOWEL" 13300 RETURN 13350 REM QUICK LOAD VOWELS ********************************************* 13400 IF MN$="OFF" THEN 13550 13450 GOSUB 12900:PRINT " 13. BLANK (NO VOWEL)" 13500 GOSUB 39550 13550 PRINT "ENTER ALL VOWELS BY NUMBER" 13600 PRINT "SEPARATED BY COMMAS." 13650 LINE INPUT L$ 13700 IF LEN(L$)<>WL*3-1 THEN PRINT "WRONG NUMBER OF VOWELS ":GOTO 13650 13750 IL=1 13800 FOR WX=WL TO 1 STEP -1 13850 IX=IX+1 13900 IZ$=MID$(L$,IL,2) 13950 IL=IL+3 14000 IZ=VAL(IZ$) 14050 IF IZ=1 THEN WD(1,WX)=1 14100 IF IZ=13 THEN IZ=12 14150 IF IZ<>1 THEN WD(3,WX)=IZ 14200 NEXT WX 14250 GOTO 16850 14300 REM ************ SELECT VOWELS 14350 FOR J=0 TO 9 14400 WD(1,J)=12 14450 WD(3,J)=12 14500 NEXT J 14550 IX=0 14600 IF QK$="Y" THEN 13350 14650 FOR WX=WL TO 1 STEP -1 14700 IX=IX+1 14750 GOSUB 12900 14800 PRINT " 13. BLANK (NO VOWEL)" 14850 PRINT 14900 GOSUB 39550 14950 PRINT "ENTER VOWEL NUMBER FOR CONSONANT NUMBER ";IX 15000 INPUT IZ 15050 IF IZ=0 AND MN$="OFF" THEN GOSUB 4750:GOSUB 13100:GOTO 14950 15100 IF IZ<1 OR IZ>13 THEN 15050 15150 IF IZ=12 THEN 15400 15200 IF IZ=1 THEN WD(1,WX)=1 15250 IF IZ=13 THEN IZ=12 15300 IF IZ<>1 THEN WD(3,WX)=IZ 15350 GOTO 16800 15400 REM ************ FIX LAST VOWEL 15450 IF IX=1 THEN PRINT "THIS IS YOUR FIRST VOWEL.":GOTO 15000 15500 PRINT "WOULD YOU LIKE TO CHANGE VOWEL NUMBER ";IX-1;"WHICH IS NOW:" 15550 Z=WD(3,WX+1):Z2=WD(1,WX+1) 15600 IF Z=12 THEN Z=Z2 15650 IF Z=12 THEN PRINT "UNASSIGNED (NO VOWEL YET)":GOTO 16300 15700 ON Z GOTO 15750,15800,15850,15900,15950,16000,16050,16100,16150,16200,16250 15750 PRINT "HOLEM":GOTO 16300 15800 PRINT "HIREQ":GOTO 16300 15850 PRINT "SERE":GOTO 16300 15900 PRINT "QUAMES":GOTO 16300 15950 PRINT "PATHAH":GOTO 16300 16000 PRINT "SEGHOL":GOTO 16300 16050 PRINT "QUIBBUS":GOTO 16300 16100 PRINT "SHEWA":GOTO 16300 16150 PRINT "HATEPH-PATHAH":GOTO 16300 16200 PRINT "HATEPH-SEGHOL":GOTO 16300 16250 PRINT "HATEPH-QUAMES":GOTO 16300 16300 FOR J=1 TO 3 16350 PRINT VOW$(Z,J) 16400 NEXT J 16450 INPUT "ENTER Y TO CHANGE, N TO KEEP ";AX$ 16500 IF AX$<>"Y" AND AX$<>"N" THEN 16450 16550 IF AX$="N" THEN 14750 16600 WX=WX+1 16650 WD(3,WX)=12:WD(1,WX)=12 16700 IX=IX-1 16750 GOTO 14750 16800 NEXT WX 16850 REM ************ FINAL VOWEL CHECK 16900 GOSUB 39550 16950 PRINT 17000 PRINT "ARE ALL VOWELS CORRECT? (Y OR N) " 17050 INPUT AX$ 17100 IF AX$<>"Y" AND AX$<>"N" THEN 17000 17150 IF AX$="N" THEN 17350 17200 GOSUB 38000 17250 IF FZ$="REPAIR" THEN RETURN 17300 GOTO 7300 17350 GOSUB 23750 17400 GOTO 16850 17450 REM ************ REVIEW LAST X WORDS 17500 GOSUB 4750 17550 PRINT "ENTER THE NUMBER OF YOUR MOST RECENT VOCABULARY WORDS YOU WISH TO REVIEW" 17600 INPUT "ENTER A 0 TO RETURN TO THE MAIN MENU ";RX 17650 IF RX=0 THEN 5850 17700 RZ=RX 17750 IF RX>30 THEN RZ=30 17800 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0 17850 SS=0:SR=0 17900 PRINT "ENTER HALT TO RETURN TO MAIN MENU" 17950 PRINT "ENTER SCORE FOR YOUR SCORE" 18000 I=INT(RND*15)+1 18050 IF I>4 AND I<8 THEN 18500 18100 TR=INT(RND*RX)+1 18150 TR=TR+(LR-RX) 18200 FOR I=1 TO RZ 18250 IF US(I)=TR THEN 18100 18300 NEXT I 18350 GOSUB 23300 18400 GOSUB 20250 18450 GOTO 18000 18500 REM ********** CALL MISS LIST ****** 18550 GOSUB 19550 18600 GOTO 18000 18650 REM ************ REVIEW ENTIRE VOCABULARY 18700 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0 18750 SS=0:SR=0 18800 RZ=30 18850 PRINT "ENTER HALT TO RETURN TO MAIN MENU" 18900 PRINT "ENTER SCORE FOR YOUR SCORE" 18950 I=INT(RND*15)+1 19000 IF I>4 AND I<8 THEN 19400 19050 TR=INT(RND*LR)+1 19100 FOR I=1 TO 30 19150 IF US(I)=TR THEN 18950 19200 NEXT I 19250 GOSUB 23300 19300 GOSUB 20250 19350 GOTO 18950 19400 REM ********** CALL MISS LIST ****** 19450 GOSUB 19550 19500 GOTO 18950 19550 REM ************ GET ONE OFF OF MISS LIST 19600 IF ML=0 THEN RETURN 19650 MM=1 19700 I=INT(RND*ML)+1 19750 TR=LI(I) 19800 MI=I 19850 GOSUB 23300 19900 GOSUB 20250 19950 MM=0 20000 RETURN 20050 REM SCORE ********************************************** 20100 PRINT "OUT OF ";SS-1;" WORDS YOU HAVE GOTTEN ";SR;" RIGHT FOR A" 20150 PRINT "GRADE OF ";((SR/(SS-1))*100) 20200 RETURN 20250 REM ******************** TRY THE WORD ************************** 20300 SS=SS+1 20350 UL=UL+1 20400 IF UL=LR THEN FOR I=1 TO 30:US(I-1)=0:NEXT I:UL=0 20450 IF UL=RZ THEN FOR I=2 TO RZ:US(I-1)=US(I):NEXT I:UL=UL-1 20500 US(UL)=TR 20550 GOSUB 4750 20600 IF SS<>1 THEN PRINT "GRADE CURRENTLY ";INT((SR/(SS-1))*100) 20650 GOSUB 39550 20700 PRINT 20750 PRINT "DEFINITION IS..."; 20800 INPUT AX$ 20810 IF AX$="OR" OR AX$="**OR**" THEN 20800 20850 IF AX$="SCORE" THEN GOSUB 20050:GOTO 20700 20900 IF AX$="HALT" THEN 5850 20950 IF AX$="" OR AX$=" " THEN 21550 21000 X=INSTR(DF$,AX$) 21050 IF X=0 THEN 21550 21100 PRINT "*** CORRECT *** ";DF$ 21150 IF MA=0 THEN SR=SR+1 21200 IF MM=0 THEN 21350 21250 FOR IJ=MI TO ML-1:LI(IJ)=LI(IJ+1):NEXT IJ 21300 ML=ML-1 21350 FOR I=1 TO 500:NEXT I 21400 IF MA<>0 THEN MA=MA-1:GOTO 20550 21450 GOTO 21500 21500 RETURN 21550 PRINT "*** INCORRECT ANSWER ***" 21600 GOSUB 4600 21650 MA=2 21700 IF KY$="N" THEN MA=1 21750 PRINT "DEFINITION IS...";DF$ 21800 ML=ML+1 21810 IF ML>30 THEN ML=30 21850 LI(ML)=TR 21900 PRINT "STRIKE ANY KEY TO CONTINUE" 21950 X$=INKEY$ 22000 IF X$="" THEN 21950 22050 GOTO 20250 22100 REM ************ REVIEW ENTIRE VOCABULARY--CONCENTRATE ON LAST X WORDS 22150 GOSUB 4750 22200 PRINT "ENTER THE NUMBER OF YOUR MOST RECENT VOCABULARY WORDS YOU WISH TO REVIEW" 22250 INPUT "ENTER A 0 TO RETURN TO THE MAIN MENU ";RX 22300 IF RX=0 THEN 5850 22350 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0 22400 RZ=30 22450 SS=0:SR=0 22500 PRINT "ENTER HALT TO RETURN TO MAIN MENU" 22550 PRINT "ENTER SCORE FOR YOUR SCORE" 22600 I=INT(RND*15)+1 22650 IF I>4 AND I<8 THEN 23150 22700 IF I>7 AND I<10 THEN TR=INT(RND*LR)+1:GOTO 22850 22750 TR=INT(RND*RX)+1 22800 TR=TR+(LR-RX) 22850 FOR I=1 TO 30 22900 IF US(I)=TR THEN 22750 22950 NEXT I 23000 GOSUB 23300 23050 GOSUB 20250 23100 GOTO 22600 23150 REM ********** CALL MISS LIST ****** 23200 GOSUB 19550 23250 GOTO 22600 23300 REM ************ READ A WORD 23350 GET #1, TR 23400 FOR I=1 TO 9 23450 WD(1,I)=CVI(W$(I)) 23500 WD(2,I)=CVI(W1$(I)) 23550 WD(3,I)=CVI(W2$(I)) 23600 NEXT I 23650 IF WD(2,1)=99 THEN TR=TR+1:GOTO 23350 23700 RETURN 23750 REM ************ CORRECT VOWEL SUBROUTINE 23800 PRINT "ENTER THE NUMBER OF THE CONSONANT WHOSE VOWEL YOU WOULD LIKE" 23850 PRINT "TO CHANGE. (1 IS FAR RIGHT, ";WL;"IS FAR LEFT)" 23900 INPUT IX 23950 IF IX=0 THEN RETURN 24000 IF IX>WL OR IX<1 THEN 23800 24050 WX=WL-IX+1 24100 PRINT "WOULD YOU LIKE TO CHANGE VOWEL NUMBER ";IX;"WHICH IS NOW:" 24150 Z=WD(3,WX):Z2=WD(1,WX) 24200 IF Z=12 THEN Z=Z2 24250 IF Z=12 THEN PRINT "UNASSIGNED (NO VOWEL YET)":GOTO 24900 24300 ON Z GOTO 24350,24400,24450,24500,24550,24600,24650,24700,24750,24800,24850 24350 PRINT "HOLEM":GOTO 24900 24400 PRINT "HIREQ":GOTO 24900 24450 PRINT "SERE":GOTO 24900 24500 PRINT "QUAMES":GOTO 24900 24550 PRINT "PATHAH":GOTO 24900 24600 PRINT "SEGHOL":GOTO 24900 24650 PRINT "QUIBBUS":GOTO 24900 24700 PRINT "SHEWA":GOTO 24900 24750 PRINT "HATEPH-PATHAH":GOTO 24900 24800 PRINT "HATEPH-SEGHOL":GOTO 24900 24850 PRINT "HATEPH-QUAMES":GOTO 24900 24900 FOR J=1 TO 3 24950 PRINT VOW$(Z,J) 25000 NEXT J 25050 INPUT "ENTER Y TO CHANGE, N TO KEEP ";AX$ 25100 IF AX$<>"Y" AND AX$<>"N" THEN 25050 25150 IF AX$="N" THEN 23750 25200 WD(3,WX)=12:WD(1,WX)=12 25250 GOSUB 12900 25300 GOSUB 5250 25350 IF MN$="ON" THEN PRINT "4. QUAMES 8. SHEWA 12. BLANK OUT VOWEL " 25400 PRINT 25450 GOSUB 39550 25500 PRINT "ENTER VOWEL NUMBER FOR CONSONANT NUMBER ";IX 25550 INPUT IZ 25600 IF IZ<1 OR IZ>12 THEN 25500 25650 IF IZ=1 THEN WD(1,WX)=1 25700 IF IZ>1 THEN WD(3,WX)=IZ 25750 IF IZ=12 THEN WD(1,WX)=12:WD(3,WX)=12 25800 RETURN 25850 REM ******************* CORRECT VOCABULARY ******************* 25860 MN$="ON":QK$="N" 25900 GOSUB 4750 25950 PRINT "ENTER WORD NUMBER TO CORRECT (0 RETURNS TO MAIN MENU)" 26000 PRINT "(THE LETTER 'S' WILL SEARCH FOR A WORD) "; 26050 INPUT TR$ 26100 IF TR$="S" THEN 27050 26150 TR=VAL(TR$) 26200 IF TR<0 OR TR>LR THEN 25850 26250 IF TR=0 THEN GOTO 5850 26300 GOSUB 23300 26350 DW$=DF$ 26400 GOSUB 39550 26450 PRINT "WORD NUMBER ";TR 26500 PRINT "DEFINITION IS ";DW$ 26550 PRINT 26600 PRINT " CHOOSE ONE OF THE FOLLOWING:" 26650 PRINT "1--- CORRECT CONSONANTS 5--- DELETE WORD" 26700 PRINT "2--- CORRECT VOWELS 6--- STORE CORRECTED WORD" 26750 PRINT "3--- CORRECT DEFINITION 7--- GET ANOTHER WORD" 26800 PRINT "4--- RE-ENTER WORD FROM SCRATCH 8--- RETURN TO MAIN MENU" 26850 PRINT 26900 INPUT " ENTER YOUR CHOICE ";FM 26950 IF FM>8 OR FM<1 THEN 26900 27000 ON FM GOTO 28050,29300,29650,30300,30900,31300,28400,28850 27050 REM ************* SEARCH FOR A WORD ************************** 27100 GOSUB 4750 27150 PRINT "ENTER A DEFINITION TO SEARCH FOR (STRIKE ENTER KEY TO ESCAPE" 27200 INPUT "SEARCH MODE) ";AX$ 27250 IF AX$="" THEN 25850 27300 PRINT "SEARCHING..... POSSIBLE WORD NUMBERS ARE:" 27350 H=0 27400 FOR TR=1 TO LR 27450 GOSUB 23300 27500 X=INSTR(DF$,AX$) 27550 IF X=0 THEN 27700 27600 H=H+1 27650 PRINT TR;" "; 27700 NEXT TR 27750 PRINT 27800 PRINT H;" MATCHES TO SEARCH FOUND " 27850 PRINT "STRIKE ANY KEY TO CONTINUE" 27900 X$=INKEY$ 27950 IF X$="" THEN 27900 28000 GOTO 25850 28050 REM *********** CORRECT CONSONANTS 28100 GOSUB 39550 28150 INPUT "DO YOU WISH TO CORRECT THE CONSONANTS IN THIS WORD? ";AX$ 28200 IF AX$<>"Y" AND AX$<>"N" THEN 28150 28250 IF AX$="N" THEN GOSUB 4750:GOTO 26400 28300 GOSUB 11900 28350 GOTO 28050 28400 REM *********** GET ANOTHER WORD ********************* 28450 PRINT "DO YOU WISH TO GET SOME OTHER WORD? " 28500 PRINT "BE WARNED....ANY CHANGES YOU HAVE MADE TO THE " 28550 PRINT "CURRENT WORD WILL BE DROPPED UNLESS YOU HAVE TAKEN OPTION 6" 28600 PRINT "AND STORED YOUR CHANGES TO DISK. STILL WANT ANOTHER WORD?" 28650 INPUT "ENTER Y TO GET ANOTHER WORD, N TO KEEP CURRENT WORD";AX$ 28700 IF AX$<>"Y" AND AX$<>"N" THEN 28650 28750 IF AX$="N" THEN GOSUB 4750:GOTO 26400 28800 GOTO 25850 28850 REM ********* RETURN TO MAIN MENU *************** 28900 PRINT "DO YOU WISH TO RETURN TO MAIN MENU? " 28950 PRINT "BE WARNED...ANY CHANGES YOU HAVE MADE TO THE " 29000 PRINT "CURRENT WORD WILL BE DROPPED UNLESS YOU HAVE TAKEN OPTION 6" 29050 PRINT "AND STORED YOUR CHANGES TO DISK. DO YOU STILL WISH TO RETURN" 29100 INPUT "TO THE MAIN MENU? ENTER Y TO RETURN, N TO STAY IN CORRECTION MODE ";AX$ 29150 IF AX$<>"Y" AND AX$<>"N" THEN 28850 29200 IF AX$="N" THEN GOSUB 4750:GOTO 26400 29250 GOTO 5850 29300 REM *********** CORRECT VOWELS *************************** 29350 GOSUB 39550 29400 INPUT "DO YOU WISH TO CORRECT THE VOWELS IN THIS WORD? ";AX$ 29450 IF AX$<>"Y" AND AX$<>"N" THEN 29400 29500 IF AX$="N" THEN GOSUB 4750:GOTO 26400 29550 GOSUB 23750 29600 GOTO 29300 29650 REM *********** CORRECT DEFINITION **************** 29700 INPUT "DO YOU WISH TO CORRECT THE DEFINITION OF THIS WORD? ";AX$ 29750 IF AX$<>"Y" AND AX$<>"N" THEN 29700 29800 IF AX$="N" THEN GOSUB 4750:GOTO 26400 29850 PRINT "ENTER NEW DEFINITION " 29900 INPUT DW$ 29950 IF LEN(DW$)>70 THEN PRINT "DEFINITION IS TOO LONG":GOTO 29850 30000 PRINT "DEFINITION OK? " 30050 INPUT AX$ 30100 IF AX$<>"N" AND AX$<>"Y" THEN 30000 30150 IF AX$="N" THEN 29850 30200 LSET DF$=DW$ 30250 GOSUB 4750:GOTO 26400 30300 REM ********** RE-ENTER WORD **************************** 30350 GOSUB 4750 30400 GOSUB 39550 30450 PRINT "WOULD YOU LIKE TO RE-ENTER THIS WORD FROM SCRATCH? " 30500 PRINT "THIS IS THE ONLY WAY TO CHANGE THE NUMBER OF CONSONANTS " 30550 INPUT "IN THIS WORD....(ENTER Y TO RE-ENTER, N TO KEEP) ";AX$ 30600 IF AX$<>"Y" AND AX$<>"N" THEN 30300 30650 IF AX$="N" THEN 26300 30700 FZ$="REPAIR" 30750 GOSUB 7850 30800 FZ$="" 30850 GOTO 25850 30900 REM ******** DELETE WORD ********* 30920 IF TR=LR THEN 31260 30950 PRINT "NOTE: DELETED WORDS MAKE DISK SPACE VERY INEFFICIENT" 31000 PRINT "IT IS BETTER TO RE-ENTER WORD FROM SCRATCH THAN TO DELETE" 31050 INPUT "DO YOU WISH TO DELETE THIS WORD? ";AX$ 31100 IF AX$<>"N" AND AX$<>"Y" THEN 31050 31150 IF AX$="N" THEN GOSUB 4750:GOTO 26400 31200 WD(2,1)=99:PRINT "NOW DELETING WORD # ";TR 31220 LR=LR-1 31250 GOTO 31700 31260 PRINT "THIS IS CURRENTLY THE LAST WORD IN THE FILE" 31265 GOSUB 4600:GOSUB 4600:GOSUB 4600 31270 PRINT "THE LAST RECORD CANNOT BE DELETED" 31275 PRINT "WHY DON'T YOU TRY RE-ENTERING SOME OTHER" 31280 PRINT "WORD FROM SCRATCH IN ITS PLACE?" 31285 PRINT "STRIKE ANY KEY TO CONTINUE" 31290 X$=INKEY$ 31292 IF X$="" THEN 31290 31294 GOTO 25850 31300 REM ******* WRITE CORRECTED WORD TO DISK ********** 31350 GOSUB 4750 31400 GOSUB 39550 31450 PRINT "DEFINITION IS ";DF$ 31500 INPUT "READY TO WRITE THIS CORRECTED WORD TO DISK? ";AX$ 31550 IF AX$<>"Y" AND AX$<>"N" THEN 31500 31600 IF AX$="N" THEN GOSUB 4750:GOTO 26400 31650 PRINT "NOW STORING ON RECORD NUMBER ";TR 31700 ON ERROR GOTO 39200 31750 FOR I=1 TO 9 31800 LSET W$(I)=MKI$(WD(1,I)) 31850 LSET W1$(I)=MKI$(WD(2,I)) 31900 LSET W2$(I)=MKI$(WD(3,I)) 31950 NEXT I 32000 LSET DF$=DW$ 32050 PUT #1,TR 32100 ON ERROR GOTO 0 32150 GOTO 25850 32200 REM ************ PRINT ENTIRE VOCABULARY 32250 PRINT "DO YOU WISH TO PRINT OUT THE ENTIRE VOCABULARY? (Y OR N)"; 32300 INPUT AX$ 32350 IF AX$<>"Y" AND AX$<>"N" THEN 32250 32400 BV=1: LV=LR:IP=0 32450 IF AX$="Y" THEN 32850 32500 PRINT "DO YOU WISH TO PRINT OUT PART OF THE VOCABULARY? (Y OR N)"; 32550 INPUT AX$ 32600 IF AX$<>"Y" AND AX$<>"N" THEN 32500 32650 IF AX$="N" THEN 5850 32700 INPUT "ENTER FIRST WORD NUMBER TO LIST ";BV 32750 INPUT "ENTER LAST WORD NUMBER TO LIST ";LV 32760 IF BV<1 THEN BV=1 32770 IF LV>LR THEN LV=LR 32800 GOTO 33050 32850 PRINT "DO YOU WANT A SORTED LISTING? "; 32900 INPUT AX$ 32950 IF AX$<>"Y" AND AX$<>"N" THEN 32850 33000 IF AX$="Y" THEN 33300 33050 FOR TR=BV TO LV 33100 GOSUB 23300 33150 GOSUB 34950 33200 NEXT TR 33250 GOTO 5850 33300 REM ************ SORT ROUTINE ********************** 33350 GOSUB 4750:PRINT "STANDBY FOR SORT (THIS MAY TAKE A WHILE)" 33400 DIM SO$(LR), SO(LR) 33450 FOR TR=1 TO LR 33500 GOSUB 23300:PRINT "RECORD ";TR:GOSUB 5150 33550 FOR I=1 TO 8 33600 IF WD(2,I)=43 AND WD(2,I+1)=43 THEN WL=I-1:GOTO 33700 33650 NEXT I 33700 CD$="":FOR I=WL TO 1 STEP -1 33750 Z=WD(2,I) 33755 IF Z=24 THEN Z=22 33760 ZX=Z+65 33800 IF Z=43 THEN ZX=64 33850 CD$=CD$+CHR$(ZX) 33900 NEXT I 33950 SO$(TR)=CD$:SO(TR)=TR 34000 NEXT TR 34050 PRINT 34100 PRINT "FIRST PASS COMPLETE, BEGINNING SECOND PASS":PRINT 34150 FOR I=1 TO LR-1 34200 FOR J=1 TO LR-1 34250 IF SO$(J)4 THEN 35200 35100 IP=1:LPRINT STRING$(70,"*") 35150 FOR IZ=1 TO 17:LPRINT:NEXT IZ 35200 LPRINT STRING$(70,"*") 35250 LPRINT "WORD NUMBER ";TR;" DEFINITION IS " 35300 LPRINT DF$ 35350 Z=WD(2,1) 35400 LPRINT " "; 35450 FOR I=1 TO 9 35500 Z=WD(1,I) 35550 LPRINT VOW$(Z,3); 35600 NEXT I 35650 LPRINT 35700 FOR J=1 TO 7 35750 FOR I=0 TO 9 35800 Z=WD(2,I) 35850 IF I<>0 THEN 36400 35900 Z2=WD(2,1) 35950 IF Z2<>18 AND Z2<>25 AND Z2<>30 AND Z2<>32 THEN 36350 36000 Z2=WD(3,1) 36050 IF J<4 OR J>6 THEN 36350 36100 Z3$=VOW$(Z2,J-3) 36150 Z4$=MID$(Z3$,4,3) 36200 LPRINT Z4$; 36250 GOTO 36400 36300 Z=WD(2,1) 36350 LPRINT " "; 36400 IF I<>1 THEN 36750 36450 IF Z<>18 AND Z<>25 AND Z<>30 AND Z<>32 THEN 36750 36500 IF Z=18 THEN LPRINT FIN$(1,J); 36550 IF Z=25 THEN LPRINT FIN$(2,J); 36600 IF Z=30 THEN LPRINT FIN$(3,J); 36650 IF Z=32 THEN LPRINT FIN$(4,J); 36700 GOTO 36800 36750 LPRINT CONS$(Z,J); 36800 NEXT I 36850 LPRINT 36900 NEXT J 36950 FOR J=0 TO 3 37000 FOR I=0 TO 9 37050 Z2=WD(3,I) 37100 IF I<>0 THEN 37250 37150 LPRINT " "; 37200 GOTO 37750 37250 IF I<>1 THEN GOTO 37650 37300 Z=WD(2,1) 37350 IF Z<>18 AND Z<>25 AND Z<>30 AND Z<>32 THEN 37650 37400 IF Z=18 THEN LPRINT FIN$(1,J+7); 37450 IF Z=25 THEN LPRINT FIN$(2,J+7); 37500 IF Z=30 THEN LPRINT FIN$(3,J+7); 37550 IF Z=32 THEN LPRINT FIN$(4,J+7); 37600 GOTO 37750 37650 IF J=0 THEN LPRINT " "; 37700 IF J<>0 THEN LPRINT VOW$(Z2,J); 37750 NEXT I 37800 LPRINT 37850 NEXT J 37900 LPRINT 37950 RETURN 38000 REM ************ WRITE RECORD TO DISK 38050 ON ERROR GOTO 39200 38100 PRINT "WHAT IS THE DEFINITION OF THIS WORD?" 38150 INPUT DW$ 38200 IF LEN(DW$)>70 THEN PRINT "YOUR DEFINITION IS TOO LONG, PLEASE ENTER A SHORTER ONE":GOTO 38100 38250 INPUT "READY TO WRITE ON DISK? (Y OR N) ";AX$ 38300 IF AX$<>"Y" AND AX$<>"N" THEN 38250 38350 IF AX$="N" THEN 38100 38400 IF FZ$<>"REPAIR" THEN 38550 38450 LHOLD=LR 38500 LR=TR-1 38550 PRINT "STORING ON DISK RECORD ";LR+1 38600 FOR I=1 TO 9 38650 LSET W$(I)=MKI$(WD(1,I)) 38700 LSET W1$(I)=MKI$(WD(2,I)) 38750 LSET W2$(I)=MKI$(WD(3,I)) 38800 NEXT I 38850 LSET DF$=DW$ 38900 LR=LR+1 38950 PUT #1,LR 39000 ON ERROR GOTO 0 39050 IF FZ$<>"REPAIR" THEN RETURN 39100 LR=LHOLD 39150 RETURN 39200 REM ************ ERROR CONTROL 39250 PRINT "ERROR IS ";ERR 39300 IF ERR=61 THEN PRINT "YOUR DISK IS OUT OF SPACE" 39350 PRINT "PRESS ANY KEY TO CONTINUE" 39400 X$=INKEY$ 39450 IF X$="" THEN 39400 39500 RESUME NEXT 39550 REM ************ DISPLAY WORD ROUTINE 39600 FOR I = 1 TO 8 39650 IF WD(2,I)=43 AND WD(2,I+1)=43 THEN WL=I-1:GOTO 39750 39700 NEXT I 39750 Z=WD(2,1) 39800 TX=INT((9-WL)/2)*8 39850 PRINT TAB(TX); 39900 PRINT " "; 39950 FOR I=1 TO WL 40000 Z=WD(1,I) 40050 PRINT VOW$(Z,3); 40100 NEXT I 40150 PRINT 40200 REM CALL POINT FOR NEW WORD 40250 FOR J=1 TO 7 40300 PRINT TAB(TX); 40350 FOR I=0 TO WL 40400 Z=WD(2,I) 40450 IF I<>0 THEN 41000 40500 Z2=WD(2,1) 40550 IF Z2<>18 AND Z2<>25 AND Z2<>30 AND Z2<>32 THEN 40950 40600 Z2=WD(3,1) 40650 IF J<4 OR J>6 THEN 40950 40700 Z3$=VOW$(Z2,J-3) 40750 Z4$=MID$(Z3$,4,3) 40800 PRINT Z4$; 40850 GOTO 41000 40900 Z=WD(2,1) 40950 PRINT " "; 41000 IF I<>1 THEN 41350 41050 IF Z<>18 AND Z<>25 AND Z<>30 AND Z<>32 THEN 41350 41100 IF Z=18 THEN PRINT FIN$(1,J); 41150 IF Z=25 THEN PRINT FIN$(2,J); 41200 IF Z=30 THEN PRINT FIN$(3,J); 41250 IF Z=32 THEN PRINT FIN$(4,J); 41300 GOTO 41400 41350 PRINT CONS$(Z,J); 41400 NEXT I 41450 PRINT 41500 NEXT J 41550 FOR J=0 TO 3 41600 PRINT TAB(TX); 41650 FOR I=0 TO WL 41700 Z2=WD(3,I) 41750 IF I<>0 THEN 41900 41800 PRINT " "; 41850 GOTO 42400 41900 IF I<>1 THEN GOTO 42300 41950 Z=WD(2,1) 42000 IF Z<>18 AND Z<>25 AND Z<>30 AND Z<>32 THEN 42300 42050 IF Z=18 THEN PRINT FIN$(1,J+7); 42100 IF Z=25 THEN PRINT FIN$(2,J+7); 42150 IF Z=30 THEN PRINT FIN$(3,J+7); 42200 IF Z=32 THEN PRINT FIN$(4,J+7); 42250 GOTO 42400 42300 IF J=0 THEN PRINT " "; 42350 IF J<>0 THEN PRINT VOW$(Z2,J); 42400 NEXT I 42450 PRINT 42500 NEXT J 42550 PRINT 42600 RETURN 42650 REM ************ CONSONANT DATA MATCH SUBROUTINE 42700 PRINT "INPUT YOUR CHOICE FOR CONSONANT NUMBER ";IX 42750 INPUT IZ 42800 IF IX=1 OR IZ<>25 THEN 43150 42850 IF WD(2,WX+1)=43 THEN 43000 42900 IF WX>2 AND WD(2,WX-1)=43 AND WD(2,WX-2)<>43 THEN 43000 42950 GOTO 43150 43000 PRINT "DOUBLE BLANKS OR BLANKS AT THE BEGINNING OF A WORD" 43050 PRINT "ARE NOT ALLOWED, PLEASE TRY SOMETHING ELSE" 43100 GOTO 42700 43150 IF IZ=0 THEN GOSUB 4750:GOSUB 8400:GOSUB 39550:GOTO 42650 43200 IF IZ>26 OR IZ<1 THEN 42750 43250 IF IZ=26 THEN 45000 43300 DX$="N" 43350 IF IZ>23 THEN 43550 43400 IF WX=1 AND (IZ=11 OR IZ=13 OR IZ=14 OR IZ=18 OR IZ=19) THEN 43600 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; 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$ 43550 IF DX$<>"N" AND DX$<>"Y" THEN 43300 43600 ID=IZ 43650 IF IZ=3 THEN ID=4 43700 IF IZ=4 THEN ID=6 43750 IF IZ=5 THEN ID=8 43800 IF IZ=6 THEN ID=9 43850 IF IZ=6 AND DX$="N" THEN INPUT "IS THIS A SUREQ WAW? (Y OR N) ";DX$ 43900 IF DX$<>"N" AND DX$<>"Y" AND IZ=6 THEN DX$="N":GOTO 43850 43950 IF IZ=7 THEN ID=11 44000 IF IZ=8 THEN ID=13 44050 IF IZ=9 THEN ID=14 44100 IF IZ=10 THEN ID=16 44150 IF IZ=11 THEN ID=18 44200 IF IZ=12 THEN ID=20 44250 IF IZ=13 THEN ID=22 44300 IF IZ=14 THEN ID=25 44350 IF IZ=15 THEN ID=27 44400 IF IZ=16 THEN ID=29 44450 IF IZ=17 THEN ID=30 44500 IF IZ=18 THEN ID=32 44550 IF IZ=19 THEN ID=34 44600 IF IZ=20 THEN ID=36 44650 IF IZ=21 THEN ID=37 44700 IF IZ=22 THEN ID=39 44750 IF IZ=23 THEN ID=41 44800 IF IZ=24 THEN ID=44 44850 IF IZ=25 THEN ID=43 44900 IF DX$="Y" THEN ID=ID+1 44950 WD(2,WX)=ID 45000 RETURN 45050 DATA "ALEP","BET","GIMEL","DALET","HE","WAW","ZAYIN","HET","TET","YOD" 45100 DATA "KAP","LAMED","MEM","NUN","SAMEK","AYIN","PE","SADE","KOP","RES" 45150 DATA "SEEN","SHEEN","TAW"