
100     !GRAPH2  *** VERSION  2  (RSTS 6B)  ***  15-6-77 **
        !PHYSICS SECTION**AUTHOR  A E LAWRENCE **

110     DEFFNA%(A,B)\IFINT(A/B+.5)==A/BTHENFNA%=1%ELSEFNA%=0%
120     FNEND
\       NO EXTEND\DIMT%(120%),S%(120%),A(500,2),B$(64%)\T%(0%)=30%\
        T%(1%)=6%\
        T%(2%)=-7%\GOSUB2410\T%(2%)=9%\GOSUB2410\&\
        &"GRAPH2-"+RIGHT(J$,3%)+"-PHYSICS   V 2 *";\
        J$=NUM$(ASCII(J$)/2)\&J$+"*"\&\
        ONERRORGOTO2240
140     READP$\J%=J%+1%\GOTO140IFJ%<12%
150     OPENP$+"GRAPH2.BAS"FORINPUTASFILE1%\RESTORE\&\&
"PLOT OF Y AGAINST X.PLEASE GIVE X AS A FUNCTION OF U,V,W & H."\
&"X=";\INPUTLINEC$\IFASCII(C$)=47%THENC$=RIGHT(C$,2%)\Y%=1%
155     IFCVT$$(C$,4%)=""THENCLOSE1%\J%=0%\GOTO890
160     B$(1%)="860 DEF FNX(U,V,W,H)="+C$\&
        "AND Y AS A FUNCTION OF U,V,W, & H:"UNLESSY%\&"Y=";\
        INPUTLINEH$\IFY%THEN180ELSE&
"AFTER A SHORT DELAY, ' DO YOU WISH...' WILL BE PRINTED. IF ANYTHING"
170&
"ELSE HAPPENS,YOU HAVE MADE AN ERROR: TO CORRECT IT RUN GRAPH2 AGAIN."+
        CHR$(10%)
180     G$=CHR$(13%)+CHR$(10%)\
        B$(2%)='885 KILL"G2'+J$+'.BAS"'+G$+'880 DEF FNY(U,V,W,H)='+H$\
        B$(2%)='895 Y%=1%'+G$+B$(2%)IFY%\K$=""\FORJ%=1%TO4%
        \ READ F$\IFINSTR(20%,B$(1%)+H$,F$)=0THEN200ELSE
   IFLEN(K$)>0THENK$=K$+","+F$ELSEK$=K$+F$
200     NEXTJ%\J%=0%\
        IFLEN(K$)>0%THENOPEN"G2"+J$+".BAS"FOROUTPUTASFILE2%\
        GOTO205
202     PRINT"INVALID EXPRESSIONS FOR X & Y! TRY AGAIN:"\RESTORE\
        CLOSE1%\GOTO140
205     B$(3%)="1260 &"+CHR$(34%)+K$+CHR$(34%)+G$       \
        B$(4%)="1280 INPUT"+K$+CHR$(10%)+CHR$(13%)
210     READF$,F%\J%=J%+1%
220     INPUTLINE#1%,E$\
        IFLEFT(E$,F%)=F$THEN230ELSE&#2%,E$;\
        GOTO220
230     PRINT#2%,B$(J%);        \
        GOTO210IFJ%<4%
250     INPUTLINE#1%,E$\&#2%,E$;\GOTO250
260     &#2%,CHR$(26%);\CLOSE1%,2%\CHAIN"G2"+J$+".BAS"860
300     T%(0%)=30%\T%(1%)=6%\T%(2%)=-8%\T%(3%)=J%\GOSUB2410\
        D%=ASCII(MID(J$,20%,1%))-1%\RETURN
500     T%(0%)=1%\T%(1%)=7%\GOSUB2410\GOTO560UNLESSASCII(J$)=42%\
        Z2%=INSTR(2%,J$,"+")\Z1%=INSTR(2%,J$,"*")\
        IFZ2%=0%THENZ1$=MID(J$,2%,Z1%-2%)ELSE
        Z1$=MID(J$,2%,Z2%-2%)\Z2%=VAL(MID(J$,Z2%+1%,Z1%-Z2%-1%))
