This program is a self-described psychedelic visual effects demo that cycles through coloured block-graphic sweeps, random-position text messages, and flashing attributes to simulate the disorienting experience of being “loaded.” It uses a double-loop structure (lines 10–95) to draw solid magenta block-graphic bars scrolling down the screen with alternating BORDER colours, toggling BRIGHT between passes. A second section (lines 100–130) iterates through all eight BORDER and PAPER colour combinations, printing two text fragments at randomised screen positions with PAUSE 10 between each frame. The program concludes with a FLASH 1 message, then clears all attributes and halts with PAUSE 0.
Program Structure
The program divides into four distinct phases:
- Initialisation (line 5): Clears screen and sets loop counter
I=1. - Block-graphic sweep (lines 10–95): Outer loop over
c(1–8) with an even/odd branch; odd values ofcscroll a row of solid blocks downward (lines 20–50), even values are handled by lines 70–90 which scroll upward. After one full pass,Iis incremented and BRIGHT is toggled before repeating from line 10. - Colour-chaos phase (lines 100–130): Nested loops over
c(BORDER, 0–7) andb(PAPER, 7–0) callCLSthen print two text strings at randomisedATpositions withPAUSE 10per frame. - Finale (lines 140–150): A
FLASH 1message is displayed for 3 seconds, then all attributes are zeroed and the program halts withPAUSE 0.
Loop Logic and Flow Control
The even/odd test at line 15 (IF c/2-INT(c/2)=0 THEN GO TO 70) is the standard Sinclair BASIC idiom for checking divisibility by 2, routing even values of c directly to the upward-scroll loop at line 70. Odd values fall through to the downward-scroll loop (lines 20–50) and then continue to line 60 (NEXT c), while even values execute lines 70–90 and then also reach NEXT c at line 90. This means both paths share the same NEXT c for the outer loop, which is valid Sinclair BASIC behaviour.
Lines 95 and 10 implement a two-pass repeat: after the first complete run of the c loop, I becomes 2, BRIGHT 1 is set, and GO TO 10 restarts the sweep with BRIGHT highlighting active. On the second pass I would become 3 but the condition IF I=2 is no longer true, so execution falls through to line 100 — the program naturally continues without an explicit branch.
Display Techniques
- Line 40 uses
INK C(note the uppercaseCmatching the loop variablec— Sinclair BASIC is case-insensitive for variables) to tint the block row with the current loop colour, giving a rainbow progression. BORDER 8-cat line 30 mapscvalues 1–8 to BORDER colours 7–0, cycling the border in reverse through the spectrum palette.- Line 35 uses
PRINT #0(stream 0, the lower message area) to display a status string without disturbing the main screen scroll, keeping the animated area clean. - The solid block characters (
████████████████, 16 × character 143 /\::) fill a full half-screen width, creating a bar-wipe effect. - In the chaos phase (line 120),
INK 9is used; colour 9 is interpreted as TRANSPARENT on the TS2068 but as a roll-over of colour 1 (blue) on a standard Spectrum, giving a subtle platform-dependent difference.
Notable Techniques and Anomalies
| Line | Observation |
|---|---|
15 | Even/odd test via c/2-INT(c/2)=0; equivalent to c MOD 2 = 0 in other dialects. |
35 | PRINT #0 writes to the lower display stream, avoiding scroll interference on the main canvas. |
40 | Variable name collision risk: loop variable is c (lowercase) but INK C (uppercase) — harmless in Sinclair BASIC since variable names are case-folded. |
95 | BRIGHT 0 is set unconditionally, then overridden by BRIGHT 1 only on the second pass — a compact conditional attribute toggle in one line. |
110 | PAPER b: CLS clears the entire screen to the current PAPER colour each iteration, producing rapid full-screen colour flashes. |
150 | Setting INK 0: PAPER 0: BORDER 0 before CLS then PAUSE 0 leaves the machine in a black-on-black state, effectively blanking the display on halt. |
Content
Source Code
5 CLS : LET I=1
10 FOR c=1 TO 8: REM By Wm. L. Pollock, 2318 Meadowlark Lane, Jefferson City, MO 65101
15 IF c/2-INT (c/2)=0 THEN GO TO 70
20 FOR x=0 TO 21
30 BORDER 8-c
35 PRINT #0;AT 0,0; PAPER 2; INK 7;" WHEN I GET LOADED I SOMETIMES SEE STRANGE SIGHTS "
40 PRINT AT x,16; INK C;"████████████████"
50 NEXT x
60 NEXT c
70 FOR y=21 TO 0 STEP -1
80 PRINT AT y,0; INK C;"████████████████"
90 NEXT y: NEXT c
95 LET I=I+1: BRIGHT 0: IF I=2 THEN BRIGHT 1: GO TO 10
100 FOR c=0 TO 7: FOR b=7 TO 0 STEP -1
110 BORDER c: PAPER b: CLS
120 PRINT AT INT (RND*11),0; INK 9;"Sometimes it makes my poor head";AT 21-INT (RND*11),12; PAPER 2;"HURT!": PAUSE 10
130 NEXT b: NEXT c: BORDER 0: CLS
140 PRINT AT 10,0; PAPER 7; INK 2; FLASH 1;"Sometimes I just take an aspirin";AT 12,6;"and disappear!"
150 PAUSE 180: FLASH 0: INK 0: PAPER 0: BORDER 0: CLS : PAUSE 0
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.


