10 REM Solar Surface Oscillations 20 REM SOLAROSC.BAS by John Kennewell 30 DIM P(200) 40 SCREEN 12: PH=1.570795: MX=0 50 RD=1: GN=256: BL=65536! 60 PRINT "Solar Oscillation Modes" 70 INPUT "Degree L [0 to 28]";L 80 INPUT "Order M [0 to L ]";M 90 REM Generate Legendre function 100 FOR XI=0 TO 200 110 X=(XI-100)/100: D=SQR(1-X*X) 120 P1=D^L: P2=0 130 FOR LI=1 TO (2*L-1) STEP 2 140 P1=P1*LI: NEXT LI 150 IF M>=L OR P1=0 THEN 200 160 FOR MI=L-1 TO M STEP -1 170 PM=2*(MI+1)*X*P1/D-P2 180 PM=PM/(L-MI)/(L+MI+1) 190 P2=P1: P1=PM: NEXT MI 200 P(XI)=P1: MT=ABS(P1) 210 IF MT>MX THEN MX=MT 220 NEXT XI 230 CLS : COLOR 1: LOCATE 2,3 240 PRINT "Solar Global Oscillations" 250 LOCATE 28,3 260 PRINT "MODE : L ="; L;" M =";M 270 REM Show color palette 280 FOR I=1 TO 15 290 LINE (600,-15+30*I)-(620,15+30*I),I,BF 300 RC=RD*INT((15-I)*4.5) 310 BC=BL*INT((I-1)*4.5) 320 GC=GN*INT((7-ABS(8-I))*4.5) 330 PALETTE I,RC+BC+GC: NEXT I 340 REM Plotting 350 FOR CT=-1 TO 1 STEP .005 360 ST=SQR(1-CT*CT) 370 PM=P(CT*100+100)/MX 380 FOR SF=-1 TO 1 STEP .005 390 CF=SQR(1-SF*SF) 400 FI=PH*SGN(SF) 410 IF CF<>0 THEN FI=ATN(SF/CF) 420 S=PM*COS(M*FI)*ST*CF 430 X%=300+200*SF*ST 440 Y%=240-200*CT 450 PSET (X%,Y%),8-7*S 460 NEXT SF: NEXT CT: END