10  REM PROGRAM NAME = UNIVRS - INPUT SPEED & POSITION, PLOTS ORBITS.
20  REM STEPHEN BEATTY - 1973 - JEFFCO SCHOOLS, LAKEWOOD, COLORADO
30  REM 10 AUGUST 1973
40  DIM A[30,62],A$[10],D$[20],C$[20]
50  DIM B$[10],J$[30],K$[72]
60  DIM E$[10]
70  DIM H[101],V[101],X[10],Y[10],R[101],D[101]
80  B$=" 123SO"
90  J$=" 51015202530"
100  GOTO 120
110  D$="DEM-TEST"
120  PRINT '13;
130  GOTO 150
140  C$="TEST"
150  J=300
160  T=S1=B=C=0
170  A=240
180  S=1
190  IF D$="DEM-TEST" THEN 320
200  IF C$="TEST" THEN 460
210  PRINT "DO YOU WANT A DEMONSTRATION OF UNIVRS?  ";
220  ENTER A,D,A$
230  PRINT '13
240  IF A$="NO" THEN 340
250  IF A$#"YES" THEN 210
260  PRINT 
270  PRINT "THIS DEMONSTRATION SIMULATES A CENTRAL MASS (THE S CLUSTER)"
280  PRINT "CENTERED AT COORDINATES (15,15).  AT A RANDOM DISTANCE FROM THE"
290  PRINT "CENTRAL MASS, A SATELLITE IS GIVEN THREE DIFFERENT ORBITAL SPEEDS."
300  PRINT "THE ORBIT RESULTING FROM EACH SPEED IS PLOTTED.  THE NUMBERS"
310  PRINT "PRINTED ON THE PLOT INDICATE THE DIRECTION OF MOTION OF THE SATELLITE."
320  C$="DEMONSTRATION"
330  GOTO 500
340  PRINT "DO YOU WANT INSTRUCTIONS FOR RUNNING UNIVRS?  ";
350  ENTER A,D,A$
360  PRINT '13
370  IF D<0 THEN 340
380  IF A$="NO" THEN 460
390  IF A$#"YES" THEN 340
400  PRINT "A CENTRAL MASS (DENOTED BY S) IS LOCATED AT COORDINATES (15,15)"
410  PRINT "ON A 30 BY 30 GRAPH.  THE ORBIT OF A SATELLITE WILL BE PLOTTED."
420  PRINT "FOR THE SATELLITE YOU CAN INPUT THE STARTING COORDINATES,"
430  PRINT "AND THE ORBITAL SPEED.  THE NUMBERS PRINTED ON THE PLOT INDICATE"
440  PRINT "THE DIRECTION OF MOTION OF THE SATELLITE."
450  PRINT 
460  PRINT "----- INPUT THE ORBITAL SPEED(M/S) YOU WANT FOR THE SATELLITE:  ";
470  ENTER A,D,T1
480  PRINT '13
490  IF D<0 THEN 460
500  X[S]=Y[S]=15
510  MAT A=ZER
520  Q[S]=-100000.
530  FOR C=14 TO 16
540  FOR E=14 TO 16
550  A[E,C]=4
560  NEXT E
570  NEXT C
580  A[15,13]=A[15,17]=4
590  IF C$="DEMONSTRATION" THEN 630
600  PRINT '10"----- USING VALUES OF X AND Y BETWEEN 1 AND 30, INPUT THE (X,Y)"
610  PRINT "COORDINATES FOR THE STARTING POSITION OF THE SATELLITE:"
620  GOTO 930
630  IF B>0 THEN 1310
640  X=INT(20*RND(1)+.5)+5
650  IF X <= 10 OR X >= 20 THEN 690
660  Y=INT(20*RND(1)+.5)+5
670  IF Y <= 10 OR Y >= 20 THEN 700
680  GOTO 660
690  Y=INT(20*RND(1)+.5)+5
700  R=SQR((X-X[1])^2+(Y-Y[1])^2)
710  X9=X
720  Y9=Y
730  R9=R
740  E[1]=-Q[1]/R
750  F[1]=SQR(2*E[1])
760  E[1]=SQR(E[1])
770  IF D$#"DEM-TEST" THEN 790
780  PRINT "X="X9;"Y="Y9;"R="R9;"T(MIN)="E[1];"T(MAX)="F[1]
790  T5=INT(E[1]+.5)
800  IF D$#"DEM-TEST" THEN 820
810  PRINT "T(CIRCULAR)="T5;
820  T6=INT((J*RND(1))+.5)
830  IF T6 <= F[1] THEN 820
840  IF D$#"DEM-TEST" THEN 860
850  PRINT "T(ESCAPE)="T6;
860  T7=INT((F[1]*RND(1))+.5)
870  IF T7 <= E[1] THEN 860
880  IF D$#"DEM-TEST" THEN 900
890  PRINT "T(ELLIPSE)="T7
900  T1=T5
910  B=1
920  GOTO 1190
930  PRINT "   X = ";
940  ENTER A,D,X
950  IF D<0 THEN 990
960  X9=X
970  PRINT "             Y = ";
980  ENTER A,D,Y
990  PRINT '13
1000  IF D<0 THEN 930
1010  Y9=Y
1020  IF (X<1) OR (X>30) OR X#INT(X) THEN 1110
1030  IF (Y<1) OR (Y>30) OR Y#INT(Y) THEN 1110
1040  IF Y#15 THEN 1060
1050  IF X>12 AND X<18 THEN 1090
1060  IF Y#14 AND Y#16 THEN 1130
1070  IF X<14 OR X>16 THEN 1130
1080  PRINT "THE SATELLITE IS ON THE CENTRAL MASS.  TRY AGAIN."
1090  GOTO 930
1100  GOTO 1190
1110  PRINT "     USE INTEGERS BETWEEN 1 AND 30."
1120  GOTO 930
1130  R=SQR((X-X[1])^2+(Y-Y[1])^2)
1140  E[1]=-Q[1]/R
1150  F[1]=SQR(2*E[1])
1160  E[1]=SQR(E[1])
1170  X9=X
1180  Y9=Y
1190  Z1=X9
1200  Z2=Y9
1210  D1=X[1]-X9
1220  D2=Y[1]-Y9
1230  P1=ATN(D2/D1)
1240  IF D1>0 THEN 1280
1250  IF D2>0 THEN 1300
1260  L=3.14159-P1
1270  GOTO 1310
1280  L=-P1
1290  GOTO 1310
1300  L=3.14159-P1
1310  T9=T1
1320  A[Y9,X9]=5
1330  REM --------------ALGORITHM FOR CALCULATING POINTS TO PLOT.
1340  R=SQR((Z1-X[1])^2+(Z2-Y[1])^2)
1350  Q1=100000.
1360  Q2=R*T1
1370  IF Q2=0 THEN 1400
1380  Q3=(1/R)-Q1/(Q2*Q2)
1390  GOTO 1410
1400  Q3=0
1410  Z=0
1420  Q=360
1430  IF T9 <= F[1] THEN 1450
1440  Q=180
1450  FOR I=0 TO Q STEP 20
1460  P=(3.14159/180)*I
1470  IF Q2=0 THEN 1500
1480  R7=1/((Q1/Q2^2)+(Q3*COS(P)))
1490  GOTO 1510
1500  R7=0
1510  IF R7<0 THEN 1730
1520  X=R-R7*COS(P)
1530  Y=R7*SIN(P)
1540  X5=X*COS(L)+Y*SIN(L)
1550  Y5=-X*SIN(L)+Y*COS(L)
1560  X=X5+Z1
1570  Y=Y5+Z2
1580  IF C$#"TEST" THEN 1600
1590  PRINT I;X;Y;A[Y,X]
1600  IF X >= 40 OR Y >= 30 OR Y<1 OR X<1 THEN 1730
1610  IF A[Y,X]=5 THEN 1730
1620  IF A[Y,X]#4 THEN 1650
1630  I=C=360
1640  GOTO 1730
1650  Z=Z+1
1660  IF Z>2 THEN 1690
1670  A[Y,X]=1
1680  GOTO 1730
1690  IF Z>4 THEN 1720
1700  A[Y,X]=2
1710  GOTO 1730
1720  A[Y,X]=3
1730  NEXT I
1740  IF C$#"DEMONSTRATION" THEN 1790
1750  PRINT 
1760  PRINT '10"----- PLOT OF ORBIT FOR DISTANCE OF SEPARATION ="INT(R9+.5)"METERS"
1770  PRINT "                    AND ORBITAL SPEED ="T9"METERS/SECOND"
1780  GOTO 1820
1790  PRINT 
1800  PRINT "----- PLOT OF ORBIT FOR:  INITIAL POSITION: X ="X9", Y ="Y9
1810  PRINT "                     AND ORBITAL SPEED ="T9"M/S"
1820  PRINT 
1830  PRINT "Y COORDINATE"
1840  FOR Y=30 TO 1 STEP -1
1850  IF Y=30 OR Y=25 OR Y=20 OR Y=15 OR Y=10 OR Y=5 THEN 1880
1860  PRINT "-"'13;
1870  GOTO 1900
1880  W=2*Y/5
1890  PRINT J$[W-1,W]'13;
1900  FOR X=1 TO 40
1910  IF A[Y,X]#0 THEN 1940
1920  NEXT X
1930  GOTO 2030
1940  FOR X=1 TO 72
1950  LET K$[X,X]=" "
1960  NEXT X
1970  FOR X=1 TO 40
1980  IF A[Y,X]=0 THEN 2010
1990  LET P1=INT((X/.588)+.5)
2000  LET K$[P1,P1]=B$[A[Y,X]+1,A[Y,X]+1]
2010  NEXT X
2020  PRINT K$;
2030  PRINT 
2040  NEXT Y
2050  PRINT "+''''!''''!''''!''''!''''!''''!''''!''''!''''!''''!''''!''''!''''!"
2060  PRINT "0    3    6    9    12   15   18   21   24   27   30   33   36   39"
2070  PRINT "                        X COORDINATE"
2080  PRINT 
2090  IF C$="DEMONSTRATION" THEN 2150
2100  IF C=360 THEN 2310
2110  IF ABS(T1-E[1]) <= 1 THEN 2330
2120  IF T1>F[1] THEN 2350
2130  PRINT "THE SATELLITE IS IN AN ELLIPTICAL ORBIT."
2140  GOTO 2390
2150  B=B+1
2160  GOTO B-1 OF 2170,2200,2230
2170  PRINT "THE SATELLITE IS IN A CIRCULAR ORBIT."
2180  T1=T6
2190  GOTO 500
2200  PRINT "THE SATELLITE WILL NOT ORBIT. IT WILL ESCAPE INTO SPACE."
2210  T1=T7
2220  GOTO 500
2230  PRINT "THE SATELLITE IS IN AN ELLIPTICAL ORBIT."
2240  PRINT 
2250  PRINT "DO YOU WANT TO RUN THIS DEMONSTRATION AGAIN?  ";
2260  ENTER A,D,A$
2270  PRINT '13
2280  IF A$="YES" THEN 640
2290  IF A$#"NO" THEN 2250
2300  END 
2310  PRINT "THE SATELLITE HAS CRASHED INTO THE CENTRAL MASS."
2320  GOTO 2360
2330  PRINT "THE SATELLITE IS IN A CIRCULAR ORBIT. "
2340  GOTO 2390
2350  PRINT "THE SATELLITE WILL NOT ORBIT.  IT WILL ESCAPE INTO SPACE."
2360  PRINT "----- BYE....";
2370  ENTER 3,D,A$
2380  PRINT 
2390  PRINT '10"DO YOU WANT TO RUN THIS PROGRAM AGAIN?  ";
2400  A[Y[1],X[1]]=4
2410  ENTER A,D,A$
2420  PRINT '13
2430  IF A$="YES" THEN 460
2440  IF A$#"NO" THEN 2390
2450  END 
