1 " "GOTO 10
2 Z=0:REM ----+----+----+----+----+----+----+----+----+----+----+----+----+----+--
3 RETURN 
10 LOCK :CLEAR :W=ACS -1:DIM A$(1)*73:ON ERROR GOTO 500
11 CLS :PAUSE " 3-D CYLINDRICAL PLOTTER":PAUSE "  Copr. 1982 Tandy Corp."
20 "C"CLS :WAIT 0:PRINT "  Fn  Plt Dsp End"
21 Z=ASC INKEY$ -16:IF Z<1OR Z>4THEN 21
22 CLS :GOTO 100*Z
100 M=STATUS 2-STATUS 1+16:INPUT "F(R,T)=";A$(0):CLS :A$(1)=A$(0)
110 RESTORE 901:IF A$(0)=""POKE M,58,&F1,&AB:GOTO 20
120 Z=ASC A$(0):IF Z<65OR Z>84THEN 160
130 FOR I=1TO 17:READ T$,Z:IF LEFT$ (A$(0),LEN T$)<>T$NEXT I:GOTO 160
140 I=17:NEXT I:POKE M,&F1,Z:M=M+2
150 PRINT T$;:F=LEN A$(0):G=LEN T$:A$(0)=RIGHT$ (A$(0),F-G):GOTO 110
160 Z=ASC A$(0):IF Z>32POKE M,Z:M=M+1
170 T$=CHR$ Z:GOTO 150
200 RESTORE 900:FOR I=1TO 5:READ P$:CLS :PRINT P$;" =";@(I);:INPUT "? ";@(I)
201 NEXT I:CLS :IF D<1OR D>100OR D<>INT DOR A<=0BEEP 3:WAIT :PRINT "BAD INPUT":WAIT 0:GOTO 200
205 P=1:INPUT "1 or 2 passes? ";P
206 IF P<1OR P>2THEN 205
207 CLS 
210 GRAPH :GLCURSOR (0,-250):SORGN 
211 LINE (0,54)-(108,0)-(216,54)-(216,154)
220 FOR I=0TO 100STEP D:X=.02*I*A-A:FOR J=0TO 100STEP D:Y=.02*J*A-A:GOSUB 250:IF JLINE (K,L)-(M,N)
221 K=M:L=N:NEXT J:NEXT I
222 IF P<>2THEN 240
230 FOR J=0TO 100STEP D:Y=.02*J*A-A:FOR I=0TO 100STEP D:X=.02*I*A-A:GOSUB 250:IF ILINE (K,L)-(M,N)
231 K=M:L=N:NEXT I:NEXT J
240 GLCURSOR (0,-30):TEXT :CSIZE 1:LPRINT "F(R,T)=";A$(1):LF 1:RESTORE 900:FOR I=1TO 5:READ P$:LPRINT P$;" =";@(I)
241 NEXT I:LF 7:GOTO 20
250 R=SQR (X*X+Y*Y):IF X=0LET T=W/2+W*(Y<0):GOTO 252
251 T=ATN (Y/X)+W*(X<0)
252 IF T<0LET T=T+2*W
253 GOSUB 2
254 IF Z<BLET Z=B
255 IF Z>CLET Z=C
256 M=108*(A+X)/(A+A)+108*(A+Y)/(A+A)
257 N=54-54*(A+X)/(A+A)+54*(A+Y)/(A+A)+100*(Z-B)/(C-B)
258 RETURN 
300 WAIT :PRINT "F(R,T)=";A$(1):WAIT 0:GOTO 20
400 UNLOCK :END
500 U=STATUS 4:V=PEEK &789B:IF U=2BEEP 1:Z=E:GOTO 254
510 WAIT :PRINT "ERROR";V;" in";U:GOTO 20
900 DATA "Radius","ZL","ZH","Step %","F(error)"
901 DATA "SQR",&6B,"SIN",&7D,"COS",&7E,"TAN",&7F,"LN",&76,"LOG",&77,"EXP",&78
902 DATA "PI",&5D,"ABS",&70,"ASN",&73,"ACS",&74,"ATN",&75,"INT",&71,"SGN",&79
903 DATA "OR",&51,"AND",&50,"NOT",&6D
999 END