520     J$=RIGHT(J$,Z1%+1%)\Z1%=1%
560     Y%=1%\Z3%=12%\OPENJ$FORINPUTASFILEZ3%
860 DEF FNX(U,V,W,H)=U
880 DEF FNY(U,V,W,H)=V
890     ONERRORGOTO2060\GOSUB300
900     &"DO YOU WISH TO SEE X & Y ";UNLESSY%\
        &"AS THEY ARE CALCULATED";UNLESSZ3%\INPUTLINE#Z3%,G$\
        H%=INSTR(1%,G$,"/")\IFH%=0%THEN970ELSE
        OPENRIGHT(G$,H%+1%)FORINPUTASFILE2%
910     GOSUB4470\A$,C$="Y"\GET#2%\
        H%=CVT$%(B$(1%))\W%=2%\L%,B%=1%\
        C$=MID(B$(1%),3%,1%)IFSTATUS<0%UNLESSSTATUSAND8192%\
        GOTO960IFH%<1%\IFC$<>"S"THEN930ELSER%=-INT(-(1.+H%)/(255%/V%))\
        GET#2%,RECORDR%\
N$=RIGHT(M$,(H%+1%)*V%*2%-(R%-1%)*(2%*V%*(255%/V%))+1%)+""\
        IFLEN(N$)<H%THENGET#2%\N$=N$+LEFT(M$,H%-LEN(N$))
920     GET#2%,RECORD1%
930     &"#"\G%=0%\IFC$="S"THENA$="S"
940     FORS%=W%UNTILS%=255%/V%+1%ORL%=H%+1%\X=CVT$F(B$(S%))\
        Y=CVT$F(RIGHT(B$(S%),V%+1%))\B$=MID(N$,L%,1%)IFC$="S"\
        L%=L%+1%\IFG%THENI%=N%+1%\GOSUB2510\
        GOTO945
942     GOSUB2440
945     NEXTS%\IFL%<H%+1%THENW%=1%ELSE960
950     GET#2%\GOTO940
960     CLOSE2%\GOSUB4255IFG%
970     &\C%=C%+1%\G$=LEFT(G$,1%)\IFC%>1%ORY%>0%THEN1040
1000    &TAB(5%);
     "THE POINTS ON THE GRAPH ARE NORMALLY INDICATED BY A '*',"\
&"BUT IF YOU WISH ANOTHER SYMBOL CAN BE USED.DIFFERENT POINTS, OR SETS"\
        &"OF POINTS CAN BE INDICATED BY DIFFERENT SYMBOLS."\&
1040    &"DO YOU WANT ALL POINTS ";UNLESSY%\&
        "INDICATED BY '*' (Y OR N)";UNLESSZ3%\
        INPUT#Z3%,A$\IFASCII(A$)=89%THEN1200ELSE&
1060    IFY%THEN1080ELSE&
"DO YOU WANT TO SPECIFY THE SYMBOL FOR EACH POINT INDIVIDUALLY, OR"\
&"ARE WHOLE SETS OF DATA TO USE THE ";
1080    PRINT"SAME SIGN (I OR S)";UNLESSZ3%\INPUT#Z3%,A$\
        IFA$="I"ORA$="S"THEN1140ELSE&
        "PLEASE ANSWER 'I' OR 'S'."\GOTO1080
1140    IFA$<>"S"THEN1200ELSEIFY%=0%THEN&
        "PLEASE GIVE THE SYMBOL FOR THIS SET OF POINTS";ELSE
        IFZ3%=0%THEN&"SYMBOL";
1150    INPUT#Z3%,B$
        \ IFB$<>"X"THEN1180ELSE&"X SHOULD NOT BE USED!"\GOTO1140
1180    GOTO1260IFY%\
        &"TYPE 'END' AFTER THIS SET OF POINTS, AND THEN USE THE"\
