home *** CD-ROM | disk | FTP | other *** search
Wrap
4 DEFINT A-W,Y-Z /DEFINE ALL VARIABLES AS INTEGERS 35 DIM K$(80) / COUNT FOR INPUT SUBROUTINE 40 DIM FLGV(2000) / DIMENSION FLAG 70 CH = 8 / BACKSPACE CHARACTER 75 PRINT FRE(0) /PRINT FREE MEMORY 80 GOSUB 50000 / PRINT PROGRAM NAME AND COPYRIGHT NOTICE 100 GOSUB 52000 / PROMPT TO PUT CARD FILE IN DISK DRIVE 200 GOTO 40000 / INITIAL MENU 500 REM ******* CLS 510 CLS / CLEAR SCREEN 520 RETURN 7000 REM FIND LENGTH OF WORD /this subroutine determines the length of word less end spaces. Note LEN(A$) will not work as it counts end blanks 7010 MAX = 0 /INITIALIZE MAX 7020 MAX = MAX + 1 /INCREMENT MAXIMUM 7030 IF MID$(WD$,MAX,1) = " " THEN RETURN /IF A SPACE THEN RETURN 7040 GOTO 7020 /REPEAT UNTILL END SPACE IS FOUND 8000 REM ***** FILE NAME ACCEPLABLE TEST ************ 8010 TEST = 1 /INITIALIZE TEST TO 1 8100 FOR Q = 1 TO LEN(A$) / FOR ALL CHARACTERS IN THE FILE NAME 8110 K$(Q) = MID$(A$,Q,1) / GET THE Q'th character 8120 C = ASC(K$(Q)) / ASCII VALUE OF THE Q'th character 8130 IF C < 48 OR C > 122 THEN TEST = 4 / IF NOT A LETTER OR NUMBER THEN FILE NAME IS NOT ACCEPTABLE 8140 IF Q = 1 AND ( C < 65 OR C > 122 ) THEN TEST = 4 /IF FIRST CHARACTER IS NOT A LETTER THE NAME IS NOT ACCEPTABLE 8150 NEXT Q / NEXT CHARACTER 8190 RETURN 9000 REM OPEN DATA FILE 9010 OPEN "R",#2,"CARDS",128 / OPEN CARD FILE AS FILE 2 RANDOM ACCESS LENGTH 128 CHARACTERS 9020 FIELD #2,28 AS WD$,50 AS DF1$,50 AS DF2$ /FIELD THE FILE 28 CHARACTERS AS WD$ ( WORD ), 50 CHARACTERS AS DEFINITION 1, 50 CHARACTERS AS DEFINITION 2 9030 MRN = LOF(2)/128 /MAXIMUM RECORD NUMBER 9050 RETURN 9100 REM open and read flag file 9105 K = 1 /INITIALIZE COUNT TO ONE 9110 ON ERROR GOTO 9500 /IF FILE NOT FOUND GOTO 9120 OPEN "I",#3,"FLAG" /OPEN FLAG FILE AS A SEQUENTIAL ACCESS FILE NUMBER 3 9125 ON ERROR GOTO 0 / TURN ON ERROR OFF 9127 INPUT #3,RN,MI / INPUT RECORD NUMBER, MISS NUMBER 9130 IF EOF(3) THEN 9200 / IF END OF FILE 9140 INPUT #3, FLGV(K) / INPUT FLAG VALUE 9150 K = K + 1 /INCREMENT COUNT 9160 GOTO 9130 / REPEAT UNTILL END OF FILE 9200 CLOSE #3 /CLOSE FILE 9205 GOSUB 9400 / COUNT FREQUENCY OF MISSES 9210 RETURN 9300 REM open and read flag file 9305 K = 1 / INITIALIZE COUNT 9310 ON ERROR GOTO 9500 /IF FILE NOT FOUND THEN 9500 9320 OPEN "I",#3,"SFLAG" /OPEN SFLAG AS SEQUENTIAL ACCESS FILE 3 9325 ON ERROR GOTO 0 / TURN ON ERROR OFF 9327 INPUT #3,RN,MI / INPUT RECORD NUMBER, NUMBER OF MISSES 9330 IF EOF(3) THEN 9200 / IF END OF FILE THEN 9200 9340 INPUT #3, FLGV(K) / INPUT FLAG 9350 K = K + 1 / INCREMENT COUNT 9360 GOTO 9330 / REPEAT UNTILL END OF FILE 9400 REM cont number of times missed 9405 GOSUB 9470 / SET COUNT MISSES TO 0 9410 FOR T = 1 TO MRN / FOR ALL RECORD NUMBERS 9420 R = FLGV(T) / FLAG VALUE, FLAG VALUE IS THE NUMBER OF TIMES YOU MISSED 9430 IF R > 8 THEN R = 8 / LIMIT MAX TO 8 9440 KTM(R) = KTM(R) + 1 / INCREMENT NUMBER COUNT MISSES 9450 NEXT T 9460 RETURN 9470 REM SET KTM(R) TO 0 9475 FOR T = 0 TO 8 9480 KTM(T) = 0 9485 NEXT T 9490 RETURN 9500 REM FILE NOT FOUND 9510 PRINT " THE FILE WITH YOU PAST RESULTS HAS NOT BEEN FOUND" 9550 GOSUB 60000 9560 RETURN 9600 REM WRITE FLAG FILE 9610 PRINT " WRITING INFORMATION ON DISK, PLEASE WAIT" 9620 OPEN "O",#3,"FLAG" /OPEN FLAG FILE AS A SEQUENTIAL ACCESS FILE 3 9625 WRITE #3, RN, MI / WRITE RECORD NUMBER, MISS 9630 FOR T = 1 TO MRN / FOR ALL CARDS 9640 WRITE #3, FLGV(T) / WRITE THE FLAG VALUE 9645 REM PRINT FLGV(T) 9650 NEXT T 9655 CLOSE #3 9660 RETURN 9700 REM WRITE FLAG FILE 9710 PRINT " WRITING INFORMATION ON DISK, PLEASE WAIT" 9720 OPEN "O",#3,"SFLAG" / OPEN SFLAG AS SEQUENTIAL ACCESS FILE 3 9725 WRITE #3, RN, MI / WRITE RECORD NUMBER, MISSES 9730 FOR T = 1 TO MRN / FOR ALL CARDS 9740 WRITE #3, FLGV(T) / WRITE FLAG VALUE 9750 NEXT T 9755 CLOSE #3 9760 RETURN 10000 REM CONVERT FILES 10010 GOSUB 500 / CLEAR SCREEN 10100 PRINT " THIS PROGRAM CONVERTS FILES FROM SEQUENTIAL FILES" 10110 PRINT " TO RANDOM ACCESS FILES TO USE IN THIS PROGRAM " 10120 PRINT " " 10130 PRINT " YOU ONLY NEED TO BE USING THIS IF YOU ARE ADDING WORDS TO THE PROGRAM " 10140 PRINT "" 10150 PRINT "ENTER THE NAME OF THE FILE YOU WANT TO CONVERT " 10160 PRINT "JUST PRESS RETURN IF YOU DO NOT WANT TO CONVERT ANY FILES " 10170 MAX = 8 / LENGTH OF INPUT STRING 10180 GOSUB 62030 / STRING INPUT SUBROUTINE 10190 IF A$ = "" THEN 40000 / IS STRING IS BLANK RETURN TO MAIN MENU 10200 GOSUB 8000 / CHECK IF FILE NAME IS ACCEPTABLE 10210 IF TEST = 4 THEN 10000 / IF FILE NAME IS NOT ACCEPTABLE THEN 10000 10400 OPEN "I",#1,A$ / OPEN THE FILE YOU JUST ENTERED 10500 GOSUB 9000 / OPEN CARD FILE 10550 RN = 0 / INITIALIZE RECORD NUMBER TO 0 10600 IF EOF(1) = -1 THEN 10900 / IF END OF FILE THEN 10900 10610 INPUT #1,WI$,DI1$,DI2$ / INPUT WORD, DEFINTION 1 AND 2 10625 LSET WD$ = WI$ /LSET WORD TO RANDOM ACCESS BUFFER 10630 PRINT WD$ / PRINT WORD ON SCREEN 10635 LSET DF1$ = DI1$ /LSET DEFINITON TO RANDOM ACCESS BUFFER 10640 PRINT DF1$ / PRINT DEFINITION ON SCREEN 10645 LSET DF2$ = DI2$ /LSET 2ND DEFINITION TO RANDOM ACCESS BUFFER 10647 PRINT DF2$ / PRINT SECOND DEFINITION 10650 RN = RN + 1 /INCREMENT RECORD NUMBER 10700 PUT #2,RN / WRITE BUFFER ON DISK 10710 GOTO 10600 /REPEAT UNTILL END OF FILE 10900 CLOSE / CLOSE ALL FILES 10910 GOTO 40000 /BACK TO MAIN MENU 10950 REM START FLASH CARDS 10960 GOSUB 9000 / OPEN CARD FILE 10965 GOSUB 9100 / OPEN AND READ FLAG FILE 10970 GOSUB 23000 / ASK FOR RECORD NUMBER TO START AT AND NUMBER OF MISSES 10975 GOSUB 13000 / ASK WHAT FORMAT YOU WANT THE QUESTION IN 10980 RGT = 0 / INITIALIZE RIGHT ANSWERS 10990 WRG = 0 / INITIALIZE WRONG ANSWERS 11000 IF FLGV(RN) < MI THEN 16000 / IF FLAG IS LESS THEN NUMBER OF MISSES THEN SKIP TO NEXT WORD 11003 GET #2,RN / GET CARD 11005 GOSUB 500 / CLEAR SCREEN 11010 IF RV = 1 THEN PRINT WD$;TAB(35)" 0 - exit ";TAB (50) "RIGHT"; RGT;" WRONG ";WRG / IF SHOW PROMPT THEN PRINT PROMPT 11012 IF RV = 2 THEN PRINT DF1$;TAB(35) " 0 - exit ";TAB (50) "RIGHT"; RGT;" WRONG ";WRG / IF SHOW DESCRIPTION THEN PRINT DESCRIPTION ON SCREEN 11014 IF RV = 2 THEN PRINT DF2$ / IF SHOW DESCRIPTION THEN PRINT DESCRIPTION ON SCREEN 11020 GOSUB 12000 / PRINT OUT CHOISES 11030 GOSUB 60000 / INPUT SUBROUTINE 11040 IF DT# < 0 OR DT# > 6 THEN 11030 / IF ANSWER OUT OF RANGE THEN REASK 11045 IF DT# = 0 THEN 18000 / IF ANSWER 0, EXIT THEN 18000 11100 IF DT# = T THEN 14000 ELSE 15000 /IF ANSWER CORRECT THEN 14000 ELSE 15000 12000 REM print random options on screen 12010 T = INT(RND * 7 + 1 ) / T IS A RANDOM NUMBER FROM ONE TO 6, T IS THE CORRECT ANSWER 12020 IF T = 7 THEN 12010 12030 FOR N = 1 TO 6 / PRINT SIX POSSIBLE CHOISES ON THE SCREEN 12040 RNT= INT(RND * MRN + 1) / CHOSE A CARD AT RANDOM 12050 IF RNT = RN THEN 12040 / IF CARD IS THE CORRECT ANSWER THEN CHOSE ANOTHER CARD 12060 PRINT N / PRINT THE NUMBER OF THE CHOISE 12063 IF N >< T THEN 12100 / IF NOT THE CORRECT ANSWER 12065 GET #2,RN / GET THE RECORD NUMBER 12070 IF RV = 1 THEN PRINT DF1$ / PRINT DEFINITION 12080 IF RV = 1 THEN PRINT DF2$ / PRINT DEFINITION 12085 IF RV = 2 THEN PRINT WD$ / PRINT WORD 12087 IF RV = 2 THEN PRINT "" 12090 GOTO 12200 12100 GET #2,RNT / GET THE RECORD NUMBER 12110 IF RV = 1 THEN PRINT DF1$ ELSE PRINT WD$ / PRINT DEFINITION OR WORD 12120 IF RV = 1 THEN PRINT DF2$ / PRINT DEFINITION 12130 IF RV = 2 THEN PRINT "" 12200 NEXT N / PRINT NEXT CHOICE UP TO 6 12300 RETURN 13000 REM reverse 13010 GOSUB 500 / CLEAR SCREEN 13020 PRINT "******* HOW DO YOU WANT THE QUESTIONS ASKED ******* " 13030 PRINT " 1 - SHOW PROMPT, MULTIPLE CHOICE OF DESCRIPTIONS " 13040 PRINT " 2 - SHOW DESCRIPTION, MULTIPLE CHOICE OF PROMPTS " 13050 PRINT "******** ENTER THE NUMBER THEN PRESS RETURN *******" 13060 GOSUB 60000 / INPUT INTEGER SUBROUTINE 13070 IF DT# < 1 OR DT# > 2 THEN 13060 / IF OT ONE OR TWO ASK AGAIN 13080 RV = DT# / RV, REVERSE OPTION EQUALS NUMBER INPUT FROM SUBROUTINE 13100 RETURN 14000 REM KNOWS SUBROUTINE" 14100 PRINT " RIGHT AGAIN " 14105 IF INKEY$ = "" THEN 14105 / STAY HERE UNTILL ANY KEY IS PRESSED 14110 RGT = RGT + 1 / INCREMENT NUMBER RIGHT 14500 GOTO 16000 15000 REM DONT KNOW SUBROUTINE 15020 PRINT " WRONG " 15030 PRINT " THE CORRECT ANSWER IS ";T 15040 WRG = WRG + 1 / INCREMENT NUMBER WRONG 15050 IF INKEY$ = "" THEN 15050 / STAY HERE UNTILL A KEY IS PRESSED 15100 FLGV(RN) = FLGV(RN) + 1 / INCREMENT FLAG VALUE 15500 GOTO 16000 16000 REM CONTINUE 16100 RN = RN + 1 / INCREMENT RECORD NUMBER 16110 IF RN > MRN THEN 17000 / IF RECORD NUMBER IS GREATER THEN MAXIMUM RECORD NUMBER THEN 17000 16500 GOTO 11000 / START OVER WITH NEXT CARD 17000 REM END OF CARDS 17010 GOSUB 39000 / ASK IF YOU WANT TO CONTINUE 17300 RN = 1 / RESET RECORD NUMBER TO 1 17305 IF DT# = 2 THEN 11000 / IF YOU WANT TO START OVER AGAIN THEN 11000 17310 MI = 0 / MISS NUMBER = 0 17400 GOSUB 9600 / WRITE FLAG FILE ON DISK 17500 GOTO 40000 / BACK TO MAIN MENU 18000 REM 18100 PRINT "********** DO YOU WANT TO ****************" 18110 PRINT " 1 - EXIT " 18120 PRINT " 2 - CONTINUE " 18130 PRINT "*** ENTER THE NUMBER THEN PRESS RETURN ***" 18140 GOSUB 60000 / INPUT SUBROUTINE 18150 IF DT# > 2 OR DT# < 1 THEN 18000 / IF ANSWER IS NOT 1 OR 2 ASK AGAIN 18160 IF DT# = 2 THEN 11000 / CONTINUE 18165 GOSUB 9600 / WRITE FLAGS ON MAIN MENU 18170 GOTO 40000 / BACK TO MAIN MENU 20000 REM START FLASH CARDS 20100 GOSUB 9000 / OPEN CARD FILE 20110 GOSUB 9100 / OPEN AND READ FLAG FILE 20130 GOSUB 23000 / ASK STARTING RECORD NUMBER 20500 REM reverse 20510 GOSUB 500 / CLEAR SCREEN 20520 PRINT "******* DO YOU WANT TO SEE THE CARDS *******" 20530 PRINT " 1 - PROMPT FIRST " 20540 PRINT " 2 - DESCRIPTION FIRST " 20550 PRINT "**** ENTER THE NUMBER THEN PRESS RETURN ****" 20560 GOSUB 60000 / INPUT SUBROUTINE 20570 IF DT# < 1 OR DT# > 2 THEN 20560 / IF OUT OF RANGE THEN REASK 20580 RV = DT# / REVERSE OPTION EQUALS VALUE RETURNED FROM INPUT SUBROUTINE 21000 IF FLGV(RN) < MI THEN 26000 / IF FLAG VALUE LESS THEN MISS VALUE THEN 2600 21002 IF T = RN THEN 21005 /IF RECORD ALREADY IF BUFFER THEN SKIP NEXT STATEMENT 21003 GET #2,RN / GET RECORD NUMBER 21005 GOSUB 500 / CLEAR SCREEN 21010 IF RV = 1 THEN PRINT WD$ / PRINT WORD 21012 IF RV = 2 THEN PRINT DF1$ / PRINT DEFINITION 21014 IF RV = 2 THEN PRINT DF2$ / PRINT DEFINITION 21016 IF RV = 2 THEN PRINT "" 21020 T$ = INKEY$ 21022 IF T$ = "" THEN 21020 / LOOP UNTILL A KEY IS PRESSED 21025 IF T$ = "K" OR T$ = "k" THEN 24000 / IF K IS PRESSED THEN 24000 21027 IF T$ = "E" OR T$ = "e" THEN 28000 / IF E IS PRESSED THEN 28000 21030 IF RV = 1 THEN PRINT DF1$ / PRINT DESCRIPTION 21035 IF RV = 2 THEN PRINT WD$ / PRINT WORD 21040 IF RV = 1 THEN PRINT DF2$ / PRINT DESCRIPTION 21042 PRINT "" / SHIP TO NEXT LINE 21043 GOSUB 27600 / GET RECORD IN ADVANCE 21045 T$ = INKEY$ 21050 IF T$ = "" THEN 21045 / LOOP UNTILL ANY KEY IS PRESSED 21100 IF T$ = "K" OR T$ = "k" THEN 24000 / IF K IS PRESSED THEN 24000 21110 IF T$ = "D" OR T$ = "d" THEN 25000 / IF D IS PRESSED THEN 25000 21115 IF T$ = "E" OR T$ = "e" THEN 28000 / IF E IS PRESSED THEN 28000 21118 PRINT "PRESS D - don't know or K - know E - exit " 21120 GOTO 21045 / KEY PRESSED IS NOT ACCEPTABLE 23000 REM ask which ones you want to review 23010 GOSUB 500 / CLEAR SCREEN 23055 GOSUB 23500 / PRINT NUMBER MISSED 23058 PRINT "" 23060 PRINT "YOU MAY REVIEW CARDS THAT WERE MISSED X NUMBER OF TIMES OR MORE " 23070 PRINT "ENTER 0 IF YOU WANT TO REVIEW ALL CARDS " 23100 GOSUB 60000 / INPUT SUBROUTINE 23110 MI = DT# / MISS NUMBER EQUALS VALUE RETURNED FROM INPUT SUBROUTINE 23200 PRINT "WHICH CARD DO YOU WANT TO START/CONTINUE AT" 23205 IF RN < 1 THEN RN = 1 / RN MUST BE GREATER THEN 0 23210 PRINT "COMPUTER RECCOMENDS ";RN 23215 IF RN > 1 THEN PRINT "YOU ENDED YOU LAST REVIEW ON CARD NUMBER ";RN 23220 GOSUB 60060 / INPUT SUBROUTINE 23230 IF DT# < 1 OR DT# >MRN THEN 23200 / IF OUT OF RANGE THEN REASK 23235 RN = DT# / RN EQUALS NUMBER RETURNED FROM INPUT SUBROUTINE 23240 RETURN 23500 REM PRINT NUMBER OF TIMES MISSED 23510 FOR T = 0 TO 7 23520 PRINT "TOTAL CARDS MISSED ";T;" TIMES IS ";KTM(T) 23530 NEXT T 23535 PRINT "TOTAL CARDS MISSED >7 TIMES IS ";KTM(8) 23540 RETURN 24000 REM KNOWS SUBROUTINE" 24500 GOTO 26000 25000 REM DONT KNOW SUBROUTINE 25100 FLGV(RN) = FLGV(RN) + 1 / INCREMENT FLAG VALUE 25500 GOTO 26000 26000 REM CONTINUE 26100 RN = RN + 1 / INCREMENT RECORD NUMBER 26110 IF RN > MRN THEN 27000 /IF END OF CARDS 26500 GOTO 21000 /NEXT CARD 27000 REM END OF CARDS 27100 GOSUB 39000 /ASK IF YOU WANT TO CONTINUE SUBROUTINE 27300 RN = 1 / RESET RECORD NUMBER TO 1 27305 IF DT# = 2 THEN 21000 /IF CONTINUE OPTION THEN START OVER 27310 MI = 0 / MISS EQUALS 0 27400 GOSUB 9600 / WRITE INFORMATION ON DISK 27500 GOTO 40000 / TO MAIN MENU 27600 REM GET RECORD IN ADVANCE 27610 T = RN + 1 / T EQUALS RECORD NUMBER + 1 27620 IF T > MRN THEN RETURN / IF T IS GREATER THEN THE MAXIMUM RECORD NUMBER THEN RETURN 27630 IF MI <= FLGV(T) THEN 27700 /IF MISS LESS THEN OR EQUAL TO FLGV THEN 27700 27640 T = T + 1 / INCREMENT T 27650 GOTO 27620 / GET NEXT NUMBER 27700 GET #2,T / GET RECORD NUMBER 27710 RETURN 28000 REM 28100 PRINT "********** DO YOU WANT TO ****************" 28110 PRINT " 1 - EXIT " 28120 PRINT " 2 - CONTINUE WITH THE CARDS " 28130 PRINT "*** ENTER THE NUMBER THEN PRESS RETURN ***" 28140 GOSUB 60000 / INPUT SUBROUTINE 28150 IF DT# > 2 OR DT# < 1 THEN 28000 / IF OUT OF RANGE THEN REASK 28160 IF DT# = 2 THEN 21000 / IF CONTINUE WAS CHOSEN THEN 21000 28170 GOSUB 9600 / SAVE FLAGS ON DISK 28200 GOTO 40000 / TO MAIN MENU 30000 REM START SPELLING 30100 GOSUB 9000 / OPEN CARD FILE 30110 GOSUB 9300 / OPEN AND READ SFLAG FILE 30120 GOSUB 23000 / ASK WHICH RECORD NUMBER TO START AT SUBROUTINE 30200 REM 31000 IF FLGV(RN) < MI THEN 36000 /IF FLAG IS LESS THEN MISS THEN 36000 31003 GET #2,RN /GET RECORD NUMBER 31005 GOSUB 500 /CLEAR SCREEN 31010 PRINT DF1$;TAB(60)"E - EXIT" /PRINT DESCRIPTION 31012 PRINT DF2$ /PRINT DESCRIPTION 31015 K1$= LEFT$(WD$,1) / FIRST CHARACTER OF THE WORD 31018 PRINT "" 31020 PRINT TAB(2) K1$ / PRINT THE FIRST CHARACTER OF THE WORD 31030 GOSUB 7000 / DETERMINE LENGTH OF THE WORD 31035 MAX = MAX - 1 / DECREMENT MAX 31040 GOSUB 62030 / INPUT STRING SUBROUTINE 31050 IF A$ = "E" OR A$ = "e" THEN GOTO 38000 / IF E FOR EXIT 31100 IF A$ = LEFT$(WD$,MAX) THEN 34000 ELSE 35000 /IF SPELLED CORRECT 31110 IF INKEY$ = "D" THEN 25000 34000 REM KNOWS SUBROUTINE" 34010 PRINT " RIGHT " 34100 IF INKEY$ = "" THEN 34100 /STAY HERE UNTILL A KEY IS PRESSED 34500 GOTO 36000 35000 REM DONT KNOW SUBROUTINE 35010 PRINT TAB(2) WD$ /PRINT CORRECT SPELLING 35020 PRINT " WRONG " 35030 IF INKEY$ = "" THEN 35030 /STAY HERE UNTILL A KEY IS PRESSED 35035 FLGV(RN) = FLGV(RN) + 1 /INCREMENT FLAG 35500 GOTO 36000 36000 REM CONTINUE 36100 RN = RN + 1 /INCREMENT RN 36110 IF RN > MRN THEN 37000 /IF RECORD NUMBER IS GREATER THEN THE MAXIMUM RECORD NUMBER 36500 GOTO 31000 /START OVER 37000 REM END OF CARDS 37060 RN = 1 /RECORD NUMBER 37065 GOSUB 39000 /END OF FILE SUBROUTINE 37070 IF DT# = 2 THEN 31000 /IF CHOSE TO CONTINUE THEN CONTINE 37080 MI = 1 /MISS EQUALS 1 37100 GOSUB 9700 / WRITE SFLAG ON DISK 37130 GOTO 40000 / BACK TO MAIN MENU 38000 REM exit the spelling checker 38100 PRINT "************ DO YOU WANT TO **************" 38110 PRINT " 1 - EXIT " 38120 PRINT " 2 - CONTINUE WITH THE CARDS " 38130 PRINT "*** ENTER THE NUMBER THEN PRESS RETURN ***" 38140 GOSUB 60000 /INPUT SUBROUTINE 38150 IF DT# > 2 OR DT# < 1 THEN 38000 /IF OUT OF RANGE THEN REASK 38160 IF DT# = 2 THEN 31000 /CONTINUE 38170 GOSUB 9700 /SAVE SFLAG ON DISK 38200 GOTO 40000 /CONTINUE 39000 REM END OF FILE 39100 PRINT "**** END OF FLASH CARDS ON THIS DISK *****" 39110 PRINT " DO YOU WANT TO " 39120 PRINT " 1 - RETURN TO MAIN MENU " 39130 PRINT " 2 - RUN THROUGH THE SAME CARDS AGAIN " 39140 PRINT "*** ENTER THE NUMBER THEN PRESS RETURN ***" 39150 GOSUB 60000 /INPUT SUBROUTINE 39160 IF DT# < 1 OR DT# > 2 THEN 39150 / IF OUT OF RANGE THEN REASK 39300 RETURN 40000 REM ******* INITIAL MENU ********* 40030 CLOSE /CLOSE ALL FILES 40060 GOSUB 500 /CLEAR SCREEN 40080 PRINT "**************** FLASH CARD MENU ******************" 40100 PRINT "" 40120 PRINT " 0 - EXIT TO OPERATING SYSTEM" 40125 PRINT "" 40140 PRINT " 1 - FLASH CARDS " 40145 PRINT "" 40160 PRINT " 2 - MULTIPLE CHOICE " 40165 PRINT "" 40180 PRINT " 3 - SPELLING REVIEW " 40185 PRINT "" 40200 PRINT " 4 - PRINT CARDS ON PAPER " 40205 PRINT "" 40220 PRINT " 5 - CONVERT FILES " 40240 PRINT "" 40245 PRINT " 6 - RESET MISSED WORDS TO 0 " 40250 PRINT "" 40260 PRINT "********* ENTER THE NUMBER THEN PRESS RETURN ***********" 40280 GOSUB 60000 /INPUT INTEGER SUBROUTINE 40282 IF DT# <0 OR DT# >6 GOTO 40280 /IF NUMBER ENTERED OUT OF RANGE 40300 T = DT# 40310 IF T = 0 THEN 51000 / TO EXIT PROGRAM SUBROUTINE 40320 ON T GOTO 20000,10950,30000,41000,10000,42000 /ON THE OPTION CHOSEN GOTO 40340 GOSUB 500 /CLEAR SCREEN 41000 REM print words on paper 41100 GOSUB 9000 /OPEN CARD FILE 41110 GOSUB 500 /CLEAR SCREEN 41120 PRINT " DO YOU WANT TO PRINT:" 41130 PRINT " 1 - WORDS THAT YOU ARE HAVING VOCABULARY PROBLEMS WITH " 41140 PRINT " 2 - WORDS THAT YOU ARE HAVING SPELLING PROBLEMS WITH " 41150 PRINT " 0 - RETURN TO MAIN MENU 41160 PRINT " ENTER THE OPTION NUMBER THEN PRESS RETURN " 41170 GOSUB 60000 /INPUT INTEGER SUBROUTINE 41180 IF DT# < 0 OR DT# > 2 THEN 41110 /IF OUT OF RANGE THE REASK 41185 IF DT# = 0 THEN 40000 /TO MAIN MENU 41190 IF DT# = 1 THEN GOSUB 9100 ELSE GOSUB 9300 /READ FLAG OF SFLAG FILE 41195 GOSUB 41500 /ASK IF SHOULD PRINT ON PAPER OR SCREEN 41300 GOSUB 23000 / ASK RECORD NUMBER 41305 PRINT " PRESS ANY KEY TO PAUSE " 41310 FOR T = 1 TO MRN / FOR ALL THE CARDS 41312 IF INKEY$ >< "" THEN 41700 / IF ANY KEY IS PRESSED THEN PAUSE SUBROUTINE 41315 IF FLGV(T) < MI THEN 41360 /IF FLAG IS LESS THEN MISS THEN DON't print 41320 GET #2,T /GET RECORD 41330 PRINT WD$ / PRINT WORD 41340 PRINT DF1$ / PRINT DESCRIPTION 41350 PRINT DF2$ / PRINT DESCRIPTION 41355 IF LPRT = 2 THEN GOSUB 41600 /LINE PRINT OPTION 41360 NEXT T 41400 GOTO 40000 /MAIN MENU 41500 REM ask lprint option 41510 PRINT "********* DO YOU WANT THE WORDS ************" 41520 PRINT " 1 - SHOWN ON THE SCREEN ONLY " 41530 PRINT " 2 - SHOWN ON THE SCREEN AND ON THE PAPER" 41540 PRINT "**** ENTER THE NUMBER THEN PRESS RETURN ****" 41560 GOSUB 60000 /INPUT SUBROUTINE 41570 IF DT# < 1 OR DT# >2 THEN 41560 /IF OUT OF RANGE THEN REASK 41580 LPRT = DT# /LPRT EQUALS VALUE RETURNED FROM INPUT SUBROUTINE 41590 RETURN 41600 REM PRINT ON PAPER 41630 LPRINT WD$ / PRINT WORD 41640 LPRINT DF1$ / PRINT DESCRIPTION 41650 LPRINT DF2$ / PRINT DESCRIPTION 41660 RETURN 41700 REM PAUSE SUBROUTINE 41710 PRINT "************ PAUSE SUBROUTINE ************ " 41720 PRINT " 1 - CONTINUE 2 - BACK TO MAIN MENU " 41725 PRINT "*** ENTER THE NUMBER THEN PRESS RETURN ***" 41730 GOSUB 60000 /INPUT SUBROUTINE 41740 IF DT# < 1 OR DT# > 2 THEN 41730 / IF OUT OF RANGE THEN REASK 41750 IF DT# = 1 THEN 41312 ELSE 40000 / CONTINE OR BACK TO MAIN MENU 42000 REM reset missed 42100 GOSUB 500 /CLEAR SCREEN 42110 PRINT " USE THIS NEW OPTION IF YOU ARE A NEW STUDENT " 42120 PRINT " THIS OPTION WILL RESET THE WORDS PREVIOULY MISSED TO NONE" 42130 PRINT "" 42140 PRINT " DO YOU WANT TO CLEAR ALL THE MISSES" 42150 PRINT " 1 - NO " 42160 PRINT " 2 - YES " 42165 PRINT " ENTER THE NUMBER THEN PRESS RETURN" 42170 GOSUB 60000 /INPUT INTEGER SUBROUTINE 42180 IF DT# < 1 OR DT# > 2 THEN 42170 /IF OUT OF RANGE THEN REASK 42190 IF DT# = 1 THEN 40000 / BACK TO MAIN MENU 42300 FOR T = 1 TO MRN /FOR ALL RECORD NUMBERS 42310 FLGV(T) = 0 /SET FLAG TO ZERO 42320 NEXT T 42330 GOSUB 9600 /WRITE ZEROS TO FLAG FILE 42340 GOSUB 9700 /WRITE ZEROS TO SFLAG FILE 42350 GOTO 40000 /MAIN MENU 50000 REM ********** INTRO 50010 GOSUB 500 /CLEAR SCREEN 50100 PRINT " F L A S H C A R D P R O G R A M 1.0 " 50105 PRINT "" 50110 PRINT " Copyright 1985 by Potomac Pacific Engineering Inc." 50120 PRINT "" 50130 PRINT "This program is licensed FREE to all users with some restrictions" 50165 PRINT " See the manual for more information on the license." 50167 PRINT "" 50950 PRINT "****************** PRESS ANY KEY TO CONTINUE *****************"; 50960 IF INKEY$ = "" GOTO 50960 /STAY HERE UNTILL ANY KEY IS PRESSED 50970 RETURN 51000 REM ***** EXIT TO SYSTEM 51050 REM GOSUB 9600 51100 GOSUB 500 / CLEAR SCREEN 51110 CLOSE / CLOSE ALL FILES 51120 PRINT " -BYE, Have a nice day" 51130 END 52000 REM ***** INTRO 1 52010 GOSUB 500 52100 PRINT " Put the disk with the files (cards) that you " 52105 PRINT " want to use in the defualt disk drive " 52110 PRINT "" 52120 PRINT " ***** THEN PRESS ANY KEY TO CONTINUE *****" 52130 PRINT "" 52140 PRINT " The Flash Card program only use the Default disk drive" 52150 PRINT "Keep it in the default disk drive at all times during this program." 52200 IF INKEY$ = "" GOTO 52200 /STAY HERE UNTILL ANY KEY IS PRESSED 52210 RETURN 60000 REM ******* INTEGER LESS THEN 100 CHECK ******** 60010 MAX = 2 60020 ACT$ = "1234567890=<>^" 60030 IF NE = 0 THEN ACT$ = "1234567890" 60040 PRINT ">__<"; 60050 GOTO 60240 60060 REM ******* INTEGER ******* 60070 MAX = 8 60080 ACT$ = "1234567890-+,=<>^" 60090 IF NE = 0 THEN ACT$ = "1234567890-+," 60100 PRINT ">________<"; 60110 GOTO 60240 60120 REM ******* SINGLE PRECISION ******* 60130 MAX = 10 60140 ACT$ = "1234567890-+,.%$=<>^" 60150 IF NE = 0 THEN ACT$ = "1234567890+-,.%$" 60160 PRINT ">__________<"; 60170 GOTO 60240 60180 REM ******* DOUBLE PRECISION ******* 60190 MAX = 20 60200 ACT$ = "1234567890-+,.%$=<>^" 60210 IF NE = 0 THEN ACT$ = "1234567890+-,.%$" 60220 PRINT ">____________________<"; 60230 GOTO 60240 60240 REM ********** NUMBER CHECK ********** 60250 A$ = "" 60260 K$(20) = " " 60270 KTMAX = 0 60280 FOR T9 = 1 TO MAX 60290 K$(T9) = " " 60300 NEXT T9 60310 DIG$ = "1234567890." 60320 DOTFLG = 0 60330 T2 = MAX + 1 60340 FOR T6 = 1 TO T2 60350 PRINT CHR$(CH); 60360 NEXT T6 60370 IF INKEY$ = "" GOTO 60380 ELSE GOTO 60370 60380 KT = 0 60390 REM *********** CHECK ALFANUMERIC INPUT FOR LENGTH *********** 60400 KT = KT + 1 60410 REM 60420 W$ = INKEY$ 60430 IF W$ = "" GOTO 60420 60440 C = ASC(W$) 60450 IF C = 0 THEN GOSUB 61900 60460 IF C = 13 GOTO 60580 60470 IF C = 17 OR C = 8 GOTO 61150 60480 IF C = 19 GOTO 60670 60490 IF C = 4 GOTO 60720 60500 IF C = 6 GOTO 60780 60510 IF C = 1 GOTO 60960 60520 IF KT > MAX GOTO 60410 60530 IF INSTR(ACT$,W$) = 0 GOTO 61230 60540 K$(KT) = W$ 60550 PRINT K$(KT); 60560 IF KT > KTMAX THEN KTMAX = KT 60570 GOTO 60400 60580 REM ********** RETURN ********** 60590 FOR T9 = 1 TO KTMAX 60600 A$ = A$ + K$(T9) 60610 NEXT T9 60620 IF KTMAX = 0 THEN PRINT "1" 60630 IF KTMAX = 0 THEN DT# = 1 60640 IF KTMAX = 0 THEN RETURN 60650 PRINT "" 60660 GOTO 61260 60670 REM ********* MOVE CURSE BACK ******** 60680 IF KT = 1 GOTO 60410 60690 KT = KT - 1 60700 PRINT CHR$(CH); 60710 GOTO 60410 60720 REM ********* MOVE CURSER FORWARD ********* 60730 IF KT >= MAX GOTO 60410 60740 IF KT > (KTMAX + 1) GOTO 60410 60750 PRINT K$(KT); 60760 KT = KT + 1 60770 GOTO 60410 60780 REM ********** INSERT *********** 60790 IF KT > KTMAX GOTO 60410 60800 X9 = MAX 60810 WHILE X9 > KT 60820 X9 = X9 - 1 60830 K$(X9 + 1) = K$(X9) 60840 WEND 60850 K$(KT) = " " 60860 KTMAX = KTMAX + 1 60870 IF KTMAX > MAX THEN KTMAX = MAX 60880 FOR T9 = KT TO KTMAX 60890 PRINT K$(T9); 60900 NEXT T9 60910 T6 = (KTMAX - KT) + 1 60920 FOR T7 = 1 TO T6 60930 PRINT CHR$(CH); 60940 NEXT T7 60950 GOTO 60410 60960 REM ********** DELETE *********** 60970 IF KT > KTMAX GOTO 60410 60980 IF KTMAX = 1 GOTO 60410 60990 K$(MAX + 1) = "" 61000 X9 = KT 61010 WHILE X9 <= MAX 61020 K$(X9) = K$(X9 + 1) 61030 X9 = X9 + 1 61040 WEND 61050 KTMAX = KTMAX - 1 61060 FOR T9 = KT TO KTMAX 61070 PRINT K$(T9); 61080 NEXT T9 61090 PRINT "_"; 61100 T7 = (KTMAX - KT) + 2 61110 FOR T8 = 1 TO T7 61120 PRINT CHR$(CH); 61130 NEXT T8 61140 GOTO 60410 61150 REM ********* BACKSPACE ******** 61160 IF KT = 1 GOTO 60410 61170 KT = KT - 1 61180 PRINT CHR$(CH); 61190 K$(KT) = " " 61200 PRINT "_"; 61210 PRINT CHR$(CH); 61220 GOTO 60410 61230 REM ******* INPUT NOT ACCEPTABLE ******** 61240 PRINT CHR$(7); 61250 GOTO 60420 61260 REM ********* CLEAR STRINGS ******** 61270 MAX = LEN(A$) 61280 D2$ = "" 61290 D1$ = "" 61300 DFLG = 0 61310 FOR Q93 = 1 TO MAX 61320 R$ = MID$(A$,Q93,1) 61330 IF INSTR(DIG$,R$) = 0 GOTO 61400 61340 IF R$ = "." OR DFLG = 1 GOTO 61380 61350 IF DFLG = 1 GOTO 61380 61360 D2$ = D2$ + R$ 61370 GOTO 61400 61380 D1$ = D1$ + R$ 61390 DFLG = 1 61400 NEXT Q93 61410 DA# = VAL(D2$) 61420 D1# = VAL(D1$) 61430 DT# = DA# + D1# 61440 IF K$(1) = "-" THEN DT# = -DT# 61450 RETURN 61900 REM ****** CHECK FOR ASC0 61910 S4$ = INKEY$ 61920 C2 = ASC(S4$) 61930 IF C2 = 83 THEN C = 1 61940 IF C2 = 82 THEN C = 6 61950 IF C2 = 75 THEN C = 19 61960 IF C2 = 77 THEN C = 4 61970 RETURN 62000 REM ********** ALPHANUMERIC CHECK ************** 62010 MAX = FL(A,Q) 62020 GOTO 62040 62030 REM ******** MAX SET IN PROGRAM ******** 62040 A$ = "" 62050 PRINT ">"; 62060 FOR N9 = 1 TO MAX 62070 K$(N9) = "" 62080 PRINT "_"; 62090 NEXT N9 62100 PRINT "<"; 62110 T2 = MAX + 1 62120 FOR T4 = 1 TO T2 62130 PRINT CHR$(CH); 62140 NEXT T4 62150 KT = 0 62160 KTMAX = 1 62170 REM *********** CHECK ALFANUMERIC INPUT FOR LENGTH *********** 62180 KT = KT + 1 62190 PRINT TAB(KT+1)""; 62200 K$ = INKEY$ 62210 IF K$ = "" GOTO 62200 62220 C = ASC(K$) 62230 IF C = 0 THEN GOSUB 61900 62240 IF C = 13 GOTO 62350 62250 IF C = 17 OR C = 8 GOTO 62920 62260 IF C = 19 GOTO 62450 62270 IF C = 4 GOTO 62500 62280 IF C = 6 GOTO 62560 62290 IF C = 1 GOTO 62730 62300 IF KT > MAX GOTO 62190 62310 K$(KT) = K$ 62320 PRINT K$(KT); 62330 IF KT > KTMAX THEN KTMAX = KT 62340 GOTO 62180 62350 REM ********** RETURN ********** 62360 FOR T9 = 1 TO MAX 62370 A$ = A$ + K$(T9) 62420 NEXT T9 62430 PRINT "" 62440 RETURN 62450 REM ********* MOVE CURSE BACK ******** 62460 IF KT = 1 GOTO 62190 62470 KT = KT - 1 62480 PRINT CHR$(CH); 62490 GOTO 62190 62500 REM ********* MOVE CURSER FORWARD ********* 62510 IF KT >= MAX GOTO 62190 62520 IF KT > KTMAX GOTO 62190 62530 PRINT K$(KT); 62540 KT = KT + 1 62550 GOTO 62190 62560 REM ********** INSERT *********** 62570 X9 = MAX 62580 WHILE X9 > KT 62590 X9 = X9 - 1 62600 K$(X9 + 1) = K$(X9) 62610 WEND 62620 K$(KT) = " " 62630 KTMAX = KTMAX + 1 62640 IF KTMAX > MAX THEN KTMAX = MAX 62650 FOR T9 = KT TO KTMAX 62660 PRINT K$(T9); 62670 NEXT T9 62680 T6 = (KTMAX - KT) +1 62690 FOR T7 = 1 TO T6 62700 PRINT CHR$(CH); 62710 NEXT T7 62720 GOTO 62190 62730 REM ********** DELETE *********** 62740 IF KT > KTMAX GOTO 62200 62750 IF KTMAX = 1 GOTO 62190 62760 K$(MAX + 1) = "" 62770 X9 = KT 62780 WHILE X9 <= KTMAX 62790 K$(X9) = K$(X9 + 1) 62800 X9 = X9 + 1 62810 WEND 62820 KTMAX = KTMAX - 1 62830 FOR T9 = KT TO KTMAX 62840 PRINT K$(T9); 62850 NEXT T9 62860 PRINT "_"; 62870 T7 = (KTMAX - KT) + 2 62880 FOR T6 = 1 TO T7 62890 PRINT CHR$(CH); 62900 NEXT T6 62910 GOTO 62190 62920 REM ********* BACKSPACE ******** 62930 IF KT = 1 GOTO 62190 62940 K$(KT) = " " 62950 KT = KT - 1 62960 K$(KT) = " " 62970 PRINT CHR$(CH); 62980 PRINT "_"; 62990 PRINT CHR$(CH); 63000 GOTO 62190 " " 62950 KT = KT - 1 62960 K$(KT) = " " 62970