From cec20b3dfcd80baf41167343bb1066fd040cb718 Mon Sep 17 00:00:00 2001 From: Neil Kandalgaonkar Date: Thu, 4 Aug 2016 10:02:54 -0700 Subject: [PATCH] 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 --- MATRIX | 79 ++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 44 insertions(+), 35 deletions(-) diff --git a/MATRIX b/MATRIX index ecb5c5e..18d2caf 100644 --- a/MATRIX +++ b/MATRIX @@ -1,35 +1,44 @@ - 1 REM THE MATRIX - 2 REM BY NEIL KANDALGAONKAR - 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 +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