See an updated listing for AppleMatrix below. Some small changes to appearance while running. NOTE- I have had issues with some emulators that don’t like the long DATA statements on lines 35 & 36… You may have to retype them into your emulator listing if this happens.
10 REM MATRIX V1.01
20 REM WAYNE GOLDSMITH 2023
25 REM 80 COL MODE
26 PRINT CHR$(4)”PR#3″
30 HOME
31 DIM CHAR(84)
32 FOR I = 1 TO 84
33 READ CHAR(I)
34 NEXT I
35 DATA 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90
36 DATA 97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122
39 X = 0:Y = 0:L = 0
40 REM CALC COLUMN POS
50 X = INT (80 * RND (1))
60 REM CALC COLUMN LENGTH
70 L = INT (22 * RND (1))
80 REM DISPLAY COLUMN
100 FOR Y = 1 TO L
105 FOR R = 1 TO 3
115 POKE 1403,X : REM ALLOW HTAB > 40 APPLE ][E
120 VTAB Y
125 GOSUB 1000
126 IF R > 2 THEN GOSUB 4000
127 IF R < 3 THEN INVERSE : PRINT CHR$ (CHAR(C)): NORMAL
135 NEXT R
140 NEXT Y
142 COUNT = COUNT + 1
143 IF COUNT = 3 THEN GOSUB 3000
144 IF COUNT = 2 THEN GOSUB 2000
150 GOTO 39
1000 REM GENERATE CONTENT
1010 C = INT (84 * RND (1))
1020 REM FOR T=1 TO 10
1030 REM NEXT T
1090 RETURN
2000 REM RND COLUMN WIPER
2005 FOR WI = 1 TO 3
2010 X = INT (80 * RND (1))
2020 L = INT (23 * RND (1))
2030 FOR Y = 1 TO L
2040 POKE 1403,X: VTAB Y
2045 FOR T = 1 TO 10
2046 NEXT T
2050 PRINT CHR$ (32)
2060 NEXT Y
2065 NEXT WI
2080 RETURN
3000 REM RND FLASH CHARACTER
3005 IF L < 1 THEN L = 1
3010 INV = INT (22 * RND (1))
3015 IF INV = 0 THEN 3010
3020 POKE 1403,X: VTAB INV
3025 GOSUB 1000
3030 FLASH : PRINT CHR$ (CHAR(C))
3050 COUNT = 0
3060 NORMAL
3070 RETURN
4000 REM PRINT NORMAL CHARACTER
4010 POKE 1403,X
4020 VTAB Y
4030 PRINT CHR$ (CHAR(C))
4040 RETURN