SCREEN 13
RANDOMIZE TIMER
' ── Custom green palette (R + G*256 + B*65536, 6-bit DAC) ──
PALETTE 16, 0
PALETTE 17, 2560
PALETTE 18, 5120
PALETTE 19, 10240
PALETTE 20, 12800
PALETTE 21, 8 + 16128 + 524288
CONST NC = 40
CONST NR = 25
DIM yy(NC)
DIM sp(NC)
DIM tk(NC)
DIM tr(NC)
FOR I = 1 TO NC
yy(I) = INT(RND * NR) + 1
sp(I) = INT(RND * 3) + 1
tk(I) = 0
tr(I) = INT(RND * 10) + 5
NEXT
DO
FOR I = 1 TO NC
tk(I) = tk(I) + 1
IF tk(I) >= sp(I) THEN
tk(I) = 0
' ── Bright head ──
COLOR 21
LOCATE yy(I), I
PRINT CHR$(INT(RND * 93) + 33);
' ── Fade trail ──
t1 = yy(I) - 1
IF t1 < 1 THEN t1 = NR
COLOR 20
LOCATE t1, I
PRINT CHR$(INT(RND * 93) + 33);
t2 = yy(I) - 3
IF t2 < 1 THEN t2 = t2 + NR
COLOR 19
LOCATE t2, I
PRINT CHR$(INT(RND * 93) + 33);
t3 = yy(I) - 5
IF t3 < 1 THEN t3 = t3 + NR
COLOR 18
LOCATE t3, I
PRINT CHR$(INT(RND * 93) + 33);
t4 = yy(I) - 7
IF t4 < 1 THEN t4 = t4 + NR
COLOR 17
LOCATE t4, I
PRINT CHR$(INT(RND * 93) + 33);
' ── Erase tail ──
tail = yy(I) - tr(I)
IF tail < 1 THEN tail = tail + NR
COLOR 16
LOCATE tail, I
PRINT " ";
' ── Advance ──
yy(I) = yy(I) + 1
IF yy(I) > NR THEN yy(I) = 1
END IF
NEXT
LOOP