PAINTsinc

Date: 198
Type: Program
Platform(s): TS 2068

Home grown paint program for the 2068.

Copied from the “Hacker” TSUG of Las Vegas, NV March 1986. Copied by P. Hill, SINCUS.

The Modify Paper+Ink modify modes are copied exact, but with mono color monitor, it is hard to tell if they work.
Copyrighted – given to public domain – you are free to copy but not to profit from.

To SAVE run 9998
STOP to break into prg
Need joystick left side

MODES

  • DRAW “d” Use joy stick or arrow keys, fire button draws-“z” causes skip space-“x” causes two space skip
  • ERASE “e”to enter or exit erase mode. Can enter from other modes.
  • LINE “l” flashing line drawn to cursor from last point drawn. “z” or”x” will ink inline.
  • ARC “a” arc value shown at bottom and flashing line will curve. More “a” increases arc, “s” decreases arc. “l” resets arc to zero.
  • RAY “r” works like line: lines radiate from common pt to follow cursor. “z” and “x” work with ray to space lines. arc modes work with ray.
  • BOX “q” move cursor diagonally to stretch a box to size. Fire button, cursor keys, “z”, “x”, “e” work similar as with line mode.
  • BRUSH draw. Enter”l” mode, form brush size by length of brush, then “b”. if line is vertical to start, length of brush is only that wide in horizont sweeps, vertical sweeps will be one pixel wide. Can enter “e” from brush, erase wide sweeps.
  • FILL works in any mode, “f”=solid fill, “g”= 50% fill, “h”=stripes. Must be inside area to be filled. Must be a right side. Tone sounds on complete.
  • COPY to copy an object on screen, “q” to form flashing box around object. While still flashing, and around object hit “w” for copy. Move box with arrow or joystick to increase or decrease size with “a” or”s” , fire bottun places object, takes awhile to work, wait 30 secs or so. “d” to get out of copy mode.

KEYS USED

  • “1”-INK SELECT
  • “2”-Border Select
  • “3”-SAVE page
  • “4”-LOAD page
  • “5”-left arrow
  • “6”-down arrow
  • “7”-up arrow
  • “8”-right arrow
  • “0”-CLS with caps shift
  • “q”-Box mode
  • “w”-copy mode
  • “e”-Erase mode
  • “r”-Ray mode
  • “t”-paper select
  • “y”-Global paper
  • “u”-ink change
  • “i”-Global Ink
  • “o”-Print page-2040
  • “p”-Modify paper
  • “a”-increase arc/copy
  • “s”-decrease arc/copy
  • “d”-DRAW mode
  • “f”-FILL mode
  • “g”-50% Fill mode
  • “h”-fill striped
  • “l”-LINE mode-arc reset
  • “z”-1 space skip
  • “x”-2 space skip
  • “c”-Circle mode
  • “b”-BRUSH mode
  • “m”-ink modify

Appears on

Library tape of the Indiana Sinclair Timex User’s Group.

Gallery

PAINTsinc

