Fix issues #1, #4

From suggestions by @badvision: Added the POKE call to get all 24 lines, and the semicolons seem to have fixed the occasional line which somehow advanced the whole screen. Also added more comments and removed leading spaces
This commit is contained in:
Neil Kandalgaonkar 2016-08-04 10:02:54 -07:00 committed by GitHub
parent a44b9837f7
commit cec20b3dfc
1 changed files with 44 additions and 35 deletions

79
MATRIX
View File

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