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
2 REM BY NEIL KANDALGAONKAR <NEILK@NEILK.NET>
3 REM https://github.com/neilk/apple-ii-matrix/
5 FOR I = 1 TO 30: PRINT " ": NEXT I
10 DIM K(3,2)
11 H = 0
12 V = 1
13 F = 2
15 FOR C = 0 TO 3
16 GOSUB 50
17 NEXT C
20 FOR C = 0 TO 3
30 R = INT ( RND (1) * 20)
31 IF R = 1 THEN GOSUB 50
32 IF R >< 1 THEN GOSUB 100
35 NEXT C
39 GOTO 20
50 REM RESET
51 K(C,H) = INT ( RND (1) * 40) + 1
52 K(C,V) = 0
53 K(C,F) = INT ( RND (1) * 2)
99 RETURN
100 REM DRAW
101 K(C,V) = K(C,V) + 1
102 IF K(C,V) > 22 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 DRAW CHAR
121 PRINT CHR$ ( INT ( RND (1) * 96 + 32))
122 RETURN
130 REM ERASE CHAR
131 PRINT " "
132 RETURN
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