&"'MORE' OPTION TO ENTER ANY SUBSEQUENT SETS OF DATA."\&
1200    IFY%=0%THEN&
"RIGHT! PLEASE GIVE YOUR READINGS NOW. AFTER THE LAST READING,"\
        &"TYPE 'END'."
1260 &"X,Y              (DEFAULT OPTION)"UNLESSZ3%
1280 INPUT#Z3%,U,V
\       &"SYMBOL=";IFA$="I"UNLESSZ3%\INPUT#Z3%,S$IFA$="I"\
        GOSUB2420\IFN%=500%THEN&N%;
        "POINTS - MAXIMUM!"ELSE&"*";\GOTO1280
1360    &
"IF YOU WISH TO SEE THE CALCULATED VALUES OF X & Y, ANSWER'Y'"
        UNLESSY%\&"CALCULATED VALUES";UNLESSZ3%\INPUT#Z3%,K$\
        IFK$<>"Y"THEN1440ELSE&"PLOTTING ORDER:"\
        &"X","Y","SYMBOL"
1400    &A(J%,1%),A(J%,2%),CHR$(A(J%,0%))FORJ%=1%TON%
! THE VALUES ARE NOW IN PLOTTING ORDER IN A. WE NOW RECORD THE
LIMITS IN X1,X2,Y1 AND Y2
1440 X1,X2=A(1%,1%)\IFN%=0%THEN&"NO POINTS!! - TRY AGAIN"ELSE1460
1450 GOTO 1260
1460    Y1=A(1%,2%)\Y2=A(N%,2%)\FORK%=2%TON%\X6=A(K%,1%)\
        X1=X6IFX6>X1\X2=X6IFX6<X2\NEXTK%
1560    &"READY TO PLOT."UNLESSZ3%\IFY%=0%THEN&
"TYPE 'P' & SET ANY SWITCHES IF YOU WANT THE GRAPH NOW.TO CORRECT OR"\&
        "ADD EXTRA POINTS, TYPE ";
1565    E$=""\J%,R%,H%,S%=0%\Q%=64%\&"'MORE'";UNLESSZ3%\
        INPUT#Z3%,G$\IFG$="MORE"THEN4180ELSE
        H%=INSTR(1%,G$,"<")\IFH%THENM%=INSTR(H%,G$,">")
        ELSE1620
1580    E$=MID(G$,H%+1%,M%-H%-1%)\G$=RIGHT(G$,M%+1%)\GOTO4230
        IFINSTR(1%,E$,"-")\GOTO4250IFINSTR(1%,E$,"EX")\
        H%=INSTR(1%,E$,"/")\O%=INSTR(1%+H%,E$,"/")\
        R%=INSTR(1%,E$,"A")\S%=INSTR(1%,E$,"M")\U%=INSTR(1%,E$,"O")
\       IFH%*O%THENQ%=VAL(MID(E$,H%+1%,O%-H%-1%))\GOTO1620IFZ3%\
        IFQ%>250%THEN
        INPUT"GRAPH REALLY OVER 1 METRE LONG (Y OR N)";R$\
        IFR$<>"Y"THEN1560
1620    E%=INSTR(1%,G$,"/")\GOTO1720UNLESSE%\A%(0%)=E%\
        IFINSTR(2%,G$,"%")THENE%,A%(0%)=E%+1%\J%=1%
1640 FORE%=1%TO5%\A%(E%)=INSTR(A%(E%-1%)+1%,G$,"+")\
     IFA%(E%)=0%THEN1680
1660 NEXT E%
1680 IFMID(G$,LEN(G$),1%)="+"THENE%=E%-1%ELSEA%(E%)=LEN(G$)+1%
    
1700 OPENMID(G$,A%(A%-1%)+1%,A%(A%)-A%(A%-1%)-1%)FOROUTPUTASFILEA%
     FOR A%=1%TOE%\IFJ%THENGOSUB300\D%=72%UNLESSNOTD%