Source Code

    2 CLS : INPUT "DOCUMENTATION  Y/N ";A$
    3 IF A$="Y" THEN LIST 6000
   10 REM "Paint"\*Rheesware 1984  LIST 6000 for documentation
   20 POKE 23658,0: GO TO 8000
   30 REM :{ GO TO 200: REM -joystick
   40 LET a=|(1,1): IF s<>|(2,1) THEN LET s=|(2,1)
   45 LET b=1: IF INKEY$<>"" THEN GO SUB 5000
   50 IF NOT a THEN GO TO 100
   60 LET x=x+x(a,b): LET y=y+y(a,b)
   70 LET x=ABS x: LET y=ABS y
  100 PLOT x,y: GO SUB mode: GO TO 40
  200 IF NOT a THEN GO TO 40
  210 LET x=x-x(a,b): LET y=y-y(a,b): GO TO 30
  250 LET e=0: GO TO 8200
  300 REM DRAW 
  310 PLOT x,y: IF s THEN PLOT OVER 0; INVERSE e; INK ink;x,y
  390 RETURN 
  400 REM -line/ray-
  410 LET x2=x1-x: LET y2=y1-y: IF arc THEN GO TO 450
  415 DRAW x2,y2: PLOT x,y: DRAW x2,y2
  420 IF s THEN PLOT OVER 0; INVERSE e; INK ink;x,y: DRAW OVER 0; INVERSE e; INK ink;x2,y2:: IF NOT r THEN LET x1=x: LET y1=y
  430 RETURN 
  450 ON ERR GO TO 455: DRAW x2,y2,arc
  455 ON ERR GO TO 460: PLOT x,y: DRAW x2,y2,arc
  460 ON ERR GO TO 470: IF s THEN PLOT OVER 0; INVERSE e; INK ink;x,y: DRAW OVER 0; INVERSE e; INK ink,x2,y2,arc: IF NOT r THEN LET x1=x: LET y1=y: LET arc=0: GO TO 8200
  470 ON ERR GO TO 200: RETURN 
  500 REM -brush-
  510 ON ERR GO TO 2000: GO SUB 415: ON ERR GO TO 200: RETURN 
  600 REM -box-
  610 LET x2=x1-x: LET y2=y1-y
  615 DRAW x2,0: DRAW 0,y2: DRAW -x2,0: DRAW 0,-y2
  620 PLOT x,y: DRAW x2,0: DRAW 0,y2: DRAW -x2,0: DRAW 0,-y2
  630 IF s THEN OVER 0: LET x1=x: LET y1=y: DRAW x2,0: DRAW 0,y2: DRAW -x2,0: DRAW 0,-y2
  640 INVERSE 0: INK 8: OVER 1: RETURN 
  800 REM CIRCLE 
  810 ON ERR GO TO 815: PLOT x,y: CIRCLE x,y,ABS x2
  815 ON ERR GO TO 820: CIRCLE x,y,ABS x2
  820 ON ERR GO TO 890: IF NOT s THEN STOP 
  830 CIRCLE INK ink; INVERSE e; OVER 0;x,y,ABS x2
  890 ON ERR GO TO 200: RETURN 
  900 REM COPY 
  910 LET fm=1+ABS arc
  915 IF SGN arc=-1 THEN GO TO 930
  920 ON ERR GO TO 922: DRAW x2*fm,0: DRAW 0,y2*fm: DRAW -x2*fm,0: DRAW 0,-y2*fm
  922 GO SUB 980
  925 GO TO 970
  930 ON ERR GO TO 940: DRAW x2/fm,0: DRAW 0,y2/fm: DRAW -x2/fm,0: DRAW 0,-y2/fm
  940 GO SUB 980
  950 ON ERR GO TO 960: PLOT x,y: DRAW x2/fm,0: DRAW 0,y2/fm: DRAW -x2/fm,0: DRAW 0,-y2/fm
  960 GO TO 975
  970 ON ERR GO TO 975: PLOT x,y: DRAW x2*fm,0: DRAW 0,y2*fm: DRAW -x2*fm,0: DRAW 0,-y2*fm
  975 GO SUB 980: IF s THEN GO SUB 3000
  977 ON ERR GO TO 200: RETURN 
  980 PLOT x1,y1
  985 ON ERR GO TO 990: DRAW x2,0: DRAW 0,y2: DRAW -x2,0: DRAW 0,-y2
  990 ON ERR GO TO 200: RETURN 
 1000 REM -fill-
 1010 INVERSE e: LET e=NOT e: INK ink: ON ERR GO TO 1150: LET fm=1: OVER 0
 1020 LET xmin=x: LET xp=x: LET yp=y
 1025 IF POINT (x,y)=e THEN STOP 
 1030 GO TO 1100
 1040 IF g THEN GO TO 1200
 1042 PLOT x,y: LET x=x-1
 1050 IF POINT (x,y)=e THEN LET xmin=x+1: LET x=xmax: GO TO 1070
 1060 GO TO 1040
 1070 LET y=y+fm: IF POINT (x,y)=NOT e THEN GO TO 1100
 1080 LET x=x-1: IF POINT (x,y)=e THEN GO TO 1120
 1090 LET xmax=x: GO TO 1040
 1100 LET x=x+1: IF  POINT (x,y)=e THEN LET xmax=x-1: GO TO 1040
 1110 GO TO 1100
 1120 IF x=xmin THEN GO TO 1140
 1125 FOR x=x TO xmin STEP -1: IF NOT POINT (x,y)=e THEN LET xmax=x: GO TO 1040
 1130 NEXT x
 1140 IF fm=1 THEN LET fm=-1: LET x=xp: LET y=yp-1: GO TO 1100
 1150 INVERSE 0: LET e=NOT e: INK 8: LET x=xp: LET y=yp: OVER 1: BEEP .4,-10: GO TO 200: RETURN 
 1200 LET i=(x*g+y)/2: IF i=INT i THEN PLOT x,y
 1210 LET x=x-1: GO TO 1050
 2000 ON ERR GO TO 2020: PLOT x,y: DRAW x2,y2
 2020 IF NOT s THEN GO TO 2050
 2030 ON ERR GO TO 2050: GO TO 420
 2050 ON ERR GO TO 200: RETURN 
 3000 ON ERR RESET : IF y2=0 OR x2=0 THEN RETURN : REM -copy2-
 3010 INK ink: OVER 0: INVERSE e: LET x3=x: LET y3=y: IF SGN arc=-1 THEN GO TO 3100
 3020 FOR y=0 TO fm*y2 STEP SGN y2: FOR x=0 TO fm*x2 STEP SGN x2
 3030 ON ERR GO TO 3040: IF POINT (x1+x/fm,y1+y/fm) THEN PLOT x3+x,y3+y
 3040 IF INKEY$=" " THEN GO TO 3050
 3045 NEXT x: NEXT y
 3050 BEEP .4,-10: LET y=y3: LET x=x3: INK 8: INVERSE 0: OVER 1: RETURN 
 3100 FOR y=0 TO y2 STEP SGN y2: FOR x=0 TO x2 STEP SGN x2
 3110 ON ERR GO TO 3120: IF POINT (x+x1,y+y1) THEN PLOT x3+x+fm,y3+y/fm
 3120 GO TO 3040
 4000 REM -wash-
 4010 PRINT AT NOT PI,NOT PI;: FOR i=NOT PI TO 21: PRINT PAPER bord;,,: NEXT i: RETURN 
 4020 PRINT AT NOT PI,NOT PI;: FOR i=NOT PI TO 21: PRINT INK ink;,,: NEXT i: RETURN 
 4050 ON ERR GO TO 4095: FOR i=NOT PI TO 21: FOR g=NOT PI TO 31
 4060 IF INT (ATTR (i,g)/8)=bord THEN PRINT AT i,g; PAPER ink;" "
 4070 NEXT g: NEXT i: GO TO 4095
 4080 ON ERR GO TO 4095: FOR i=NOT PI TO 21: FOR g=NOT PI TO 31
 4085 IF ATTR (i,g)-8*INT (ATTR (i,g)/8)=bord THEN PRINT AT i,g; INK ink;" "
 4090 NEXT g: NEXT i
 4095 BEEP .4,-10: ON ERR GO TO 200: RETURN 
 5000 REM READ key
 5010 LET i$=INKEY$: IF i$>"4" AND i$<"9" THEN LET a=VAL i$+6: RETURN 
 5020 IF i$="z" THEN LET s=1: LET b=2: RETURN 
 5030 IF i$="x" THEN LET s=1: LET b=3: RETURN 
 5040 IF i$="1" THEN GO TO 5200
 5045 IF i$="2" THEN GO TO 5220
 5050 IF i$="m" THEN PLOT INK ink;x,y: PLOT x,y: LET b=3: RETURN 
 5055 IF i$="p" THEN PLOT PAPER bord;x,y: PLOT x,y: LET b=3: RETURN 
 5060 IF i$="3" THEN ON ERR GO TO 5230: GO TO 5600
 5065 IF i$="o" THEN ON ERR GO TO 5230: COPY : STOP 
 5070 IF i$=CHR$ 12 THEN PAPER bord: INK 9: CLS : PAPER 8: INK 8: GO TO 8200
 5080 IF i$="e" THEN LET e=NOT e: GO TO 8200
 5090 IF i$="d" THEN LET m$="Draw": LET arc1=0: LET mode=310: GO TO 250
 5100 IF i$="l" THEN LET x1=x: LET r=0: LET arc1=.2: LET arc=0: LET y1=y: LET m$="Line": LET mode=410: GO TO 250
 5105 IF i$="r" THEN LET x1=x: LET arc=0: LET arc1=.2: LET r=1: LET y1=y: LET m$="Ray": LET mode=410: GO TO 250
 5110 IF i$="b" THEN IF m$="Line" THEN LET m$="Brush": LET r=1: LET arc1=0:: LET mode=510: GO TO 250
 5120 IF arc1 THEN IF i$="a" OR i$="s" THEN LET arc=arc+(arc1 AND i$="a")-(arc1 AND i$="s"): LET a$="Arc/Size="+STR$ (INT (arc*10)/10)+" ": GO TO 8200
 5125 IF i$="q" THEN LET x1=x: LET y1=y: LET m$="Box": LET mode=610: LET arc1=0: GO TO 250
 5130 IF i$="f" THEN LET g=0: GO TO 1000
 5135 IF i$="g" THEN LET g=1: GO TO 1000
 5140 IF i$="h" THEN LET g=2: GO TO 1000
 5145 IF i$="4" THEN GO TO 5500
 5150 IF i$="c" THEN IF m$="Line" THEN LET m$="Circle": LET mode=810: LET arc1=0: GO TO 250
 5155 IF i$="w" THEN IF m$="Box" THEN GO TO 5300
 5160 IF i$="t" THEN GO TO 4000
 5165 IF i$="y" THEN GO TO 4050
 5170 IF i$="u" THEN GO TO 4020
 5175 IF i$="i" THEN GO TO 4080
 5180 IF i$=" STOP " THEN ON ERR RESET : STOP : GO TO 8200
 5190 RETURN 
 5200 LET ink=ink+1: IF ink>7 THEN LET ink=0
 5210 GO SUB 8200: RETURN 
 5220 LET bord=bord+1: IF bord>7 THEN LET bord=0
 5225 BORDER bord: RETURN 
 5230 POKE 23658,0: BEEP .5,-10: GO TO 8200
 5300 LET arc1=1: LET arc=0: LET mode=910: LET m$="Copy"
 5320 LET x1=x: LET y1=y: GO TO 250
 5500 LET i$=m$: LET m$="Start tape": GO SUB 8200: ON ERR GO TO 5520: OVER 0: PRINT AT 0,0; INK 9: LOAD ""SCREEN$ 
 5520 INK 8: OVER 1: LET m$=i$: GO TO 5230
 5600 INPUT "NAME? "; LINE i$
 5610 IF i$="" THEN LET i$="paint"
 5620 SAVE i$SCREEN$ : STOP 
 6000 REM instructions delete when done-copy to 2040-
 6005 REM Copied from the "Hacker"TSUG of Las Vegas, NV March 1986
 6010 REM 2405 Howard Dr.,Las Vegas, NV 89104-copied by P. Hill, SINCUS, 1229 Rhodes Rd. Johnson Cty, NY13790
 6011 REM -the Modify Paper+Ink modify modes are copied exact-but with mono color monitor, it is hard to tell if they work.
 6015 REM copyrighted-given to public domain-you are free to copybut not to profit from.
 6020 REM to SAVE run 9998                STOP to break into prg          Need joystick left side
 6025 REM small cursor need               monitor to see
 6030 REM MODES-DRAW-"d"-use joy stick or arrow keys, fire button draws-"z" causes skip space-"x" causes two space skip
 6035 REM MODES-ERASE-"e"to enteror exit erase mode. Can enter from other modes.
 6040 REM MODES-LINE-"l"flashing line drawn to cursor from last point drawn."z" or"x" will ink inline.
 6050 REM MODES-ARC-"a"arc value shown at bottom and flashing line will curve.More "a" increases arc,"s" dereases arc. "l" resets arc to zero.
 6055 REM MODES-RAY-"r" works like line-lines radiate from common pt to follow cursor."z" and "x"work with ray to space lines. arc modes work with ray.
 6060 REM MODES-BOX-"q" move cursor diagonally to strech a box to size.fire button,cursor keys, "z","x","e" work similiar as with line mode.
 6065 REM MODES-BRUSH-draw. Enter"l"mode,form brush size by length of brush, then "b". if line isvertical to start, length of brush is only that wide in horizontsweeps, vertical sweeps will be one pixel wide.
 6070 REM BRUSH cont-can enter "e" from brush, erase wide sweeps
 6075 REM MODES-FILL-works in anymode, "f"=solid fill, "g"= 50% fill,"h"=stripes. must be inside area to be filled. Must be a right side. tone sounds on complete. 
 6080 REM MODES-COPY- to copy an object on screen,"q" to form flashing box around object. while still flashing, and around objecthit "w" for copy-move box with arrow or jystck-increase or decrease size with "a"or"s", firebotton places object, takes awhile towork, wait 30 secs or so."d" to get out of copy mode.
 6085 REM KEYS USED
 6090 REM "1"-INK SELECT
 6095 REM "2"-Border Select
 6100 REM "3"-SAVE page
 6105 REM "4"-LOAD page
 6110 REM "5"-left arrow
 6115 REM "6"-down arrow
 6120 REM "7"-up arrow
 6125 REM "8"-right arrow
 6130 REM "0"-CLS with caps shift
 6135 REM "q"-Box mode
 6140 REM "w"-copy mode
 6145 REM "e"-Erase mode
 6150 REM "r"-Ray mode
 6155 REM "t"-paper select
 6160 REM "y"-Global paper
 6165 REM "u"-ink change
 6170 REM "i"-Global Ink
 6175 REM "o"-Print page-2040
 6180 REM "p"-Modify paper
 6185 REM "a"-increase arc/copy
 6190 REM "s"-decrease arc/copy
 6195 REM "d"-DRAW mode
 6200 REM "f"-FILL mode
 6205 REM "g"-50% Fill mode
 6210 REM "h"-fill striped
 6215 REM "l"-LINE mode-arc reset
 6220 REM "z"-1 space skip
 6225 REM "x"-2 space skip
 6230 REM "c"-Circle mode
 6235 REM "b"-BRUSH mode
 6240 REM "m"-ink modify
 8000 REM -startup-
 8010 BORDER NOT PI: LET bord=NOT PI: LET ink=NOT PI: PAPER 7: INK 9: OVER 1: INVERSE NOT PI: BRIGHT NOT PI: CLS : INK 8: PAPER 8
 8020 DIM x(14,PI): DIM y(14,PI): FOR i=1 TO 10: FOR a=1 TO 3: READ x(i,a),y(i,a): NEXT a: NEXT i
 8030 FOR i=11 TO 14: READ x(i,1),y(i,1): NEXT i
 8040 LET e=0: LET x=100: LET y=x: LET s=0
 8050 DIM c$(8,7): FOR i=1 TO 8: READ c$(i): NEXT i
 8060 LET arc=0
 8190 LET i$="d": GO SUB 5020: GO TO 30
 8200 REM -modeprint-
 8210 ON ERR GO TO 8230: POKE 23659,0: PRINT AT 22,0; OVER 0; INK 0; PAPER 7;m$,("(erase)" AND e),c$(ink+1),(a$ AND (arc1 AND arc))
 8230 POKE 23659,2: ON ERR GO TO 200: RETURN 
 9500 DATA NOT PI,1,NOT PI,2,NOT PI,3,NOT PI,-1,NOT PI,-2,NOT PI,-3,NOT PI,NOT PI,NOT PI,NOT PI,NOT PI,NOT PI,-1,NOT PI,-2,NOT PI,-3,NOT PI,-1,1,-2,2,-3,3,-1,-1,-2,-2,-3,-3,NOT PI,NOT PI,NOT PI,NOT PI,NOT PI,NOT PI,1,NOT PI,2,NOT PI,3,NOT PI,1,1,2,2,3,3,1,-1,2,-2,3,-3
 9510 DATA -8,0,0,-8,0,8,8,0
 9520 DATA "Black","Blue","Red","Magenta","Green","Cyan","Yellow","White"
 9998 SAVE "PAINTsinc" LINE 0: BEEP .01,.1: VERIFY "": BEEP 1,2: BEEP .2,.5

People

No people associated with this content.

Scroll to Top