Products: Pixel Sketch and Graphics 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.
Content
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)"