Entry

Developer(s): William Pollock
Date: 198x
Type: Program
Platform(s): TS 2068
Tags: Demo, Software

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:

  1. Initialisation (line 5): Clears screen and sets loop counter I=1.
  2. Block-graphic sweep (lines 10–95): Outer loop over c (1–8) with an even/odd branch; odd values of c scroll a row of solid blocks downward (lines 20–50), even values are handled by lines 70–90 which scroll upward. After one full pass, I is incremented and BRIGHT is toggled before repeating from line 10.
  3. Colour-chaos phase (lines 100–130): Nested loops over c (BORDER, 0–7) and b (PAPER, 7–0) call CLS then print two text strings at randomised AT positions with PAUSE 10 per frame.
  4. Finale (lines 140–150): A FLASH 1 message is displayed for 3 seconds, then all attributes are zeroed and the program halts with PAUSE 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 uppercase C matching the loop variable c — Sinclair BASIC is case-insensitive for variables) to tint the block row with the current loop colour, giving a rainbow progression.
  • BORDER 8-c at line 30 maps c values 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 9 is 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

LineObservation
15Even/odd test via c/2-INT(c/2)=0; equivalent to c MOD 2 = 0 in other dialects.
35PRINT #0 writes to the lower display stream, avoiding scroll interference on the main canvas.
40Variable name collision risk: loop variable is c (lowercase) but INK C (uppercase) — harmless in Sinclair BASIC since variable names are case-folded.
95BRIGHT 0 is set unconditionally, then overridden by BRIGHT 1 only on the second pass — a compact conditional attribute toggle in one line.
110PAPER b: CLS clears the entire screen to the current PAPER colour each iteration, producing rapid full-screen colour flashes.
150Setting 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

Appears On

Related Products

Related Articles

After much deliberation, the winners of The SyncWare News 2nd (sort of) Annual Programmers’ Competition have been decided. The winning...

Related Content

Image Gallery

Entry

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.

Scroll to Top