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 * 475 REM * PACKAGE OR PRODUCT. * 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 * 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" 2020 PRINT 2030 PRINT TAB(23);"COPYRIGHT 1986 BY DANIEL R. CRIDER" 2040 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" 6170 PRINT TAB(34);"DRILL PROGRAM" 6175 PRINT TAB(35);"MASTER MENU" 6200 PRINT 6300 PRINT TAB(25);"1-- REVIEW LAST X WORDS" 6350 PRINT TAB(25);"2-- REVIEW ENTIRE VOCABULARY" 6400 PRINT TAB(25);"3-- REVIEW ENTIRE VOCABULARY--" 6450 PRINT TAB(25);" --CONCENTRATE ON LAST X WORDS" 6600 PRINT TAB(25);"4-- END PROGRAM" 6650 PRINT 6700 PRINT 6750 PRINT TAB(28);"PLEASE ENTER YOUR CHOICE "; 6800 INPUT M 6850 IF M>4 OR M<1 THEN 6750 6900 ON M GOTO 17450,18650,22100,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 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 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 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"