45 lines
1.1 KiB
Plaintext
45 lines
1.1 KiB
Plaintext
1 REM THE MATRIX
|
|
2 REM BY NEIL KANDALGAONKAR <neilk@neilk.net>
|
|
3 REM https://github.com/neilk/apple-ii-matrix/
|
|
4 REM CLEAR SCREEN
|
|
5 FOR I = 1 TO 30: PRINT: NEXT I
|
|
6 REM USE ALL 24 LINES
|
|
7 POKE 35, 25
|
|
9 REM SET UP THREE CURSORS
|
|
10 DIM K(3,2)
|
|
11 REM CONSTANTS FOR ARRAY INDICES.
|
|
12 REM HORIZONTAL, VERTICAL, DRAW/ERASE
|
|
13 H = 0: V = 1: F = 2
|
|
14 REM RESET ALL CURSORS
|
|
15 FOR C = 0 TO 3
|
|
16 GOSUB 50
|
|
17 NEXT C
|
|
20 REM MAIN LOOP
|
|
21 REM DRAW CURSORS FOREVER. 5% CHANCE OF RESET
|
|
30 FOR C = 0 TO 3
|
|
31 R = INT ( RND (1) * 20)
|
|
32 IF R = 1 THEN GOSUB 50
|
|
33 IF R >< 1 THEN GOSUB 100
|
|
35 NEXT C
|
|
39 GOTO 30
|
|
50 REM RESET A CURSOR
|
|
51 REM AT A RANDOM SPOT AT THE TOP OF THE SCREEN
|
|
52 REM 50-50 CHANCE OF DRAWING OR ERASING
|
|
53 K(C,H) = INT ( RND (1) * 40) + 1
|
|
54 K(C,V) = 0
|
|
55 K(C,F) = INT ( RND (1) * 2)
|
|
59 RETURN
|
|
100 REM ADVANCE CURSOR AND DRAW SOMETHING
|
|
101 K(C,V) = K(C,V) + 1
|
|
102 IF K(C,V) > 24 THEN RETURN
|
|
103 VTAB K(C,V): HTAB K(C,H)
|
|
110 IF K(C,F) = 1 THEN GOSUB 120
|
|
111 IF K(C,F) = 0 THEN GOSUB 130
|
|
119 RETURN
|
|
120 REM RANDOM CHAR
|
|
121 PRINT CHR$ ( INT ( RND (1) * 96 + 32));
|
|
122 RETURN
|
|
130 REM ERASE CHAR
|
|
131 PRINT " ";
|
|
132 RETURN
|