1720    &"X-AXIS LABEL";UNLESSZ3%\INPUTLINE#Z3%,X$\
        X$=CVT$$(X$,4%)\&"Y-AXIS LABEL";UNLESSZ3%\
        INPUTLINE#Z3%,Y$\Y$=CVT$$(Y$,4%)\&
\       IFS%THEN&
"MULTIPLE POINTS BY 2,3,...,9  0 INDICATES MORE THAN 9 COINCIDENT."
        ELSE&"REPEATED POINTS ARE INDICATED BY 'X'"\&
1730    IFU%=0%THEN1780ELSEIFY1<0THENY1=0ELSEIFY2>0THENY2=0
1740    IFX1<0THENX1=0ELSEIFX2>0THENX2=0
1780    Z1=Y1\Z2=Y2\B%=Q%\I%=1%\GOSUB3120\Y0=Z0\Y3%=1/S+.1\
        Y6=Z6\Y7=Z7\
V%=LEN(NUM$(INT((ABS(Y1)+ABS(Y2)+Q%*Y7)/Y6)))+1%\B%=D%-V%\
        Z1=X1\Z2=X2\T%(0),S%(0)=D%\GOSUB3120
\       X0=Z0\X6=Z6\X3%=1/S+.1\X7=Z7\&#G%,CHR$(12%)+CHR$(13%);
        TAB(3%);"Y"FORG%=J%TOE%
\       IFJ%THEN&"WIDTH=";D%ELSE&CHR$(140%);
1790    IFINSTR(1%,E$,"U")=0%THEN1820ELSEIFINSTR(1%,E$,"D")THEN
        C=1.658219ELSEIFINSTR(1%,E$,"V")THENC=2.5ELSEC=1.662878
1792    IFC*X7>Y7THENY7=C*X7\
Y6=10%*Y7\Y3%=10%\Y0=INT(((Y1+Y2)/2-(Q%+1%)/2%*Y7)/Y6)*Y6\GOTO1820
1795 X7=Y7/C\X6=5%*X7\X3%=5%\X0=INT(((X1+X2)/2-(73%-V%)/2%*X7)/X6)*X6
1820    C%=(A(N%,2%)-Y0)/Y7\IFNOT(C%>10%IMPU%<>0%)THEN
        Y0=(INT(A(N%,2%)/Y6+.5)-1%)*Y6
1900    IFLEN(NUM$(INT((X1+X2)/2/X6)))>X3%THENO%=1%ELSEO%=0%
1920    L%=INT((A(1%,2%)-Y0)/Y7+.5)\IFU%THENL1%=Q%ELSE
        L1%=L%+2%
1930    F$=SPACE$(D%)IFO%\GOSUB2330\&#G%FORG%=J%TOE%\
        &#G%,F$FORG%=J%TOE%IFO%\GOSUB2360\O%=O%+1%
1940MATS%=ZERIFS%\T%(A%)=32%FORA%=1%TOD%\
        IFFNA%(L1%,Y3%)THENF%=43%ELSEF%=46%
2040 GOTO3460
2060    IFERL=885%THENRESUME890ELSE
        IFERR<>28%THEN2160
2100 IFLINE>205ANDLINE<840THENKILL"G2"+J$+".BAS"
2140 &"PLOT TERMINATED!"\GOTO2310
2160 IFERR=50ANDERL=1280THENRESUME1360
2165    IFERR=52ANDERL=1280THEN&"PARDON? -AGAIN:"\RESUME
2170    IFNOT(ERR=48%ORERR=49ORERR>52%)THEN2180
        ELSEIFERL=860ORERL=880ORERL=1280
        THENGOSUB2320\
        &" - TRY AGAIN:"\J$=F$\RESUME1280
2180    IFERL=1700THEN&"DUPLICATE SWITCH ERROR:-"\J%=0%\
        GOSUB300\GOSUB2320\&\RESUME1560
