PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #368)

[PCjs Machine "ibm5150"]

Waiting for machine "ibm5150" to load....

Information about “FLASH CARDS 2 OF 4 (367, 369, 370)”

A menu-driven 7,500-Word Vocabulary Builder and Spelling Teacher for the
high school and college-level student.  The flash card format has proved
to be an effective teaching mechanism for improving spelling and
vocabulary skills.

The dictionary does not include the 4,000 most basic words but, rather,
the 7,500 next most commonly-used words.  BASIC source code is included.
While you're polishing your spelling, learn the parts of speech and the
definition of each word.

FILES368.TXT

------------------------------------------------------------------------
Disk No 368    Flash Cards:  Vocabulary and Spelling            v1    DS
-------------------------------------------------------------------------

This is the second of the 4-disk set of the Educational Package: Flash
Cards with 7,500-Word Vocabulary Builder and Spelling Teacher.  This
disk contains the vocabulary file for the second part of the alphabet
(de-in), the source code, in BASIC, for the main Flash Card program, the
same source code as documentation giving excellent overall and
line-by-line comments, and the two files of flags to indicate words
missed.

CARDS          Vocabulary words and definitions (de-in)
FLASH     BAS  Main Flash Cards program, in BASIC
REMARKS   BAS  FLASH.BAS comments for documentation
SFLAG          Flags for missed spelling words
FLAG           Flags for missed vocabulary words


PC Software Interest Group (PC-SIG)
1030 E Duane, Suite J
Sunnyvale, CA 94086
(408) 730-9291

FLASH.BAS

