10 REM Test of *FLOAT64 3/1/2003 REM try REMing out line 70 and see the difference in Printed result. REM Added test lines added are 130,140, 200, 220,230, 830-880 20 REM Stardance 5.02.02 30 REM by R.G.Weston 40 REM After A.K. Dewdney, Sci.Am. Vol. 254(No.1)Page6 January 1986 50 MODE8:OFF 60 count=0 70 *FLOAT64 :REM*************************** 80 N=9:DIM ax(N),ay(N),az(N),vx(N),vy(N),vz(N),x(N),y(N),z(N) 90 PRINTTAB(15,5)"Star Dance - Stars Moving under Gravity" 100 PRINTTAB(7,10)"Press Space Bar to set off and when you want to go again" 110 G=GET:CLS 120 REPEAT 130 sf=1 :REM*************************** 140 r=200 150 flag=0 160 N=3 170 GCOL0,1:VDU29,640;512; 180 PRINTN;" stars" 190 R=RND(TIME) 200 PROCnonrandom_setup 210 REPEAT 220 count+=1 :REM********************************* 230 IF ABS(x(1))>20000 THEN PRINTTAB(1,1) x(1) :PRINT"program loops = ";count:STOP 240 FOR i=1 TO N 250 ax(i)=0:ay(i)=0:az(i)=0 260 FOR j= 1 TO N 270 PROCforce_acc(i,j) 280 NEXT j 290 NEXT i 300 FOR i= 1 TO N 310 PROCvel(i) 320 NEXT i 330 FOR i=1 TO N 340 PROCnewpos(i) 350 PROCdisplay 360 NEXT i 370 IF flag=0 THEN PROCpause(1) 380 flag=1 390 UNTIL INKEY$(1)=" ":*FX21,0 400 CLS 410 UNTIL FALSE 420 : 430 END 440 : 450 DEF PROCforce_acc(i,j) 460 IF i=j THEN ENDPROC 470 dsq=(x(i)-x(j))^2+(y(i)-y(j))^2 + (z(i)-z(j))^2 480 IF dsq=0 THEN PRINTTAB(0,0)"COLLISION!!":ENDPROC 490 d=SQR(dsq) 500 F=10000/dsq 510 ax(i)=ax(i)+F*(x(j)-x(i))/d 520 ay(i)=ay(i)+F*(y(j)-y(i))/d 530 az(i)=az(i)+F*(z(j)-z(i))/d 540 ENDPROC 550 : 560 DEF PROCvel(i) 570 vx(i)=vx(i)+ax(i) 580 vy(i)=vy(i)+ay(i) 590 vz(i)=vz(i)+az(i) 600 ENDPROC 610 : 620 DEF PROCnewpos(i) 630 x(i)=x(i)+vx(i) 640 y(i)=y(i)+vy(i) 650 z(i)=z(i)+vz(i) 660 ENDPROC 670 : 680 DEF PROCnonrandom_setup 690 FOR i=1 TO N 700 vx(i)=-10 710 vy(i)=-10 720 vz(i)=10 730 : 740 x(i)= r*COS(i*50) 750 y(i)= -r*SIN(i*60) 760 z(i)= r*i*(-1)^2 770 PLOT69,x(i),y(i) 780 790 NEXT i 800 ENDPROC 810 : 820 DEF PROCdisplay 830 GCOL0,i :REM********************************** 840 IF ABS(sf*x(i))>500 THEN 850 CLS 860 sf=sf/5 870 ENDIF 880 PLOT69,sf*x(i),sf*y(i) 890 ENDPROC 900 : 910 DEF PROCpause(s):TIME=0:REPEAT UNTIL TIME>100*s:ENDPROC 920 930