--- title: "Bulletin Board (May 1984)" id: 72044 type: "computer_media" slug: "bulletin-board-may-1984" url: "http://localhost/computer_media/bulletin-board-may-1984/" markdown_url: "http://localhost/computer_media/bulletin-board-may-1984.md" published_at: "2026-10-20T14:07:39+00:00" modified_at: "2026-10-20T14:18:09+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2026/10/7_BULLETIN-1.png" excerpt: "The May 1984 Synchro-Sette bulletin board scrolls news of Timex's last products for sale and announces that the newsletter will end with its October 1984 issue." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "TS 1000" slug: "ts1000" taxonomy: "post_tag" url: "http://localhost/tag/ts1000/" model: - name: "Timex/Sinclair 1000" slug: "ts-1000" taxonomy: "model" url: "http://localhost/model/ts-1000/" indiv: - name: "Gene G. Buza" slug: "gene-g-buza" taxonomy: "indiv" url: "http://localhost/indiv/gene-g-buza/" genre: - name: "Banner" slug: "banner" taxonomy: "genre" url: "http://localhost/type/banner/" media_contents: - id: 72046 title: "Synchro-Sette May 1984" type: "computer_media" url: "http://localhost/computer_media/synchro-sette-may-1984/" media_type: "Program" programmers: - name: "Gene G. Buza" slug: "gene-g-buza" taxonomy: "indiv" url: "http://localhost/indiv/gene-g-buza/" mediadate: "1984" images: - url: "http://localhost/wp-content/uploads/2026/10/7_BULLETIN-1.png" media_type_tags: "Banner" --- # Bulletin Board (May 1984) 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. ## 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 ```