--- title: "Draw II" id: 71933 type: "computer_media" slug: "draw-ii" url: "http://localhost/computer_media/draw-ii/" markdown_url: "http://localhost/computer_media/draw-ii.md" published_at: "2026-10-20T14:52:55+00:00" modified_at: "2026-10-20T14:52:55+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2026/10/Draw_II-scaled.jpg" excerpt: "Joystick-driven drawing program with icon menus for freehand lines, squares, triangles, circles and boxes with fill, stamped graphics, text, printing and tape storage." 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: "Peech II Productions" slug: "peech-ii-productions" taxonomy: "post_tag" url: "http://localhost/tag/peech-ii-productions/" - 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: "Jon Roketenetz" slug: "jon-roketenetz" taxonomy: "indiv" url: "http://localhost/indiv/jon-roketenetz/" genre: - name: "Art" slug: "art" taxonomy: "genre" url: "http://localhost/type/art/" media_type: "Cassette" programmers: - name: "Jon Roketenetz" slug: "jon-roketenetz" taxonomy: "indiv" url: "http://localhost/indiv/jon-roketenetz/" download_url: "https://archive.org/download/timex-sinclair-software-archive/Draw%20II%20%281984%29%28Peech%20II%20Productions%29%28TS2068%29%28US%29%28Cassette%29.zip" tsrun_member: "Draw II (1984)(Peech II Productions)(TS2068)(US)(Cassette)/Draw_II.tap" mediadate: "1984" producer_company: - id: 27786 title: "Peech II Productions" type: "company" url: "http://localhost/company/peech-ii-productions/" images: - url: "http://localhost/wp-content/uploads/2026/10/Draw_II-scaled.jpg" related_products: - id: 12404 title: "DRAW II" type: "product" url: "http://localhost/product/draw-ii/" media_type_tags: "Art" --- # Draw II Draws pictures on the screen with a joystick, using icon menus shown in the bottom two lines. A pointing-hand cursor selects the tools: print the picture, save or load it on tape, throw it away, change the ink color, switch to graphics mode, stamp a graphic, or change the drawing style. In drawing mode the joystick moves a one-pixel or five-pixel pen, which the fire button erases. Graphics mode adds squares, triangles, circles and rectangles of adjustable size, each optionally filled, along with a scan-line fill for an area the user marks out. Pictures are saved as `SCREEN$` files, and one picture can be stored in memory and recalled later. The label reads “DRAW II (c) 1984 Peech II productions”, and the title sequence plays an animated colored line and an AY chord before showing “PEECH II Productions presents DRAW II”. The tape holds a short loader, a title `SCREEN$`, `Jdraw` (which defines the icon UDGs) and the main program `ZX`. A second recording contains four sample pictures: `bike`, `music1`, `cab1` and `t/s`. ## Program Analysis ### Program Structure The loader sets `ON ERR GO TO 5` (which does `NEW`), loads the title screen in invisible ink, and loads `Jdraw`. That program defines all 21 UDGs with `POKE USR CHR$ n,BIN ...`, with REM labels for each icon (wastebasket, finger, hand, sleeve, printer, pencil, recorder, house and heart). It then loads `ZX`, the 25 KB main program, which is organized as follows: - Lines 1–99: setup, picture name, paper and ink selection, border box, and the pen loop that reads `STICK` - Lines 100–162: main icon menu - Lines 163–194: text entry at a block cursor - Lines 500–710: title animation and command summary - Lines 720–806: graphic stamps (heart, tree, house, musical note and others) - Lines 810–910: printer and tape routines - Lines 4000–6850: shape tools with size adjustment and optional fill - Lines 7000–7200: cursor locator - Lines 8000–8205: area fill - Lines 9200–9520: new picture, and store or recall a picture in memory - Lines 9600–9670: `CLEAR 52999` and installation of two 12-byte `LDIR` routines ### Memory Store and Recall Two routines are POKEd from `DATA`: at `sv=32000`, `LD DE,33000 / LD HL,16384 / LD BC,6912 / LDIR / RET`, and at `rc=32050` the same with source and destination swapped. Before each call the program POKEs a new address into the operand bytes (32001–32002 and 32054–32055), computed as `pic*7000+26000`. With `pic=4` this is 54000, above the `CLEAR` point, so the screen is copied into reserved memory and back. ### Notable Techniques - The joystick is read with the TS2068 `STICK` function (`|(1,1)` for direction, `|(2,1)` for the fire button), including the diagonal values 5, 6, 9 and 10. - Menus are printed with `PRINT #1` into the lower screen, and the cursor is a three-character UDG hand and sleeve. - Filled shapes are drawn as a series of shrinking outlines, for example circles of radius `p` reduced by 0.5 each pass. - The area fill scans each row between the marked limits with `POINT`, switching plotting on and off when it crosses existing lines. - The title uses `SOUND` to set the AY registers for a three-voice chord. - Entering 10.1329 at the paper-color prompt clears error trapping and stops the program. - Before printing, the program tests `PEEK 64260` and uses either `COPY` or `LPRINT CHR$ 1`, which suggests support for an alternative printer driver. ### Potential Issues - The diagonal-movement limits at lines 920–937 compare `x` with 160 and `y` with 248, which appears to swap the axes. The general limits at lines 93–96 still keep the pen on screen. - The rectangle tool uses the square size `j` as its height, and checks that height against the screen edge. - Lines 6130 and 805 jump to the missing lines 6110 and 740; they work because execution continues at the next line. - The `CIRCLE` routine at line 2300 is never reached. - Several messages are misspelled (“REVEIW”, “EXSISTS”, “SIZE TO LARGE”). ## Source Code ``` 1 ON ERR GO TO 3: POKE 23659,2: BORDER 1: PAPER 1: CLS : BEEP .05,30: LET m=9 2 GO SUB 500: LET poop=0: GO TO 9600 3 LET wedo=0: IF poop=0 THEN GO TO 9600 4 ON ERR GO TO 4: CLS : INK 1: PAPER 6: CLS : PRINT "The name you enter will be used to identify your picture": INPUT LINE t$: CLS : LET r=LEN t$: IF r<1 OR r>10 THEN GO TO 4 5 LET x=25: LET y=27: LET h=19: LET b=2: LET v=27: LET c=0 6 LET r=0: LET i=0: LET p=25 7 LET j=40: LET q=40: LET o=40 8 POKE 23609,3: PAPER 7: INK 0: CLS 9 FOR l=0 TO 7: PRINT INK 0;l;"="; INK l;"::::::::::::::::::::": BEEP .05,l: PRINT : NEXT l 10 INPUT "Paper ? ";a 11 IF a=10.1329 THEN ON ERR RESET : STOP 12 IF a<0 OR a>7 THEN GO TO 10 15 IF t$=CHR$ 32 THEN LET t$="::" 30 BEEP .05,10: BEEP .01,10: INPUT "Ink ? ";f 35 IF f<0 OR f>7 THEN GO TO 30 40 INK 0 42 PAPER a: CLS 45 INK 9: PLOT 0,10: DRAW 255,0: DRAW 0,155: DRAW -255,0: DRAW 0,-155: ON ERR GO TO 200 47 INK f 50 PRINT AT 0,0;t$ 55 PLOT x,y 56 IF |(2,1) THEN PLOT OVER 1;x,y 57 GO TO 60 58 PLOT x,y: PLOT x+1,y: PLOT x-1,y: PLOT x,y+1: PLOT x,y-1 59 IF |(2,1) THEN PLOT OVER 1;x,y: IF |(2,1) THEN PLOT OVER 1;x+1,y: IF |(2,1) THEN PLOT OVER 1;x-1,y: IF |(2,1) THEN PLOT OVER 1;x,y+1: IF |(2,1) THEN PLOT OVER 1;x,y-1 60 IF |(1,1)=1 THEN LET y=y+1 61 IF |(1,1)=6 THEN GO TO 924 62 IF |(1,1)=5 THEN GO TO 930 63 IF |(1,1)=9 THEN GO TO 935 70 IF |(1,1)=2 THEN LET y=y-1 80 IF |(1,1)=8 THEN LET x=x+1 90 IF |(1,1)=4 THEN LET x=x-1 91 IF |(1,1)=10 THEN GO TO 920 92 IF INKEY$=CHR$ 13 THEN GO TO 100 93 IF x<6 THEN LET x=6 94 IF x>248 THEN LET x=248 95 IF y<15 THEN LET y=15 96 IF y>160 THEN LET y=160 97 IF INKEY$="c" THEN GO TO 7000 98 IF r=1 THEN GO TO 58 99 GO TO 55 100 LET c=0: LET v=27 101 PRINT #1;AT 0,1; INK 1;CHR$ 144 102 PRINT AT 0,0; INK f;t$ 105 IF v=1 AND |(2,1) THEN GO TO 9200 107 IF v=17 AND i=1 AND |(2,1) THEN GO TO 720 110 PRINT #1;AT 0,5;CHR$ 153;AT 1,5;CHR$ 154 111 IF v=5 AND |(2,1) THEN GO TO 855 112 IF v=21 AND |(2,1) THEN GO TO 195 113 IF v=9 AND |(2,1) THEN GO TO 810 114 IF i=0 AND v=17 AND |(2,1) THEN GO TO 4000 115 IF v=13 AND |(2,1) THEN LET f=f+1 120 PRINT #1;AT 0,9; INK 4;CHR$ 148;CHR$ 149 125 IF i=1 THEN PRINT #1;AT 0,17; INK 0;CHR$ 158 130 PRINT #1;AT 0,13; INK f;"C" 132 IF i=0 THEN PRINT #1;AT 0,16; INK 4;"{G}" 133 IF i=0 AND v=16 AND |(2,1) THEN GO TO 4000 135 PRINT AT 21,21; INK 2;" .": PRINT #1;AT 0,21; INK 6;" :": PRINT #1;AT 1,21; INK 0;CHR$ 152 136 PRINT #1;AT 1,8; INK 2;"PLEASE SELECT" 137 IF v<0 THEN LET v=0 138 IF v>27 THEN LET v=27 145 PRINT #1;AT c,v; INK 0;CHR$ 145;CHR$ 146; INK 6; PAPER 0;CHR$ 147 146 IF |(1,1)=4 THEN LET v=v-1 147 IF |(1,1)=8 THEN LET v=v+1 148 PAUSE 2: PRINT #1;AT c,v-1;" " 149 PRINT #1;AT 1,8; INK 2;"please select" 150 IF v=0 AND |(2,1) THEN GO TO 9200 151 IF v=16 AND i=1 AND |(2,1) THEN GO TO 720 152 IF v=4 AND |(2,1) THEN GO TO 855 153 IF v=20 AND |(2,1) THEN GO TO 195 154 IF v=8 AND |(2,1) THEN GO TO 810 156 IF v=12 AND |(2,1) THEN LET f=f+1 157 IF f=8 THEN LET f=0 158 INK f 161 IF INKEY$=CHR$ 32 THEN GO TO 200 162 GO TO 101 163 LET i=1 164 PRINT AT h,b; INK f;"::" 165 IF |(2,1) THEN PRINT AT h,b;" " 166 IF |(1,1)=1 THEN LET h=h-1 167 IF |(1,1)=2 THEN LET h=h+1 168 IF |(1,1)=8 THEN LET b=b+1 169 IF |(1,1)=4 THEN LET b=b-1 170 IF h<2 THEN LET h=2 171 IF h>19 THEN LET h=19 172 IF b<1 THEN LET b=1 173 IF b>30 THEN LET b=30 174 IF b=30 THEN GO TO 193 175 PRINT AT h,b; INK f;INKEY$ 179 IF INKEY$<>"" AND b<>30 THEN LET b=b+1 193 IF INKEY$=CHR$ 13 THEN GO TO 100 194 PAUSE 8: GO TO 164 195 LET v=27: LET c=0: PRINT #1;AT 0,0;" ": PRINT AT 21,21;" ": PRINT #1;AT 1,0;" " 196 PRINT #1;AT 0,1; INK f;"+" 197 PRINT #1;AT 0,7; INK f;"." 198 PRINT #1;AT 0,14; INK f;"::" 199 GO TO 1000 200 PRINT #1;AT 0,0;" ": PRINT AT 21,0;" " 201 PRINT #1;AT 1,0;" " 202 PRINT AT 0,15;" ": BEEP .05,30 230 IF i=0 THEN GO TO 50 240 IF i=1 THEN GO TO 163 250 STOP 260 SAVE "<+>" LINE 0 270 STOP 500 BRIGHT 1: PAPER 1: CLS : FOR u=1 TO 13 502 INK 7: PRINT AT 10,9; FLASH 1;"STOP THE TAPE" 504 BEEP .1,.05 505 PAUSE 10: NEXT u 515 BRIGHT 0: CLS 525 PAPER 7: CLS : BORDER 6: CLS 572 LET p=0 573 LET k=8: LET l=128 575 FOR u=1 TO 110 577 BEEP .009,m: LET m=m+1: IF m=10 THEN LET m=1 578 PLOT k,l 579 PLOT k+1,l: PLOT k+2,l 580 LET l=l-1 585 INK p: LET p=p+1: IF p=7 THEN LET p=0 586 IF INKEY$<>"" THEN GO TO 640 588 NEXT u 589 LET m=1 600 FOR u=1 TO 216 605 IF INKEY$<>"" THEN GO TO 640 610 LET k=k+1 611 PLOT k,l+1 612 PLOT k,l: PLOT k,l+2 615 BEEP .002,m: LET m=m+1: IF m=70 THEN LET m=1 616 INK p: LET p=p+1: IF p=7 THEN LET p=0 617 NEXT u 618 LET e=30 620 PRINT AT 10,2; INK 3;"PEECH II Productions" 624 BEEP .05,20 625 PRINT AT 12,5; INK 2;"presents>>>>>" 626 SOUND 0,211;1,0;2,167;3,0;4,141;5,0;7,56;8,15;9,15;10,15: PAUSE 100: SOUND 8,0;9,0;10,0;7,63 627 BEEP .09,5 628 PRINT AT 14,2; INK 1;" DRAW II" 629 INK 2: PLOT 0,155: DRAW 255,0: DRAW 0,20: DRAW -255,0: DRAW 0,-20: PRINT AT 1,1; INK 4;"* 1984 by Peech II Productions" 630 PAUSE 60: PRINT AT 9,23; INK 4;CHR$ 162: PRINT AT 10,23; INK 2;CHR$ 163: BEEP .005,30: BEEP .03,50 639 BRIGHT 0: PAUSE 240 640 PAPER 7: BORDER 7: CLS : PRINT INK 1;"A REVEIW OF COMMANDS" 645 PRINT : PRINT INK 4;CHR$ 148;CHR$ 149; INK 2;"=print out your picture" 650 PRINT : PRINT INK 0;CHR$ 153; INK 2;"=save your picture on tape": INK 0: PRINT CHR$ 154 655 PRINT : PRINT INK 1;CHR$ 144; INK 2;"=throw away your drawing" 660 PRINT : PRINT INK 3;"C"; INK 2;"=change the ink color" 661 PRINT : PRINT INK 4;"{G}"; INK 2; FLASH 0;"=go to graphics mode" 663 PRINT : PRINT INK 0;CHR$ 158; INK 2;"=stamp a graphic" 664 PRINT : PRINT INK 2;" .": PRINT INK 6;" :"; INK 2;"=change drawing style": PRINT INK 0;CHR$ 152 665 PRINT : PRINT CHR$ 145;CHR$ 146; INK 6; PAPER 0;CHR$ 147; INK 2; PAPER 7;"=the hand you point with" 666 PRINT #1;AT 0,3; INK 5; FLASH 1; PAPER 1;"PRESS ANY KEY TO CONTINUE": PAUSE 0: CLS 667 PRINT : PRINT : PRINT : PRINT INK 4;"USE 'ENTER' TO GET TO MAIN MENU WHILE IN DRAWING MODE " 669 PRINT : PRINT INK 4;" USE 'SPACE BAR' TO GET TO DRAWING MODE WHILE IN MAIN MENU " 675 PRINT : PRINT " "; FLASH 1; INK 5; PAPER 1;" PRESS ANY KEY TO CONTINUE " 700 PAUSE 0 710 BEEP .09,30: RETURN 720 IF h=19 THEN GO TO 200 725 IF b=30 THEN GO TO 200 735 LET c=0: LET v=27 737 PRINT #1;AT 0,0;" ": PRINT #1;AT 1,0;" " 742 PRINT #1;AT 0,1; INK 2;CHR$ 157 745 PRINT #1;AT 0,13;" " 750 PRINT #1;AT 0,5; INK 2;CHR$ 160: PRINT #1;AT 1,5; INK 4;CHR$ 161 751 IF v=1 AND |(2,1) THEN PRINT AT h,b+1; INK 2;CHR$ 157 752 IF v=5 AND |(2,1) THEN PRINT AT h,b+1; INK 2;CHR$ 160;AT h+1,b+1; INK 4;CHR$ 161 753 IF v=10 AND |(2,1) THEN PRINT AT h,b+1; INK 0;CHR$ 145;CHR$ 146; INK 6; PAPER 0;CHR$ 147 756 IF v=20 AND |(2,1) THEN PRINT AT h,b+1; INK 2;CHR$ 164 757 IF v=24 AND |(2,1) THEN PRINT AT h,b+1; INK 4;CHR$ 162;AT h+1,b+1; INK 2;CHR$ 163 758 IF v=17 AND |(2,1) THEN PRINT AT h,b+1; INK 0;CHR$ 155;AT h+1,b+1;CHR$ 156 759 IF v=14 AND |(2,1) THEN PRINT AT h,b+1; INK 0;CHR$ 159 760 PRINT #1;AT 0,9; INK 0;CHR$ 145;CHR$ 146; INK 6; PAPER 0;CHR$ 147 764 PRINT #1;AT 0,14; INK 0;CHR$ 159;" " 766 PRINT #1;AT 0,21; INK 2;CHR$ 164: PRINT AT 21,21;" ": PRINT #1;AT 1,21;" " 768 PRINT #1;AT 0,17; INK 0;CHR$ 155: PRINT #1;AT 1,17; INK 0;CHR$ 156 770 PRINT #1;AT 0,24; INK 4;CHR$ 162: PRINT #1;AT 1,24; INK 2;CHR$ 163 780 PRINT #1;AT c,v; INK 0;CHR$ 145;CHR$ 146; INK 6; PAPER 0;CHR$ 147 781 PRINT AT 21,7; INK 2;"PLEASE SELECT" 782 PAUSE 5: PRINT #1;AT c,v;" " 785 IF |(1,1)=8 THEN LET v=v+1 790 IF |(1,1)=4 THEN LET v=v-1 791 IF v>27 THEN LET v=27 792 IF v<0 THEN LET v=0 795 IF v=0 AND |(2,1) THEN PRINT AT h,b+1; INK 2;CHR$ 157 796 IF v=4 AND |(2,1) THEN PRINT AT h,b+1; INK 2;CHR$ 160;AT h+1,b+1; INK 4;CHR$ 161 797 IF v=9 AND |(2,1) THEN PRINT AT h,b+1; INK 0;CHR$ 145;CHR$ 146; INK 6; PAPER 0;CHR$ 147 798 IF v=13 AND |(2,1) THEN PRINT AT h,b+1; INK 0;CHR$ 159 799 IF v=16 AND |(2,1) THEN PRINT AT h,b+1; INK 0;CHR$ 155;AT h+1,b+1;CHR$ 156 800 IF v=19 AND |(2,1) THEN PRINT AT h,b+1; INK 2;CHR$ 164 801 IF v=23 AND |(2,1) THEN PRINT AT h,b+1; INK 4;CHR$ 162;AT h+1,b+1; INK 2;CHR$ 163 803 IF INKEY$=CHR$ 32 THEN GO TO 806 804 PRINT AT 21,7; INK 2;"please select" 805 GO TO 740 806 LET b=b-1: GO TO 200 810 PRINT AT 21,21;" ": PRINT #1;AT 0,0;" ": PRINT #1;AT 1,0;" " 812 INPUT INK 2;"How may copies ? ";s 815 FOR u=1 TO s 816 IF PEEK 64260<1 THEN GO TO 824 819 LPRINT CHR$ 1 820 NEXT u 821 GO TO 840 824 COPY 825 NEXT u 840 PRINT #1;AT 0,0; INK 3; PAPER 6; FLASH 1;" PRINTING COMPLETED ": PAUSE 75 846 GO TO 200 850 STOP 855 PRINT #1;AT 0,0;" ": PRINT #1;AT 1,0;" " 856 PRINT AT 21,21;" " 857 ON ERR GO TO 9900 860 PRINT #1;AT 1,0; INK 2;"Hit 'L' to load picture" 865 PRINT #1;AT 0,0; INK 4;"Hit 'S' to save picture" 875 IF INKEY$="s" OR INKEY$="S" THEN GO TO 900 880 IF INKEY$="l" OR INKEY$="L" THEN GO TO 885 881 IF INKEY$=CHR$ 32 THEN GO TO 9999 882 GO TO 860 885 INPUT INK 1;"filename = "; LINE d$: PRINT #1;AT 1,0;" ": PRINT #1;AT 0,0; INK 5;"START TAPE ": LOAD d$SCREEN$ 886 PRINT AT 0,0;" ": PRINT AT 0,0;t$: PLOT 0,10: DRAW 255,0: DRAW 0,155: DRAW -255,0: DRAW 0,-155: PRINT #1;AT 0,0; INK 6; PAPER 2; FLASH 1;" LOADING COMPLETED ": PAUSE 75: GO TO 9999 900 PRINT #1;AT 0,0;" " 905 SAVE t$SCREEN$ 906 PRINT #1;AT 0,0; INK 6; PAPER 1; FLASH 1;" FILE SAVED TO TAPE ": PAUSE 75 910 GO TO 9999 920 IF x=160 THEN GO TO 92 921 LET x=x+1: LET y=y-1 923 GO TO 92 924 IF x=15 THEN GO TO 92 925 LET x=x-1: LET y=y-1 926 GO TO 92 930 IF y=7 THEN GO TO 92 931 LET x=x-1: LET y=y+1 932 GO TO 92 935 IF y=248 THEN GO TO 92 936 LET x=x+1: LET y=y+1 937 GO TO 92 1000 PRINT #1;AT c,v; INK 0;CHR$ 145;CHR$ 146; INK 6; PAPER 0;CHR$ 147 1001 PRINT #1;AT 1,7; INK 2;"PLEASE SELECT" 1003 PAUSE 8 1004 PRINT #1;AT 1,7; INK 2;"please select" 1005 PRINT #1;AT c,v;" " 1010 IF |(1,1)=4 THEN LET v=v-1 1020 IF |(1,1)=8 THEN LET v=v+1 1030 IF v<0 THEN LET v=0 1040 IF v>27 THEN LET v=27 1050 IF v=0 AND |(2,1) THEN GO TO 1500 1051 IF v=1 AND |(2,1) THEN GO TO 1500 1052 IF v=7 AND |(2,1) THEN GO TO 2000 1053 IF v=14 AND |(2,1) THEN GO TO 2100 1060 IF v=6 AND |(2,1) THEN GO TO 2000 1070 IF v=13 AND |(2,1) THEN GO TO 2100 1072 IF INKEY$=CHR$ 32 THEN GO TO 200 1080 GO TO 196 1500 LET r=1: LET i=0 1501 GO TO 200 2000 LET r=0: LET i=0 2001 GO TO 200 2100 LET i=1 2200 GO TO 200 2300 CIRCLE x,y,p 2305 IF r=0 THEN GO TO 200 2310 CIRCLE x,y,p-1: CIRCLE x,y,p-2: CIRCLE x,y,p-3 2320 GO TO 200 4000 PRINT #1;AT 0,0;" " 4010 PRINT #1;AT 1,0;" " 4015 PRINT AT 21,21;" " 4030 LET c=0: LET v=27 4040 IF |(1,1)=4 THEN LET v=v-1 4050 IF |(1,1)=8 THEN LET v=v+1 4055 IF INKEY$=CHR$ 32 THEN GO TO 200 4056 IF v=2 AND |(2,1) THEN GO TO 5000 4057 IF v=1 AND |(2,1) THEN GO TO 5000 4060 IF v>27 THEN LET v=27 4070 IF v<0 THEN LET v=0 4080 PRINT #1;AT 0,2; INK 1;"::" 4085 PRINT #1;AT 0,22; INK 1;"X" 4090 PRINT #1;AT 0,7; INK 2;CHR$ 150 4105 PRINT #1;AT 0,12; INK 3;CHR$ 151 4110 PRINT #1;AT 0,17; INK 5;".." 4190 PRINT #1;AT 1,7; INK 2;"please select" 4200 PRINT #1;AT c,v; INK 0;CHR$ 145;CHR$ 146; INK 6; PAPER 0;CHR$ 147 4201 PAUSE 3 4203 PRINT #1;AT 1,7; INK 2;"PLEASE SELECT" 4205 PRINT #1;AT c,v;" " 4220 IF v=7 AND |(2,1) THEN GO TO 5500 4230 IF v=6 AND |(2,1) THEN GO TO 5500 4240 IF v=12 AND |(2,1) THEN GO TO 6000 4250 IF v=11 AND |(2,1) THEN GO TO 6000 4255 IF v=22 AND |(2,1) THEN GO TO 8000 4257 IF v=21 AND |(2,1) THEN GO TO 8000 4260 IF v=17 AND |(2,1) THEN GO TO 6500 4270 IF v=16 AND |(2,1) THEN GO TO 6500 4500 GO TO 4040 5000 PRINT #1;AT 0,0;" " 5005 PRINT #1;AT 1,0;" " 5010 PRINT #1;AT 0,0; INK 1;"PUSH JOYSTICK UP TO INCREASE" 5015 PRINT #1;AT 1,0; INK 3;"PUSH DOWN TO DECREASE SIZE" 5020 IF |(1,1)=1 THEN LET j=j+1 5021 IF j<1 THEN LET j=80 5022 IF INKEY$=CHR$ 32 THEN GO TO 200 5023 IF j>80 THEN LET j=0 5025 PRINT #1;AT 1,28;" " 5026 PRINT #1;AT 1,28;j 5030 IF |(1,1)=2 THEN LET j=j-1 5040 PAUSE 20 5050 IF |(2,1) THEN GO TO 5100 5055 IF INKEY$=CHR$ 32 THEN GO TO 200 5060 BEEP .005,2 5070 GO TO 5020 5100 IF x<248-j AND y<170-j THEN GO TO 5120 5115 GO TO 9700 5120 PRINT #1;AT 0,0;" ": PRINT #1;AT 1,0;" " 5125 PRINT #1;AT 0,0; INK 2;"PRESS 'F' TO FILL IN THE SQUARE" 5130 PRINT #1;AT 1,0; INK 3;"PRESS 'C' TO CONTINUE" 5140 IF INKEY$="f" OR INKEY$="F" THEN GO TO 5150 5142 IF INKEY$=CHR$ 32 THEN GO TO 200 5145 IF INKEY$="c" OR INKEY$="C" THEN GO TO 5200 5146 GO TO 5140 5150 GO SUB 9000: LET u=j: FOR e=1 TO j 5151 IF INKEY$=CHR$ 32 THEN LET j=u: GO TO 200 5152 DRAW j,0: DRAW 0,j: DRAW -j,0: DRAW 0,-j 5153 PRINT AT 0,15; FLASH 1; INK 2; PAPER 7;"COLORING" 5154 LET j=j-1 5155 NEXT e 5160 LET j=u 5165 PRINT AT 0,15;" " 5170 LET j=INT j: GO TO 200 5205 GO SUB 9000: DRAW j,0: DRAW 0,j: DRAW -j,0: DRAW 0,-j 5210 LET j=INT j: GO TO 200 5500 PRINT #1;AT 0,0;" ": PRINT #1;AT 1,0;" " 5510 PRINT #1;AT 0,0; INK 4;"PUSH JOYSTICK UP TO INCREASE" 5520 PRINT #1;AT 1,0; INK 3;"PUSH DOWN TO DECREASE SIZE" 5530 PRINT #1;AT 1,27;" " 5540 PRINT #1;AT 1,27;q 5550 IF |(1,1)=1 THEN LET q=q+1 5560 IF |(1,1)=2 THEN LET q=q-1 5570 IF q<1 THEN LET q=80 5580 IF q>80 THEN LET q=1 5585 PAUSE 20 5590 IF |(2,1) THEN GO TO 5600 5592 IF INKEY$=CHR$ 32 THEN GO TO 200 5593 BEEP .005,2 5595 GO TO 5530 5600 PRINT #1;AT 0,0;" ": PRINT #1;AT 1,0;" " 5605 IF x<248-q AND y<145-q THEN GO TO 5610 5607 GO TO 9700 5610 PRINT #1;AT 0,0; INK 1;"PRESS 'F' TO FILL IN TRIANGLE" 5620 PRINT #1;AT 1,0; INK 2;"PRESS 'C' TO CONTINUE" 5630 IF INKEY$="c" OR INKEY$="C" THEN GO TO 5650 5635 IF INKEY$="f" OR INKEY$="F" THEN GO TO 5800 5640 IF INKEY$=CHR$ 32 THEN GO TO 200 5645 GO TO 5630 5650 GO SUB 9000: DRAW q,q 5655 DRAW q,-q 5657 DRAW -q*2,0 5670 LET q=INT q: GO TO 200 5800 GO SUB 9000: LET u=q: FOR e=1 TO q*2 5802 PRINT AT 0,15; INK 2; PAPER 7; FLASH 1;"COLORING" 5805 DRAW q,q 5810 DRAW q,-q 5815 IF INKEY$=CHR$ 32 THEN LET q=u: GO TO 200 5820 DRAW -q*2,0 5830 LET q=q-.5 5840 NEXT e 5845 PRINT AT 0,15;" " 5850 LET q=u: LET q=INT q: GO TO 200 6000 PRINT #1;AT 0,0;" ": PRINT #1;AT 1,0;" " 6005 PRINT #1;AT 0,0; INK 1;"PUSH JOYSTICK UP TO INCREASE" 6010 PRINT #1;AT 1,0; INK 4;"PUSH DOWN TO DECREASE SIZE" 6020 PRINT #1;AT 1,27;" " 6040 PRINT #1;AT 1,27;p 6045 BEEP .005,2: PAUSE 20 6050 IF p>50 THEN LET p=1 6060 IF p<1 THEN LET p=50 6070 IF |(2,1) THEN GO TO 6100 6075 IF |(1,1)=1 THEN LET p=p+1 6080 IF |(1,1)=2 THEN LET p=p-1 6085 IF INKEY$=CHR$ 32 THEN GO TO 200 6090 GO TO 6020 6100 PRINT #1;AT 0,0;" ": PRINT #1;AT 1,0;" " 6102 IF x<248-p AND x>0+p AND y<145-p AND y>16+p THEN GO TO 6105 6103 GO TO 9700 6105 PRINT #1;AT 0,0; INK 3;"PRESS 'F' TO FILL IN CIRCLE" 6107 PRINT #1;AT 1,0; INK 5;"PRESS 'C' TO CONTINUE" 6115 IF INKEY$="c" OR INKEY$="C" THEN GO TO 6200 6116 IF INKEY$="f" OR INKEY$="F" THEN GO TO 6300 6120 IF INKEY$=CHR$ 32 THEN GO TO 200 6130 GO TO 6110 6200 GO SUB 9000: CIRCLE x,y,p 6205 LET p=INT p: GO TO 200 6300 GO SUB 9000: LET u=p: FOR e=1 TO p*2 6302 PRINT AT 0,15; INK 2; FLASH 1; PAPER 7;"COLORING" 6305 CIRCLE x,y,p 6309 LET p=p-.5 6311 IF INKEY$=CHR$ 32 THEN LET p=u: GO TO 200 6315 NEXT e 6320 LET p=u 6380 PRINT AT 0,15;" " 6400 LET p=INT p: GO TO 200 6500 PRINT #1;AT 0,0;" ": PRINT #1;AT 1,0;" " 6505 PRINT #1;AT 0,0; INK 2;"PRESS JOYSTICK UP TO INCREASE" 6510 PRINT #1;AT 1,0; INK 5;"PRESS DOWN TO DECREASE SIZE" 6520 PRINT #1;AT 1,28;" " 6530 PRINT #1;AT 1,28; INK 1;o 6535 BEEP .005,2: PAUSE 20 6540 IF |(1,1)=1 THEN LET o=o+1 6550 IF |(1,1)=2 THEN LET o=o-1 6560 IF |(2,1) THEN GO TO 6600 6570 IF INKEY$=CHR$ 32 THEN GO TO 200 6575 IF o>80 THEN LET o=1 6576 IF o<1 THEN LET o=80 6580 GO TO 6520 6600 PRINT #1;AT 0,0;" ": PRINT #1;AT 1,0;" " 6602 IF x<248-o AND y<145-j THEN GO TO 6605 6603 GO TO 9700 6605 PRINT #1;AT 0,0; INK 4;"PRESS 'F' TO FILL IN SHAPE" 6610 PRINT #1;AT 1,0; INK 1;"PRESS 'C' TO CONTINUE" 6615 IF INKEY$=CHR$ 32 THEN GO TO 200 6620 IF INKEY$="f" OR INKEY$="F" THEN GO TO 6800 6630 IF INKEY$="c" OR INKEY$="C" THEN GO TO 6700 6640 GO TO 6615 6700 GO SUB 9000: DRAW o,0: DRAW 0,j: DRAW -o,0: DRAW 0,-j 6775 LET o=INT o: GO TO 200 6800 GO SUB 9000: PRINT AT 0,15; INK 2; PAPER 7; FLASH 1;"COLORING": LET w=o: LET t=j 6805 FOR e=1 TO o*2 6808 DRAW o,0: DRAW 0,j: DRAW -o,0: DRAW 0,-j 6810 LET o=o-.5 6815 IF INKEY$=CHR$ 32 THEN LET o=w: LET j=t: GO TO 200 6820 NEXT e 6830 LET j=t 6840 LET o=w 6845 PRINT AT 0,15;" " 6850 LET o=INT o: GO TO 200 7000 PRINT AT 0,15; INK 7; FLASH 1; PAPER 2;"CURSOR" 7002 LET u=f 7003 IF f+1=a THEN LET f=f+1 7005 IF f=7 THEN LET f=0 7010 INK f+1 7020 PLOT x,y-1 7025 PLOT x-1,y 7030 PLOT x,y 7035 PLOT x+1,y 7040 PLOT x,y+1 7050 PLOT OVER 1;x,y-1 7055 PLOT OVER 1;x-1,y 7060 PLOT OVER 1;x,y 7065 PLOT OVER 1;x+1,y 7070 PLOT OVER 1;x,y+1 7080 IF INKEY$="c" OR INKEY$="C" THEN GO TO 7020 7090 PRINT AT 0,15;" " 7100 LET f=u: INK f 7200 GO TO 200 8000 LET h1=87: LET hi=15 8002 LET w1=127: LET wi=7 8005 PRINT #1;AT 0,0;" ": PRINT #1;AT 1,0;" " 8007 PRINT #1;AT 0,0; INK 2;"HEIGHT": PAUSE 10 8009 PLOT 2,h1: PLOT 3,h1: PAUSE 2 8010 PLOT OVER 1;2,h1: PLOT OVER 1;3,h1 8011 IF |(1,1)=1 THEN LET h1=h1+1 8012 IF |(1,1)=2 THEN LET h1=h1-1 8013 IF INKEY$=CHR$ 32 THEN GO TO 200 8014 IF h1>160 THEN LET h1=160 8015 IF h1<15 THEN LET h1=15 8018 IF |(2,1) THEN GO TO 8020 8019 GO TO 8009 8020 PRINT #1;AT 0,0; INK 4;"IN HEIGHT": PAUSE 10 8022 PLOT 2,hi: PLOT 3,hi: PAUSE 2 8023 PLOT OVER 1;2,hi: PLOT OVER 1;3,hi 8024 IF |(1,1)=1 THEN LET hi=hi+1 8025 IF |(1,1)=2 THEN LET hi=hi-1 8026 IF INKEY$=CHR$ 32 THEN GO TO 200 8027 IF hi>h1 THEN LET hi=h1 8028 IF hi<15 THEN LET hi=15 8031 IF |(2,1) THEN GO TO 8035 8032 GO TO 8022 8035 PRINT #1;AT 0,0; INK 1;"WIDTH ": PAUSE 10 8036 PLOT w1,14: PLOT w1,13: PAUSE 2: PLOT OVER 1;w1,14: PLOT OVER 1;w1,13 8037 IF |(1,1)=8 THEN LET w1=w1+1 8038 IF |(1,1)=4 THEN LET w1=w1-1 8039 IF w1>248 THEN LET w1=248 8040 IF INKEY$=CHR$ 32 THEN GO TO 200 8041 IF |(2,1) THEN GO TO 8045 8042 GO TO 8036 8045 PRINT #1;AT 0,0; INK 3;"IN WIDTH": PAUSE 10 8046 PLOT wi,14: PLOT wi,13: PAUSE 2: PLOT OVER 1;wi,14: PLOT OVER 1;wi,13 8047 IF |(1,1)=8 THEN LET wi=wi+1 8048 IF |(1,1)=4 THEN LET wi=wi-1 8049 IF wi>w1 THEN LET wi=w1 8050 IF wi<7 THEN LET wi=7 8051 PLOT OVER 1;wi,14: PLOT OVER 1;wi,13 8052 IF |(2,1) THEN GO TO 8100 8055 IF INKEY$=CHR$ 32 THEN GO TO 200 8056 GO TO 8046 8100 PRINT #1;AT 0,0;" ": LET y1=y: LET x1=x 8102 PLOT OVER 1;wi,14: PLOT OVER 1;wi,13 8105 PRINT AT 0,15; INK 2; PAPER 7; FLASH 1;"COLORING": LET y=h1: LET x=wi 8120 IF POINT (x,y)=1 AND POINT (x+1,y)=1 THEN GO TO 8180 8125 IF POINT (x,y)=1 THEN GO TO 8160 8130 IF x=w1 THEN GO TO 8180 8140 LET x=x+1 8145 IF INKEY$=CHR$ 32 THEN GO TO 8200 8150 GO TO 8120 8160 PLOT x,y 8161 IF POINT (x+1,y)=1 THEN GO TO 8195 8163 IF x=w1 THEN GO TO 8180 8165 LET x=x+1 8167 IF INKEY$=CHR$ 32 THEN GO TO 8200 8170 GO TO 8160 8180 LET x=wi 8185 LET y=y-1 8187 IF y=hi THEN GO TO 8200 8190 GO TO 8120 8195 LET x=x+3: GO TO 8120 8200 LET y=y1 8201 LET x=x1 8205 GO TO 200 9000 PRINT #1;AT 0,0;" ": PRINT #1;AT 1,0;" ": RETURN 9200 LET c=0: LET v=27: PRINT AT 21,21;" ": PRINT #1;AT 0,0;" ": PRINT #1;AT 1,0;" " 9205 PRINT #1;AT c,v; INK 0;CHR$ 145;CHR$ 146; INK 6; PAPER 0;CHR$ 147 9206 PAUSE 5: PRINT #1;AT c,v;" " 9207 PRINT #1;AT 0,5; INK 1;CHR$ 144 9209 PRINT #1;AT 0,13;"::" 9211 PRINT #1;AT 0,21; INK 2;"%%" 9212 PRINT #1;AT 1,8; INK 3;"PLEASE SELECT" 9213 PAUSE 10: PRINT #1;AT 1,8; INK 4;"please select" 9214 IF |(1,1)=4 THEN LET v=v-1 9215 IF |(1,1)=8 THEN LET v=v+1 9216 IF v>27 THEN LET v=27 9217 IF v<1 THEN LET v=1 9220 IF |(2,1) AND v=5 THEN GO TO 4 9221 IF |(2,1) AND v=4 THEN GO TO 4 9223 IF |(2,1) AND v=14 THEN GO TO 9300 9224 IF |(2,1) AND v=13 THEN GO TO 9300 9226 IF |(2,1) AND v=21 THEN GO TO 9500 9227 IF |(2,1) AND v=22 THEN GO TO 9500 9230 IF INKEY$=CHR$ 32 THEN GO TO 200 9250 GO TO 9205 9300 IF wedo=0 THEN PRINT #1;AT 0,0; INK 3;" CREATE NEW FILE ? 'Y' OR 'N'": PRINT #1;AT 1,0;" " 9301 IF wedo=1 THEN PRINT #1;AT 0,0; INK 2;"REPLACE OLD FILE ? 'Y' OR 'N'": PRINT #1;AT 1,0;" " 9302 IF INKEY$=CHR$ 32 THEN GO TO 200 9303 IF INKEY$="N" OR INKEY$="n" THEN GO TO 200 9304 IF INKEY$="Y" OR INKEY$="y" THEN GO TO 9306 9305 GO TO 9302 9306 LET pic=4: LET wedo=1: PRINT #1;AT 0,0;" " 9307 LET al=pic*7000+26000: LET al2=INT (al/256): LET al1=al-al2*256 9309 POKE 32001,al1: POKE 32002,al2 9310 LET n=USR sv 9315 PRINT #1;AT 0,0; INK 1; PAPER 5; FLASH 1;" FILE SAVED IN MEMORY " 9316 PAUSE 75 9320 GO TO 200 9500 LET pic=4 9501 IF wedo=0 THEN PRINT #1;AT 0,0; INK 4; PAPER 6; FLASH 1;" NO FILE EXSISTS ": PRINT #1;AT 1,0;" ": PAUSE 75: GO TO 200 9502 PRINT #1;AT 0,0; INK 1;"RECALL FILE ? 'Y' OR 'N' ": PRINT #1;AT 1,0;" " 9503 IF INKEY$="y" OR INKEY$="Y" THEN GO TO 9507 9504 IF INKEY$="n" OR INKEY$="N" THEN GO TO 200 9505 IF INKEY$=CHR$ 32 THEN GO TO 200 9506 GO TO 9503 9507 LET al=pic*7000+26000: LET al2=INT (al/256): LET al1=al-al2*256 9509 POKE 32054,al1: POKE 32055,al2: 9510 LET n=USR rc 9515 PRINT AT 0,0;" " 9516 PRINT AT 0,0; INK f;t$ 9517 PRINT #1;AT 0,0; INK 5; PAPER 3; FLASH 1;" FILE RECALLED ": PAUSE 75 9520 GO TO 200 9600 CLEAR 52999: LET sv=32000: LET rc=32050 9610 PRINT AT 10,15; INK 2;" .": PRINT AT 11,15; INK 6;" :": PRINT AT 12,15; INK 0;CHR$ 152 9615 PRINT AT 13,9; INK 4;"PLEASE WAIT..." 9620 RESTORE : FOR j=0 TO 11: READ al: POKE sv+j,al: NEXT j 9630 FOR j=0 TO 11: READ al: POKE rc+j,al: NEXT j 9640 LET poop=1: GO TO 3 9650 DATA 17,232,128,33,0,64,1,0,27,237,176,201 9670 DATA 17,0,64,33,232,128,1,0,27,237,176,201 9700 PRINT #1;AT 0,0;" ": PRINT #1;AT 1,0;" " 9705 PRINT #1;AT 0,0; INK 6; PAPER 3; FLASH 1;" SHAPE SIZE TO LARGE ": PAUSE 75: GO TO 200 9900 PAPER 7: BORDER 7: INK 1: CLS : PRINT AT 10,0; FLASH 1;" TAPE LOADING ERROR " 9910 FOR g=1 TO 10: BEEP .05,g: NEXT g 9911 PRINT AT 1,0; INK 1;"DRAW II "; INK 2;CHR$ 163;AT 0,9; INK 4;CHR$ 162 9915 PRINT AT 15,0; INK 3; PAPER 5; FLASH 1;" PRESS ANY KEY TO CONTINUE " 9917 PAUSE 0: ON ERR GO TO 200 9920 INK 0: BORDER 7: GO TO 4 9999 ON ERR GO TO 200: GO TO 200 ```