10 " "LOCK :CLEAR :USING :DEGREE :RESTORE :GRAPH :SORGN :CSIZE 1:N=1:ROTATE 0:COLOR 0:WAIT 90:O$="08082A1C08"
20 CLS :CURSOR 10:PRINT "SKETCH":PRINT "  Copr. 1982 Tandy Corp.":WAIT 0
30 FOR I=1TO 4:READ @$(I):NEXT I:ON ERROR GOTO 8000
40 DATA "BLK","BLU","GRN","RED"
100 CLS :P$="UP":IF W=1LET P$="DN"
110 PRINT USING "#####";X;Y;USING ;" ";@$(C+1);" ";P$;:CURSOR 18:GPRINT O$;:CURSOR 19:PRINT N;
200 Z=ASC INKEY$ :IF Z=0THEN 200
300 IF Z<8OR Z>12THEN 500
310 ON Z-7GOTO 350,200,360,370,380
350 X=X-5:GOTO 400
360 Y=Y-5:GOTO 400
370 Y=Y+5:GOTO 400
380 X=X+5
400 CURSOR 0:PRINT USING "#####";X;Y;:LINE -(X,Y),9*(W=0):GOTO 200
500 IF Z>47AND Z<52LET C=Z-48:CURSOR 11:PRINT @$(C+1);:COLOR C:GOTO 200
600 IF Z=80THEN 1000
610 IF Z=73THEN 2000
620 IF Z=79THEN 3000
630 IF Z=82THEN 4000
640 IF Z=84THEN 5000
650 IF Z=83THEN 6000
660 IF Z=24LET X=0:Y=0:SORGN :GOTO 100
670 IF Z=81UNLOCK :END
680 GOTO 200
1000 W=1-W:CURSOR 15:P$="UP":IF WLET P$="DN"
1010 PRINT P$;:GOTO 200
2000 CURSOR 11:PRINT "Start, ENTER":GOSUB 7000:U=X:V=Y
2010 CURSOR 11:PRINT "End, ENTER  ";:GOSUB 7000:LINE (U,V)-(X,Y),0:GOTO 100
3000 CURSOR 11:PRINT "Start, ENTER":GOSUB 7000:R=X:S=Y:CURSOR 11:PRINT "Mid-arc, ENTER":GOSUB 7000:P=X:Q=Y
3010 CURSOR 11:PRINT "End, ENTER    ":GOSUB 7000
3020 A=(R+P)/2:B=(S+Q)/2:L=(R-P)/(Q-S):D=(P+X)/2:E=(Q+Y)/2:M=(P-X)/(Y-Q)
3030 F=(E-B+L*A-M*D)/(L-M):G=B+L*(F-A):H=((X-F)^2+(Y-G)^2)
3040 J=ASN ((R-F)/H):IF S<GLET J=180-J
3050 K=ASN ((X-F)/H):IF Y<GLET K=180-K
3060 IF K<=JLET K=K+360
3070 GLCURSOR (R,S):FOR I=J+10TO KSTEP 10:LINE -(F+H*SIN I,G+H*COS I),0:NEXT I:GOTO 100
4000 CURSOR 18:PRINT "?";:CURSOR 18
4010 Z=ASC INKEY$ :IF Z=8ROTATE 2:O$="081C2A0808":GOTO 4060
4020 IF Z=10ROTATE 1:O$="10207F2010":GOTO 4060
4030 IF Z=11ROTATE 3:O$="04027F0204":GOTO 4060
4040 IF Z<>12THEN 4010
4050 ROTATE 0:O$="08082A1C08"
4060 BEEP 1,150,100:GOTO 100
5000 CLS :INPUT "Text? ";T$:GOTO 5010
5005 GLCURSOR (X,Y):GOTO 100
5010 BEEP 1,150,100:CLS :CURSOR 11:PRINT "Start, ENTER":GOSUB 7000:LPRINT T$;:GLCURSOR (X,Y):GOTO 5000
6000 CURSOR 20:PRINT "?";:CURSOR 20
6010 Z$=INKEY$ :IF Z$<"1"OR Z$>"9"THEN 6010
6020 N=VAL Z$:CSIZE N:PRINT Z$;:BEEP 1,150,100:GOTO 200
7000 Z=ASC INKEY$ :IF Z<8OR Z>13THEN 7000
7010 ON Z-7GOTO 7100,7000,7200,7300,7400,7500
7100 X=X-5:GOTO 7450
7200 Y=Y-5:GOTO 7450
7300 Y=Y+5:GOTO 7450
7400 X=X+5
7450 GLCURSOR (X,Y):CURSOR 0:PRINT USING "#####";X;Y;:USING :GOTO 7000
7500 BEEP 1,150,100:RETURN 
8000 BEEP 1,18,2000:GOTO 100
9999 END
