Listing of file='TIMER.BAS;01' on disk='vmedia/swarms-sector.ccvf'
100 REM HUHAM REACTION TIMER. (C) A.W. GROGONO. 1979 110 REM 120 RESTORE :CLEAR 200:DIM I$(27),N$(10),SM(3,1) 130 DATA 2,11,52,47 140 FOR I= 0TO 3:READ CL(I):NEXT I 150 DATA "IN IN ","IN OUT","OUT IN ","OUT OUT" 160 FOR I= 0TO 3:READ R$(I):NEXT I 170 DATA "R I G H T , ","W R O N G , ","W A S ","W A S N ' T " 180 READ B$(0),B$(1),C$(0),C$(1) 190 OUT 8,255 200 U= 5:V= 9 210 CS= 600 220 S= 5:T= 3:P= 1 230 W= PEEK (33209) 240 FOR X= 1TO W:WW= RND (- PEEK (33209)):NEXT 250 NA= 20 260 PLOT 27,24,29,15,14,6,2,12,3,17,3 270 PRINT "R E A C T I O N T I M E R" 280 PRINT :PRINT ,"THIS PROGRAM PREPARES A STRING OF LETTERS." 290 PRINT ,"THE STRING IS SHOWN FOR A SHORT TIME," 300 PRINT ,"THEN A SINGLE LETTER IS DISPLAYED. " 310 PRINT ,"IF THE LETTER WAS IN THE STRING:" 320 PRINT ,,"THE SUBJECT PRESSES THE = KEY. " 330 PRINT ,"IF THE LETTER WAS NOT INCLUDED:" 340 PRINT ,,"THE SUBJECT PRESSES THE . KEY. " 350 PRINT ,"THE OPERATOR CAN CONTROL:" 360 PRINT ,,"STRING LENGTH":PRINT ,,"COUNTDOWN TIME" 370 PRINT ,,"VIEWING TIME":PRINT ,,"PAUSE BEFORE LETTER" 380 PRINT ,,"NUMBER OF ATTEMPTS. ":PRINT , 390 INPUT "PRESS RETURN TO CONTINUE: ";Z$ 400 PLOT 6,38,12,14,3,19,3:PRINT "I N S T R U C T I O N S" 410 PRINT :PRINT ,"EACH PARAMETER HAS THE VALUE SHOWN BELOW." 420 PRINT ,"IF THE VALUE IS ACCEPTABLE, PRESS RETURN." 430 PRINT ,"TO CHANGE ONE, ENTER A NEW NUMBER: " 440 PLOT 3,8,12:PRINT "STRING MIN LENGTH: ";U 450 PLOT 3,8,14:PRINT " MAX LENGTH: ";V 460 PLOT 3,8,16:PRINT "COUNTDOWN IN SECS: ";S 470 PLOT 3,8,18:PRINT "VIEWING TIME SECS: ";T 480 PLOT 3,8,20:PRINT "INTERVAL IN SECS: ";P 490 PLOT 3,8,22:PRINT "NUMBER OF ATTEMPTS: ";NA 500 Y= 10 510 GOSUB 1110:U= - U* (Z= 0)+ Z:IF Z= 0THEN PLOT 26:PRINT U 520 GOSUB 1110:V= - V* (Z= 0)+ Z:IF Z= 0THEN PLOT 26:PRINT V 530 GOSUB 1110:S= - S* (Z= 0)+ Z:IF Z= 0THEN PLOT 26:PRINT S 540 GOSUB 1110:T= - T* (Z= 0)+ Z:IF Z= 0THEN PLOT 26:PRINT T 550 GOSUB 1110:P= - P* (Z= 0)+ Z:IF Z= 0THEN PLOT 26:PRINT P 560 GOSUB 1110:NA= - NA* (Z= 0)+ Z:IF Z= 0THEN PLOT 26:PRINT NA 570 FOR I= 0TO 3:FOR J= 0TO 1:SM(I,J)= 0:NEXT J:NEXT I 580 NT= 1 590 W= V+ 1- U 600 FOR I= 1TO 26:I$(I)= CHR$ (64+ I):NEXT I 610 PLOT 6,1,12,14,3,5,11 620 L= U+ INT (W* RND (1)) 630 C= INT (2* RND (1)) 640 M= - L* (C= 0)- (26- L)* (C= 1) 650 R= 1+ INT (M* RND (1)) 660 FOR I= 1TO L:N= 1+ INT ((27- L)* RND (1)):N$(I)= I$(N) 670 FOR J= NTO 27- I:I$(J)= I$(J+ 1):NEXT J:NEXT I 680 L$= "":FOR I= 1TO L:L$= L$+ N$(I)+ " ":NEXT I 690 T$= I$(R):IF C= 0THEN T$= N$(R) 700 PRINT " ATTEMPT : ";NT:PLOT 15,3,5,14 710 PRINT "COUNTDOWN":PLOT 3,5,15:PRINT "(SECONDS) :":PLOT 14 720 ZZ= 20 730 FOR J= STO 1STEP - 1:PLOT 3,18,15,32,32,32,26,26,26:PRINT J 740 FOR I= 0TO CS- ZZ:NEXT I:NEXT J 750 PLOT 6,2,12,3,31- L,15:PRINT L$ 760 K= T* CS:FOR I= 0TO K:NEXT I:PLOT 12 770 K= P* CS:FOR I= 0TO K:NEXT I 780 H= 0:POKE 33278,0 790 PLOT 12,3,31,15:PRINT T$:PLOT 3,64,0 800 OUT 8,255 810 H= H+ 1:IF PEEK (33278)= 0THEN 810 820 OUT 8,247 830 A= PEEK (33278) 840 Z= (A< > 61AND A< > 46) 850 IF ZTHEN PLOT 3,24,23:PRINT "ERROR. WAIT: ":GOTO 600 860 D= - (A= 46) 870 CL= 2* C+ D 880 B= - (D< > C) 890 Q= 40.04 900 PLOT 6,CL(CL),12,3,26,9:PRINT B$(- (D< > C)) 910 PLOT 3,9,13:PRINT "Y O U S A I D I T ";C$(D); 920 PRINT " T H E R E": 930 PLOT 3,20,17:PRINT "A N D I T ";C$(C);"." 940 FOR I= 1TO CS:NEXT I 950 SM(CL,0)= SM(CL,0)+ H 960 SM(CL,1)= SM(CL,1)+ 1 970 IF NT< NATHEN NT= NT+ 1:GOTO 600 980 Q= 40.333 990 OUT 8,255 1000 PLOT 6,1,12,3,24,3:PRINT "R E S U L T S":PLOT 6,6 1010 PLOT 3,8,9:PRINT "PLACE GUESS COUNT ATTEMPTS AV.SECS" 1020 PLOT 6,3:FOR I= 0TO 3:PLOT 3,10,13+ 4* I:PRINT R$(I) 1030 PLOT 3,22,13+ 4* I:PRINT SM(I,0) 1040 PLOT 3,33,13+ 4* I:PRINT SM(I,1) 1050 IF SM(I,1)= 0THEN 1070 1060 PLOT 3,41,13+ 4* I:PRINT SM(I,0)/ SM(I,1)/ Q 1070 NEXT I:PLOT 3,8,31 1080 INPUT "CONTINUE, REPEAT, NEW TIMES ETC. OR MENU: ";Z$ 1090 ON - (Z$= "R")GOTO 570:IF Z$= "M"THEN LOAD "MENU":RUN 1100 ON - (Z$= "N")GOTO 100:GOTO 580 1110 Y= Y+ 2 1120 PLOT 3,34,Y:INPUT "";Z$:Z= VAL (Z$):PLOT 3,34,Y:RETURN