--- title: "Simulated Underline Cursor" id: 64785 type: "computer_media" slug: "simulated-underline-cursor" url: "http://localhost/computer_media/simulated-underline-cursor/" markdown_url: "http://localhost/computer_media/simulated-underline-cursor.md" published_at: "2026-03-08T01:15:17+00:00" modified_at: "2026-03-30T21:45:20+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2026/03/ScreenUtil-1-scaled.jpg" excerpt: "A reusable TS2068 screen-printing routine that animates each character with a flashing underscore cursor, with a two-screen demo and a pager subroutine for longer text strings." 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 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" indiv: - name: "Richard Bredhoff" slug: "richard-bredhoff" taxonomy: "indiv" url: "http://localhost/indiv/richard-bredhoff/" genre: - name: "Utility" slug: "utility" taxonomy: "genre" url: "http://localhost/type/utility/" media_type: "Program" programmers: - name: "Richard Bredhoff" slug: "richard-bredhoff" taxonomy: "indiv" url: "http://localhost/indiv/richard-bredhoff/" download_url: "https://archive.org/download/timex-sinclair-software-archive/Simulated%20Underline%20Cursor%28198x%29%28Richard%20Bredhoff%29%28TS2068%29%28US%29%28Programs%29.zip" mediadate: "1985" images: - url: "http://localhost/wp-content/uploads/2026/03/ScreenUtil-1-scaled.jpg" - url: "http://localhost/wp-content/uploads/2026/03/Underln-1.png" article_media: - id: 39170 title: "The Fame & The Glory" type: "article" url: "http://localhost/article/the-fame-the-glory/" media_type_tags: "Utility" --- # Simulated Underline Cursor Demonstrates a simulated underline cursor routine for the TS2068, submitted to *[Syncware News](http://localhost/category/periodicals/syncware-news/)* as a competition entry by [Richard Bredhoff](http://localhost/indiv/richard-bredhoff/) in 1985. The effect prints each character of a string individually, flashing an underscore ahead of each letter using PRINT, CHR$ 8, BEEP, and two PAUSE 1 calls — producing a typewriter-style reveal that avoids text appearing all at once. A multi-paragraph demo string assembled by concatenation illustrates the technique across two screens, with a simple pager subroutine triggered at a calibrated character position to pause and clear between pages. The program is intended as a reusable snippet: the string variable name, BEEP parameters, and PAUSE durations are all designed to be modified for use in games or utilities. ## Source Code ``` 1 REM Simulated Underlining Cursor Routine 2 REM RESET 1985 Richard Bredhoff 962 E 107 St Brooklyn, NY 11236 3 REM SYNCWARE NEWS 2068 Screen Utility Competition Entry 9 BORDER 1: PAPER 1: CLS : INK 6 10 LET g$="This is a demontration of the simulated 'underline' cursor routine." 11 LET g$=g$+CHR$ 13+"It can be used to print any instructions for games, or util-ities and effect of a screen full of printing appearing suddenly is avoided." 12 LET g$=g$+CHR$ 13+"The string to be printed can be of any length, have any legal 'name' and may include any of the control characters, simply by concatenating the new charac-ters to the existing string." 13 LET g$=g$+CHR$ 13+"Of course, the BEEP can be made longer or shorter or eliminated entirely, as can the two PAUSES in line 30. " 14 LET g$=g$+CHR$ 13+"If the text is longer than one screen, any additional screens may be displayed on demand, to allow for variations in reading speed and comprehension, as shown." 15 LET g$=g$+CHR$ 13+"The variabe 'pager' is initiallyset to 0, turned on when the first page is nearly full (PRINTLEN g$) and turned off by the subroutine." 19 LET pager=0 20 FOR t=1 TO LEN g$ 22 IF t>520 AND t<522 THEN LET pager=1 24 IF pager=1 THEN GO SUB 1010 30 PRINT "_";: BEEP .001,20: PRINT CHR$ 8;" ";: PAUSE 1: PRINT CHR$ 8;g$(t);: PAUSE 1 40 NEXT t 45 PRINT AT 21,0;"Press any key to reread Page 1..": PAUSE 0: CLS : GO TO 20 50 STOP 1010 PRINT AT 21,0;"Press any key to continue...": PAUSE 0 1020 LET pager=0: CLS : RETURN 9990 STOP 9995 CLEAR : SAVE "A WINNER !" LINE 1 ```