10 COM A$[72],B$[72],C$[72],D$[72] 20 COM I$[72],J$[72],K$[72],L$[72],M$[72],N$[72] 30 COM E,H,O,R,S,T,A,B,G,F,D,C,P,Q 40 REM: FILENAME CHANGE IN LINE 2370, WAS: 2370 A$="$TYPE0102030405" 50 REM: MIKE SCHWEIZER 10/7/75 60 REM: SCR FILES RENAMED IN LINE 130, CURRENT SCR FILES: 65 REM: TYPEF1, TYPEF2, TYPEF3, TYPEF4 IN A001 70 DIM Q$[72],Z$[20] 75 IF ERROR THEN 2890 80 REM * FILES MUST BE IN 'A001' BUT PROGRAM MAY BE IN ANOTHER ACCOUNT 90 REM* UPDATED BY M.MUELLER EDP RESOURCE CENTER 1/25/77 100 FILES *,* 110 DATA "MORNING","AFTERNOON","EVENING" 120 DATA "*TYPEF1","*TYPEF2","*TYPEF3","*TYPEF4" 130 RESTORE 110 140 FOR E=1 TO 1+(TIM(1)>11)+(TIM(1)>16) 150 READ B$ 160 NEXT E 170 PRINT "GOOD "B$". "; 180 RESTORE 120 190 FOR E=1 TO 4 200 READ B$ 220 ASSIGN B$,2,R 230 IF R=0 THEN 270 240 NEXT E 250 PRINT "ALL SCRATCH FILES ARE IN USE AT THE MOMENT. PLEASE TRY AGAIN LATER." 260 GOTO 2890 270 PRINT "WELCOME TO TYPE." 280 PRINT "WHAT IS YOUR NAME"; 290 INPUT Z$ 300 PRINT LIN(2); 310 GOSUB 1980 320 IF G THEN 340 330 PRINT LIN(-2)"PLEASE TYPE THE FOLLOWING LINES:"LIN(4) 340 IF END #1 THEN 400 350 FOR H=1 TO 100 360 READ #1;A$ 370 IF G THEN 390 380 PRINT A$'10 390 NEXT H 400 IF G THEN 450 410 PRINT LIN(-12)"PLEASE TEAR OFF THE ABOVE LINES AND PLACE WHERE" 420 PRINT "YOU CAN EASILY READ THEM. PRESS 'RETURN' WHEN" 430 PRINT "YOU HAVE FINISHED DOING WHAT I ASKED." 440 ENTER 255,F,D$ 450 PRINT LIN(5)"REMEMBER IF YOU WISH TO QUIT BEFORE COMPLETING THE ENTIRE TIMING," 460 PRINT "JUST PRESS 'RETURN' AND TYPE IN THE WORD 'SCORE'." 470 PRINT LIN(-2)"YOU MAY NOW BEGIN, GOOD LUCK"LIN(11) 480 R=S=T=0 490 FOR O=1 TO H 500 ENTER 255,F,A$ 510 PRINT LIN(2); 520 IF F>0 THEN 560 530 T=T-F 540 PRINT LIN(2)"TRY THAT LINE AGAIN."LIN(2); 550 GOTO 500 560 IF A$="" THEN 540 570 IF A$="SCORE" THEN 630 580 PRINT #2;A$, END 590 T=T+F 600 IF T>299 AND E THEN 630 610 NEXT O 620 IF E THEN 490 630 IF END #1 THEN 680 640 IF END #2 THEN 1310 650 P=1 660 READ #2,1 670 PRINT LIN(-4)"*** ERROR *** ANALYSIS ***"LIN(5) 680 READ #1,1 690 A=B=1 700 G=Q=R 710 READ #1;A$ 720 READ #2;B$ 730 P=P+1 740 IF A$[1,1]#'10 THEN 770 750 A$=A$[2] 760 GOTO 740 770 FOR D=LEN(B$) TO 1 STEP -1 780 IF B$[D,D]#" " THEN 810 790 B$[D,D]="" 800 NEXT D 810 S=S+LEN(B$) 820 IF A$=B$ THEN 710 830 FOR F=1 TO LEN(A$) 840 IF A$[F,F]#" " THEN 860 850 NEXT F 860 B$[2]=B$ 870 B$[1,1]=" " 880 FOR D=1 TO LEN(B$) 890 IF B$[D,D]#" " THEN 910 900 NEXT D 910 C$=B$ 920 GOSUB SGN(D-F-1)+2 OF 1780,1880,1810 930 FOR F=1 TO 3 940 GOSUB 1490 950 GOSUB 1630 960 NEXT F 970 IF I$=L$ THEN 1240 980 IF L$="" THEN 1150 990 IF I$=M$ THEN 1220 1000 IF I$=N$ THEN 1200 1010 IF I$[1,LEN(L$)]#L$ THEN 1090 1020 IF I$[LEN(L$)+2]=M$ THEN 1040 1030 IF I$[LEN(L$)+1]#M$ THEN 1090 1040 GOSUB 1430 1050 GOSUB 1570 1060 R=R+1 1070 GOSUB 1570 1080 GOTO 1260 1090 IF L$[1,LEN(I$)]#I$ THEN 1150 1100 IF L$[LEN(I$)+2]=J$ THEN 1120 1110 IF L$[LEN(I$)+1]#J$ THEN 1150 1120 GOSUB 1430 1130 GOSUB 1430 1140 GOTO 1060 1150 GOSUB 1430 1160 R=R+1 1170 IF L$=I$ THEN 1240 1180 IF L$=J$ THEN 1150 1190 GOTO 1070 1200 GOSUB 1570 1210 R=R+1 1220 GOSUB 1570 1230 R=R+1 1240 GOSUB 1490 1250 GOSUB 1630 1260 IF I$#"" THEN 970 1270 IF L$#"" THEN 1060 1280 IF G=R THEN 1300 1290 PRINT '10 1300 GOTO 690 1310 PRINT LIN(-5)"*** PROFICIENCY *** ANALYSIS ***"LIN(4) 1320 PRINT LIN(2)"NAME: "Z$;LIN(2) 1330 PRINT INT(12*(S-5*R)/T);TAB(10)"= TYPING SPEED" 1340 PRINT LIN(1);INT(60*R/T);TAB(10)"= ERRORS PER MINUTE" 1350 PRINT LIN(1);R;TAB(10)"= TOTAL ERRORS DETECTED" 1360 T1=INT(T/60) 1370 T2=(T-(T1*60))*(T1<5) 1380 PRINT LIN(1);TAB(10)" TIME:"T1"MINUTES AND"T2"SECONDS." 1390 PRINT LIN(11) 1400 GOTO 2880 1410 READ #2,1 1420 GOTO 320 1430 IF I$="" THEN 1560 1440 GOSUB 2840 1450 D$=" [" 1460 D$[7]=I$ 1470 D$[LEN(D$)+1]="]" 1480 PRINT D$; 1490 C$=A$ 1500 C=A 1510 GOSUB 1890 1520 I$=J$ 1530 J$=K$ 1540 K$=D$ 1550 A=D 1560 RETURN 1570 IF L$="" THEN 1880 1580 GOSUB 2840 1590 D$=" >" 1600 D$[7]=L$ 1610 D$[LEN(D$)+1]="<" 1620 PRINT D$; 1630 C$=B$ 1640 C=B 1650 GOSUB 1890 1660 L$=M$ 1670 M$=N$ 1680 N$=D$ 1690 IF N$="" THEN 1870 1700 F=LEN(M$) 1710 IF F=0 THEN 1870 1720 IF M$[F,F]="." THEN 1760 1730 IF M$[F,F]="?" THEN 1760 1740 IF M$[F,F]="!" THEN 1760 1750 IF M$[F,F]#":" THEN 1800 1760 IF B+2=C THEN 1870 1770 IF B+2 < INCORRECT WAY IT WAS TYPED!" 2410 PRINT " "'10"- - SPACES LEFT OUT IN TYPING!" 2420 PRINT '10" + + EXTRA SPACES PUT IN WHILE TYPING!" 2430 PRINT LIN(2)"WOULD YOU LIKE TO PRACTICE FIRST"; 2440 INPUT Q$ 2450 A$="*TYPF0102030405" 2460 PRINT '10"DO YOU HAVE THE READY PRINTED PARAGRAPHS FOR THIS PROGRAM"; 2470 INPUT C$ 2480 LET C$=UPS$(C$[1,1]) 2490 G=0 2500 IF C$="N" THEN 2560 2510 G=1 2520 PRINT '10"NUMBER OF THE PARAGRAPH THAT YOU WANT"; 2530 INPUT F 2540 IF F>0 AND F<6 AND F=INT(F) THEN 2580 2550 GOTO 2520 2560 PRINT "PARAGRAPH YOU WANT PRINTED (1-5) "; 2561 INPUT F 2562 IF ABS(F)#INT(F) OR F>5 THEN 2560 2570 IF F>5 THEN 2560 2580 A$[6]=A$[F+F+4,F+F+5] 2590 ASSIGN A$,1,R 2600 IF END #2 THEN 650 2610 IF G THEN 2690 2620 READ #1,1 2630 IF END #1 THEN 2680 2640 PRINT LIN(2)"PARAGRAPH"F;LIN(1) 2650 READ #1;A$ 2660 PRINT A$ 2670 GOTO 2650 2680 PRINT LIN(2) 2690 IF Q$[1,1]="N" THEN 2770 2700 INPUT Z 2710 Z=((ABS(INT(Z)) MAX 1) MIN 2)*60 2720 ENTER 255,Z1,C$ 2730 PRINT 2740 IF ABS(Z1) >= Z THEN 2770 2750 Z=Z-Z1 2760 GOTO 2720 2770 PRINT LIN(2)"ARE YOU READY TO TAKE THE TIMED TEST"; 2780 INPUT C$ 2790 IF C$[1,1]="Y" THEN 2830 2800 PRINT LIN(2)"SORRY, MAYBE NEXT TIME." 2810 GOTO 2880 2820 E=1 2830 RETURN 2840 IF Q<0 THEN 2870 2850 Q=-1 2860 PRINT "LINE"P-1"("B$[2]")" 2870 RETURN 2880 PRINT LIN(2)"GOOD-BYE "Z$ 2890 CHAIN R,"*HELP" 2900 SYSTEM X,"BYE" 2910 END