This program is an animated title-screen routine that displays the text “SYNCHRO-SETTE PRESENTS” using two distinct scroll effects before segueing into a short comedic “NOTHING AT ALL.” animation. The first animation scrolls the string “%S%Y%N%C%H%R%O%-%S%E%T%T%E” character by character from the right side of the screen toward the centre using a FOR/NEXT loop with a decreasing column index. The second animation slides ” PRESENTS” in from the right by progressively revealing more characters via a substring slice (B$(10-B TO 9)), creating a wipe-on effect.
Program Analysis
Program Structure
The program is divided into five functional phases:
- Lines 5–70: Animate the string
A$(“SYNCHRO-SETTE “) scrolling in from the right at row 10. - Lines 80–130: Wipe ” PRESENTS” onto the screen at row 12 from the right.
- Lines 140–189: Display the punchline — “NOTHING” slides down and “AT ALL.” slides up — separated by
CLScalls. - Line 190:
PAUSE 100holds the blank screen before the loop. - Lines 200–220:
RUNrestarts the whole sequence; lines 210–220 are dead code providing aSAVEstatement that is never reached.
First Animation — Character Reveal Scroll (Lines 5–70)
The column counter N runs from 31 down to 8, moving the print position leftward each iteration. Simultaneously, A counts up so that A$(1 TO A+1) reveals one additional character per step. The guard at line 40 (IF A>=LEN A$ THEN LET A=A-1) clamps A so the substring expression never exceeds the string length, preventing a “Subscript out of range” error once the full string is exposed. A trailing space after the slice erases the previous rightmost character as the block moves left.
Second Animation — Right-Wipe Reveal (Lines 80–130)
This phase uses a different approach: the column offset A is incremented (line 100) only after N has passed LEN B$, nudging the print position one column right once the string is fully visible. The reveal itself is achieved by the slice B$(10-B TO 9), where B starts at 1 and increases, so the printed portion grows from the right-hand end of the nine-character string. Line 95 clamps B at 9 to avoid an out-of-range subscript once the full string is showing.
| N | B (clamped) | Slice printed |
|---|---|---|
| 0 | 1 | B$(9 TO 9) → “S” |
| 1 | 2 | B$(8 TO 9) → “TS” |
| … | … | … |
| 8 | 9 | B$(1 TO 9) → ” PRESENTS” |
Punchline Animation (Lines 150–189)
Two simple vertical scroll effects deliver the joke. “NOTHING” is printed at successively lower rows (line 160, AT N,11) while a blank overwrite one row above clears the trail (line 158). After a CLS, the process is reversed for “AT ALL.”: N counts down from 20 to 0 so the word appears to rise up the screen, again with a one-row-ahead blank.
Notable Techniques
- Substring clamping: Both animations use explicit guards to keep slice indices in range rather than relying on error handling, which was necessary given the lack of structured exception handling in standard BASIC.
- Single-space erasure: Printing a literal
" "immediately after each moving string clears the trailing edge without needingCLS, preserving the rest of the display. - Dead-code SAVE: Lines 210–220 are unreachable because
RUNat line 200 resets execution to line 5. TheSAVE "RIP-OF%F"filename is a self-referential joke about the cassette distribution medium (“Synchro-Sette”).
Content
Source Code
5 LET A=0
10 LET A$="%S%Y%N%C%H%R%O%-%S%E%T%T%E "
20 LET B$=" PRESENTS"
30 FOR N=31 TO 8 STEP -1
40 IF A>=LEN A$ THEN LET A=A-1
50 PRINT AT 10,N;A$(1 TO A+1);" "
60 LET A=A+1
70 NEXT N
80 LET A=0
85 LET B=1
90 FOR N=0 TO 16
95 IF B>=9 THEN LET B=9
100 IF N>=LEN B$ THEN LET A=A+1
110 PRINT AT 12,A;" ";B$(10-B TO 9)
120 LET B=B+1
130 NEXT N
140 PAUSE 100
150 CLS
152 FOR N=1 TO 21
158 PRINT AT N-1,11;" "
160 PRINT AT N,11;"NOTHING"
167 NEXT N
180 CLS
182 FOR N=20 TO 0 STEP -1
183 PRINT AT N+1,12;" "
184 PRINT AT N,12;"AT ALL."
188 NEXT N
189 CLS
190 PAUSE 100
200 RUN
210 SAVE "RIP-OF%F"
220 RUN
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.
