home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
EDUCATIN
/
HEBREW.LBR
/
DRILL.BZS
/
DRILL.BAS
Wrap
BASIC Source File
|
2000-06-30
|
10KB
|
321 lines
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"
ET","TET","YOD"
45100 DATA "KAP","LAMED","MEM","NUN","SAMEK","AYIN","PE","SADE","KOP","RES"
45150