--- title: "Builder" id: 72284 type: "computer_media" slug: "builder" url: "http://localhost/computer_media/builder/" markdown_url: "http://localhost/computer_media/builder.md" published_at: "2026-10-23T07:47:21+00:00" modified_at: "2026-10-23T07:47:21+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2026/10/builder-1.png" excerpt: "Lay coloured bricks, windows and doorways on screen to build walls and houses, then copy the result to the printer with a title." 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: "M. Turner" slug: "m-turner" taxonomy: "indiv" url: "http://localhost/indiv/m-turner/" - name: "Michael Leidel" slug: "michael-leidel" taxonomy: "indiv" url: "http://localhost/indiv/michael-leidel/" genre: - name: "Art" slug: "art" taxonomy: "genre" url: "http://localhost/type/art/" media_contents: - id: 72439 title: "SINCUS Exchange Tape 104" type: "computer_media" url: "http://localhost/computer_media/sincus-exchange-tape-104/" media_type: "Program" programmers: - name: "M. Turner" slug: "m-turner" taxonomy: "indiv" url: "http://localhost/indiv/m-turner/" - name: "Michael Leidel" slug: "michael-leidel" taxonomy: "indiv" url: "http://localhost/indiv/michael-leidel/" download_url: "https://archive.org/download/timex-sinclair-software-archive/Builder%20%281985%29%28Turner%2C%20M.%3B%20Leidel%2C%20Michael%29%28TS2068%29%28US%29%28Program%29.zip" tsrun_member: "Builder (1985)(Turner, M.; Leidel, Michael)(TS2068)(US)(Program)/Builder (1985)(Turner, M.; Leidel, Michael)(TS2068)(US)(Program).tap" mediadate: "1985" images: - url: "http://localhost/wp-content/uploads/2026/10/builder-1.png" - url: "http://localhost/wp-content/uploads/2026/10/builder-2.png" article_media: - id: 43400 title: "Builder" type: "article" url: "http://localhost/article/builder/" media_type_tags: "Art" license: false --- # Builder A screen toy for building walls and houses out of bricks. A cursor moves with keys 5 to 8 and lays the current brick as it goes, and CAPS SHIFT with the same keys moves while erasing. Keys 1 to 4 choose one of four brick patterns and colours, W lays a window and D a solid doorway block. Z asks for a title and copies the screen to the printer with the title above and below, and X clears the screen to start again. REMs say it was written by M. Turner, entered by M. Leidel, and appeared in *Sinclair User* in April 1985; it was later printed as “Builder” in *The Plotter*. It is plain Sinclair BASIC and runs unchanged on the TS2068. ## Program Analysis - Lines 40–50: POKE six UDGs: two brick courses, two stippled bricks, a window and the cursor. - Lines 60–80: the title and key instructions. - Lines 110–240: the main loop. `PAUSE NOT PI` waits for a key, `CODE INKEY$` is tested against the key codes, the current piece is printed at the old position, and the position moves with logical expressions limited to the screen edges. ## Notable Techniques - The UDG DATA uses the letter `d` as an item: because `READ d` has just set `d`, each `d` in the list repeats the previous byte, which shortens the DATA line. - Both the number keys and the cursor codes 8–11 move the cursor, so CAPS SHIFT with 5–8 acts as an eraser without separate code. - Line 160 turns CAPS LOCK on for the title with `POKE 23658,8` and prints the prompt in the lower screen with `PRINT #0`. ## Potential Issues - Every move first prints the current piece at the old position, so there is no way to move the cursor without laying or erasing. - The doorway uses the solid block graphic with `INK 0` but keeps the paper and brightness of the last brick chosen. This program came from an Oliger (JLO SAFE) disk and was converted to load from tape. It needed no changes and was tested in ZEsarUX. ## Source Code ``` 10 REM Builder 20 REM written by: M. Turner entered by M. Leidel, appeared in Apr. 85 Sinclair user 30 REM was Oliger-only 40 FOR f=0 TO 47: READ d: POKE USR "a"+f,d: NEXT f 50 DATA 254,d,d,0,239,d,d,0,254,d,0,239,d,0,254,d,170,85,170,85,170,85,170,d,85,170,85,170,85,170,85,170,2,6,4,56,72,88,176,192,255,145,d,d,d,d,153,255 60 BORDER 4: PAPER 6: CLS : PRINT '" bb BUILDER bb"'" aa aa"'''"USE KEYS:"''"5,6,7,8 to lay bricks"'"CAPS/SHIFT to remove bricks" 70 PRINT ''"PRESS KEYS:"''"1 - 4 to change brick type"'"W for windows"'"D for doorways"'"Z to copy to printer"'"X to clear screen & start again" 80 PAUSE NOT PI: CLS 90 LET x=0: LET y=x 100 LET k=49: GO TO 180 110 PAUSE 1: PRINT AT x,y; INK 1;"e" 120 PAUSE NOT PI: LET k=CODE INKEY$ 130 BEEP .01,k/4: PRINT INK i; PAPER p; BRIGHT b;AT x,y;a$ 140 IF k=8 OR k=9 OR k=10 OR k=11 THEN PRINT AT x,y;" " 150 LET x=x+((k=54 OR k=10) AND x<21)-((k=55 OR k=11) AND x>0): LET y=y+((k=56 OR k=9) AND y<31)-((k=53 OR k=8) AND y>0) 160 IF k=122 THEN POKE 23658,8: INPUT "please enter title";t$: PRINT #0;AT 1,0;t$: POKE 23658,0: LPRINT '': COPY : LPRINT 't$' 170 IF k=120 THEN CLS : GO TO 90 180 IF k=49 THEN LET a$="a": LET i=2: LET p=7: LET b=0 190 IF k=50 THEN LET a$="b": LET i=3: LET p=7: LET b=1 200 IF k=51 THEN LET a$="c": LET i=4: LET p=6: LET b=0 210 IF k=52 THEN LET a$="d": LET i=4: LET p=6: LET b=1 220 IF k=119 THEN LET a$="f": LET i=0: LET p=5: LET b=1 230 IF k=100 THEN LET a$="::": LET i=0 240 GO TO 110 ```