2185    IFERL=4360THENGOSUB2320\&\RESUME4320
2190    IFERL>1920ANDERL<2040ORERL=2330ORERL>3110ANDERL<4160
        ORERL<115THENGOSUB2320\&"-CAN'T PLOT: NEW POINTS NEEDED";
        " OR DIFFERENT SWITCH:-"+CHR$(10%)\J$=F$\RESUME1200
2240 IFERR=28THEN2100
2245    IFERL<1000ANDERL>899THEN&
        "INPUT FILE ERROR- ";\GOSUB2320\&\CLOSE2%\RESUME900
2250    IFERL>1560ANDERL<1700THEN&"SWITCH ERROR:- ";\
        GOSUB2320\&\RESUME1560
2255    IFERL>4470THEN&"OUTPUT FILE ERROR:-";\GOSUB2320\RESUME4520
2260    IFERL=150AND(ERR=2ORERR=5ORERR=10ORERR=8ORERR=14)
        THENRESUME140ELSEIFERL=140THEN&
'PLEASE TYPE "SAVEGRAPH2"<RETURN>, & THEN"RUNNH" <RETURN>'\GOTO2310
2280    GOTO2380
2300    KILL"G2"+J$+".BAS"
2310 RESUME 4560
2320    PRINT"CONTROL PASSED TO KB:"IFZ3%\Z3%=0%\
        T%(2%)=9%\T%(1%)=6%\T%(3%)=ERR\F$=J$\GOSUB2410\
        &CVT$$(RIGHT(J$,4%),4%);\RETURN
2330    FORK%=0%TOB%-2%\&#G%,TAB(V%+K%-1%);FORG%=J%TOE%\
        X8=K%*X7+X0\X=INT(X8/X6+.5)\
IFFNA%(K%,X3%)=0%ORNOT(POS(J%)=V%+K%-1%ANDPOS(J%)+LEN(NUM$(X))<D%)
        THEN2340ELSE&#G%,X;FORG%=J%TOE%\
        F$=LEFT(F$,V%+K%)+"^"+RIGHT(F$,V%+K%+2%)IFO%=1%
2340    NEXTK%\F$=CVT$$(F$,128%)IFO%
\       K%=0%\RETURN
2360    R$=SPACE$(V%-1%)+"@"\FORK%=0%TOD%-2%-V%\
        IFFNA%(K%,X3%)THENR$=R$+"+"ELSER$=R$+"."
2370    NEXTK%\K%=0%\&#G%,R$FORG%=J%TOE%\RETURN
2380 IFERR<>11THEN2400
2390 IFERL=250THENRESUME260
2400    &"ERROR:-"\GOSUB2320\
        IFERL>200ANDERL<850THEN2300ELSE2310
2410 CHANGET%TOI$\J$=SYS(I$)\RETURN
2420 !SUBROUTINE TO CALCULATEX,Y AND TO ORDER MATRIX
2430    X=FNX(U,V,W,H)\Y=FNY(U,V,W,H)\&"X=";X;"Y=";YIFG$="Y"
2440    GOTO2460UNLESSN%\IFA(N%,2%)>=YTHENI%=N%+1%\GOTO2510
2450    G%=1%\IFA(1%,2%)>YTHEN2470ELSEI%=1%\GOTO2500
2460    I%=1%\GOTO2510
2470    F%=1%\I%=N%
2480    A%=(F%+I%)/2%\IFY>A(A%,2%)THENI%=A%ELSEF%=A%
2490    IFI%-F%>1%THEN2480
2500    FORJ%=N%TOI%STEP-1%\A(J%+1%,B%)=A(J%,B%)FORB%=0%TO2%\NEXTJ%
2510    A(I%,0%)=42%IFA$="Y"\A(I%,0%)=ASCII(B$)IFA$="S"\
        A(I%,0%)=ASCII(S$)IFA$="I"\A(I%,1%)=X\A(I%,2%)=Y\N%=N%+1%\
        RETURN
3120    E=(Z1-Z2)/(B%-1%)\GOTO3125UNLESSINSTR(1%,E$,"*")\
        Q=0\S=.5\Z7=E
