10  REM  SIMPLE, KEY-ENTRY TYPING DRILL, BY MR. WILLIAM K. CHAR,
20  REM  EDP RESOURCE CENTER, 400 MANSELL, SAN FRANCISCO, CA 94121,
30  REM  SEPTEMBER 15, 1974.
40  REM
45  IF  ERROR  THEN 910
50  DIM A$[72],B$[72],C$[72]
60  DEF FNR()=INT(*RND(0))+1
70  C$="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
80  REM
90  IF TIM(1)>11 THEN 120
100  PRINT "GOOD MORNING, ";
110  GOTO 160
120  IF TIM(1)>15 THEN 150
130  PRINT "GOOD AFTERNOON, ";
140  GOTO 160
150  PRINT "GOOD EVENING, ";
160  PRINT "NEED THE INSTRUCTIONS";
170  INPUT A$
180  IF A$[1,1]="N" THEN 290
190  PRINT 
200  PRINT "     ''VERIFY'' WILL DRILL YOU ON KEY-ENTERING DATA."
210  PRINT "THERE ARE TWO MODES OF OPERATION:"
220  PRINT 
230  PRINT "     1.  YOU TYPE ANY TEXT, THEN ATTEMPT TO COPY IT; OR"
240  PRINT 
250  PRINT "     2.  THE COMPUTER TYPES A TEXT, THEN YOU ATTEMPT TO COPY"
260  PRINT "IT."
270  PRINT 
280  PRINT "     TO EXIT THE PROGRAM, TYPE 'STOP.'"
290  PRINT 
300  PRINT "WHICH MODE OF OPERATION WOULD YOU LIKE (1 OR 2)";
310  INPUT N
320  N=INT(N)
330  IF N<1 OR N>2 THEN 300
340  L=0
350  REM  ===== PRODUCE TEXT =====
360  PRINT 
370  PRINT 
380  GOTO N OF 400,510
390  REM  (MANUALLY-SUPPLIED TEXT)
400  IF L THEN 430
410  PRINT "TYPE SOME SORT OF"
420  L=1
430  PRINT "TEXT: ";
440  ENTER 255,T,B$
450  PRINT 
460  IF T<0 THEN 910
470  IF LEN(B$)=0 THEN 410
480  IF B$="STOP" THEN 910
490  GOTO 630
500  REM  (COMPUTER-SUPPLIED RANDOM LETTERS)
510  K=FNR(3)+2
520  B$=""
530  FOR I=1 TO 50
540  IF I-INT(I/K)*K THEN 580
550  IF I=50 THEN 610
560  B$[I,I]=" "
570  GOTO 600
580  J=FNR(36)
585  IF J=15 THEN 580
590  B$[I,I]=C$[J,J]
600  NEXT I
610  PRINT "TEXT: "B$
620  REM  ===== INPUT COPY AND COMPARE =====
630  PRINT "COPY: ";
640  ENTER 255,T,A$
650  PRINT 
660  IF T<0 THEN 910
670  IF A$="STOP" THEN 910
680  L1=LEN(A$)
690  L2=LEN(B$)
700  IF A$=B$ THEN 880
710  PRINT "ERRS: ";
720  FOR I=1 TO L2
730  IF I>L1 THEN 860
740  IF A$[I,I]=B$[I,I] THEN 820
750  PRINT "^";
760  J=I+1
770  IF J>L1 THEN 860
780  FOR J=J TO L2
790  IF A$[J,J]=B$[J,J] THEN 840
800  NEXT J
810  GOTO 860
820  PRINT " ";
830  IF A$[I]=B$[I] THEN 870
840  NEXT I
850  IF L1 <= L2 THEN 870
860  PRINT "^--->";
870  PRINT 
880  PRINT "TIME: ";
890  PRINT  USING "3D";T
900  GOTO 360
910  CHAIN R,"*HELP"
920  SYSTEM X,"BYE"
930  END 
