--- title: "Print ‘N’ Plotter Paintbox Demo" id: 71956 type: "computer_media" slug: "print-n-plotter-paintbox-demo" url: "http://localhost/computer_media/print-n-plotter-paintbox-demo/" markdown_url: "http://localhost/computer_media/print-n-plotter-paintbox-demo.md" published_at: "2026-10-20T14:56:40+00:00" modified_at: "2026-10-20T14:56:41+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2022/04/20230809-041332.jpg" excerpt: "Advertising demo for the Print 'N' Plotter Paintbox, showing switchable banks of UDGs in an animated scene and a slideshow of stored screens." 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: "Joe Gillespie" slug: "joe-gillespie" taxonomy: "indiv" url: "http://localhost/indiv/joe-gillespie/" genre: - name: "Graphics" slug: "graphics" taxonomy: "genre" url: "http://localhost/type/graphics/" media_contents: - id: 71965 title: "Long Island Sinclair Timex (LIST) User Group Library Tape #3.5" type: "computer_media" url: "http://localhost/computer_media/long-island-sinclair-timex-list-user-group-library-tape-3-5/" media_type: "Program" programmers: - name: "Joe Gillespie" slug: "joe-gillespie" taxonomy: "indiv" url: "http://localhost/indiv/joe-gillespie/" tsrun_member: "LIST LIB 3.5 (198x)(Long Island Sinclair Timex User Group)(TS2068)(US)(Cassette)/List_Lib_3.5A(Unk)(Unk)(TS2068)(Cassette)/26_DEMO.tap" mediadate: "198x" media_type_tags: "Graphics" --- # Print ‘N’ Plotter Paintbox Demo A rolling demonstration for Print ‘N’ Plotter Products’ Paintbox, which the demo says makes 84 UDG characters. It builds a landscape from UDGs, scrolls a caption, switches between four banks of 21 UDGs to draw buildings, vehicles and a launch scene, animates a rocket lifting off, and then cycles through a series of stored pictures with captions such as “Plus hi-resolution drawing” and “Your own BASIC programs!” before starting again. A REM reads “Written for PRINT ‘N’ PLOTTER PRODUCTS by Joe Gillespie © 1983.” The tape holds the BASIC program, a 2048-byte block “pb” loaded into the display file, and a large CODE block. ## Program Analysis ### Program Structure Line 999 clears to 31379, loads the title block, then loads the main CODE and runs. Lines 2000–2310 switch UDG banks with `RANDOMIZE USR` calls at 65153, 64958, 64763 and 64568. Lines 7000–7100 draw the opening scene, 5000–5200 animate the rocket, and 100–600 show five stored screens by POKEing an address into 64549/64550 and calling `USR 64548`. ### Notable Techniques - With four banks of 21 UDGs, a single PRINT statement can use up to 84 different graphic characters by switching banks between statements. - Captions are printed in the lower screen with `PRINT #0`. - Line 930 POKEs the values 65–71 into seven attribute rows, giving horizontal bands of bright ink colours on black. ### Potential Issues - Line 998 saves `CODE 31380,35555`, which would run past address 65535 as written. ## Source Code ``` 0 REM Written for PRINT 'N' PLOTTER PRODUCTS by Joe Gillespie * 1983 20 LET i=0: GO TO 7000 30 LET h=64550: LET l=64549: LET i=i+1 50 GO TO i*100 100 REM screen1 120 PRINT #0;" PLUS HI-RESOLUTION DRAWING...": PAUSE 250 200 REM screen2 210 BORDER 0: POKE h,144: POKE l,28: GO SUB 1000 220 PRINT #0;"THAT YOU NEVER DREAMED POSSIBLE.": PAUSE 350 300 REM screen3 310 BORDER 5: POKE h,171: POKE l,28: GO SUB 1000 320 PRINT #0;" JUST FOR FUN...": PAUSE 250 400 REM scrden4 414 BORDER 2: POKE h,198: POKE l,28: GO SUB 1000 420 PRINT #0;" OR TO USE FROM WITHIN ...": PAUSE 250 500 REM screen5 510 BORDER 7: POKE h,225: POKE l,28: GO SUB 1000 520 PRINT #0;" YOUR OWN BASIC PROGRAMS !": PAUSE 250 600 RUN 900 INK 7: PAPER 0: BRIGHT 1: BORDER 0: CLS : INK 0: LOAD ""CODE : LET s$=" ": INK 6: PRINT AT 5,8;"PRINT 'N' PLOTTER" 910 PRINT AT 7,0; PAPER 1;s$;AT 16,0;s$ 920 PRINT AT 18,10;"DEMO PROGRAM" 930 FOR n=0 TO 6: FOR t=0 TO 31: POKE 22784+t+n*32,n+65: NEXT t: NEXT n 950 INK 0: RETURN 998 SAVE "DEMO" LINE 999: SAVE "pb"CODE 18432,2048: SAVE "CODE"CODE 31380,35555: STOP 999 CLEAR 31379: GO SUB 900: LOAD ""CODE : RUN 1000 RANDOMIZE USR 64548: INPUT "": RETURN 1999 STOP 2000 REM bank1 2010 RANDOMIZE USR 65153: RETURN 2100 REM bank2 2110 RANDOMIZE USR 64958: RETURN 2200 REM bank3 2210 RANDOMIZE USR 64763: RETURN 2300 REM bank4 2310 RANDOMIZE USR 64568: RETURN 3000 PRINT "abcdefghijklmnopqrstu" 5000 GO SUB 2000: INK 4: PAPER 1: BORDER 0: CLS 5002 LET t=10 5005 PRINT #0;a$ 5010 FOR s=13 TO 9 STEP -1 5015 PRINT AT 3,0; INK 4;"tttttttttttttttttttttttttttttttt" 5020 PRINT AT 13,s+4;"j ";AT 14,s+4;"hi kkkk " 5030 PRINT AT 15,s;"abbcdddebbbbfg " 5035 BEEP .1,35: PAUSE 2: BEEP .1,35 5036 PRINT AT 3,0; INK 4;"ssssssssssssssssssssssssssssssss" 5037 PAUSE 50 5040 NEXT s 5050 PRINT AT 14,17;"l": PAUSE t: PRINT AT 14,17; INK 6;"m" 5060 PRINT AT 13,17; INK 6;"o";AT 14,17; INK 6;"n" 5070 PRINT AT 14,17;"l" 5080 FOR n=12 TO 0 STEP -1 5090 PRINT AT n,17; INK 6;"o";AT n+1,17; INK 7;"p" 5092 BEEP .05,60-n 5095 PRINT AT n,17;" ";AT n+1,17;" " 5096 IF n=10 THEN PRINT AT 14,17;"k" 5098 IF n=2 THEN PRINT AT 3,17; INK 4;"s" 5100 NEXT n 5110 INPUT "": PRINT #0;" AVAILABLE ON YOUR SPECTRUM!" 5120 PAUSE 250 5200 GO TO 30 6000 REM 6010 INK 7: GO SUB 2300: PRINT AT 5,7; PAPER 5;"bbbb";AT 6,7; PAPER 0;"aaaa";AT 7,3; PAPER 5;"eeee"; PAPER 0;"aaaa"; PAPER 5;"eeee";AT 8,3; PAPER 0;"aaaaaaaaaaaa"; PAPER 5;" "; PAPER 0;"rsssssssst";AT 9,0; PAPER 5;"nl "; PAPER 0;"aaaaaaaaaaaa"; PAPER 5;" "; PAPER 0;"rsssssssst" 6020 PRINT AT 10,0; PAPER 4;"km "; PAPER 0;"ccccccuccccc"; PAPER 4;" iii"; PAPER 0;"rsst"; PAPER 4;"iii" 6030 GO SUB 2100: PRINT AT 13,15; PAPER 4;"i";AT 14,14; PAPER 1;"ne";AT 15,10;"fgh mm j kd";AT 16,2;"atcbbbbbbbbbbnnnnqqmm rs" 6040 PRINT AT 17,3;"acbbbbbbbbbbbbbbbbbbbbbbd" 6050 GO SUB 2000: PRINT INK 4;AT 19,3;"ssss";AT 18,23;"ssssss";AT 21,19;"sssssss" 6090 RETURN 7000 REM UDG DEMO 7010 PAPER 1: INK 7: BORDER 0: CLS 7015 LET b$=" " 7020 FOR n=0 TO 10: PRINT PAPER 5;b$: NEXT n 7030 FOR n=0 TO 2: PRINT PAPER 4;b$: NEXT n 7040 PRINT AT 11,0; PAPER 0;b$ 7050 GO SUB 6000 7055 LET m$=" PRINT'N'PLOTTER PAINTBOX " 7060 LET t$=" g g opq g opq g g opq g g g opq g g g g opq g" 7065 LET a$=" MAKES 84 UDG CHARACTERS..." 7070 FOR n=1 TO 29: GO SUB 2300: PRINT AT 11,0; PAPER 0;t$(n TO (n+31)) 7080 GO SUB 2200: PRINT AT 2,n-1; INK 2; PAPER 5;" ab" 7085 PRINT AT 2,0; PAPER 5; INK 0;m$( TO n) 7090 NEXT n: PRINT AT 2,9; PAPER 5;" " 7095 PRINT AT 20,0;"": FOR n=0 TO 21: POKE 23692,255: PRINT : NEXT n 7100 GO TO 5000 ```