10  REM PROGRAM NAME = FIELDG, GRAVITATIONAL EQUIPOTENTIAL LINES
20  DIM A$[20],B$[72],K$[72],Z$[72]
30  PRINT "DO YOU WANT INSTRUCTIONS FOR RUNNING FIELDG?  ";
40  ENTER 200,W,A$
50  PRINT 
60  IF A$="NO" THEN 200
70  IF A$#"YES" THEN 30
80  PRINT 
90  PRINT "THIS PROGRAM PLOTS POINTS WHICH HAVE THE SAME GRAVITATIONAL POTENTIAL"
100  PRINT "ENERGY AS A POINT WHICH YOU INPUT.  YOU CAN GET LINES OF EQUAL"
110  PRINT "POTENTIAL (EQUIPOTENTIAL LINES) BY CONNECTING THOSE POINTS WITH A LINE."
120  PRINT 
130  PRINT "THERE CAN BE AS MANY AS 3 MASSES ACTING AS SOURCES FOR THE "
140  PRINT "GAVITATIONAL POTENTIAL ENERGY FIELD."
150  PRINT 
160  PRINT "THE FIELD PLOTTED IS ONLY 30 METERS BY 30 METERS."
170  REM LINES OF EQUAL POTENTIAL
180  REM - - - - - TO SAVE MATRIX AND PRINT ALL LINES, 1160 = 'GOTO 500'
190  REM - - - - - TO INPUT SOURCE, TYPE '190' BEFORE 'RUN'
200  DIM A[62,38],B[62],J$[12]
210  MAT A=ZER
220  MAT B=ZER
230  LET B$=" *+#OS"
240  S=1
250  PRINT 
260  PRINT "HOW MANY SOURCES DO YOU WANT TO USE?  ";
270  ENTER 200,W,S
280  PRINT 
290  IF S=INT(S) AND S <= 3 AND S >= 1 AND W >= 0 THEN 310
300  GOTO 260
310  DIM N$[19]
320  N$="123456789"
330  REM - - - - - INPUT SOURCES
340  FOR N=1 TO S
350  PRINT 
360  PRINT "----- INPUT THE (X,Y) COORDINATES(METERS) OF SOURCE "N$[N,N]":"
370  LET K1=60
380  PRINT "  X = ";
390  ENTER K1,K2,X[N]
400  IF K2<0 THEN 420
410  GOTO 440
420  PRINT 
430  GOTO 380
440  PRINT "            ,  Y = ";
450  ENTER K1,K2,Y[N]
460  PRINT 
470  IF K2<0 THEN 440
480  LET A[2*X[N],Y[N]]=5
490  B[Y[N]]=1
500  Q[N]=1000
510  NEXT N
520  PRINT 
530  REM - - - - - INPUT STARTING POSITION
540  PRINT "THIS PROGRAM WILL PLOT A MAXIMUM OF FOUR EQUIPOTENTIAL LINES."
550  PRINT "HOW MANY LINES DO YOU WANT PLOTTED?  ";
560  ENTER 200,W,L
570  PRINT 
580  IF W<0 OR L<1 OR L>4 OR L#INT(L) THEN 550
590  PRINT 
600  PRINT "----- INPUT THE (X,Y) COORDINATES FOR THE STARTING POINTS OF YOUR LINES:"
610  H=V=H2=V2=F=F2=0
620  FOR Z=1 TO L
630  PRINT "  X"N$[Z,Z]" = ";
640  ENTER K1,K2,X
650  IF K2<0 THEN 670
660  GOTO 690
670  PRINT 
680  GOTO 630
690  PRINT "         ,    Y"N$[Z,Z]" = ";
700  ENTER K1,K2,Y
710  PRINT 
720  IF K2<0 THEN 690
730  IF X <= 30 AND Y <= 30 THEN 760
740  PRINT "     THE COORDINATES ARE LIMITED TO FROM 1 TO 30 METERS."
750  GOTO 630
760  X=INT(2*X+.5)
770  R=0
780  FOR N=1 TO S
790  X3=ABS(.5*X-X[N])
800  Y3=ABS(Y-Y[N])
810  IF X3=0 AND Y3=0 THEN 940
820  R[N]=X3^2+Y3^2
821  R[N]=SQR(R[N])
830  R[N]=Q[N]/R[N]
840  R=R+R[N]
850  NEXT N
860  F2=R
870  LET B=.03
880  B=B*F2
890  F[Z]=F2-B
900  F[Z+5]=F2+B
910  NEXT Z
920  PRINT '10"----- EQUIPOTENTIAL LINES:"'10
930  GOTO 960
940  PRINT "     YOU ARE ON A SOURCE."
950  GOTO 630
960  FOR Y=30 TO 1 STEP -1
970  FOR X=1 TO 60
980  H=V=R=0
990  FOR N=1 TO S
1000  X3=ABS(.5*X-X[N])
1010  Y3=ABS(Y-Y[N])
1020  IF X3=0 AND Y3=0 THEN 1130
1030  R[N]=X3^2+Y3^2
1032  R[N]=SQR(R[N])
1040  R[N]=Q[N]/R[N]
1050  R=R+R[N]
1060  NEXT N
1070  F=R
1080  FOR Z=1 TO L
1090  IF F<F[Z] OR F>F[Z+5] THEN 1120
1100  LET B[Y]=1
1110  LET A[X,Y]=Z
1120  NEXT Z
1130  NEXT X
1140  IF Y=30 OR Y=25 OR Y=20 OR Y=15 OR Y=10 OR Y=5 THEN 1170
1150  PRINT "-"'13;
1160  GOTO 1200
1170  J=2*Y/5
1180  J$=" 51015202530"
1190  PRINT J$[J-1,J]'13;
1200  IF B[Y]=0 THEN 1300
1210  FOR X=1 TO 51
1220  LET K$[X,X]=" "
1230  NEXT X
1240  FOR X=1 TO 60
1250  IF A[X,Y]=0 THEN 1280
1260  LET P1=INT((X/.588)+.5)/2
1270  LET K$[P1,P1]=B$[A[X,Y]+1,A[X,Y]+1]
1280  NEXT X
1290  PRINT K$;
1300  IF Y#1 THEN 1350
1310  PRINT 
1320  PRINT "+''''!''''!''''!''''!''''!''''!''''!''''!''''!''''!"
1330  PRINT "0    3    6    9    12   15   18   21   24   27   30"
1340  GOTO 1370
1350  PRINT 
1360  NEXT Y
1370  PRINT 
1380  PRINT "NOW YOU CAN DRAW A LINE THROUGH EACH SET OF POINTS THAT HAVE"
1390  PRINT "THE SAME SYMBOL."
1400  PRINT "DO YOU WANT TO RUN THIS PROGRAM AGAIN?  ";
1410  ENTER 200,W,A$
1420  PRINT 
1430  IF A$="YES" THEN 200
1440  IF A$#"NO" THEN 1400
1450  END 
