1 REM THE MATRIX CODE GENERATOR 2 REM EINSTEIN VERSION BY 3 REM MIKE HALLIDAY IN 2020 4 REM BASED ON APPLE 2 BASIC VERSION 5 REM SET BACKGROUND COLOUR TO BLACK 6 CLS 32 7 BCOL 1 10 DIM K%(3,2) 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 FALLING CHARS FOREVER. 22 REM 5% CHANCE OF RESET 30 FOR C% = 0 TO 3 32 R% = INT(RND(1) * 20) 34 IF R% = 1 THEN GOSUB 50 36 IF R% <> 1 THEN GOSUB 100 38 NEXT C% 39 IF KBD = 32 THEN TCOL 15,0 : STOP 40 GOTO 30 50 REM AT A RANDOM SPOT AT THE TOP OF THE SCREEN 52 REM 50-50 CHANCE OF DRAWING OR ERASING 54 K%(C%,H%) = INT(RND(1) * 32) + 1 56 K%(C%,V%) = 0 58 K%(C%,F%) = INT(RND(1) * 2) 60 RETURN 100 REM MOVE CURSOR DOWN SCREEN 102 K%(C%,V%) = K%(C%,V%) + 1 104 IF K%(C%,V%) > 23 THEN RETURN 106 REM SET THE LOCATION OF THE CURSOR TO PRINT THE CHARACTER 108 PRINT @ K%(C%,H%), K%(C%,V%) 110 REM SET TEXT COLOUR TO GREEN FROM DARK TO LIGHT 112 IF K%(C%,V%) >= 0 AND K%(C%,V%) <= 4 THEN TCOL 12,0 114 IF K%(C%,V%) > 4 AND K%(C%,V%) <= 11 THEN TCOL 2,0 116 IF K%(C%,V%) > 11 AND K%(C%,V%) <= 23 THEN TCOL 3,0 118 IF K%(C%,F%) = 1 THEN GOSUB 140 120 IF K%(C%,F%) = 0 THEN GOSUB 150 122 RETURN 140 REM RANDOM CHAR(ASCII CODES 32 TO 126 ONLY) 142 CH% = RND(126) 144 IF CH% < 32 THEN CH% = CH% + 32 146 PRINT CHR$(CH%); 148 RETURN 150 REM ERASE CHAR 152 PRINT " "; 154 RETURN