Bulletin Board (May 1984)

This file is part of Synchro-Sette May 1984. Download the collection to get this file.
Developer(s): Gene G. Buza
Date: 1984
Type: Program
Platform(s): TS 1000
Tags: Banner

A scrolling news display for the May 1984 issue. A sparkle effect flickers across a stippled background, and then two framed one-line windows take turns scrolling their messages, with title panels above and below. Pressing P pauses the scroll, B runs it backward and F forward again.

The messages are kept in string variables saved with the program. The first reports that Timex has only the TS-2068 (at $99.95), TS-2040 printer paper and software left to sell, with orders taken on 1-800-24-TIMEX. The second says that Synchro-Sette also publishes Commodore 64 software, explains that a yellow card in the issue means a subscription has run out, and announces that publication will stop after the October 1984 issue.


Program Analysis

Program Structure

  1. Background (lines 10–96): POKE 16418,0 sets DF_SZ to zero so the program can print on all 24 rows, then a stippled field is drawn inside a block-graphic frame.
  2. Sparkle (lines 100–340): three times over, 50 random display-file addresses are saved in arrays D() and E() and overwritten with black squares (code 128), then restored. End-of-line bytes (118) are recognised and left alone.
  3. Panels (lines 400–530): the background is redrawn with the title boxes and two empty message windows.
  4. Scrolling (lines 1000–2610): 26-character slices of A$ and B$ are printed in turn, with backward routines at 1500 and 2500.

Notable Techniques

  • Writing to the display file with POKE while skipping the 118 end-of-line bytes keeps the collapsed ZX81 display intact.
  • The program is saved to start with GOTO 10 instead of RUN, so the message strings are kept.

Potential Issues

  • DF_SZ is never set back to 2, so if the program is stopped there is no room for the input line and the system may behave unpredictably until it is reset.
  • Line 80 sets Q$ to a title string that is never used.

Appears On

The May 1984 Synchro-Sette subscription cassette: seven programs, including a binary tutor, a hex-digit swapping game, a payroll calculator and a machine code light show.

Image Gallery

Source Code

  10 FAST
  20 POKE 16418,0
  30 PRINT "▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜"
  40 FOR N=1 TO 22
  50 PRINT AT N,0;"▌[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒▐"
  60 NEXT N
  70 PRINT AT 23,0;"▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟"
  80 LET Q$="█[T][H][E]█[S][Y][N][C][H][R][O][-][S][E][T][T][E]█[B][U][L][L][E][T][I][N]█[B][O][A][R][D]█[F][O][R]█[M][A][Y]█[1][9][8][4]█"
  90 LET X=PEEK 16396+256*PEEK 16397
  95 DIM D(50)
  96 DIM E(50)
 100 SLOW
 105 FOR I=1 TO 3
 110 FOR N=1 TO 50
 120 LET B=INT (RND*792)+1+X
 130 IF PEEK B=118 THEN GOTO 170
 140 LET C=PEEK B
 150 POKE B,128
 160 GOTO 200
 170 LET C=118
 200 LET D(N)=C
 210 LET E(N)=B
 220 NEXT N
 300 FOR N=1 TO 50
 320 POKE E(N),D(N)
 330 NEXT N
 340 NEXT I
 400 PRINT AT 0,0;"▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜"
 410 FOR N=1 TO 22
 420 PRINT AT N,0;"▌[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒[▒]▒▐"
 430 NEXT N
 440 PRINT AT 23,0;"▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟"
 500 PRINT AT 3,5;"▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜";AT 4,5;"▌█[T][H][E]█[B][U][L][L][E][T][I][N]█[B][O][A][R][D]█▐";AT 5,5;"▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟"
 510 PRINT AT 18,5;"▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜";AT 19,5;"▌████[F][O][R]█[M][A][Y]█[1][9][8][4]████▐";AT 20,5;"▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟"
 520 PRINT AT 8,2;"▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜";AT 9,2;"▌";AT 9,29;"▐";AT 10,2;"▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟"
 530 PRINT AT 13,2;"▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜";AT 14,2;"▌";AT 14,29;"▐";AT 15,2;"▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟"
1000 FOR N=1 TO LEN A$-25
1010 PRINT AT 9,3;A$(N TO N+25)
1020 IF INKEY$ ="B" THEN GOTO 1500
1030 IF INKEY$ ="P" THEN PAUSE 40000
1090 NEXT N
1100 GOTO 2000
1500 FOR I=N TO 1 STEP -1
1510 PRINT AT 9,3;A$(I TO I+25)
1520 IF INKEY$ ="F" THEN GOTO 1600
1530 IF INKEY$ ="P" THEN PAUSE 40000
1590 NEXT I
1600 LET N=I
1610 GOTO 1090
2000 FOR N=1 TO LEN B$-25
2010 PRINT AT 14,3;B$(N TO N+25)
2020 IF INKEY$ ="B" THEN GOTO 2500
2030 IF INKEY$ ="P" THEN PAUSE 40000
2090 NEXT N
2100 GOTO 1000
2500 FOR I=N TO 1 STEP -1
2510 PRINT AT 14,3;B$(I TO I+25)
2520 IF INKEY$ ="F" THEN GOTO 2600
2530 IF INKEY$ ="P" THEN PAUSE 40000
2590 NEXT I
2600 LET N=I
2610 GOTO 2090
9998 SAVE "BULLETI[N]"
9999 GOTO 10

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.