4 DEFINT A-W,Y-Z
35 DIM K$(80)
40 DIM FLGV(2500)
70 CH = 29
75 PRINT FRE(0)
80 GOSUB 50000
100 GOSUB 52000
200 GOTO 40000
500 REM ******* CLS
510 CLS
520 RETURN
7000 REM FIND LENGTH OF WORD
7010 MAX = 0
7020 MAX = MAX + 1
7030 IF MID$(WD$,MAX,1) = " " THEN RETURN
7040 GOTO 7020
8000 REM ***** FILE NAME ACCEPLABLE TEST ************
8010 TEST = 1
8100 FOR Q = 1 TO LEN(A$)
8110 K$(Q) = MID$(A$,Q,1)
8120 C = ASC(K$(Q))
8130 IF C < 48 OR C > 122 THEN TEST = 4
8140 IF Q = 1 AND ( C < 65 OR C > 122 ) THEN TEST = 4
8150 NEXT Q
8190 RETURN
9000 REM OPEN DATA FILE
9010  OPEN "R",#2,"CARDS",128
9020  FIELD #2,28 AS WD$,50 AS DF1$,50 AS DF2$
9030 MRN = LOF(2)/128
9050 RETURN
9100 REM open and read flag file
9105 K = 1
9110 ON ERROR GOTO 9500
9120 OPEN "I",#3,"FLAG"
9125 ON ERROR GOTO 0
9127 INPUT #3,RN,MI
9130 IF EOF(3) THEN 9200
9140 INPUT #3, FLGV(K)
9150 K = K + 1
9160 GOTO 9130
9200 CLOSE #3
9205 GOSUB 9400
9210 RETURN
9300 REM open and read flag file
9305 K = 1
9310 ON ERROR GOTO 9500
9320 OPEN "I",#3,"SFLAG"
9325 ON ERROR GOTO 0
9327 INPUT #3,RN,MI
9330 IF EOF(3) THEN 9200
9340 INPUT #3, FLGV(K)
9350 K = K + 1
9360 GOTO 9330
9400 REM cont number of times missed
9405 GOSUB 9470
9410 FOR T = 1 TO MRN
9420 R = FLGV(T)
9430 IF R > 8 THEN R = 8
9440 KTM(R) = KTM(R) + 1
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 YOUR PAST RESULTS HAS NOT BEEN FOUND"
9520 ON ERROR GOTO 0
9550 GOSUB 60000
9560 RETURN
9600 REM WRITE FLAG FILE
9610 PRINT " WRITING INFORMATION ON DISK, PLEASE WAIT"
9620 OPEN "O",#3,"FLAG"
9625 WRITE #3, RN, MI
9630 FOR T = 1 TO MRN
9640 WRITE #3, FLGV(T)
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"
9725 WRITE #3, RN, MI
9730 FOR T = 1 TO MRN
9740 WRITE #3, FLGV(T)
9750 NEXT T
9755 CLOSE #3
9760 RETURN
10000 REM CONVERT FILES
10010 GOSUB 500
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 USE THIS OPTION 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
10180 GOSUB 62030
10190 IF A$ = "" THEN 40000
10200 GOSUB 8000
10210 IF TEST = 4 THEN 10000
10400 OPEN "I",#1,A$
10500 GOSUB 9000
10550 RN = 0
10600 IF EOF(1) = -1 THEN 10900
10610 LINE INPUT #1,WI$
10612 LINE INPUT #1,DI1$
10614 LINE INPUT #1,DI2$
10625 LSET  WD$ = WI$
10630 PRINT WD$; "----"
10635 LSET  DF1$ = DI1$
10640 PRINT DF1$
10645 LSET  DF2$ = DI2$
10647 PRINT DF2$
10650 RN = RN + 1
10675 IF LEN(DI1$) > 50 AND MID$(DI1$,51,1) >< " " THEN GOSUB 10920
10678 IF LEN(DI2$) > 50 AND MID$(DI2$,51,1) >< " " THEN GOSUB 10920
10700 PUT #2,RN
10710 GOTO 10600
10900 CLOSE
10910 GOTO 40000
10920 IF INKEY$ = "" THEN 10920
10930 RETURN
10950 REM START FLASH CARDS
10960 GOSUB 9000
10965 GOSUB 9100
10970 GOSUB 23000
10975 GOSUB 13000
10980 RGT = 0
10990 WRG = 0
11000 IF FLGV(RN) < MI THEN 16000
11003 GET #2,RN
11005 GOSUB 500
11010 IF RV = 1 THEN PRINT WD$;TAB(35)" 0 - exit ";TAB (50) "RIGHT"; RGT;" WRONG ";WRG
11012 IF RV = 2 THEN PRINT DF1$;TAB(35) " 0 - exit ";TAB (50) "RIGHT"; RGT;" WRONG ";WRG
11014 IF RV = 2 THEN PRINT DF2$
11020 GOSUB 12000
11030 GOSUB 60000
11040 IF DT# < 0 OR DT# > 6 THEN 11030
11045 IF DT# = 0 THEN 18000
11100 IF DT# = T THEN 14000 ELSE 15000
12000 REM print random options on screen
12010 T = INT(RND * 7 + 1 )
12020 IF T = 7 THEN 12010
12030 FOR N = 1 TO 6
12040 RNT= INT(RND * MRN + 1)
12050 IF RNT = RN THEN 12040
12060 PRINT N
12063 IF N >< T THEN 12100
12065 GET #2,RN
12070 IF RV = 1 THEN PRINT DF1$
12080 IF RV = 1 THEN PRINT DF2$
12085 IF RV = 2 THEN PRINT WD$
12087 IF RV = 2 THEN PRINT ""
12090 GOTO 12200
12100 GET #2,RNT
12110 IF RV = 1 THEN PRINT DF1$ ELSE PRINT WD$
12120 IF RV = 1 THEN PRINT DF2$
12130 IF RV = 2 THEN PRINT ""
12200 NEXT N
12300 RETURN
13000 REM reverse
13010 GOSUB 500
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
13070 IF DT# < 1 OR DT# > 2 THEN 13000
13080 RV = DT#
13100 RETURN
14000 REM  KNOWS SUBROUTINE"
14100 PRINT " RIGHT AGAIN "
14105 IF INKEY$ = "" THEN 14105
14110 RGT = RGT + 1
14500 GOTO 16000
15000 REM DONT KNOW SUBROUTINE
15020 PRINT " WRONG "
15030 PRINT " THE CORRECT ANSWER IS ";T
15040 WRG = WRG + 1
15050 IF INKEY$ = "" THEN 15050
15100 FLGV(RN) = FLGV(RN) + 1
15500 GOTO 16000
16000 REM CONTINUE
16100 RN = RN + 1
16110 IF RN > MRN THEN 17000
16500 GOTO 11000
17000 REM END OF CARDS
17010 GOSUB 39000
17300 RN = 1
17305 IF DT# = 2 THEN 11000
17310 MI = 0
17400 GOSUB 9600
17500 GOTO 40000
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
18150 IF DT# > 2 OR DT# < 1 THEN 18000
18160 IF DT# = 2 THEN 11000
18165 GOSUB 9600
18170 GOTO 40000
20000 REM START FLASH CARDS
20100 GOSUB 9000
20110 GOSUB 9100
20130 GOSUB 23000
20500 REM reverse
20510 GOSUB 500
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
20570 IF DT# < 1 OR DT# > 2 THEN 20560
20580 RV = DT#
21000 IF FLGV(RN) < MI THEN 26000
21002 IF T = RN THEN 21005
21003 GET #2,RN
21005 GOSUB 500
21010 IF RV = 1 THEN PRINT WD$
21012 IF RV = 2 THEN PRINT DF1$
21014 IF RV = 2 THEN PRINT DF2$
21016 IF RV = 2 THEN PRINT ""
21020 T$ = INKEY$
21022 IF T$  = "" THEN 21020
21025 IF T$ = "K" OR T$ = "k" THEN 24000
21027 IF T$ = "E" OR T$ = "e" THEN 28000
21030 IF RV = 1 THEN PRINT DF1$
21035 IF RV = 2 THEN PRINT WD$
21040 IF RV = 1 THEN PRINT DF2$
21042 PRINT ""
21043 GOSUB 27600
21045 T$ = INKEY$
21050 IF T$ = "" THEN 21045
21100 IF T$ = "K" OR T$ = "k" THEN 24000
21110 IF T$ = "D" OR T$ = "d" THEN 25000
21115 IF T$ = "E" OR T$ = "e" THEN 28000
21118 PRINT "PRESS  D - don't know or  K - know  E - exit     "
21120 GOTO 21045
23000 REM ask which ones you want to review
23010 GOSUB 500
23055 GOSUB 23500
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
23110 MI = DT#
23200 PRINT "WHICH CARD DO YOU WANT TO START/CONTINUE AT"
23205 IF RN < 1 THEN RN = 1
23210 PRINT "COMPUTER RECCOMENDS ";RN
23215 IF RN > 1 THEN PRINT "YOU ENDED YOUR LAST REVIEW ON CARD NUMBER ";RN
23220 GOSUB 60060
23230 IF DT# < 1 OR DT# >MRN THEN 23200
23235 RN = DT#
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
25500 GOTO 26000
26000 REM CONTINUE
26100 RN = RN + 1
26110 IF RN > MRN THEN 27000
26500 GOTO 21000
27000 REM END OF CARDS
27100 GOSUB 39000
27300 RN = 1
27305 IF DT# = 2 THEN 21000
27310 MI = 0
27400 GOSUB 9600
27500 GOTO 40000
27600 REM GET RECORD IN ADVANCE
27610 T = RN + 1
27620 IF T > MRN THEN RETURN
27630 IF MI <= FLGV(T) THEN 27700
27640 T = T + 1
27650 GOTO 27620
27700 GET #2,T
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
28150 IF DT# > 2 OR DT# < 1 THEN 28000
28160 IF DT# = 2 THEN 21000
28170 GOSUB 9600
28200 GOTO 40000
30000 REM START SPELLING
30100 GOSUB 9000
30110 GOSUB 9300
30120 GOSUB 23000
30200 REM
31000 IF FLGV(RN) < MI THEN 36000
31003 GET #2,RN
31005 GOSUB 500
31010 PRINT DF1$;TAB(60)"E - EXIT"
31012 PRINT DF2$
31015 K1$= LEFT$(WD$,1)
31018 PRINT ""
31020 PRINT TAB(2) K1$
31030 GOSUB 7000
31035 MAX = MAX - 1
31040 GOSUB 62030
31050 IF A$ = "E" OR A$ = "e" THEN GOTO 38000
31100 IF A$ = LEFT$(WD$,MAX) THEN  34000 ELSE 35000
34000 REM  KNOWS SUBROUTINE"
34010 PRINT " RIGHT "
34100 IF INKEY$ = "" THEN 34100
34500 GOTO 36000
35000 REM DONT KNOW SUBROUTINE
35010 PRINT TAB(2) WD$
35020 PRINT " WRONG "
35030 IF INKEY$ = "" THEN 35030
35035 FLGV(RN) = FLGV(RN) + 1
35500 GOTO 36000
36000 REM CONTINUE
36100 RN = RN + 1
36110 IF RN > MRN THEN 37000
36500 GOTO 31000
37000 REM END OF CARDS
37060 RN = 1
37065 GOSUB 39000
37070 IF DT# = 2 THEN 31000
37080 MI = 1
37100 GOSUB 9700
37130 GOTO 40000
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
38150 IF DT# > 2 OR DT# < 1 THEN 38000
38160 IF DT# = 2 THEN 31000
38170 GOSUB 9700
38200 GOTO 40000
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
39160 IF DT# < 1 OR DT# > 2 THEN 39150
39300 RETURN
40000 REM *******  INITIAL MENU   *********
40030 CLOSE
40060 GOSUB 500
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
40282 IF DT# <0 OR DT# >6 GOTO 40280
40300 T = DT#
40310 IF T = 0 THEN 51000
40320 ON T GOTO 20000,10950,30000,41000,10000,42000
40340 GOSUB 500
41000 REM print words on paper
41100 GOSUB 9000
41110 GOSUB 500
41120 PRINT "   DO YOU WANT TO PRINT:"
41130 PRINT "   1 - CARDS THAT YOU ARE HAVING RECOGNITION PROBLEMS WITH "
41140 PRINT "   2 - CARDS 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
41180 IF DT# < 0 OR DT# > 2 THEN 41110
41185 IF DT# = 0 THEN 40000
41190 IF DT# = 1 THEN GOSUB 9100 ELSE GOSUB 9300
41195 GOSUB 41500
41300 GOSUB 23000
41305 PRINT " PRESS ANY KEY TO PAUSE "
41310 FOR T = 1 TO MRN
41312 IF INKEY$ >< "" THEN 41700
41315 IF FLGV(T) < MI THEN 41360
41320 GET #2,T
41330 PRINT WD$
41340 PRINT DF1$
41350 PRINT DF2$
41355 IF LPRT = 2 THEN GOSUB 41600
41360 NEXT T
41400 GOTO 40000
41500 REM ask lprint option
41510 PRINT "*********  DO YOU WANT THE CARDS  ************"
41520 PRINT "    1 - SHOWN ON THE SCREEN ONLY "
41530 PRINT "    2 - SHOWN ON THE SCREEN AND ON PAPER"
41540 PRINT "****  ENTER THE NUMBER THEN PRESS RETURN  ****"
41560 GOSUB 60000
41570 IF DT# < 1 OR DT# >2 THEN 41560
41580 LPRT = DT#
41590 RETURN
41600 REM  PRINT ON PAPER
41630 LPRINT WD$
41640 LPRINT DF1$
41650 LPRINT DF2$
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
41740 IF DT# < 1 OR DT# > 2 THEN 41730
41750 IF DT# = 1 THEN 41312 ELSE 40000
42000 REM reset missed
42100 GOSUB 500
42110 PRINT " USE THIS NEW OPTION IF YOU ARE A NEW STUDENT "
42120 PRINT " THIS OPTION WILL RESET THE WORDS PREVIOUSLY 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
42180 IF DT# < 1 OR DT# > 2 THEN 42170
42190 IF DT# = 1 THEN 40000
42300 FOR T = 1 TO MRN
42310 FLGV(T) = 0
42320 NEXT T
42330 GOSUB 9600
42340 GOSUB 9700
42350 GOTO 40000
50000 REM **********  INTRO
50010 GOSUB 500
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
50970 RETURN
51000 REM ***** EXIT TO SYSTEM
51050 REM   GOSUB 9600
51100 GOSUB 500
51110 CLOSE
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 "Keep it in the default disk drive at all times during this program."
52150 PRINT "      The Flash Card program only uses the Default disk drive"
52200 IF INKEY$ = "" GOTO 52200
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

REMARKS.BAS

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

Directory of PC-SIG Library Disk #0368

 Volume in drive A has no label
 Directory of A:\

CARDS           253952   1-31-84   1:01a
FILES368 TXT      1024   5-23-85   4:07p
FLAG              6016   1-31-84  12:02a
FLASH    BAS     20736   1-31-84  12:37a
REMARKS  BAS     28160   1-31-84  12:36a
SFLAG             6016   1-31-84   1:27a
        6 file(s)     315904 bytes
                        5120 bytes free