--- title: "TSUG Ft Worth" id: 57131 type: "computer_media" slug: "tsug-ft-worth" url: "http://localhost/computer_media/tsug-ft-worth/" markdown_url: "http://localhost/computer_media/tsug-ft-worth.md" published_at: "2024-10-04T00:00:41+00:00" modified_at: "2026-03-30T21:19:40+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2024/10/80_TSUG.png" excerpt: "A single PRINT statement constructs an entire pixel-art club banner using block graphics — see how a user group immortalised itself in BASIC." 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/" genre: - name: "Demo" slug: "demo" taxonomy: "genre" url: "http://localhost/type/demo/" media_contents: - id: 56733 title: "Timex Sinclair Public Domain Library Tape 1002" type: "computer_media" url: "http://localhost/computer_media/timex-sinclair-public-domain-library-tape-1002/" media_type: "Program" mediadate: "198x" images: - url: "http://localhost/wp-content/uploads/2024/10/80_TSUG.png" media_type_tags: "Demo" --- # TSUG Ft Worth This program displays a decorative banner screen for the “Users Group of Fort Worth Texas” using an intricate arrangement of Spectrum block graphics characters. The entire display is rendered in a single PRINT statement at line 10, using block graphic escape sequences to draw borders and stylised lettering. The program halts at line 15 with STOP, making the SAVE and RUN statements at lines 20 and 25 part of the tape-saving sequence rather than normal execution flow. The banner uses the full-block (█), half-block, and quarter-block characters extensively to construct a bordered frame and pixel-art text spelling out the group name and location. *** ## Program Analysis ### Program Structure The program consists of just four lines with a straightforward flow: 1. Line 10: A single `PRINT` statement containing the entire banner graphic as a string literal packed with block graphic escape sequences. 2. Line 15: `STOP` — halts normal execution after the banner is displayed. 3. Line 20: `SAVE "1008..."` — saves the program to tape; never reached during a normal RUN. 4. Line 25: `RUN` — restarts the program after loading from tape; also unreachable during a normal RUN. The `SAVE` / `RUN` pair at lines 20–25 is a common idiom for self-saving programs: when the user types `GOTO 20` (or the program is run from a specific entry point), the program saves itself and then restarts automatically on load. ### Block Graphics Rendering The entire visual output is produced by a single string argument to `PRINT`. The string is composed almost entirely of Spectrum block graphic characters (codes 128–143), which are encoded in the source using zmakebas two-character escape sequences. The graphic characters used include: - `\::` = █ (full block) — used heavily for the outer border and filled areas. - `\'\'` = ▀ (upper half block) — used in lettering and decorative elements. - `\:\'` = ▛, `\':` = ▙, `\:.\ .\:` combinations — used to form rounded or diagonal joins in the pixel-art letters. - `\ :` = ▐, `\:` = ▌ — vertical half-blocks for borders and letter strokes. - `\''` = ▀, `\..` = ▄ — upper and lower half-blocks. The layout encodes multiple rows of a bordered panel (using `▌` and `▐` as left and right walls and `█` runs as top/bottom borders), with pixel-art lettering inside spelling out the club identity and the plain-text lines “USERS GROUP OF” and “FORT WORTH TEXAS”. ### Notable Techniques Rendering a full-screen banner in one `PRINT` statement is both a stylistic choice and a practical optimisation: it minimises the number of BASIC line tokens that need to be interpreted and avoids any flicker or partial-draw artefacts that would result from multiple sequential print operations. The embedded newlines within the string (represented as literal line breaks in the source) advance the cursor to successive screen rows without requiring additional `PRINT` or `AT` commands. The use of `STOP` at line 15 rather than ending the program naturally (by falling off the last line) ensures that the `SAVE` and `RUN` statements cannot be reached accidentally, protecting the tape-writing routine from unintended execution. ### Potential Anomalies No mathematical, logical, or structural bugs are present. Line 25 (`RUN`) will never be reached during a normal execution path (blocked by `STOP` at line 15 and the `SAVE` at line 20), but this is intentional: the `RUN` at line 25 is a post-`SAVE` auto-restart intended to be triggered by the LOAD process on the receiving end, not by the saving machine’s BASIC interpreter itself. ### Line Summary | Line | Statement | Purpose | | --- | --- | --- | | 10 | `PRINT "..."` | Renders the full block-graphic banner in one operation | | 15 | `STOP` | Halts normal execution; prevents accidental SAVE | | 20 | `SAVE "1008..."` | Saves program to tape (reached only via direct GOTO) | | 25 | `RUN` | Auto-restarts after tape load | ## Source Code ``` 10 PRINT "\:'\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\':\: \''\:'\' \''\:'\' \:.\ .\: \:'\''\' \'.\ .\' \ :\: \: \: \: \' \: \:'\'' \ .\'. \ :\: \' \''\''\' \' \' \''\''\' \' \' \ :\: \:'\''\' \''\:'\' \:. \: \:'\''\' \: \:'\''\: \''\:'\' \:'\''\: \ :\: \''\''\: \: \: \'.\: \: \: \:'\''\: \: \:'\:'\' \ :\: \''\''\' \''\''\' \' \' \''\''\' \''\''\' \' \' \''\''\' \' \ ' \ :\: USERS GROUP OF \ :\: FORT WORTH TEXAS \ :\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''" 15 STOP 20 SAVE "1008%0" 25 RUN ```