10  REM PROGRAM NAME = BLOWS, AREAS SWEPT BY MOVING MASS
20  REM STEPHEN BEATTY - 1973 - JEFFCO SCHOOLS, LAKEWOOD, COLORADO
30  DIM A[30,62],A$[10],B$[72],C$[72],B[100],D$[20]
40  A=240
50  LET Q=7
60  LET B$="0123456789 "
70  GOTO 100
80  D$="TEST"
90  GOTO 400
100  PRINT "DO YOU WANT INSTRUCTIONS FOR RUNNING BLOWS?  ";
110  ENTER A,D,A$
120  PRINT '13
130  IF D<0 THEN 100
140  IF A$="NO" THEN 390
150  IF A$#"YES" THEN 100
160  PRINT 
170  PRINT "THIS PROGRAM WILL EXPLORE THE MOTION OF A MASS "
180  PRINT "TO WHICH BLOWS ARE APPLIED."
190  PRINT "HERE IS A DESCRIPTION OF THE PARTS OF THE PROGRAM:"
200  PRINT "  PART              DESCRIPTION"'10
210  PRINT "   1.  MOTION OF A MASS MOVING WITH UNIFORM VELOCITY."
220  PRINT 
230  PRINT "   2.  MOTION OF A MASS MOVING WITH UNIFORM VELOCITY"
240  PRINT "       WITH BLOWS APPLIED TOWARD A POINT."
250  PRINT 
260  PRINT "   3.  MOTION OF A MASS WITH BLOWS APPLIED RANDOMLY"
270  PRINT "       TOWARD OR AWAY FROM A POINT."
280  PRINT 
290  PRINT "   4.  MOTION OF A MASS MOVING WITH UNIFORM VELOCITY"
300  PRINT "       WITH BLOWS OF RANDOM MAGNITUDE APPLIED "
310  PRINT "       TOWARD OR AWAY FROM A POINT."
320  PRINT 
330  PRINT "   5.  MOTION OF A MASS WITH ZERO INITIAL VELOCITY"
340  PRINT "       WITH BLOWS APPLIED IN RANDOM DIRECTIONS."
350  PRINT 
360  PRINT "THE MOTION OF THE MASS WILL BE PLOTTED."
370  PRINT "THE TIME INTERVAL BETWEEN PLOTTED POINTS IS CONSTANT."
380  PRINT "YOU CAN ANALYZE EACH PLOT BY APPLYING KEPLER'S LAW OF AREAS."
390  PRINT 
400  PRINT "WHICH PART DO YOU WANT TO RUN (1, 2, 3, 4, OR 5)?  ";
410  ENTER A,D,N
420  PRINT '13
430  IF D<0 THEN 400
440  IF (N<1) OR (N>5) THEN 400
450  P2=N
460  GOTO N OF 470,870,1640,1790,1950
470  PRINT 
480  PRINT '10"----- UNIFORM VELOCITY:"
490  PRINT 
500  REM UNIFORM SPEED NO FORCE
510  MAT A=ZER
520  MAT B=ZER
530  LET V=INT(6*RND(1)+8)
540  FOR T=1 TO 5
550  LET D=T*V
560  LET B[D]=T
570  NEXT T
580  FOR K=1 TO 72
590  LET C$[K,K]=" "
600  NEXT K
610  FOR X=1 TO 60
620  IF B[X]=0 THEN 760
630  LET N=B[X]
640  IF N>9 THEN 670
650  LET N1=N
660  GOTO 690
670  LET N1=INT(N/10)
680  IF N>9 THEN 710
690  LET N2=0
700  GOTO 720
710  N2=(N-N1*10)
720  LET P=X
730  LET C$[P,P]=B$[N1+1,N1+1]
740  IF N2=0 THEN 760
750  LET C$[P+1,P+1]=B$[N2+1,N2+1]
760  NEXT X
770  PRINT C$
780  LET V1=10
790  FOR N=1 TO V1
800  IF N#V1 THEN 820
810  PRINT "C"
820  PRINT "-"
830  NEXT N
840  GOTO 1490
850  REM MOTION UNDER A CENTRAL FORCE --- PART 2
860  REM TIME INTERVALS MUST BE THE SAME
870  PRINT 
880  PRINT '10"----- BLOWS TOWARD C:"
890  PRINT 
900  LET U=1
910  S1=S2=2
920  LET T=.5
930  LET B=1
940  MAT A=ZER
950  LET F=INT(2*RND(1)+4.5)
960  LET F3=F
970  I1=5
980  LET I2=0
990  LET N1=1
1000  FOR N=1 TO Q STEP B
1010  IF P2=5 THEN 1060
1020  IF (N <= 2) THEN 1050
1030  LET F=F3
1040  GOTO 1060
1050  LET F=0
1060  GOTO P2 OF 1070,1070,1730,1880,2100
1070  LET R=SQR((S1-1)^2+(S2-30)^2)
1080  F2=ABS(F*((30-S2)/R))
1090  F1=ABS(F*((S1-1)/R))
1100  F2=U*F2
1110  F1=-U*F1
1120  LET S3=I1*B
1130  LET S4=I2*B
1140  LET V1=I1+F1*T
1150  LET V2=I2+F2*T
1160  S1=S1+S3
1170  S2=S2+S4
1180  LET I1=V1
1190  LET I2=V2
1200  IF S2>30 OR S2<1 OR S1>35 OR S1<1 THEN 1230
1210  LET A[S2,S1]=N1
1220  LET N1=N1+1
1230  IF D$#"TEST" THEN 1250
1240  PRINT S1,S2
1250  NEXT N
1260  REM PRINTS DIAGRAM
1270  LET N1=0
1280  FOR Y=1 TO 30
1290  PRINT "-";
1300  FOR X=1 TO 70
1310  LET C$[X,X]=" "
1320  NEXT X
1330  FOR X=1 TO 35
1340  IF A[Y,X]#0 THEN 1370
1350  NEXT X
1360  GOTO 1440
1370  FOR X=1 TO 35
1380  IF A[Y,X]=0 THEN 1420
1390  LET N1=A[Y,X]
1400  LET P=INT((X*5/3)+.5)
1410  LET C$[P,P]=B$[N1,N1]
1420  NEXT X
1430  PRINT C$'13;
1440  IF (Y#30) AND (X#1) THEN 1470
1450  PRINT "C"
1460  GOTO 1480
1470  PRINT 
1480  NEXT Y
1490  IF D$="TEST" THEN 400
1500  PRINT 
1510  PRINT 
1520  PRINT "CONSTRUCT TRIANGLES BY DRAWING LINES:"
1530  PRINT "   1) FROM C TO EACH OF THE NUMBERS, AND"
1540  PRINT "   2) BETWEEN EACH OF THE NUMBERS."
1550  PRINT "THEN, COMPARE THE AREAS OF THE INDIVIDUAL TRIANGLES."
1560  PRINT 
1570  PRINT "DO YOU WANT TO RUN THIS PROGRAM AGAIN?  ";
1580  ENTER A,D,A$
1590  PRINT '13
1600  IF D<0 THEN 1570
1610  IF A$="YES" THEN 390
1620  IF A$#"NO" THEN 1570
1630  GOTO 2150
1640  REM RANDOM BLOWS -- PART 3
1650  PRINT 
1660  PRINT '10"-----BLOWS RANDOM TOWARD OR AWAY FROM C:"
1670  PRINT 
1680  P2=3
1690  S1=2
1700  S2=10
1710  U=1
1720  GOTO 920
1730  LET R1=INT(2*RND(1)+1)
1740  IF R1=1 THEN 1770
1750  LET U=1
1760  GOTO 1070
1770  LET U=-1
1780  GOTO 1070
1790  REM SIZES OF BLOWS VARIED AND RANDOM IN OR OUT --- PART 4
1800  PRINT 
1810  PRINT '10"----- VARIED BLOWS TOWARD OR AWAY FROM C:"
1820  PRINT 
1830  S1=2
1840  S2=5
1850  U=1
1860  GOTO 920
1870  PRINT 
1880  R1=INT(4*RND(1)+1)
1890  IF R1<3 THEN 1920
1900  LET U=1
1910  GOTO 1930
1920  LET U=-1
1930  F=INT(3*RND(1)+2)
1940  GOTO 1070
1950  REM RANDOM ANGLES --- PART 5
1960  PRINT 
1970  PRINT 
1980  PRINT '10"----- BLOWS AT RANDOM DIRECTIONS:"
1990  PRINT 
2000  Q=30
2010  F=F3=2
2020  PRINT 
2030  MAT A=ZER
2040  S1=15
2050  LET S2=15
2060  LET T=.5
2070  LET I2=I1=N1=0
2080  LET B=1
2090  P2=5
2100  LET R2=(6.28*RND(1))
2110  LET F1=F*COS(R2)
2120  LET F2=F*SIN(R2)
2130  IF N1=0 THEN 990
2140  GOTO 1120
2150  END 
