10 GOTO "PLOT" 100 REM JUST PLACE YOUR FUNCTION HERE. LABEL MUST BE "FNKT"; DON'T FORGET THE 110 REM RETURN. THE FUNCT. MUST CALCULATE Y (OUTPUT) FROM X (INPUT). 500 "FNKT"Y=SIN X+.5*SIN (3*X)+.25:RETURN 50000 "PLOT"WAIT 0 50005 DIM PU(14):DIM PL(14):DIM CU(4):DIM CL(4):AX$="N":AY$="N" 50010 GOSUB "INIT" 50015 "LOOP1"PRINT "X1=";STR$ X1;" X2=";STR$ X2 50020 PRINT "X[1] X[2] [C]ont" 50025 "LOOP2"S$=INKEY$ :IF S$="C"GOTO "LOOP3" 50030 IF S$="1"CLS :INPUT "X1=";X1:GOTO "LOOP1" 50035 IF S$="2"CLS :INPUT "X2=";X2:GOTO "LOOP1" 50040 GOTO "LOOP2" 50045 "LOOP3"IF INKEY$ ="C"GOTO "LOOP3" 50050 IF X1=X2BEEP 1:PAUSE "X1 and X2 may not be equal!":GOTO "LOOP1" 50055 X=INT ((-143*X1)/(X2-X1)) 50060 PRINT "Y1=";STR$ Y1;" Y2=";STR$ Y2 50065 PRINT "Y[1] Y[2] [C]ont [B]ack" 50070 "LOOP4"S$=INKEY$ :IF S$="C"GOTO "LOOP5" 50075 IF S$="1"CLS :INPUT "Y1=";Y1:GOTO "LOOP3" 50080 IF S$="2"CLS :INPUT "Y2=";Y2:GOTO "LOOP3" 50085 IF S$="B"GOTO "LOOP1" 50090 GOTO "LOOP4" 50095 "LOOP5"IF INKEY$ ="C"GOTO "LOOP5" 50100 IF Y1=Y2BEEP 1:PAUSE "Y1 and Y2 may not be equal!":GOTO "LOOP3" 50105 XP=INT (143*-X1/(X2-X1)+.5) 50110 Y=INT (14*-Y1/(Y2-Y1)+.5) 50115 BX$=AX$:IF XP-6*INT (XP/6)=5LET BX$="IV" 50120 IF XP<0OR XP>143LET BX$="OS" 50125 BY$=AY$:IF Y<0OR Y>14LET BY$="OS" 50130 IF Y=7LET BY$="IV" 50135 PRINT "[X] Axis=";BX$;" [Y] Axis=";BY$ 50140 PRINT "[C]ont [B]ack" 50145 "LOOP6"S$=INKEY$ :IF S$="C"GOTO "CONT1" 50150 IF S$="B"GOTO "LOOP3" 50155 IF S$="X"CLS :GOSUB "TOGX":GOTO "LOOP5" 50160 IF S$="Y"CLS :GOSUB "TOGY":GOTO "LOOP5" 50165 GOTO "LOOP6" 50170 "CONT1"IF BY$="Y"CLS :FOR I=0TO 14:LET PU(I)=PU(I)OR PU(Y),PL(I)=PL(I)OR PL(Y):NEXT I 50175 IF BX$<>"Y"LET XP=-1 50180 ON ERROR GOTO "ERRH" 50185 CLS :FOR I=0TO 23 50190 FOR J=0TO 4 50195 K=6*I+J:IF K=XPLET CU(J)=127,CL(J)=127:GOTO "CONT2" 50200 X=X1+(X2-X1)*K/143 50205 GOSUB "FNKT" 50210 Y=14*(Y-Y1)/(Y2-Y1) 50215 Y=INT (Y+.5) 50220 IF Y<0OR Y>14LET Y=7 50225 CU(J)=PU(Y):CL(J)=PL(Y) 50230 "CONT2"NEXT J 50235 CURSOR I,0:GPRINT CU(0);CU(1);CU(2);CU(3);CU(4) 50240 CURSOR I,1:GPRINT CL(0);CL(1);CL(2);CL(3);CL(4) 50245 IF 2=ASC INKEY$ LET I=24:REM C-CE 50250 NEXT I 50255 ON ERROR GOTO 0 50260 "LOOP8"IF 0=ASC INKEY$ GOTO "LOOP8" 50265 "LOOP9"S$=INKEY$ :IF S$="C"OR S$="E"GOTO "LOOP9" 50270 CLS :PRINT "":PRINT "[C]ontinue [E]nd" 50275 "LOOP10"S$=INKEY$ :IF S$="E"CLS :END 50280 IF S$="C"GOSUB "INIT":GOTO "LOOP1" 50285 GOTO "LOOP10" 50290 "INIT"CLEAR PU,PL 50295 FOR I=0TO 7:PU(I)=0:NEXT I:FOR I=7TO 14:PL(I)=0:NEXT I 50300 PU(8)=64:PU(9)=32:PU(10)=16:PU(11)=8:PU(12)=4:PU(13)=2:PU(14)=1 50305 PL(0)=64:PL(1)=32:PL(2)=16:PL(3)=8:PL(4)=4:PL(5)=2:PL(6)=1:RETURN 50310 "TOGX"IF BX$="N"LET AX$="Y",BX$="Y":RETURN 50315 IF BX$="Y"LET AX$="N",BX$="N":RETURN 50320 BEEP 1:RETURN 50325 "TOGY"IF BY$="N"LET AY$="Y",BY$="Y":RETURN 50330 IF BY$="Y"LET AY$="N",BY$="N":RETURN 50335 BEEP 1:RETURN 50340 "ERRH"ON ERROR GOTO 0 50345 PRINT "ERROR";STR$ ERN ;" in custom funct.:" 50350 WAIT 50355 PRINT "Line ";STR$ ERL ;", X=";X:END