--- title: "TSUG Print" id: 57132 type: "computer_media" slug: "tsug-print" url: "http://localhost/computer_media/tsug-print/" markdown_url: "http://localhost/computer_media/tsug-print.md" published_at: "2024-10-04T00:01:58+00:00" modified_at: "2026-03-30T21:19:39+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2024/10/81_TSUG.png" excerpt: "A loop-driven LPRINT banner program uses block graphics to render a users group logo in large pixel text, printing it 50 times on a thermal printer." 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: "Tim Ward" slug: "tim-ward" taxonomy: "indiv" url: "http://localhost/indiv/tim-ward/" 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" programmers: - name: "Tim Ward" slug: "tim-ward" taxonomy: "indiv" url: "http://localhost/indiv/tim-ward/" mediadate: "198x" images: - url: "http://localhost/wp-content/uploads/2024/10/81_TSUG.png" media_type_tags: "Demo" --- # TSUG Print This program prints a decorative banner for the Timex/Sinclair Users Group of Fort Worth, Texas, using the ZX81/TS1000 LPRINT statement to send output to a thermal or line printer. The banner (line 10) is constructed entirely from block graphics characters, forming a bordered logo with the group name rendered in a large pixel-font style using the 2×2 block graphic character set. The entire print sequence is looped 50 times via a FOR/NEXT loop, producing a long continuous strip of banners on paper — useful for cutting into individual flyers or handouts. The FAST command at line 1 suppresses the display update during execution, which speeds up program operation on the ZX81/TS1000. *** ## Program Analysis ### Program Structure The program is straightforward and linear: 1. Line 1: `FAST` — disables the display driver to speed up execution. 2. Line 2: `FOR X=1 TO 50` — outer loop to print the banner 50 times. 3. Line 3: `LPRINT ,,,,"--------------------------------",,,,` — prints a separator line with leading and trailing tab spacing. 4. Line 10: `LPRINT` — the main banner, a single long string containing the entire block-graphic logo. 5. Line 20: `LPRINT` — prints a blank line as a spacer. 6. Line 30: `LPRINT` — prints a plain-text description of the users group, contact details, and meeting information. 7. Line 40: `NEXT X` — closes the loop. 8. Line 50: `STOP` — halts execution cleanly. 9. Lines 60–70: `SAVE` and `LIST` — utility lines for saving and reviewing the program, not part of normal execution. ### Block Graphics Banner (Line 10) The entire logo is encoded as a single long string literal passed to a single `LPRINT` statement. This is notable because the ZX81/TS1000 BASIC interpreter stores the entire string as one tokenised line in memory. The logo uses the 2×2 block graphic characters (characters 128–143 in the character set) to draw a bordered rectangle containing the text “TIMEX/SINCLAIR USERS GROUP OF FORT WORTH TEXAS” rendered in a large block-pixel font. The left and right edges of the banner use `\:` (▌) and `\ :` (▐) characters to form vertical borders, while `\''` (▀) and `\::` (█) and `\:.` (▟) etc. are used to construct the letterforms. ### LPRINT Tab Usage (Line 3) Line 3 uses multiple comma separators (`,,,,"---...",,,,`) to position the dashed line using the printer’s tab-stop mechanism. On the ZX81/TS1000, a comma in a `LPRINT` statement advances to the next 16-character tab column, so the four leading commas advance 64 characters before printing the dashes, and the trailing commas add further spacing. This was a common technique to centre or offset text on the narrow thermal printer without string manipulation. ### Loop Count and Intended Use The 50-iteration loop produces 50 copies of the banner on a continuous roll of thermal printer paper. This is consistent with the program’s purpose as a handout or flyer generator for a user group meeting — the output could be torn into individual strips and distributed. ### Notable Techniques - All graphical output is encoded in a single `LPRINT` string, avoiding the need for multiple DATA/READ or repeated LPRINT statements. - `FAST` at line 1 is used correctly to suppress the display, preventing the characteristic screen flicker and improving throughput during the print loop. - The contact information in line 30 includes a real phone number (244-9408) and the name “Tim Ward,” giving the program historical and community documentation value. - The text in line 30 uses fixed-width padding with spaces to achieve line-wrapping at 32 characters, matching the ZX printer’s output width. ### Potential Anomalies Lines 60 and 70 (`SAVE` and `LIST`) are present after the `STOP` statement and would only be reached if the user manually ran them or edited the program. This is a common pattern in distributed ZX81 programs where the author appended utility lines for their own convenience without removing them before distribution. ## Source Code ``` 1 FAST 2 FOR X=1 TO 50 3 LPRINT ,,,,"--------------------------------",,,, 10 LPRINT "\:'\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\':\: \''\:'\' \''\:'\' \:.\ .\: \:'\''\' \'.\ .\' \ :\: \: \: \: \' \: \:'\'' \ .\'. \ :\: \' \''\''\' \' \' \''\''\' \' \' \ :\: \:'\''\' \''\:'\' \:. \: \:'\''\' \: \:'\''\: \''\:'\' \:'\''\: \ :\: \''\''\: \: \: \'.\: \: \: \:'\''\: \: \:'\:'\' \ :\: \''\''\' \''\''\' \' \' \''\''\' \''\''\' \' \' \''\''\' \' \ ' \ :\: USERS GROUP OF \ :\: FORT WORTH TEXAS \ :\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''" 20 LPRINT 30 LPRINT "THE GOAL OF THE TIMEX/SINCLAIR USERS GROUP OF FORT WORTH TEXAS IS TO HELP ANYONE WHO OWNS A TIMEX/SINCLAIR COMPUTER. THE GROUP MEETS ONCE A MONTH, WE ALSO PRINT A NEWSLETTER. IF YOU HAVE ANY QUESTIONS ABOUT YOUR COMPUTER OR THE USERS GROUP PLEASE CALL TIM WARD AT 244-9408" 40 NEXT X 50 STOP 60 SAVE "1008%1" 70 LIST ```