Pixel Sketch and Graphic Editor

Developer(s): Stan Lemke
Date: 1985
Type: Program
Platform(s): TS 2068

Graphics design program that works with the standard, extended color and high resolution video modes.

Appears on

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

Related Products

Graphics design program that works with the standard, extended color and high resolution video modes. Uses joystick and simple key commands to draw and edit graphic designs.

Gallery

Pixel Sketch and Graphic Editor

Source Code

   10 REM Pixel Sketck             and        Graphic Editor v 2.0\* by  S D Lemke    1985  2144 White Oak  Wichita, KS 67207
   19 PRINT AT VAL "19",NOT PI;" ": LOAD "PS/GE C"CODE 
   20 DIM a$(2,PI): LET a$(SGN PI,SGN PI TO PI)="On ": LET a$(VAL "2",VAL "1" TO PI)="Off": PAPER VAL "1": BORDER VAL "1": INK VAL "7": CLS : PRINT AT VAL "10",VAL "10";"Stop Tape": FOR j=SGN PI TO PI: FOR i=VAL "20" TO -20 STEP -1: BEEP .001,i+5*j: NEXT i: FOR i=-20 TO VAL "20" STEP VAL "2": BEEP .01,i+VAL "5"*j: NEXT i: NEXT j: GO SUB VAL "9990": PRINT AT VAL "10",NOT PI;"Press 0 for Standard Video Mode       1 for Extended Color Mode       2 for High Resolution Mode"
   21 PAUSE NOT PI: LET p$=INKEY$: IF p$<"0" OR p$>"2" THEN GO TO VAL "21"
   23 LET mode=VAL p$: POKE VAL "57988",mode: POKE VAL "23609",VAL "10": LET cnct=NOT PI: RANDOMIZE USR VAL "48488": POKE VAL "23606",VAL "84": POKE VAL "23607",VAL "185"
   24 IF mode=VAL "2" THEN POKE VAL "57988",matr: LET mode=matr/VAL "2": PRINT AT VAL "14",VAL "10";"Start Tape": LOAD "hi res"CODE : LET atr=NOT PI: LET patr=NOT PI: LET p0=NOT PI: LET r10=VAL "58535": LET r11=VAL "61585"
   25 DIM f$(32): LET f$="Active Fctns:": CLS : GO SUB VAL "100": ON ERR GO TO VAL "9300": POKE VAL "57980",SGN PI: POKE VAL "57981",NOT PI: POKE VAL "57982",NOT PI: LET k=NOT PI: LET s=SGN PI: LET pr=k: LET b=k: LET f=b: LET e=b
   26 POKE VAL "57993",VAL "atr+64*b+128*f": POKE VAL "57998",NOT PI: POKE VAL "57999",NOT PI: LET L=VAL "22432": POKE VAL "57995",VAL "87": POKE VAL "57996",VAL "160": LET X=NOT PI: LET Y=x
   27 POKE VAL "57992",PEEK l: IF PEEK l>=VAL "128" THEN POKE VAL "57997",PEEK l-VAL "128": GO TO VAL "29"
   28 POKE VAL "57997",PEEK l+VAL "128"
   29 BEEP .05,VAL "50"
   30 POKE L,PEEK 57992: POKE 57991,(1-e)*(s+1)
   33 RANDOMIZE USR r10: LET l=VAL "256*PEEK 57995+PEEK 57996": PRINT #0;AT 0,0;"X = ";VAL "256*PEEK 57981+PEEK 57998";TAB 22;"Y = ";PEEK 57999;TAB 29;"  "'f$: POKE l,PEEK 57997
   35 LET buton=PEEK VAL "57994": IF buton AND cnct THEN GO TO VAL "610"
   36 IF buton THEN GO TO VAL "150"
   40 IF INKEY$="" THEN GO TO 30
   45 LET b$=INKEY$: IF b$="e" OR b$="E" THEN GO SUB VAL "125": GO TO VAL "30"
   46 IF b$="k" OR b$="K" THEN GO SUB VAL "115": GO TO VAL "30"
   50 IF b$>="0" AND b$<="7" THEN LET a=VAL b$: GO SUB VAL "77": GO TO VAL "30"
   55 GO TO VAL "840"
   60 LET pr=SGN PI: GO SUB VAL "190": GO TO VAL "200"
   72 PRINT #0;AT NOT PI,VAL "5";"Indicate Paper Color. ": PAUSE NOT PI: LET p$=INKEY$: IF p$<"0" OR p$>"7" THEN GO TO VAL "72"
   73 LET pv=VAL p$: LET matr=VAL "6"+VAL "8"*(VAL "7"-pv): LET p$="Paper = "+p$+"         ": GO SUB VAL "160": LET p$=STR$ pv: LET b$="p": IF mode>=VAL "2" THEN LET mode=matr/VAL "2": PAPER pv: BORDER pv: INK VAL "7"-pv: CLS : RETURN 
   74 LET ik=atr-patr*VAL "8": LET patr=VAL p$(1): LET atr=patr*VAL "8"+ik: POKE VAL "57993",VAL "atr+64*b+128*f": RETURN 
   75 PRINT #0;AT VAL "0",VAL "5";"Indicate Ink Color. ": PAUSE VAL "0": LET p$=INKEY$: IF p$<"0" OR p$>"7" THEN GO TO VAL "75"
   76 LET a=VAL p$
   80 LET p$="Ink = "+STR$ a+"         ": GO SUB VAL "160": LET atr=patr*VAL "8"+a: POKE VAL "57993",VAL "atr+64*b+128*f"
   90 RETURN 
  100 RANDOMIZE USR VAL "56105": POKE VAL "57993",atr: RANDOMIZE USR r2: IF mode<=VAL "1" THEN OUT 255,2*mode: RETURN 
  110 RANDOMIZE USR r7: OUT 255,2*mode: RETURN 
  115 LET k=NOT k: LET p$="Curser: "+a$(VAL "2"-k,VAL "1" TO VAL "3"): GO SUB VAL "160": POKE VAL "57980",VAL "(3*k+1)": RETURN 
  120 LET b=NOT b: LET p$="Bright: "+a$(VAL "2"-b,VAL "1" TO VAL "3"): GO SUB VAL "160": POKE VAL "57993",VAL "atr+64*b+128*f": RETURN 
  125 LET e=NOT e: LET p$=" Erase: "+a$(VAL "2"-e,VAL "1" TO VAL "3"): GO SUB VAL "160": IF e THEN LET f$(20 TO 24)="Erase"
  126 IF NOT e THEN LET f$(20 TO 24)="     "
  127 RETURN 
  130 LET f=NOT f: LET p$=" Flash: "+a$(VAL "2"-f,VAL "1" TO VAL "3"): GO SUB VAL "160": POKE VAL "57993",VAL "atr+B*64+128*F": RETURN 
  131 RANDOMIZE USR r5: RANDOMIZE USR r7: RANDOMIZE USR r1: CLS : RANDOMIZE USR r4: OUT 255,0: PRINT #0;AT VAL "0",VAL "11";"Rotate": PAUSE VAL "100": GO SUB VAL "1000": RANDOMIZE USR r4
  132 RANDOMIZE USR r9: RANDOMIZE USR r4: GO TO VAL "7020"
  133 PAUSE NOT PI: LET p$=INKEY$
  135 IF p$="Y" OR p$="y" THEN POKE VAL "57993",p0: RANDOMIZE USR r2: PRINT #0;AT VAL "0",VAL "0";TAB VAL "31": OUT 255,2*mode: GO TO VAL "26"
  136 RANDOMIZE USR r6: POKE VAL "57993",p0: RANDOMIZE USR r2: RANDOMIZE USR r3: OUT 255,2*mode: PRINT #0;AT NOT PI,NOT PI,,: GO TO VAL "26"
  140 IF A=VAL "13" THEN GO TO VAL "200"
  150 LET s=NOT s: LET k=NOT PI: POKE VAL "57980",SGN PI: LET p$="  Plot: "+a$(s+1,1 TO PI): GO SUB VAL "160": IF NOT s THEN LET f$(15 TO 18)="Plot"
  151 IF s THEN LET f$(15 TO 18)="    "
  152 GO TO VAL "30"
  160 PRINT #0;AT NOT PI,NOT PI,,: PRINT #0;AT NOT PI,VAL "5";"    ";p$: FOR w=NOT PI TO VAL "100": NEXT w: PRINT #0;AT NOT PI,NOT PI,,: RETURN 
  190 LET p$=" Print: "+a$(VAL "2"-pr,VAL "1" TO PI): GO SUB VAL "160": POKE VAL "57993",VAL "atr+64*b+128*f": POKE VAL "57990",SGN PI: RETURN 
  200 ON ERR GO TO 200: PAUSE NOT PI: LET p$=INKEY$: IF CODE p$<=31 THEN LET pr=NOT PI: GO SUB VAL "190": POKE VAL "57997",NOT PI: POKE VAL "57992",VAL "PEEK (256*PEEK 57995+PEEK 57996)": ON ERR GO TO 9300: GO TO VAL "30"
  210 IF mode<=1 THEN POKE 57989,CODE p$: RANDOMIZE USR r11: PRINT #0;AT NOT PI,NOT PI;"X = ";PEEK 57998;TAB 22;"Y = ";PEEK 57999,: GO TO 200
  220 IF mode>=2 THEN POKE 57989,CODE p$: RANDOMIZE USR r11: PRINT #0;AT NOT PI,NOT PI;"X = ";VAL "256*PEEK 57981+PEEK 57998";TAB 22;"Y = ";PEEK 57999,: GO TO 200
  300 PRINT #0;AT NOT PI,NOT PI,,: RANDOMIZE USR r5: RANDOMIZE USR r1: CLS : OUT 255,0: RETURN 
  310 PRINT #0;AT NOT PI,NOT PI,,: RANDOMIZE USR r7: RANDOMIZE USR r1: CLS : RANDOMIZE USR r4: OUT 255,0: RETURN 
  320 RANDOMIZE USR r6: RANDOMIZE USR r3: OUT 255,2*mode: RETURN 
  400 LET lft=VAL "1"
  405 IF lft THEN PRINT AT chs+VAL "3",VAL "12";"<= "
  406 IF NOT lft THEN PRINT AT chs+VAL "3",VAL "12";" =>"
  407 LET lchs=chs: GO TO VAL "500"
  410 IF chs<=VAL "0" THEN LET chs=chss
  420 IF chs>chss THEN LET chs=VAL "1"
  430 IF chs<>lchs THEN PRINT AT lchs+VAL "3",VAL "12";"   "
  440 GO TO VAL "405"
  450 GO TO (VAL "900"+VAL "8100"*lft)
  500 LET stk=|(1,1)+|(1,2): IF |(2,1) OR |(2,2) THEN GO TO VAL "450"
  510 IF stk=VAL "1" OR stk=VAL "5" OR stk=VAL "9" THEN LET chs=chs-VAL "1"
  520 IF stk=VAL "2" OR stk=VAL "6" OR stk=VAL "10" THEN LET chs=chs+VAL "1"
  530 IF stk=VAL "4" THEN LET lft=VAL "1"
  540 IF stk=VAL "8" THEN LET lft=VAL "0"
  550 GO TO VAL "410"
  600 LET p$="  Connect: "+a$(cnct+SGN PI,SGN PI TO PI): LET cnct=NOT cnct: GO SUB VAL "160": LET xk1=PEEK VAL "57998": LET yk1=PEEK VAL "57999": IF cnct THEN LET f$(VAL "26" TO VAL "32")="Connect"
  601 IF NOT cnct THEN LET f$(VAL "26" TO VAL "32")="       "
  602 RETURN 
  610 PLOT xk1,yk1: DRAW (PEEK VAL "57998")-xk1,(PEEK VAL "57999")-yk1: LET xk1=PEEK VAL "57998": LET yk1=PEEK VAL "57999": POKE VAL "57992",PEEK l: GO TO VAL "30"
  630 CLS : PRINT ''''"Press 1-4 to select a Text Font."''TAB VAL "12";"1 -- Standard";TAB VAL "12";"2 -- Bold";TAB VAL "12";"3 -- Modern";TAB VAL "12";"4 -- Italics"
  640 PAUSE NOT PI: LET b$=INKEY$: IF b$<="0" OR b$>="5" THEN GO TO VAL "640"
  650 CLS : GO TO (VAL "650"+VAL "10"*VAL b$)
  660 RANDOMIZE USR VAL "48488": RETURN 
  670 RANDOMIZE USR VAL "47616": RETURN 
  680 RANDOMIZE USR VAL "47617": RETURN 
  690 RANDOMIZE USR VAL "47618": RETURN 
  700 PRINT ''TAB VAL "10";"Load Font": INPUT "File Name? ";n$: LOAD n$CODE VAL "47700",VAL "768": CLS : RETURN 
  800 LET mi=NOT PI: LET key=SGN PI: LET dbl=mi: PRINT AT VAL "2",VAL "8";"PS/GE Functions";AT VAL "4",mi;"Ink Color","Block Copy"'"Bright","Digitize"'"Flash","Block Erase"'"Paper Color","Fill (shade)"
  810 PRINT AT VAL "8",NOT PI;"Circle","Hard Copy"'"Draw","Inverse"'"Pixel Erase","Screen Load"'"Text","Screen Merge"
  820 PRINT AT VAL "12",NOT PI;"Curser Spd.","Paint"'"Video Mode","Block Rotate"'"Connect","Screen Save"'"Change Fonts","Wide View"'"Load Font","Mirror Image"'"Return","Zoom (close)"
  830 RETURN 
  840 GO SUB VAL "300"
  850 GO SUB VAL "800": LET chs=SGN PI: LET chss=VAL "14": GO TO VAL "400"
  900 LET mi=NOT PI: LET dbl=mi: LET key=SGN PI: IF mode>=VAL "2" THEN GO TO VAL "920"
  901 GO SUB VAL "320": GO TO (VAL "901"+chs)
  902 GO TO VAL "2000"
  903 GO TO VAL "1500"
  904 GO TO VAL "3000"
  905 GO TO VAL "960"
  906 GO SUB VAL "9500": GO TO VAL "30"
  907 GO TO VAL "3300"
  908 GO TO VAL "3100"
  909 GO TO VAL "4000"
  910 GO TO VAL "951"
  911 LET key=NOT PI: GO TO VAL "131"
  912 GO TO VAL "5000"
  913 LET dbl=SGN PI: GO TO VAL "6000"
  914 GO TO VAL "3200"
  915 LET dbl=SGN PI: GO TO VAL "7000"
  916 GO TO VAL "30"
  920 GO SUB VAL "320": IF chs=VAL "3" THEN CLS : RANDOMIZE USR r7: GO TO VAL "30"
  921 IF chs=VAL "7" THEN GO TO VAL "3100"
  922 IF chs=VAL "11" THEN GO TO VAL "5000"
  923 IF chs=VAL "5" THEN GO SUB VAL "9500": GO TO VAL "30"
  925 GO TO VAL "30"
  951 POKE VAL "57990",PEEK VAL "57998": POKE VAL "57989",PEEK VAL "57999": POKE l,PEEK VAL "57992": LET x$="11111111": GO TO VAL "961"
  960 POKE VAL "57990",PEEK VAL "57998": POKE VAL "57989",PEEK VAL "57999": POKE l,PEEK VAL "57992": INPUT #0;AT NOT PI,NOT PI;"Input Shade Code: ";x$: IF LEN x$<>VAL "8" THEN GO TO VAL "960"
  961 FOR i=SGN PI TO VAL "8": IF x$(i)<"0" OR x$(i)>"1" THEN PRINT #0;AT NOT PI,NOT PI;"Improper Data, Try again!     ": PAUSE VAL "90": GO TO VAL "960"
  962 POKE (VAL "57970"+i),VAL x$(i): NEXT i: RANDOMIZE USR r16: GO TO VAL "9200"
  999 GO TO VAL "30"
 1000 LET set=NOT PI: LET bl=NOT PI: IF dbl OR mi THEN LET bl=SGN PI
 1002 POKE VAL "57994",NOT PI: POKE VAL "57986",SGN PI: LET xo=VAL "96": LET xf=VAL "159": LET yo=VAL "119": LET yf=VAL "56": LET xl=VAL "63": LET yl=VAL "63": POKE VAL "57998",VAL "128": POKE VAL "57999",VAL "88": GO TO VAL "1009"
 1005 POKE VAL "57994",NOT PI: POKE VAL "57986",SGN PI: POKE VAL "57998",VAL "128": POKE VAL "57999",VAL "88": LET set=SGN PI: LET key=NOT PI
 1009 LET ks=VAL "0": IF key OR set THEN LET ks=VAL "1"
 1010 RANDOMIZE USR r4: PRINT #0;AT NOT PI,NOT PI;"X= ";xo;" to ";xf;TAB VAL "18";"Y= ";yo;" to ";yf,;" Position Window, then Press Fire": PLOT xo,yo: DRAW xf-xo,NOT PI: DRAW NOT PI,yf-yo: DRAW xo-xf,NOT PI: DRAW NOT PI,yo-yf: IF dbl THEN DRAW VAL "(xl+1)/2-1",NOT PI: DRAW NOT PI,(yf-yo)/VAL "2": DRAW (xo-xf)/VAL "2",NOT PI
 1015 IF mi THEN DRAW VAL "(xl+1)/2-1",NOT PI: DRAW NOT PI,(yf-yo)
 1020 RANDOMIZE USR r10: IF PEEK 57994=1 THEN POKE 57994,NOT PI: POKE VAL "57986",NOT PI: POKE VAL "57990",xo: POKE VAL "57989",yo: POKE VAL "57985",xf: POKE VAL "57987",yf: RETURN 
 1030 LET dxj=SGN (128-PEEK 57998): LET dyj=SGN (88-PEEK 57999): LET xo=xo-dxj*8: LET yo=yo-dyj*8: POKE 57998,128: POKE 57999,88
 1040 IF dxj<>0 OR dyj<>0 THEN GO TO 1110
 1050 IF set THEN GO TO 1020
 1060 LET c$=INKEY$: IF c$="" THEN GO TO 1020
 1065 IF c$>="5" AND c$<="8" AND key=VAL "0" THEN GO TO VAL "1020"
 1070 IF c$="L" OR c$="l" OR c$="8" THEN LET xl=xl+8+bl*8
 1080 IF c$="L" OR c$="l" OR c$="7" THEN LET yl=yl+8+bl*8
 1090 IF c$="S" OR c$="s" OR c$="6" THEN LET yl=yl-8-bl*8
 1100 IF c$="S" OR c$="s" OR c$="5" THEN LET xl=xl-8-bl*8
 1105 IF NOT key AND xl>yl THEN LET xl=yl
 1110 IF xo+xl>255 THEN LET xo=255-xl
 1120 IF xo<0 THEN LET xo=0
 1130 IF yo-yl<0 THEN LET yo=yl
 1140 IF yo>175 THEN LET yo=175
 1150 LET xf=xo+xl: IF xf>255 THEN LET xf=255: LET xl=xf-xo
 1160 IF xl<7+bl*8 THEN LET xl=7+bl*8: LET xf=xo+xl
 1170 LET yf=yo-yl: IF yf<0 THEN LET yf=0: LET yl=yo
 1180 IF yl<7+bl*8 THEN LET yl=7+bl*8: LET yf=yo-yl
 1185 IF NOT (key OR set) AND xl>yl THEN LET xl=yl
 1190 GO TO 1010
 1305 IF mode<=VAL "1" THEN RANDOMIZE USR r5: RANDOMIZE USR r1
 1310 INPUT "Input X distance. ";x$:
 1315 IF PEEK VAL "57998"+VAL x$>VAL "255" OR PEEK VAL "57998"+VAL x$<VAL "0" THEN PRINT #0;AT VAL "1",VAL "0";"X value goes off screen!        ": PAUSE VAL "120": GO TO VAL "1310"
 1320 INPUT "Input Y distance. ";y$:
 1340 IF PEEK VAL "57999"+VAL y$>VAL "175" OR PEEK VAL "57999"+VAL y$<VAL "0" THEN PRINT #0;AT VAL "1",VAL "0";"Y value goes off screen!        ": PAUSE VAL "120": GO TO VAL "1320"
 1350 INPUT "Input ""Arc"" Command. ";z$
 1390 LET ik=atr-8*patr: PLOT INK ik;PEEK VAL "57998",PEEK VAL "57999": DRAW INK ik;VAL x$,VAL y$,VAL z$: GO TO VAL "9200"
 1505 RANDOMIZE USR r8
 1510 GO SUB VAL "310": PRINT #0;AT VAL "0",VAL "10";"Digitize": PAUSE VAL "50": GO SUB VAL "1000"
 1515 LET yf=yf+4
 1520 LET rz=INT ((VAL "175"-yo)/VAL "8"): LET cz=INT (xo/VAL "8"): FOR y=yo TO yf STEP -8: LET r=INT ((175-y)/8): FOR x=xo TO xf STEP 8: LET c=INT (x/8): CLS : PRINT AT 0,10;"Digitize";AT 3,2;"Row: ";r-rz+1;AT 3,17;"Column: ";c-cz+1: FOR i=y TO (y-7) STEP -1: POKE VAL "57990",x: POKE VAL "57989",i
 1525 RANDOMIZE USR r18
 1530 FOR j=0 TO 7: PRINT AT (5+(y-i)*2),(2+j*2);PEEK (57971+j): NEXT j
 1540 PRINT AT (5+(y-i)*2),25;PEEK VAL "57979": POKE USR "m"+y-i,PEEK VAL "57979": NEXT i: PRINT AT 0,20;"\m"
 1550 PRINT #0;AT NOT PI,NOT PI;"Press C to Copy, any other key  to continue Digitize."
 1560 PAUSE NOT PI: LET b$=INKEY$: IF b$="C" OR b$="c" THEN GO SUB VAL "9500": CLS 
 1570 NEXT x: NEXT y: RANDOMIZE USR r6: RANDOMIZE USR r8: RANDOMIZE USR r7: RANDOMIZE USR r6: RANDOMIZE USR r3: OUT 255,mode*2: GO TO VAL "26"
 1605 IF mode<=VAL "1" THEN RANDOMIZE USR r5: RANDOMIZE USR r1
 1610 INPUT "Input Circle Radius.";x$
 1620 IF PEEK VAL "57998"<VAL x$ OR PEEK VAL "57999"<VAL x$ OR (PEEK VAL "57998"+VAL x$)>=VAL "256" OR (PEEK VAL "57999"+VAL x$)>=VAL "176" THEN PRINT #0;AT VAL "1",VAL "0";"Circle goes off screen!        ": PAUSE VAL "120": GO TO VAL "1610"
 1630 LET ik=atr-VAL "8"*patr: CIRCLE INK ik;PEEK VAL "57998",PEEK VAL "57999",VAL x$: GO TO VAL "9200"
 2010 GO SUB VAL "310": PRINT #0;AT NOT PI,VAL "8";"Block Copy: FROM": PAUSE VAL "100": GO SUB VAL "1000": RANDOMIZE USR r6: PRINT #0;AT VAL "0",VAL "8";"Block Copy: TO": PAUSE VAL "100": LET sxo=xo: LET sxf=xf: LET syo=yo: LET syf=yf: GO SUB VAL "1005": POKE VAL "57984",xo: POKE VAL "57983",yo: POKE VAL "57990",sxo: POKE VAL "57989",syo: POKE VAL "57985",sxf: POKE VAL "57987",syf: RANDOMIZE USR r4: RANDOMIZE USR r15: RANDOMIZE USR r4
 2020 GO TO VAL "7020"
 2100 INPUT #0;AT NOT PI,NOT PI;"File Name ? ";n$: IF n$=" " THEN LET n$=""
 2110 RETURN 
 3010 GO SUB VAL "310": PRINT #0;AT VAL "0",VAL "8";"Block Erase": PAUSE VAL "100": GO SUB VAL "1000": RANDOMIZE USR r4: POKE VAL "57984",VAL "0": RANDOMIZE USR r14
 3020 GO TO VAL "7020"
 3105 OUT 255,0: CLS : PRINT AT VAL "0",VAL "10";"Start Tape"
 3110 OUT VAL "255",VAL "0": GO SUB VAL "2100": LOAD n$SCREEN$ 
 3120 IF mode>=VAL "1" THEN RANDOMIZE USR r5: LOAD n$CODE VAL "24576",VAL "6912": RANDOMIZE USR r6
 3130 OUT VAL "255",VAL "2"*mode: GO TO VAL "30"
 3210 LET mi=VAL "1": GO SUB VAL "310": PRINT #0;AT VAL "0",VAL "8";"Mirror Image": PAUSE VAL "100": GO SUB VAL "1000": RANDOMIZE USR r4: POKE VAL "57985",xo+(xl+VAL "1")/VAL "2"-VAL "1": RANDOMIZE USR r17: RANDOMIZE USR r4
 3220 GO TO VAL "7020"
 3310 GO SUB VAL "310": PRINT #0;AT VAL "0",VAL "12";"Inverse": PAUSE VAL "100": GO SUB VAL "1000": RANDOMIZE USR r4: RANDOMIZE USR r19
 3320 GO TO VAL "7020"
 4005 GO SUB VAL "300": GO SUB VAL "2100": PRINT AT NOT PI,VAL "10";"Start Tape": LOAD n$SCREEN$ : RANDOMIZE USR r7: CLS : PRINT AT VAL "6",NOT PI;"Press:  0  --  to merge the new            screen into the old."'TAB VAL "8";"1  --  to merge the old            screen into the new."'TAB VAL "8";"2  --  to erase the new            screen and return."'TAB VAL "8";"3  --  to erase the old            screen and return."
 4006 PAUSE VAL "0": LET p$=INKEY$: IF CODE p$<CODE "0" OR CODE p$>CODE "4" THEN : GO TO VAL "4006"
 4007 IF CODE p$=CODE "0" THEN RANDOMIZE USR r4: GO TO VAL "4015"
 4008 IF CODE p$=CODE "1" THEN RANDOMIZE USR r6: RANDOMIZE USR r8: GO TO VAL "4015"
 4009 IF CODE p$=CODE "2" THEN GO TO VAL "136"
 4010 IF CODE p$=CODE "3" THEN RANDOMIZE USR r8: CLS : RANDOMIZE USR r1: GO TO VAL "136"
 4015 RANDOMIZE USR r7: CLS : RANDOMIZE USR r4: PRINT #0;AT VAL "0",VAL "8";"Picture Merge: FROM": PAUSE VAL "100": GO SUB VAL "1000": RANDOMIZE USR r6: PRINT #0;AT VAL "0",VAL "8";"Picture Merge: TO": RANDOMIZE USR r8: PAUSE VAL "100": LET sxo=xo: LET sxf=xf: LET syo=yo: LET syf=yf: RANDOMIZE USR r7: GO SUB VAL "1005": POKE VAL "57984",xo: POKE VAL "57983",yo: POKE VAL "57990",sxo: POKE VAL "57989",syo: POKE VAL "57985",sxf: POKE VAL "57987",syf: RANDOMIZE USR r6: RANDOMIZE USR r8: RANDOMIZE USR r15: RANDOMIZE USR r4
 4020 GO TO VAL "7020"
 5010 RANDOMIZE USR r5: RANDOMIZE USR r3: OUT VAL "255",VAL "0": GO SUB VAL "2100": SAVE n$SCREEN$ 
 5020 IF mode>=VAL "1" THEN SAVE n$CODE VAL "24576",VAL "6912"
 5030 OUT VAL "255",VAL "2"*mode: GO TO VAL "30"
 6010 GO SUB VAL "310": PRINT #0;AT VAL "0",VAL "10";"Wide View": PAUSE VAL "100": GO SUB VAL "1000": RANDOMIZE USR r4: PRINT #0;AT VAL "0",VAL "10";" Working ": POKE VAL "57984",VAL "32"
 6020 RANDOMIZE USR r14: RANDOMIZE USR r13: RANDOMIZE USR r4: GO TO VAL "7020"
 7010 GO SUB VAL "310": PRINT #0;AT VAL "0",VAL "10";"Close View": PAUSE VAL "100": GO SUB VAL "1000": RANDOMIZE USR r4: POKE VAL "57985",VAL "xo+(xl+1)/2-1": POKE VAL "57987",VAL "yo-(yl+1)/2-1": RANDOMIZE USR r12: RANDOMIZE USR r4
 7020 PRINT #0;AT NOT PI,NOT PI;"            Save ?","        Press ""Y"" or ""N""",: GO TO VAL "133"
 9000 IF chs=VAL "5" OR chs=VAL "6" OR chs=VAL "8" OR chs>=VAL "14" THEN GO SUB VAL "320"
 9020 GO TO (VAL "9020"+chs)
 9021 GO SUB VAL "75": GO TO VAL "850"
 9022 GO SUB VAL "120": GO TO VAL "850"
 9023 GO SUB VAL "130": GO TO VAL "850"
 9024 GO SUB VAL "72": GO TO VAL "850"
 9025 GO TO VAL "1600"
 9026 GO TO VAL "1300"
 9027 GO SUB VAL "125": GO TO VAL "850"
 9028 GO TO VAL "60"
 9029 GO SUB VAL "115": GO TO VAL "850"
 9030 GO SUB VAL "9100": GO TO VAL "850"
 9031 GO SUB VAL "600": GO TO VAL "850"
 9032 GO SUB VAL "630": GO TO VAL "850"
 9033 GO SUB VAL "700": GO TO VAL "850"
 9034 GO TO VAL "30"
 9100 IF mode>=VAL "2" THEN RETURN 
 9105 CLS : PRINT AT 10,NOT PI;"Press 0 for Standard Video Mode       1 for Extended Color Mode"
 9110 PAUSE NOT PI: LET p$=INKEY$: IF p$<"0" OR p$>"1" THEN GO TO VAL "9110"
 9130 LET mode=VAL p$: IF mode=2 THEN LET mode=matr/2
 9140 POKE VAL "57988",mode: CLS : RETURN 
 9200 PRINT #0;AT NOT PI,NOT PI;"            Save ?","        Press ""Y"" or ""N""",
 9210 PAUSE NOT PI: LET p$=INKEY$
 9230 IF p$="Y" OR p$="y" THEN POKE VAL "57993",p0: PRINT #0;AT NOT PI,NOT PI,,: OUT 255,2*mode: GO TO VAL "26"
 9240 RANDOMIZE USR r6: POKE VAL "57993",p0: RANDOMIZE USR r3: OUT 255,2*mode: PRINT #0;AT NOT PI,NOT PI,,: GO TO VAL "26"
 9300 IF mode>=VAL "2" THEN ON ERR RESET : STOP 
 9305 OUT 255,NOT PI: PRINT #0;AT NOT PI,NOT PI;"Error!  Error!  Error!  Error!  ": FOR w=VAL "1" TO VAL "100": NEXT w: PRINT #0;AT SGN PI,NOT PI;"   Press Enter to Continue      "
 9310 PAUSE NOT PI: ON ERR RESET : IF INKEY$=CHR$ 13 THEN ON ERR GO TO VAL "9300": GO TO VAL "136"
 9320 STOP 
 9505 GO SUB VAL "9800": PRINT #0;AT NOT PI,NOT PI,,,,
 9510 IF pt=VAL "2" THEN GO TO VAL "9600"
 9515 IF mode<=VAL "2" THEN COPY : RETURN 
 9520 RANDOMIZE USR VAL "56150": RETURN 
 9610 LET cs=VAL "55945": INPUT AT NOT PI,NOT PI;"Input Picture Size.   (0 = Small Size,   1 = Large Size): ";sz: POKE cs,NOT sz: LET sz=VAL "0": IF mode>=VAL "2" THEN LET sz=VAL "1"
 9615 POKE cs+VAL "1",sz
 9620 LET cs=VAL "55977": INPUT AT NOT PI,NOT PI;"Input Number of Bytes to define the Graphics Comnd: ";sz
 9630 IF sz THEN POKE cs,sz: FOR w=VAL "1" TO sz: INPUT ("Input Byte ";w;" of ";sz;" ";);gc: POKE cs+w,gc: NEXT w
 9635 LET cs=VAL "55997": INPUT AT NOT PI,NOT PI;"  Input Number of leading Blank Columns: ";sz: POKE cs,sz+VAL "1"
 9640 INPUT AT NOT PI,NOT PI;"    Ready?   Enter 0 to Abort.          Enter 1 to print.  ";gc: IF NOT gc THEN RETURN 
 9650 RANDOMIZE USR VAL "62823": RETURN 
 9810 PRINT #0;AT NOT PI,NOT PI;"Press 1 for the 2040 Printer          2 for a Full Size Printer "
 9830 PAUSE NOT PI: LET p$=INKEY$: IF p$<"1" OR p$>"2" THEN GO TO VAL "9830"
 9840 LET pt=VAL p$: RETURN 
 9991 GO SUB VAL "9998": CLS : RANDOMIZE USR r6: PAUSE VAL "30": POKE VAL "57990",NOT PI: POKE VAL "57985",VAL "255": POKE VAL "57989",VAL "175": POKE VAL "57987",NOT PI: RANDOMIZE USR r19: RANDOMIZE USR r19: PAUSE VAL "90": CLS : PRINT AT 10,NOT PI;"    Indicate Paper Color.           Press a number (0 to 7)."
 9992 PAUSE NOT PI: LET p$=INKEY$: IF p$<"0" OR p$>"7" THEN GO TO VAL "9992"
 9993 LET patr=VAL p$: PAPER patr: BORDER patr: INK VAL "9": CLS : LET atr=ATTR (NOT PI,NOT PI): LET p0=atr
 9994 LET matr=VAL "6+8*(7-patr)"
 9997 RETURN 
 9998 LET r1=VAL "56000": LET r2=VAL "56014": LET r3=VAL "56031": LET r4=VAL "56045": LET r5=VAL "56057": LET r6=VAL "56069": LET r7=VAL "56081": LET r8=VAL "56093": LET r9=VAL "58000": LET r10=VAL "58509": LET r11=VAL "60656": LET r12=VAL "61077": LET r13=VAL "61666": LET r14=VAL "62304": LET r15=VAL "62497": LET r16=VAL "49386": LET r17=VAL "56243": LET r18=VAL "57148": LET r19=VAL "57667": RETURN 
 9999 SAVE "PS/GE" LINE VAL "10": SAVE "PS/GE C"CODE 47616,15500: STOP 
   10 REM Pixel Sketck             and        Graphic Editor v 2.0\* by  S D Lemke    1985  2144 White Oak  Wichita, KS 67207
   19 PRINT AT VAL "19",NOT PI;" ": LOAD "PS/GE C"CODE 
   20 DIM a$(2,PI): LET a$(SGN PI,SGN PI TO PI)="On ": LET a$(VAL "2",VAL "1" TO PI)="Off": PAPER VAL "1": BORDER VAL "1": INK VAL "7": CLS : PRINT AT VAL "10",VAL "10";"Stop Tape": FOR j=SGN PI TO PI: FOR i=VAL "20" TO -20 STEP -1: BEEP .001,i+5*j: NEXT i: FOR i=-20 TO VAL "20" STEP VAL "2": BEEP .01,i+VAL "5"*j: NEXT i: NEXT j: GO SUB VAL "9990": PRINT AT VAL "10",NOT PI;"Press 0 for Standard Video Mode       1 for Extended Color Mode       2 for High Resolution Mode"
   21 PAUSE NOT PI: LET p$=INKEY$: IF p$<"0" OR p$>"2" THEN GO TO VAL "21"
   23 LET mode=VAL p$: POKE VAL "57988",mode: POKE VAL "23609",VAL "10": LET cnct=NOT PI: RANDOMIZE USR VAL "48488": POKE VAL "23606",VAL "84": POKE VAL "23607",VAL "185"
   24 IF mode=VAL "2" THEN POKE VAL "57988",matr: LET mode=matr/VAL "2": PRINT AT VAL "14",VAL "10";"Start Tape": LOAD "hi res"CODE : LET atr=NOT PI: LET patr=NOT PI: LET p0=NOT PI: LET r10=VAL "58535": LET r11=VAL "61585"
   25 DIM f$(32): LET f$="Active Fctns:": CLS : GO SUB VAL "100": ON ERR GO TO VAL "9300": POKE VAL "57980",SGN PI: POKE VAL "57981",NOT PI: POKE VAL "57982",NOT PI: LET k=NOT PI: LET s=SGN PI: LET pr=k: LET b=k: LET f=b: LET e=b
   26 POKE VAL "57993",VAL "atr+64*b+128*f": POKE VAL "57998",NOT PI: POKE VAL "57999",NOT PI: LET L=VAL "22432": POKE VAL "57995",VAL "87": POKE VAL "57996",VAL "160": LET X=NOT PI: LET Y=x
   27 POKE VAL "57992",PEEK l: IF PEEK l>=VAL "128" THEN POKE VAL "57997",PEEK l-VAL "128": GO TO VAL "29"
   28 POKE VAL "57997",PEEK l+VAL "128"
   29 BEEP .05,VAL "50"
   30 POKE L,PEEK 57992: POKE 57991,(1-e)*(s+1)
   33 RANDOMIZE USR r10: LET l=VAL "256*PEEK 57995+PEEK 57996": PRINT #0;AT 0,0;"X = ";VAL "256*PEEK 57981+PEEK 57998";TAB 22;"Y = ";PEEK 57999;TAB 29;"  "'f$: POKE l,PEEK 57997
   35 LET buton=PEEK VAL "57994": IF buton AND cnct THEN GO TO VAL "610"
   36 IF buton THEN GO TO VAL "150"
   40 IF INKEY$="" THEN GO TO 30
   45 LET b$=INKEY$: IF b$="e" OR b$="E" THEN GO SUB VAL "125": GO TO VAL "30"
   46 IF b$="k" OR b$="K" THEN GO SUB VAL "115": GO TO VAL "30"
   50 IF b$>="0" AND b$<="7" THEN LET a=VAL b$: GO SUB VAL "77": GO TO VAL "30"
   55 GO TO VAL "840"
   60 LET pr=SGN PI: GO SUB VAL "190": GO TO VAL "200"
   72 PRINT #0;AT NOT PI,VAL "5";"Indicate Paper Color. ": PAUSE NOT PI: LET p$=INKEY$: IF p$<"0" OR p$>"7" THEN GO TO VAL "72"
   73 LET pv=VAL p$: LET matr=VAL "6"+VAL "8"*(VAL "7"-pv): LET p$="Paper = "+p$+"         ": GO SUB VAL "160": LET p$=STR$ pv: LET b$="p": IF mode>=VAL "2" THEN LET mode=matr/VAL "2": PAPER pv: BORDER pv: INK VAL "7"-pv: CLS : RETURN 
   74 LET ik=atr-patr*VAL "8": LET patr=VAL p$(1): LET atr=patr*VAL "8"+ik: POKE VAL "57993",VAL "atr+64*b+128*f": RETURN 
   75 PRINT #0;AT VAL "0",VAL "5";"Indicate Ink Color. ": PAUSE VAL "0": LET p$=INKEY$: IF p$<"0" OR p$>"7" THEN GO TO VAL "75"
   76 LET a=VAL p$
   80 LET p$="Ink = "+STR$ a+"         ": GO SUB VAL "160": LET atr=patr*VAL "8"+a: POKE VAL "57993",VAL "atr+64*b+128*f"
   90 RETURN 
  100 RANDOMIZE USR VAL "56105": POKE VAL "57993",atr: RANDOMIZE USR r2: IF mode<=VAL "1" THEN OUT 255,2*mode: RETURN 
  110 RANDOMIZE USR r7: OUT 255,2*mode: RETURN 
  115 LET k=NOT k: LET p$="Curser: "+a$(VAL "2"-k,VAL "1" TO VAL "3"): GO SUB VAL "160": POKE VAL "57980",VAL "(3*k+1)": RETURN 
  120 LET b=NOT b: LET p$="Bright: "+a$(VAL "2"-b,VAL "1" TO VAL "3"): GO SUB VAL "160": POKE VAL "57993",VAL "atr+64*b+128*f": RETURN 
  125 LET e=NOT e: LET p$=" Erase: "+a$(VAL "2"-e,VAL "1" TO VAL "3"): GO SUB VAL "160": IF e THEN LET f$(20 TO 24)="Erase"
  126 IF NOT e THEN LET f$(20 TO 24)="     "
  127 RETURN 
  130 LET f=NOT f: LET p$=" Flash: "+a$(VAL "2"-f,VAL "1" TO VAL "3"): GO SUB VAL "160": POKE VAL "57993",VAL "atr+B*64+128*F": RETURN 
  131 RANDOMIZE USR r5: RANDOMIZE USR r7: RANDOMIZE USR r1: CLS : RANDOMIZE USR r4: OUT 255,0: PRINT #0;AT VAL "0",VAL "11";"Rotate": PAUSE VAL "100": GO SUB VAL "1000": RANDOMIZE USR r4
  132 RANDOMIZE USR r9: RANDOMIZE USR r4: GO TO VAL "7020"
  133 PAUSE NOT PI: LET p$=INKEY$
  135 IF p$="Y" OR p$="y" THEN POKE VAL "57993",p0: RANDOMIZE USR r2: PRINT #0;AT VAL "0",VAL "0";TAB VAL "31": OUT 255,2*mode: GO TO VAL "26"
  136 RANDOMIZE USR r6: POKE VAL "57993",p0: RANDOMIZE USR r2: RANDOMIZE USR r3: OUT 255,2*mode: PRINT #0;AT NOT PI,NOT PI,,: GO TO VAL "26"
  140 IF A=VAL "13" THEN GO TO VAL "200"
  150 LET s=NOT s: LET k=NOT PI: POKE VAL "57980",SGN PI: LET p$="  Plot: "+a$(s+1,1 TO PI): GO SUB VAL "160": IF NOT s THEN LET f$(15 TO 18)="Plot"
  151 IF s THEN LET f$(15 TO 18)="    "
  152 GO TO VAL "30"
  160 PRINT #0;AT NOT PI,NOT PI,,: PRINT #0;AT NOT PI,VAL "5";"    ";p$: FOR w=NOT PI TO VAL "100": NEXT w: PRINT #0;AT NOT PI,NOT PI,,: RETURN 
  190 LET p$=" Print: "+a$(VAL "2"-pr,VAL "1" TO PI): GO SUB VAL "160": POKE VAL "57993",VAL "atr+64*b+128*f": POKE VAL "57990",SGN PI: RETURN 
  200 ON ERR GO TO 200: PAUSE NOT PI: LET p$=INKEY$: IF CODE p$<=31 THEN LET pr=NOT PI: GO SUB VAL "190": POKE VAL "57997",NOT PI: POKE VAL "57992",VAL "PEEK (256*PEEK 57995+PEEK 57996)": ON ERR GO TO 9300: GO TO VAL "30"
  210 IF mode<=1 THEN POKE 57989,CODE p$: RANDOMIZE USR r11: PRINT #0;AT NOT PI,NOT PI;"X = ";PEEK 57998;TAB 22;"Y = ";PEEK 57999,: GO TO 200
  220 IF mode>=2 THEN POKE 57989,CODE p$: RANDOMIZE USR r11: PRINT #0;AT NOT PI,NOT PI;"X = ";VAL "256*PEEK 57981+PEEK 57998";TAB 22;"Y = ";PEEK 57999,: GO TO 200
  300 PRINT #0;AT NOT PI,NOT PI,,: RANDOMIZE USR r5: RANDOMIZE USR r1: CLS : OUT 255,0: RETURN 
  310 PRINT #0;AT NOT PI,NOT PI,,: RANDOMIZE USR r7: RANDOMIZE USR r1: CLS : RANDOMIZE USR r4: OUT 255,0: RETURN 
  320 RANDOMIZE USR r6: RANDOMIZE USR r3: OUT 255,2*mode: RETURN 
  400 LET lft=VAL "1"
  405 IF lft THEN PRINT AT chs+VAL "3",VAL "12";"<= "
  406 IF NOT lft THEN PRINT AT chs+VAL "3",VAL "12";" =>"
  407 LET lchs=chs: GO TO VAL "500"
  410 IF chs<=VAL "0" THEN LET chs=chss
  420 IF chs>chss THEN LET chs=VAL "1"
  430 IF chs<>lchs THEN PRINT AT lchs+VAL "3",VAL "12";"   "
  440 GO TO VAL "405"
  450 GO TO (VAL "900"+VAL "8100"*lft)
  500 LET stk=|(1,1)+|(1,2): IF |(2,1) OR |(2,2) THEN GO TO VAL "450"
  510 IF stk=VAL "1" OR stk=VAL "5" OR stk=VAL "9" THEN LET chs=chs-VAL "1"
  520 IF stk=VAL "2" OR stk=VAL "6" OR stk=VAL "10" THEN LET chs=chs+VAL "1"
  530 IF stk=VAL "4" THEN LET lft=VAL "1"
  540 IF stk=VAL "8" THEN LET lft=VAL "0"
  550 GO TO VAL "410"
  600 LET p$="  Connect: "+a$(cnct+SGN PI,SGN PI TO PI): LET cnct=NOT cnct: GO SUB VAL "160": LET xk1=PEEK VAL "57998": LET yk1=PEEK VAL "57999": IF cnct THEN LET f$(VAL "26" TO VAL "32")="Connect"
  601 IF NOT cnct THEN LET f$(VAL "26" TO VAL "32")="       "
  602 RETURN 
  610 PLOT xk1,yk1: DRAW (PEEK VAL "57998")-xk1,(PEEK VAL "57999")-yk1: LET xk1=PEEK VAL "57998": LET yk1=PEEK VAL "57999": POKE VAL "57992",PEEK l: GO TO VAL "30"
  630 CLS : PRINT ''''"Press 1-4 to select a Text Font."''TAB VAL "12";"1 -- Standard";TAB VAL "12";"2 -- Bold";TAB VAL "12";"3 -- Modern";TAB VAL "12";"4 -- Italics"
  640 PAUSE NOT PI: LET b$=INKEY$: IF b$<="0" OR b$>="5" THEN GO TO VAL "640"
  650 CLS : GO TO (VAL "650"+VAL "10"*VAL b$)
  660 RANDOMIZE USR VAL "48488": RETURN 
  670 RANDOMIZE USR VAL "47616": RETURN 
  680 RANDOMIZE USR VAL "47617": RETURN 
  690 RANDOMIZE USR VAL "47618": RETURN 
  700 PRINT ''TAB VAL "10";"Load Font": INPUT "File Name? ";n$: LOAD n$CODE VAL "47700",VAL "768": CLS : RETURN 
  800 LET mi=NOT PI: LET key=SGN PI: LET dbl=mi: PRINT AT VAL "2",VAL "8";"PS/GE Functions";AT VAL "4",mi;"Ink Color","Block Copy"'"Bright","Digitize"'"Flash","Block Erase"'"Paper Color","Fill (shade)"
  810 PRINT AT VAL "8",NOT PI;"Circle","Hard Copy"'"Draw","Inverse"'"Pixel Erase","Screen Load"'"Text","Screen Merge"
  820 PRINT AT VAL "12",NOT PI;"Curser Spd.","Paint"'"Video Mode","Block Rotate"'"Connect","Screen Save"'"Change Fonts","Wide View"'"Load Font","Mirror Image"'"Return","Zoom (close)"
Scroll to Top