Compucolor.org – Virtual Media

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