5 'SKETCH.BA (c) 1989 by R.H.Pigford 10 'uses GRAFIX.CO (c) 1989 R.H.Pigford 15 GOTO285 20 A$=INKEY$:IFA$=""THEN20ELSERETURN 25 'pixel editing 30 CLS 35 D=1 40 A$=INKEY$ 45 IFA$=>"a"THENIFA$<="z"THENA$=CHR$(ASC(A$)AND223) 50 IFA$=CHR$(32)THEND=1-D:GOTO165 55 IFA$=CHR$(85)THENX=X-1:GOTO165'U 60 IFA$=CHR$(1)THENX=X-12:GOTO165's-lft 65 IFA$=CHR$(79)THENX=X+1:GOTO165'O 70 IFA$=CHR$(6)THENX=X+12:GOTO165's-rt 75 IFA$=CHR$(56)THENY=Y-1:GOTO165'8 80 IFA$=CHR$(20)THENY=Y-16:GOTO165's-up 85 IFA$=CHR$(75)THENY=Y+1:GOTO165'K 90 IFA$=CHR$(2)THENY=Y+16:GOTO165's-dn 95 IFA$=CHR$(55)THENX=X-1:Y=Y-1:GOTO165'7 100 IFA$=CHR$(57)THENX=X+1:Y=Y-1:GOTO165'9 105 IFA$=CHR$(74)THENX=X-1:Y=Y+1:GOTO165'J 110 IFA$=CHR$(76)THENX=X+1:Y=Y+1:GOTO165'L 115 IFA$=CHR$(17)THENX=0:GOTO165'ctrl+lft arrow 120 IFA$=CHR$(18)THENX=239:GOTO165'ctrl+rt arrow 125 IFA$=CHR$(23)THENY=0:GOTO165'ctrl+up arrow 130 IFA$=CHR$(26)THENY=63:GOTO165'ctrl+dn arrow 135 IFA$="T"ORA$="t"THENSOUND1000,2:GOTO195 140 IFA$="D"THEN555 145 IFFD=1THENGOSUB585 150 IFA$=CHR$(4)THENSOUND15000,2:FD=0 155 IFA$="/"THEN265 160 IFA$=CHR$(27)THEN330 165 IFX<0THENX=0 170 IFX>239THENX=239 175 IFY<0THENY=0 180 IFY>63THENY=63 185 IFD=1THENPSET(X,Y)ELSEPRESET(X,Y) 190 GOTO 40 'loop back 195 'find cursor position 200 C=INT(X/6):R=INT(Y/8):L=(R*40)+C 205 L1=L'save first curs vals 210 L$=INKEY$:IFL$=""THEN210 215 IFL$=CHR$(13)THENSOUND5000,2:GOTO40 220 IFL$=CHR$(8)THENL=L-1:GOSUB250:PRINT@L," ";:GOTO210 225 PRINT@L,L$;:L=L+1:GOSUB230:GOTO210 230 'check out of limits 235 IFL<0THENL=0 240 IFL>319THENL=319 245 RETURN 250 'check to see if going back too far 255 IFLCHR$(13)THEN305 315 ONERRORGOTO325:LOADM"GRAFIX":GOSUB800 320 E$=CHR$(27):GOTO 330 325 CLS:BEEP:PRINT"Could NOT loadm "E$"p GRAFIX.CO "E$"q!":PRINT"Hit <"E$"pANY"E$"q> key to BAILOUT!";:GOSUB20:MENU 330 CALL16964' enable scroling 335 CLS:GOSUB725:PRINT@40,"uit":PRINT@55,"nstructions" 340 PRINT@80,"ew Sketch":PRINT@95,"dit EXIST.CO file.":LINE(0,7)-(239,7),1 345 LINE(2,30)-(235,63),1,B:LINE(76,20)-(85,20),1:LINE-(85,30),1:LINE(216,20)-(225,20),1:LINE-(225,30),1 350 PRINT@161,E$"p/"E$"q Screen SAVE + Multiple PRINT Functs." 355 PRINT@201,E$"pT"E$"q Type TEXT at dot then "E$"pENTER"E$"q" 360 PRINT@241,E$"pD"E$"q Set 1st dot, "E$"pD"E$"q DRAW LINE to 2nd dot." 365 PRINT@281,E$"pESC"E$"q Erase picture and return here.";:LINE(5,32)-(5,63),1 370 A$="":GOSUB20:A=INSTR("QqIiNnEe",A$):IFA=0THEN370ELSEON(A+1)/2GOTO375,600,380,385 375 MENU 380 CALL16959:GOTO 25'no scroll 385 CALL16959:GOTO 390'no scroll 390 'look for existing Ram .CO filename then pass it's start addr to GRAFIX 395 CLS:PRINT"Enter your existing PIX.CO ":PRINT"filename (w/o ext.).":INPUTSI$:IFLEN(SI$)=0THENBEEP:GOTO330 400 L=LEN(SI$):IFL>6THENBEEP:GOTO330 405 N$=SI$:GOSUB510:SI$=N$:IFFE=1THEN395 410 PRINTE$+CHR$(M):SI$=SI$+".CO" 415 PRINTSI$+" Correct? " 420 GOSUB20:IFA$="N"ORA$="n"THEN395 425 SS$=" " 430 SP$=SI$:T=INSTR(SP$,"."):IFTTHENSP$=LEFT$(SP$,T-1) 435 SP$=LEFT$(SP$+SS$,6):FORD=63919TO64128STEP11:T=PEEK(D) 437 IFT=160ANDPEEK(D+3)=ASC(SP$)THENFORI=2TO6:IFPEEK(D+2+I)=ASC(MID$(SP$,I))THENNEXTI:DS=256*PEEK(D+2)+PEEK(D+1):SP$=SP$+".CO":GOTO445 440 NEXTD:SP$=SP$+".CO":PRINTSP$+" NOT FOUND!";:BEEP:FORT=1TO300:NEXTT:GOTO330 445 'get appropriate RAM addr of .CO file and pass to GRAFIX.CO 450 DS=DS+6 'move to actual file data 455 'go to GRAFIX.CO to put File on LCD 460 CALL FZ#,,DS 'pass the RAM start Addr to HL register- FILLCD: 465 GOTO 35 470 CLS:PRINT"<1> Save Buffer to RAM File." 475 PRINT"<2> Return to EDITING Sketch." 477 PRINT"<3> Go to Main MENU (lose this sketch)." 480 GOSUB20:A=VAL(A$):IFA<1ORA>3THENBEEP:GOTO480ELSEONAGOTO485,482,330 482 CALL FZ#,,BS#:CALL16959:GOTO35 485 CLS:PRINT"Save Sketch File";:INPUTSN$:N$=SN$:GOSUB510:IFFE=1THEN470 490 SN$=A$:PRINTSN$+".CO"; 495 PRINT" Correct? ":GOSUB20:IFA$="N"ORA$="n"THEN485 500 SX$=SN$:T=0:T=INSTR(SX$,"."):IFTTHENSN$=LEFT$(SX$,T-1) 502 PRINT"Hit F4 to run SKETCH.BA again!" 505 SAVEMSN$,BS,BE-1,0 'dumps to BASIC 510 FE=0:A$="":B$="":C$=""'capitalize 515 FOR W=1TOLEN(N$):B$=MID$(N$,W,1) 520 B=ASC(B$) 525 'IFW=1THENIFB<59ORB>122THENBEEP:GOTO550 530 IFB>96 AND B<122 THEN C$=CHR$(ASC(B$) AND 223):GOTO540 535 C$=B$ 540 A$=A$+C$ 545 NEXTW:N$=A$:RETURN 550 BEEP:FE=1:PRINT"Bad 1st Character in Filename!":FORT=1TO250:NEXTT:RETURN 555 'record points, draw/erase line 560 IFFD=0THENX1=X:Y1=Y:FD=1:SOUND1047,2:GOTO40 565 X2=X:Y2=Y 570 IFD=1THENLINE(X1,Y1)-(X2,Y2),1ELSELINE(X1,Y1)-(X2,Y2),0 575 FD=0:FB=0:SOUND1760,2:GOTO40 580 'put grafix for each curs pos in buffer memory cf- 0=store,1=put back 585 'make the DRAW anchor pixel flash 590 IFZ=0THENPRESET(X1,Y1)ELSEPSET(X1,Y1) 595 Z=1-Z:RETURN 600 'instructions 605 CLS:GOSUB725:PRINT@40,"A drawing program, using the keys" 610 PRINT"forming the keypad for the 7 8 9" 615 PRINT"dot drawing directions. Togggle U O" 620 PRINT"the dot on/off with the J K L" 625 PRINTE$"p space bar "E$"q. Combine Shft+ARROWS" 630 PRINT"to jump 16 dot's, and use Cntrl+ARROWS" 635 PRINT"to move to edges. ----more>";:LINE(201,13)-(236,41),1,B:GOSUB20 640 CLS:PRINT"With the dot within a normal character" 645 PRINT"location, hit "E$"pT"E$"q to initiate TEXT on" 650 PRINT"screen. Use "E$"pENTER"E$"q when done." 655 PRINT"Use "E$"pD"E$"q once to set anchor point for" 660 PRINT"a line. Move, hit "E$"pD"E$"q again to DRAW line." 665 PRINT"If the second dot is 'off', the line" 670 PRINT"will erase. Cancel 2nd "E$"pD"E$"q with Crtl-D." 675 PRINT"With your SKETCH on screen, --more>";:GOSUB20 680 CLS:PRINT" = erase sketch, go to Main Menu." 685 PRINT" to bring up the "E$"p GRAFIX "E$"q options :" 690 PRINT"

rint screen. Choose from 12 " 695 PRINT" possible Width/Height combinations." 700 PRINT" Scans screen, asks SAVE filename?" 705 PRINT" Dumps to BASIC. Use F4 to RUN again."; 710 PRINT" uit = return to SKETCH editing." 715 PRINT"That's all. Any Key -> MAIN MENU";:GOSUB20:GOTO 330 720 PRINT@41,"Newark, DEL. Uses Himem"GF#"to"BE#; 725 PRINT@0," "E$"pSKETCH.BA"E$"q & "E$"pGRAFIX.CO"E$"q "CHR$(171)"1989 R.H.Pigford" 730 LINE(77,0)-(77,7),1:LINE(5,0)-(5,7),1:RETURN 800 GF#=60150 'start GRAFIX.CO 805 PF#=60529 'PRFLAG: addr. 810 BS#=61030 'BUFFER: start addr 815 BE#=62950 'end 820 FZ#=60262 'FILLCD: addr 825 RETURN