3122    Z6=2%*Z7\Q=Q+1%\Z0=INT(Z2/Z6)*Z6\RETURNIFZ0=Z2ORQ=2%\
        Z7=E*(B%-1%)/(B%-3%)\GOTO3122
3125    IFE=0%THENP%,Q%=0%ELSEP%=-INT(-LOG10(ABS(E/5%)))\
        Q=E/10^P%
3130    S=.05*(2%+2%*SGN(INT(Q))+SGN(INT(Q/2%))+5%*SGN(INT(Q/2.5)))
        \ Z6=10^(P%+1%)\Z7=S*Z6\
        Z0=INT(((Z1+Z2)/2-(B%+1%)/2%*Z7)/Z6)*Z6
\       IF(Z1-Z0)/Z7<=B%-1%THENRETURNELSEE=E*1.1\GOTO3125
3460    T%(V%)=F%
\       IFF%=43%THEN
        O$=CVT$$(NUM$(INT((L1%*Y7+Y0)/Y6+.5)),128%)
3480    IFL1%=L%THENX%=V%+1%+INT((A(I%,1%)-X0)/X7+.5)
        ELSE3630
3500    IFX%<V%+1%ORX%>D%THEN3540
3520    S%(X%)=S%(X%)+1%\IFT%(X%)=32%THENT%(X%)=A(I%,0%)ELSE
        T%(X%)=88%
3540    I%=I%+1%\IFI%>N%THENL%=L1%+1%\GOTO3630
3600    L%=INT((A(I%,2%)-Y0)/Y7+.5)\GOTO3480
3630    GOTO3633UNLESSS%\FORG%=V%+1%TOD%\
        T%(G%)=S%(G%)+48%IFS%(G%)>1%ANDS%(G%)<10%\
        T%(G%)=48%IFS%(G%)>9%\NEXTG%
3633    IFR%=0%THEN3640ELSEIFY7*L1%==-Y0THENT%(G%)=45%IFT%(G%)=32%
        FORG%=V%+1%TOD%
3636    GOTO3640IF(-X0/X7>D%-V%)ORX0/X7>0\
        G%=INT(V%+1.5-X0/X7)\T%(G%)=46%IFT%(G%)=32%
3640    CHANGET%TOG$\IFF%=43%THEN
        G$=LEFT(G$,1%)+O$+RIGHT(G$,LEN(O$)+2%)
3660 K%=K%+1%\G$=MID(Y$,K%,1%)+RIGHT(G$,2%)UNLESSK%>LEN(Y$)\
        G$=CVT$$(G$,128%)\&#G%,G$ FORG%=J%TOE%\
        L1%=L1%-1%\IFL1%>-1%ORI%<N%THEN1940
3740
        GOSUB2360\&#G%,F$FORG%=J%TOE%IFO%=2%\GOSUB2330\
        FORG%=J%TOE%\&#G%,CHR$(13%)+CHR$(10%);
        "VERTICAL";TAB(30%);"------------------>"\&#G%,"  SCALE";
        TAB(22%);X$\&#G%,"*";Y6;TAB(25%);"HORIZONTAL SCALE *";
        X6\NEXTG%\&\&"-";FORK%=1%TOD%-2%\&\IFE%=0%THEN4130
4120&#G%,CHR$(10)+STRING$(D%-2%,42%)+STRING$(3%,12%)
        FORG%=1%TOE%\CLOSEG%FORG%=1%TOE%
4130    IFJ%THENJ%=0%\GOSUB300
4140    GOTO4160UNLESSZ3%\&\
        GOTO4560UNLESSZ1%\CHAINZ1$ Z2%
4160    INPUT
"TYPE 'MORE' FOR ANOTHER PLOT ( SAME FUNCTIONS X & Y),OTHERWISE 'N'";G$\
ON1%+INSTR(1%,"PSYMORE",CVT$$(G$,2%))GOTO4560,1440,4480,4180,4180
4180    IFY%THEN
        &"DESTROY ALL";ELSE&
        "ARE ALL THE PREVIOUS POINTS TO BE DESTROYED (Y OR N)";
