I was using my old iMac one day, for the first time in a quite a while – I was looking up something for AppleSoft coding that had popped into my head while away from my home office -, and when I was done I moved my mouse to the top right corner where my HotCorners will launch the screensaver. Well, I hadn’t used this machine in quite a while, and forgot that I have a Matrix style screensaver in use. Always loved the Matrix screens. I wondered if there was a little program for AppleSoft so back onto the net I went, and found absolutely nothing! That seemed pretty strange, so I searched some more. Still nothing.
The AppleSoft world needed a little program to generate Matrix style screens, so I wrote one. This was lots of fun to build, and I am quite happy with it, and will likely work on it in the future to improve it, but for now here is the text listing. You can copy and paste it into an emulator like AppleWin, or type it into your own vintage Apple computer. You can do whatever you like with it, I only ask that you leave my name in the code listing 🙂
10 REM MATRIX
20 REM WAYNE GOLDSMITH 2023
25 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,3
9,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,6
7,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,1
03,104,105,106,107,108,109,1
10,111,112,113,113,115,116,1
17,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 2
115 POKE 1403,X : REM ALLOWS HTAB PAST 40 COLS APPLE][E
120 VTAB Y
125 GOSUB 1000
130 PRINT CHR$ (CHAR(C))
135 NEXT R
140 NEXT Y
142 COUNT = COUNT + 1
143 IF COUNT = 3 THEN GOSUB 30
00
144 IF COUNT = 2 THEN GOSUB 20
00
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 2
2010 X = INT (80 * RND (1))
2020 L = 21
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
2070 X = 0:Y = 0:L = 0
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