10 ' Program: TWINKLE.BAS (an IBM program (Interesting, But Meaningless))
20 ' Contributed to PC-SIG on 5 November, 1983
30 ' Written by John Walkenbach
40 '            1425 NW Highland
50 '            Corvallis, OR 97330
60 '
70 DIM C(20)
80 FOR I=1 TO 20:READ C(I):NEXT
90 KEY (9) ON:ON KEY (9) GOSUB 470
100 KEY (10) ON:ON KEY (10) GOSUB 460
110 CLS
120 KEY OFF
130 LOCATE 1,30:PRINT"T W I N K L E":PRINT
140 PRINT"This program displays a selected character at random positions on the
150 PRINT"screen. If the selected position is already lit, it disappears.
160 PRINT"The display in the lower left corner gives the percent of the character
170 PRINT"positions lit. It should hit 50% eventually. The pitch of the sound is
180 PRINT"correlated with the screen position, and only occurs when a character
190 PRINT"appears (not disappears). Function Key 9 toggles the sound on & off.
200 PRINT"Function Key 10 stops the program.
210 PRINT:PRINT"(The display is best with the lights out.)
220 PRINT:PRINT"You can specify any ASCII character code, but these work well...":PRINT:PRINT
230 N=1
240 FOR I=1 TO 4
250 FOR J=1 TO 5
260 PRINT USING "###";C(N);
270 PRINT":  ";CHR$(C(N));"        ";
280 N=N+1
290 NEXT J
300 PRINT
310 NEXT I
320 LOCATE 24,1:INPUT;"Enter the number of your choice: ",CCC
330 IF CCC<1 OR CCC>255 THEN BEEP:LOCATE 24,33:PRINT SPC(7);: GOTO 320
340 I=0:LIT=0:DARK=0
350 CLS
360 LOCATE 25,1:PRINT"Percent on: ";
370 RANDOMIZE VAL(RIGHT$(TIME$,2))
380 DEF SEG=&HB000
390 X=INT(RND*1840)*2
400 LOCATE 25,67:I=I+1:PRINT "Loop: ";I;
410 Y=PEEK(X)
420 IF Y=32 THEN POKE X, CCC:SOUND X+100,.52-SND:LIT=LIT+1:LOCATE 25,13:PRINT USING "###.#";LIT/19.2;:GOTO 390
430 IF Y<>32 THEN POKE X,32:SOUND X+100,0:LIT=LIT-1:LOCATE 25,13:PRINT USING "###.#";LIT/19.2;:GOTO 390
440 GOTO 390
450 DATA 1,2,3,4,5,6,14,15,18,22,42,43,46,176,179,206,219,248,249,254
460 CLS:END
470 IF SND= 0 THEN SND=.52:RETURN
480 SND=0:RETURN