4200    INPUTT$\IFT$<>"Y"THEN4320ELSEN%=0%\GOTO900
4230    FORI%=1%TO(N%+1%)/2%\Z3=A(N%+1%-I%,0%)\Z2=A(N%+1%-I%,1%)\
        Z1=-A(N%+1%-I%,2%)\
        A(N%+1%-I%,A%)=(1%+A%*(1%-A%))*A(I%,A%)FORA%=0%TO2%\
        A(I%,0%)=Z3\A(I%,1%)=Z2\A(I%,2%)=Z1\NEXTI%\PRINT
        "Y  ----->  -Y  COMPLETED!"\GOTO1360
4250    FORK%=1%TON%\X=A(K%,2%)\A(K%,2%)=A(K%,1%)\A(K%,1%)=X\
        NEXTK%\GOSUB4255\
        &"X <--------. Y INTERCHANGED!"\GOTO1360
4255    L%=N%
4260    L%=L%/2%\GOTO4290UNLESSL%\FORJ%=1%TON%-L%\A%=J%
4270    K%=A%+L%\GOTO4280IFA(A%,2%)>=A(K%,2%)\FORW%=0%TO2%\X=A(A%,W%)\
        A(A%,W%)=A(K%,W%)\A(K%,W%)=X\NEXTW%\A%=A%-L%\
        GOTO4270IFA%>0%
4280    NEXTJ%\GOTO4260
4290    RETURN
4300    DATAU,V,W,H,"860 DEF FNX",11,"880 DEF FNY",11,"1260 &",6,
        "1280 IN",7,"",$,#,'[11,0]',!,@,DT0:,DT1:,'[11,4]'
4320    IFY%THEN&"REMOVE ANY";ELSE&
        "DO YOU WISH TO REMOVE ANY OF THE EXISTING READINGS (Y OR N)";
4330    INPUTT$\IFT$="N"THEN900ELSEIFY%=0%THEN&
        "PLEASE GIVE THE X,Y PAIR ";
4360    INPUT"TO BE DELETED";X,Y\
        I%=1%\I%=I%+1%UNTILX==A(I%,1%)ANDY==A(I%,2%)ORI%=N%+1%\
        IFI%=N%+1%THEN&"I CAN'T FIND THAT READING!"ELSE4460
4440 GOTO 4320
4460    N%=N%-1%\A(J%,B%)=A(J%+1%,B%)FORB%=0%TO2%FORJ%=I%TON%\
        PRINT"REMOVED!"\GOTO4320
4470    V%=LEN(CVTF$(1))\
        FIELD#2%,2*V%*(I%-1%)ASM$,2*V%ASB$(I%)FORI%=1%TO255%/V%\
        FIELD#2%,510%ASM$\RETURN
4480    &"OUTPUT TO";\INPUTLINEV$\OPENV$FOROUTPUTASFILE2%\N$=""\
        GOSUB4470\LSETB$(1%)=CVT%$(N%)+"S"\W%=2%\L%=1%\C$=""
4490    FORJ%=W%UNTILJ%=255%/V%+1%ORL%=N%+1%\N$=N$+CHR$(A(L%,0%))\
        LSETB$(J%)=CVTF$(A(L%,1%))+CVTF$(A(L%,2%))\L%=L%+1%\NEXTJ%\
        IFL%<N%+1%THENPUT#2%ELSEM%=(J%-1%)*2%*V%\
        FIELD#2%,M%ASB$,510%-M%ASD$\LSETD$=N$\PUT#2%\GOTO4510
4500    &"#";\W%=1%\GOTO4490
4510    IFLEN(N$)+M%>510%THENLSETM$=RIGHT(N$,511%-M%)\PUT#2%
4520    CLOSE2%\&\GOTO4160
4560END

Ready

