Home » Archimedes archive » Archimedes World » AW-1992-08.adf » AWaug92 » !AWaug92/Goodies/Stargazer/!Stargazer/stargazer
!AWaug92/Goodies/Stargazer/!Stargazer/stargazer
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Archimedes World » AW-1992-08.adf » AWaug92 |
Filename: | !AWaug92/Goodies/Stargazer/!Stargazer/stargazer |
Read OK: | ✔ |
File size: | 646C bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
REM > Stargazer II - Release 2 of interactive star plotter REM > Version 7.00 - Vertical window and Time Change added 07/05/92 REM > Version 6.01 - Bug Fixes - 31/3/92 REM > Version 6.00 - Special release (I) for Archimedes World 13/01/92 LIBRARY"<Star$DIR>.WindMan" LIBRARY"<Star$DIR>.SpriteMan" PROCwimp_init("TASK","StarGazer") PROCsprite_init("<Star$Dir>.sprites","sun") PROCget_info_box("<Star$Dir>.Templates") ONERROR PROCerror DIM w_title% 42:$w_title%="Stargazer Release II (c) 1992 S.E.Ellwood" icstar%=FNiconbar("icon",64,64) PROCmisc_setup PROCget_planets PROCmake_menus PROCread_const_parts PROCsetpos(52,0):REM Cambridge PROCzoom(0) main%=FNnew_window(w_title%,800,600,xs%,ys%,200,200) PROCset_system_time timer%=TRUE state%=-1 REM Standard functionalilty from FNwimp_poll hooks, extras in loop REPEAT IF FNwimp_poll(0,pb%)=0 PROCbackground UNTIL FALSE END DEFPROCerror *CLOSE PROCerrorbox(ERR,REPORT$+" at line "+STR$ERL) PROCfinish END ENDPROC REM / These functions Tailor response to wimp_polls to provide stargazer functionality DEFPROCmenu(msx%,msy%,handle%) CASE handle% OF WHEN main%: PROCnew_menu(wind_menu%,msx%-32,msy%+16) WHEN -2 : PROCnew_menu(icon_menu%,msx%-200,240) ENDCASE ENDPROC DEFPROCmake_menus LOCALm%,i% m%=0 REM space for variable menu items DIM const_ptr% 16,star_ptr% 16,long_ptr% 16,lat_ptr% 16,int_ptr% 16,span_ptr% 16,time_ptr% 20 lat_menu% =FNtext_menu("Latitude",lat_ptr%,16,"A0-9dmNS") long_menu% =FNtext_menu("Longitude",long_ptr%,16,"A0-9dmEW") const_menu%=FNtext_menu("Const",const_ptr%,16,"Aa-z") star_menu% =FNtext_menu("Star",star_ptr%,16,"Aa-z") int_menu% =FNtext_menu("time step(m)",int_ptr%,16,"A0-9") span_menu% =FNtext_menu("time span(h)",span_ptr%,16,"A0-9") time_menu% =FNtext_menu("New time",time_ptr%,20,"A0-9:@/h") $int_ptr%="6" $span_ptr%="8" plan_menu%=FNbas_menu(m%,"Planet",144,8) FORi%=1TO8 PROCadd_item(m%,(i%=8),-1,Planet$(i%)) NEXT find_menu%=FNbas_menu(m%,"Object",144,5) PROCadd_item(m%,FALSE,-1,"Sun") PROCadd_item(m%,FALSE,-1,"Moon") PROCadd_item(m%,FALSE,plan_menu%,"Planet") PROCadd_item(m%,FALSE,star_menu%,"Star") PROCadd_item(m%,TRUE,const_menu%,"Const") view_menu%=FNbas_menu(m%,"View",176,2) PROCadd_item(m%,FALSE,-1,"Horizontal") PROCadd_item(m%,TRUE,-1,"Vertical") PROCtick_item(view_menu%,0) sync_menu%=FNbas_menu(m%,"Timer",128,2) PROCadd_item(m%,FALSE,-1,"System") PROCadd_item(m%,TRUE,time_menu%,"User") PROCtick_item(sync_menu%,0) obs_menu%=FNbas_menu(m%,"Observer",160,2) PROCadd_item(m%,FALSE,long_menu%,"Longitude") PROCadd_item(m%,TRUE,lat_menu%,"Latitude") icon_menu%=FNbas_menu(m%,"Star Menu",160,5) PROCadd_info(m%) PROCadd_item(m%,FALSE,obs_menu%,"New place") PROCadd_item(m%,FALSE,sync_menu%,"Clock") PROCadd_item(m%,FALSE,view_menu%,"Show_sky") PROCadd_item(m%,TRUE,-1,"quit") PROCtick_item(icon_menu%,2) sim_menu%=FNbas_menu(m%,"Simulation",192,2) PROCadd_item(m%,FALSE,int_menu%,"Time step") PROCadd_item(m%,TRUE,span_menu%,"Time span") wind_menu%=FNbas_menu(m%,"Options",192,5) PROCadd_item(m%,FALSE,find_menu%,"find object") PROCadd_item(m%,FALSE,-1,"Show consts") PROCadd_item(m%,FALSE,-1,"Zoom in") PROCadd_item(m%,FALSE,-1,"Zoom out") PROCadd_item(m%,TRUE,sim_menu%,"Simulate") const_draw%=FALSE ENDPROC DEFPROCaction(msx%,msy%,handle%) CASE handle% OF WHEN main% : PROCunque(msx%,msy%) WHEN -2 : PROCactivate ENDCASE ENDPROC DEFPROCadjust(msx%,msy%,handle%) CASE handle% OF WHEN main% : PROCunque(msx%,msy%) WHEN -2 : PROCactivate ENDCASE ENDPROC DEFFNhelp(q%) LOCALm$ CASE TRUE OF WHEN q%!32=-2 AND q%!36=icstar% : m$="This is the Stargazer icon.|MClick on here to display stars" WHEN q%!32=main% : m$="This is the star display window|MClick on here to identify stars" OTHERWISE :m$="" ENDCASE =m$ DEFPROCbackground CASE state% OF WHEN -1: PROCget_stars PROCinfobox("Star Data "+copyright$,"Last data update "+update$) state%=0 WHEN 0 : PROCuntick_item(wind_menu%,4) PROCscansky state%=1 WHEN 1 : PROCupdate_men_time IF open% PROCredraw_window(main%) state%=2 WHEN 2 : IFtimer% state%=3 WHEN 3 : PROCinctime(FNtime_past) PROCcalc_earth_pos obj%=1 state%=4 WHEN 4 : IF FNten_stars(obj%) state%=5 WHEN 5 : PROCcalc_our_galaxy state%=6 WHEN 6 : IF open% PROCcalc_view state%=7 WHEN 7 : IF FNlook_next :state%=1 WHEN 8 : IFopen%=FALSE OR FNfast_scan=0 state%=1 ENDCASE ENDPROC DEFFNfast_scan obj%+=1 IFobj%<num_periods% ANDopen% THEN PROCinctime(step%) PROCscansky PROCredraw_window(main%) ELSE PROCuntick_item(wind_menu%,4) ENDIF =obj%<num_periods% DEFPROCactivate PROCcalc_view PROCcalc_our_galaxy PROCopenup(main%) ENDPROC DEFPROCmenuselect(m%,menu%) CASE menu% OF WHEN wind_menu% : PROCwindm(m%) WHEN icon_menu% : PROCiconm(m%) ENDCASE ENDPROC DEFPROCwindm(m%) CASE !m% OF WHEN0 : PROCfind_obj(m%+4) WHEN1 : PROCshow_const(const_draw% EOR TRUE) WHEN2 : PROCzoom(1) WHEN3 : PROCzoom(-1) WHEN4 : IFm%!4=-1 PROCset_simulation ENDCASE ENDPROC DEFPROCiconm(m%) CASE !m% OF WHEN1 : PROCnew_place WHEN2 : PROCnew_time(m%!4) WHEN3 : PROCset_view(m%!4) WHEN4 : PROCfinish:END ENDCASE ENDPROC DEFPROCset_simulation IFstate%=8 THEN num_periods%=0 ELSE step%=VAL(FNsget(int_ptr%)) end%=VAL(FNsget(span_ptr%)) IFstep%=0 OR end%=0 THEN PROCerrorbox(240,"Bad time parameters") ELSE num_periods%=60*end%/step% obj%=0 state%=8 PROCtick_item(wind_menu%,4) PROCwind_clock(0) PROCtick_item(sync_menu%,1) PROCuntick_item(sync_menu%,0) $w_title%="Simulated star movement" ENDIF ENDIF ENDPROC DEFPROCset_view(v%) IFv%=-1 THEN PROCactivate ELSE open%=TRUE PROChourglass_on IFv%=0 THEN xs%=gd%*360 Vertical=FALSE PROCuntick_item(view_menu%,1) PROCtick_item(view_menu%,0) ELSE xs%=ys% Vertical=TRUE PROCuntick_item(view_menu%,0) PROCtick_item(view_menu%,1) ENDIF open%=TRUE PROCcalc_view PROCresize_window(main%,xs%,ys%) PROCredraw_window(main%) PROChourglass_off ENDIF ENDPROC DEFPROCfind_obj(m%) LOCALalt,azm CASE !m% OF WHEN0 : PROCsun(alt,azm):PROCshow_obj(alt,azm,"Sun") WHEN1 : PROCmoon(alt,azm):PROCshow_obj(alt,azm,"Moon") WHEN2 : PROCfind_planet(1+(m%!4)) WHEN3 : PROCfind_star WHEN4 : PROCfind_const ENDCASE ENDPROC DEFPROCnew_time(t%) CASE t% OF WHEN-1 : PROCwind_clock(timer% EOR TRUE) OTHERWISE : PROCset_clock(t%):state=0 ENDCASE ENDPROC DEFPROCwind_clock(t%) timer%=t% IF timer% PROCtick_item(icon_menu%,2) ELSE PROCuntick_item(icon_menu%,2) ENDPROC DEFPROCset_clock(c%) IFc%=0 THEN PROCset_system_time PROCtick_item(sync_menu%,0) PROCuntick_item(sync_menu%,1) ELSE PROCset_user_time PROCtick_item(sync_menu%,1) PROCuntick_item(sync_menu%,0) ENDIF ENDPROC DEFPROCshow_const(v%) const_draw%=v% IFconst_draw% PROCtick_item(wind_menu%,1) ELSEPROCuntick_item(wind_menu%,1) PROCredraw_window(main%) ENDPROC DEFPROCfind_planet(p%) IFp%>0 THEN PROCplanet(p%,alt,azm) PROCshow_obj(alt,azm,Planet$(p%)) ENDIF ENDPROC DEFPROCfind_star LOCALi%,s$ IF ?star_ptr%<>13 THEN ?star_ptr%-=32 s$=FNsget(star_ptr%) i%=0 REPEAT i%+=1 UNTIL i%=Named_stars% OR Star$(i%)=s$ IFStar$(i%)=s$ THEN i%=star%(i%) PROCshow_obj(Alt(i%),Azm(i%),s$) ELSE PROCerrorbox(240,"No star named "+s$+" Known") ENDIF ENDIF $star_ptr%="" ENDPROC DEFPROCfind_const LOCALi%,s%,f%,s$ PROCshow_const(TRUE) IF ?const_ptr%<>13 THEN ?const_ptr%-=32 s$=FNsget(const_ptr%) i%=0 REPEAT i%+=1 UNTIL i%=num_const OR CN$(i%)=s$ IFCN$(i%)=s$ THEN s%=const%(i%) f%=const%(i%+1) REPEAT:s%+=1:UNTILY%(s%)>0 ORs%=f% PROCshow_obj(Alt(s%),Azm(s%),s$) ELSE PROCerrorbox(240,"No Constelation named "+s$+" Known") ENDIF ENDIF $const_ptr%="" ENDPROC DEFPROCshow_obj(alt,azm,n$) LOCALx%,y% IF (alt<0) THEN PROCinfobox(n$,"Object currently below the Horizon") ELSE IF Vertical <> (alt>RAD(66)) PROCset_view(alt>RAD(66)) PROCtransview(alt,azm,x%,y%) PROCscroll_wind(main%,x%,y%,xs%,ys%) MOUSE TO x%,y% ENDIF ENDPROC DEFPROCnew_place Long=FNget_angle(long_ptr%,"WE",Viewer_Rah*15,"Longitude") Lat=FNget_angle(lat_ptr%,"NS",DEG(Viewer_Lat),"Latitude") PROCsetpos(Lat,Long) state%=0 ENDPROC DEFFNget_angle(a%,d$,def,e$) LOCALd%,m%,s%,s$ s$=FNsget(a%) CASE RIGHT$(s$,1) OF WHEN LEFT$(d$,1) :s%=1 WHEN RIGHT$(d$,1):s%=-1 OTHERWISE :s%=0 ENDCASE d%=INSTR(s$,"d") m%=INSTR(s$,"m") IFs%=0 ORINSTR(s$,"d",d%+1)>0 ORd%<2 OR(m%>0 AND(m%<d%+2 ORm%<LEN(s$)-1)) OR(m%=0 ANDd%<LEN(s$)-1) THEN PROCerrorbox(240,e$+" "+s$+" ill formatted"+STR$(d%)+STR$(m%)+STR$(LEN(s$))) ELSE def=s%*(VAL(LEFT$(s$,d%-1))+VAL(MID$(s$,d%+1,m%-d%-1))/60) ENDIF =def DEFPROCzoom(s%) IFs%=0 THEN sc%=1146 gd%=20 co%=gd%*33 ys%=co%<<1 xs%=gd%*360 scs%=2 Vertical=FALSE ELSE sc%=sc%*(2^s%) gd%=gd%*(2^s%) scs%-=s% IFscs%<=0 PROCshade_item(wind_menu%,2) ELSEPROCenable_item(wind_menu%,2) IFscs%>=4 PROCshade_item(wind_menu%,3) ELSEPROCenable_item(wind_menu%,3) co%=gd%*33 ys%=co%<<1 IF Vertical xs%=ys% ELSExs%=gd%*360 PROCcalc_view PROCresize_window(main%,xs%,ys%) PROCredraw_window(main%) ENDIF ENDPROC DEFPROCredraw_window(handle%) LOCALmore%,s$ IF handle%=main% THEN more% = FNget_window(main%,x0%,x1%,y0%,y1%) WHILE more% PROCdraw_window(x0%,x1%,y0%,y1%) more%=FNget_rectangle(main%,x0%,x1%,y0%,y1%) ENDWHILE ENDIF ENDPROC REM / Window redrawing routines / REM / Version 5.2 - Optimised for speed on basic/compiled basic DEFPROCdraw_window(x0%,x1%,y0%,y1%) LOCALi%,f%,a%,b%,t% REM #register a% REM #register b% REM #register i% REM #register t% x0%-=16 x1%+=16 y0%-=16 y1%+=16 VDU23,6,1,1,1,1,1,1,1,1 IF Vertical PROCvert_window ELSE PROChoriz_window IFconst_draw% THEN SYS Col%,15 f%=gd%*90 FORi%=1TOmax_line% a%=ls%(i%) b%=lf%(i%) IFABS(X%(a%)-X%(b%))<f% MOVEX%(a%)+bx%,Y%(a%)+by%:PLOT&15,X%(b%)+bx%,Y%(b%)+by% NEXT ENDIF FORi%=1TO sds% IFX%(i%)>x0% AND X%(i%)<x1% THEN IF Y%(i%)>y0% ANDY%(i%)<y1% THEN t%=Mag(i%)+scs%:IFt%<0 t%=0 IFt%<9 SYSspop%,&234,sprites%,sm%(t%),X%(i%)-o%(t%)+bx%,Y%(i%)-o%(t%)+by%,8,factors%,pixtrans% ENDIF ENDIF NEXT x0%-=20:x1%+=20:y0%-=20:y1%+=20 FORi%=1TO8 PROCscale_plot(Xp%(i%),Yp%(i%),Planet$(i%)) NEXT PROCscale_plot(Xs%,Ys%,"sun") PROCscale_plot(Xm%,Ym%,"moon"+moon_phase$) ENDPROC DEFPROCscale_plot(x%,y%,s$) IFx%>x0% ANDx%<x1% ANDy%>y0% ANDy%<y1% SYS spop%,&134,sprites%,s$,x%+bx%,y%+by%,8,factors%,pixtrans% ENDPROC DEFPROCvert_window LOCALi%,j%,xc%,yc%,dr% xc%=bx%+co% yc%=by%+co% VDU5 SYS Col%,14 FORi%=10 TO 30 STEP 10 dr%=i%*gd% MOVExc%,yc%+dr% FORj%=1 TO 24 PLOT&15,xc%+dr%*cx(j%),yc%+dr%*cy(j%) NEXT MOVExc%-16,yc%-dr%+32:PRINT;90-i% NEXT ENDPROC DEFPROChoriz_window LOCALi%,t%,v%,c% v%=by%+gd%*72 c%=gd%*45 SYS Col%,14 FORi%=1TO8 MOVEbx%-8*LENCP$(i%)+c%*(i%),by%+32 PRINTCP$(i%) t%=bx%+c%*i% MOVEt%,by% PLOT&15,t%,v% REPEAT t%-=450 MOVEt%,by% PLOT&15,t%,v% UNTILt%<=bx%+c%*(i%-1)+450 NEXT t%=bx%+gd%*360 FORi%=0 TO 60 STEP 400/gd% v%=by%+gd%*i% MOVEbx%,v%+32 PRINT;i% MOVEbx%,v% PLOT&15,t%,v% NEXT ENDPROC REM / Routines for calculating star positions / DEFPROCscansky LOCALi% PROChourglass_on PROCcalc_earth_pos FORi%=1TO sds% PROCcalc_pos(Rah(i%),Dec(i%),Alt(i%),Azm(i%)) NEXT PROCcalc_view PROCcalc_our_galaxy PROChourglass_off ENDPROC DEFFNten_stars(RETURN i%) LOCALn% n%=0 REPEAT PROCcalc_pos(Rah(i%),Dec(i%),Alt(i%),Azm(i%)) i%+=1 n%+=1 UNTIL i%=sds% OR n%=10 =(i%=sds%) DEFPROCcalc_view LOCALi%,t IF Vertical THEN FORi%=1TOsds% t=sc%*(PI/2-Alt(i%)) X%(i%)=co%+t*SIN(Azm(i%)) Y%(i%)=co%-t*COS(Azm(i%)) NEXT ELSE FORi%=1TOsds% Y%(i%)=sc%*Alt(i%) X%(i%)=sc%*Azm(i%) NEXT ENDIF ENDPROC DEFPROCtransview(alt,azm,RETURN x%,RETURN y%) LOCALt IF Vertical THEN t=sc%*(PI/2-alt) x%=co%+t*SIN(azm) y%=co%-t*COS(azm) ELSE x%=sc%*azm y%=sc%*alt ENDIF ENDPROC DEFPROCcalc_our_galaxy:LOCALi%,T1, alt, azm FORi%=1TO8 PROCplanet(i%,alt,azm) PROCtransview(alt,azm,Xp%(i%),Yp%(i%)) NEXT PROCsun(alt,azm) PROCtransview(alt,azm,Xs%,Ys%) PROCmoon(alt,azm) PROCtransview(alt,azm,Xm%,Ym%) ENDPROC REM / Object descriptions / DEFPROCunque(X%,Y%) LOCALf%,i%,r%,nr% r%=4096 f%=0 FORi%=1TO8 nr%=((X%-Xp%(i%))^2 +(Y%-Yp%(i%))^2) IF nr%<r% THEN f%=i%:r%=nr% NEXT IFf% THEN PROCinfobox("Info on Planet "+Planet$(f%),FNplanet_data(f%)) ELSE i%=0 f%=0 REPEAT i%+=1 nr%=((X%-X%(i%))^2 +(Y%-Y%(i%))^2) IF nr%<r% THEN f%=i%:r%=nr% UNTILr%<16 ORi%=sds% IFf% THEN LOCAL alt, azm, dat$ PROCcalc_pos(Rah(f%),Dec(f%),alt,azm) dat$=FNpos_string(alt,azm) @%=&1020208 dat$+=" Magnitude="+STR$(Mag(f%))+"(var?)(double?) "+FNorbit_data(f%) @%=10 PROCinfobox("Info on "+FNname(group%(f%))+" "+FNconstname(f%)+FNstarname(f%),dat$) ENDIF ENDIF ENDPROC DEFFNplanet_data(p%) LOCAL alt,azm,S$ alt=0:azm=0 PROCplanet(p%,alt,azm) S$=FNpos_string(alt,azm) =S$ DEFFNpos_string(alt,azm) LOCALd$ IFazm>PI THEN d$="W" azm=2*PI-azm ELSE d$="E" ENDIF =" Azimuth="+FNdang(azm)+d$+" Alt="+FNdang(alt) DEFFNdang(a) LOCALa% a=DEG(a) a%=a @%=10 =STR$(a%)+"�"+STR$(INT(60*(a-a%)))+"'" DEFFNname(p%) IFp%<=32 THEN=CEN$(p%) LOCALt$ t$=$p% IFLEFT$(t$)="'" THEN=MID$(t$,2,1) =t$ DEFFNorbit_data(s%) LOCALc,tt,tr,hah,st,d$ c=PI/2-ABS(Viewer_Lat-Dec(s%)) st=hour+min/60-stardate+Rah(s%) d$="Culminates "+FNdec_time(st)+" at "+FNdang(c) IFc<0 THEN d$+=" -Never rises- " ELSE tt=-TAN(Dec(s%))*Vls/Vlc IFABS(tt)>=1 THEN d$+=" -Never sets- " ELSE hah=12*ACS(tt)/PI d$+=" Rises "+FNdec_time(st-hah)+", Sets "+FNdec_time(st+hah) ENDIF ENDIF =d$ DEFFNstarname(n%) LOCALi% i%=0 REPEAT i%+=1 UNTILi%=Named_stars% OR star%(i%)=n% IFstar%(i%)=n% THEN=" - "+Star$(i%) ="" DEFFNconstname(n%) LOCALi% i%=0 REPEAT i%+=1 UNTILconst%(i%)>=n% ORi%=num_const =CN$(i%+(i%<num_const)) REM / Initialisation Routines / DEFPROCmisc_setup LOCALi%,a RAHE=12/PI:SIDE=PI/12 DIMD%(12),M$(12) FOR I%=1 TO 12 READM$(I%),T% D%(I%)=T%+28 NEXT DATAJan,3,Feb,1,Mar,3,Apr,2,May,3,Jun,2,Jul,3,Aug,3,Sep,2,Oct,3,Nov,3,Dec,3 mon$=" JanFebMarAprMayJunJulAugSepOctNovDec" DIM CP$(8) RESTORE+0 DATA "N", "NE", "E", "SE", "S", "SW", "W", "NW" FORi%=0 TO7 READ CP$(i%) NEXT DIMsm%(8),o%(8) RESTORE+0 DATA8,6,6,4,4,4,2,0,0 FORi%=0TO8 READo%(i%) SYS &2e,&118,sprites%,"mag"+STR$(i%-2) TO,,sm%(i%) NEXT DIMcx(24),cy(24) FORi%=0 TO 24 a=RAD(i%*15) cx(i%)=SIN(a) cy(i%)=COS(a) NEXT ENDPROC DEFPROCget_planets LOCAL P, i% DIM Pdat(8,10), Planet$(8) RESTORE+0 DATA "Earth" , 1 , 0.016664, 0.00366, 53.1919 ,287.67672, 174.48174 DATA "Mercury", 0.387098, 0.205638, 7.00219, 226.30777, 29.01747, 47.70447 DATA "Venus" , 0.723332, 0.006817, 3.39389, 1.4518 , 54.69863, 76.15263 DATA "Mars" , 1.523673, 0.09327 , 1.84778, 326.72296,286.13461, 49.0962 DATA "Jupiter", 5.20167 , 0.04799 , 1.3065 , 46.8294 ,273.6191 , 99.9806 DATA "Saturn" , 9.57157 , 0.05762 , 2.4887 , 36.8602 ,339.7222 , 113.1709 DATA "Uranus" ,19.13902 , 0.04633 , 0.7711 , 47.433 , 93.2332 , 73.8595 DATA "Neptune",29.93503 , 0.01277 , 1.7739 , 204.3292 ,278.6735 , 131.2755 DATA "Pluto" ,39.36753 , 0.24629 ,17.1389 , 341.722 ,113.6122 , 109.5233 FORi%=0TO8 READPlanet$(i%) READ P:REM Param 1 Pdat(i%, 0)=0.0172024 / SQR(P^3) Pdat(i%, 1)=P READ P:REM Param 2 Pdat(i%, 2)=P Pdat(i%, 3)=Pdat(i%,1)*SQR(1-P*P) READ P:REM Param 3 Pdat(i%, 4)=COSRAD(P) Pdat(i%, 5)=SINRAD(P) READ P:REM Param 4 Pdat(i%, 6)=RAD(P) READ P:REM Param 5 Pdat(i%, 7)=COSRAD(P) Pdat(i%, 8)=SINRAD(P) READ P:REM Param 6 Pdat(i%, 9)=COSRAD(P) Pdat(i%,10)=SINRAD(P) NEXT Earth_X=0 Earth_Y=0 Earth_Z=0 ENDPROC DEFPROCread_const_parts LOCALi% DIM CEN$(24) RESTORE+0 DATA Object in,Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa DATA Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi DATA Psi,Omega DATA "abgdezh0iklmnxoprstvqfcw" FORi%=0TO24 READCEN$(i%) NEXT READ Clookup$ ENDPROC DEFPROCget_stars REM Version 5.2 - optimised for loading speed LOCALD,f%,s%,i%,l%,p%,a%,b%,cn%,t$ PROChourglass_on f%=OPENIN("<Star$Dir>.Star_map") IFf%=0 PROCbadfile("Star_Map not Found") copyright$=FNreadstr(f%) t$=FNreadstr(f%) IF FNleftpar(t$,"=")<>"Update" PROCbadfile("No update") update$=FNrightpar(t$,"=") num_const=88 DIM CN$(88),const%(88),Star$(404),star%(404),ls%(1000),lf%(1000) sds%=VAL(FNrightpar(FNreadstr(f%),"=")) str_len%=2000 DIM Rah(sds%), Dec(sds%), group%(sds%), Mag(sds%),Alt(sds%),Azm(sds%),str_space% str_len% str_len%+=str_space%-2 DIM Xp%(8), Yp%(8), X%(sds%), Y%(sds%) Named_stars%=0 IFFNreadstr(f%)<>"Stardata" PROCbadfile("Bad Header") p%=BGET#f%:REM lf s%=0 max_line%=0 str_ptr%=str_space% FORcn%=1 TO 88 t$=FNreadstr(f%) IF VAL(FNrightpar(t$,"="))<>cn% PROCbadfile("Const ["+t$+"] out of step, should be "+STR$(cn%)) CN$(cn%)=FNleftpar(t$,"=") const%(cn%)=s% REM get lines p%=BGET#f% WHILEp%<>10 AND p%<>ASC";" t%=BGET#f% IFt%=ASC"-" a%=(p%-48) ELSEa%=(p%-48)*10 + t%-48:t%=BGET#f% t%=BGET#f% p%=BGET#f% IFp%>47 ANDp%<58 b%=(t%-48)*10 + p%-48:p%=BGET#f% ELSEb%=(t%-48) max_line%+=1 ls%(max_line%)=a%+s% lf%(max_line%)=b%+s% IFp%<>10 ANDp%<>ASC"," ANDp%<>ASC";" PROCbadfile("overrun on const "+STR$(cn%)+"'"+STR$(max_line%)) IFp%=ASC"," p%=BGET#f% ENDWHILE WHILEp%<>10:p%=BGET#f%:ENDWHILE:REM skip to end of line p%=BGET#f% WHILEp%<>10 s%+=1 IFs%>sds% PROCbadfile("Too many stars "+STR$(s%)+"/"+STR$(sds%)) group%(s%)=INSTR(Clookup$,CHR$(p%)) IFgroup%(s%)=0 THEN group%(s%)=str_ptr% REPEAT IF str_ptr%>=str_len% PROCbadfile("Run out of string space") ?str_ptr%=p% str_ptr%+=1 p%=BGET#f% UNTILp%=32 ORp%=ASC"@" ?str_ptr%=13 str_ptr%+=1 ENDIF WHILEp%<>ASC"@":p%=BGET#f%:ENDWHILE a%=BGET#f% b%=BGET#f% t% = a%*36000+b%*3600 a%=BGET#f% IFa%<>ASC"h" PROCbadfile("h expected") a%=BGET#f% b%=BGET#f% t%+= a%*600+b%*60 a%=BGET#f% IFa%<>ASC"m" PROCbadfile("m expected") a%=BGET#f% b%=BGET#f% t%+=a%*10+b%-1933008 Rah(s%)=t%/3600 a%=BGET#f% IFa%<>ASC"s" PROCbadfile("s expected ") a%=BGET#f% IFa%<>ASC"," PROCbadfile(", expected") p%=BGET#f%:REM sign a%=BGET#f% b%=BGET#f% t% =a%*36000+b%*3600 a%=BGET#f% IFa%<>ASC"d" PROCbadfile("d expected") a%=BGET#f% b%=BGET#f% t%+=a%*600+b%*60 a%=BGET#f% IFa%<>ASC"'" PROCbadfile("' expected") a%=BGET#f% b%=BGET#f% t%+=a%*10+b%-1933008 IFp%=ASC"-" t%=-t% Dec(s%)=RAD(t%/3600) a%=BGET#f% IFa%<>ASC"s" PROCbadfile("s expected") a%=BGET#f% IFa%<>ASC"^" PROCbadfile("^ expected") p%=BGET#f% IFp%=ASC"-" t%=BGET#f% ELSEt%=p% a%=BGET#f% IFa%<>ASC"." PROCbadfile(". expected") a%=BGET#f% b%=BGET#f% t%=t%*100+a%*10+b%-5328 IFp%=ASC"-" THENt%=-t% Mag(s%)=t%/100 IFBGET#f%=ASC"=" THEN Named_stars%+=1 Star$(Named_stars%)=FNreadstr(f%) star%(Named_stars%)=s% ENDIF p%=BGET#f% ENDWHILE NEXT IFs% < sds% PROCbadfile("Stars accounted for ="+STR$(s%)) CLOSE#f% PROChourglass_off ENDPROC DEFFNnext_param(s$,RETURN p%,d$) LOCALn% n%=INSTR(s$,d$,p%) IFn%=0 n%=LEN(s$)+1 s$=MID$(s$,p%,n%-p%) p%=n%+1 =s$ DEFFNrightpar(t$,d$) LOCAL p% p% = INSTR(t$,d$) IFp%=0 THEN="" =RIGHT$(t$,LEN(t$)-p%) DEFFNleftpar(t$,d$) LOCAL p% p% = INSTR(t$,d$) IFp%=0 THEN="" =LEFT$(t$,p%-1) DEFFNreadstr(f%) LOCAL g%,t$ t$="" g%=BGET#f% WHILE g%<>10 REMANDg%<>ASC";" t$+=CHR$(g%) g%=BGET#f% ENDWHILE WHILEg%<>10:g%=BGET#f%:ENDWHILE =t$ DEFPROCbadfile(t$) CLOSE#f% ERROR 257,"Bad star file ("+t$+") at const"+STR$(cn%) ENDPROC REM / Low level starmap calculations / DEFPROCcalc_earth_pos LOCALB%,V%,e B%=(month-14)/12 V%=367*(month-2-12*B%)/12-3*INT((year+6800+B%)/100)/4 real_time_day=day-2447095.5 +INT(1461*(year+6700+B%)/4) +V% +(hour+min/60)/24 e=RAD(23.452 -0.013*real_time_day/36525) Earth_Cos=COS(e) Earth_Sin=SIN(e) stardate = FNrmod(6.646 + 24*real_time_day/365.25 + hour + min/60, 24)-Viewer_Rah PROCplan_pos(0,Earth_X,Earth_Y,Earth_Z) ENDPROC DEFPROCsun(RETURN alt,RETURN azm) LOCALt, m t=real_time_day/36525 m=RAD(358.476+36000*t) PROCcalc_equiv(RAD(279.697+36000*t)+RAD((1.919-.005*t)*SIN(m)+.02*SIN(2*m)),0,alt,azm) ENDPROC DEFPROCmoon(RETURN alt,RETURN azm) LOCALY, BET, LAM Y=0.7*SINRAD(341.5+24.3815*real_time_day)+6.3*SINRAD(296.1+13.065*real_time_day) Y-=1.3*SINRAD(314.6-11.31651*real_time_day) BET=RAD(5.2*SINRAD(Y+11.2+13.22935*real_time_day)) Y+=270.4+13.1764*real_time_day+.2*SINRAD(232.2+26.13*real_time_day) LAM=RAD(Y-.1*SINRAD(22.5+26.4587*real_time_day)-.2*SINRAD(358.5+.9856*real_time_day)) moon_age%=.082*FNrmod(350.74+445267.14*(real_time_day/36525), 360) moon_phase$=STR$(1+INT(moon_age%/7.5)) PROCcalc_equiv(LAM,BET,alt,azm) ENDPROC DEFPROCplan_pos(N%,RETURN x,RETURN y,RETURN z) LOCALm, c, e, n%, xl, yl m = Pdat(N%, 6)+Pdat(N%, 0)*(real_time_day-28180.5) c = m + Pdat(N%,2)*SIN(m ) n%=1 REPEAT e=c+(m + Pdat(N%,2)*SIN(c) - c)/( 1 - Pdat(N%,2)*COS(c) ) SWAP c, e n%+=1 UNTILABS(e-c)<1E-6 OR n%>100 x=Pdat(N%,1)*(COS(e)-Pdat(N%, 2)) y=Pdat(N%,3)*SIN(e) xl=x*Pdat(N%,7) - y*Pdat(N%,8) yl=x*Pdat(N%,8) + y*Pdat(N%,7) x=xl*Pdat(N%,9) - yl*Pdat(N%,10)*Pdat(N%,4) y=xl*Pdat(N%,10)+ yl*Pdat(N%,9)*Pdat(N%,4) z=yl*Pdat(N%,5) ENDPROC DEFPROCplanet(N%,RETURN alt,RETURN azm) LOCAL x,y,z x=0:y=0:z=0 PROCplan_pos(N%,x,y,z) x-=Earth_X y-=Earth_Y z-=Earth_Z PROCcalc_equiv(ATN(y/x)+PI*(3+SGN(x))/2,ASN(z/SQR(x*x+y*y+z*z)),alt,azm) ENDPROC DEFPROCcalc_equiv(LAM,BET,RETURN alt,RETURN azm) LOCALc, s, X LAM=FNrmod(LAM, 2*PI) c=COS(BET) s=SIN(BET) X=c*SIN(LAM) PROCcalc_pos(RAHE*FNang(X*Earth_Cos-s*Earth_Sin,c*COS(LAM)),ASN(s*Earth_Cos+X*Earth_Sin),alt,azm) ENDPROC DEFPROCcalc_pos(RAH,DEC, RETURN alt,RETURN azm) LOCAL H, X, s, c c=-COS(DEC) s= SIN(DEC) H=SIDE*(stardate-RAH) X=c*COS(H) alt=ASN(s*Vls-X*Vlc) azm=FNang(c*SIN(H), s*Vlc+X*Vls) ENDPROC DEFPROCsetpos(Lat,Long) Viewer_Lat=RAD(Lat) Vlc=COS(Viewer_Lat) Vls=SIN(Viewer_Lat) Viewer_Rah=Long/15 $long_ptr%=FNmake_ang(Long,"WE") $lat_ptr% =FNmake_ang(Lat,"NS") ENDPROC DEFFNmake_ang(a,d$) LOCALd%, m% d%=ABS(INT(a)) m%=ABS(INT(a*60))-d%*60 =STR$(d%)+"d"+STR$(m%)+"m"+MID$(d$,1-(a<0),1) DEFFNang(Y, X) IFX=0 THEN=PI*SGN(Y) =PI+ATN(Y/X)+(X>0)*SGN(Y)*PI DEFFNrmod(A, M) IFA<0 REPEATA+=M:UNTILA>0 ELSEA-=M*INT(A/M) =A DEFFNdec_time(A) LOCALh%,m% A=FNrmod(A,24) h%=A m%=60*(A-h%)+0.5 @%=10 =FNdisp_time(h%,m%) DEFFNdisp_time(h%,m%)=STRING$(2-LENSTR$h%, " ")+STR$h%+":"+STRING$(2-LENSTR$m%,"0")+STR$m% DEFFNlook_next =(FNdecode_time(20)<>rmin) DEFPROCset_system_time min =FNdecode_time(20) hour =FNdecode_time(17) day =FNdecode_time(5) month=FNdecode_month year =FNdecode_time(14) rmin=FNnow_min ENDPROC DEFPROCinctime(s%) min+=s% IF min>=60 THEN hour+=min DIV 60 min=min MOD 60 IF hour>=24 PROCincday ENDIF rmin=FNnow_min ENDPROC DEFPROCincday LOCALleap% hour=hour MOD 24 day+=1 leap%=(month=2) AND (year MOD4=0) IFday>D%(month)-leap% THEN month+=1 day=1 IFmonth>12 THEN year+=1 month=1 ENDIF ENDIF ENDPROC DEFFNtime_past:=(FNnow_min-rmin+60) MOD60 DEFPROCupdate_men_time LOCALs$ $time_ptr%=STR$(day)+"/"+STR$(month)+"/"+STR$(year)+"@"+FNdisp_time(hour,min)+"h" IFVertical s$="Vertical" ELSEs$="Horizontal" $w_title%=s$+" View at "+FNstring_time ENDPROC DEFFNstring_time =FNdisp_time(hour,min)+" on "+STR$(day)+" "+M$(month)+" "+STR$(1900+year) DEFFNnow_min=FNdecode_time(20) DEFFNdecode_time(i%) =VALMID$(TIME$, i%, 2) DEFPROCset_user_time LOCALs$,p% s$=$time_ptr% p%=0 day =VALFNnext_param(s$,p%,"/") month=VALFNnext_param(s$,p%,"/") year =VALFNnext_param(s$,p%,"@") hour =VALFNnext_param(s$,p%,":") min =VALFNnext_param(s$,p%,"h") IFmonth>12 ORmonth<1 ORhour>24 OR min>60 OR year<75 OR year>2025 OR day>31 THEN PROCerrorbox(240,"Invalid time Format -"+FNstring_time) ENDIF IFyear>1900 THEN year-=1900 rmin=FNnow_min ENDPROC DEFFNdecode_month =INSTR(mon$, MID$(TIME$, 8, 3))/3 DEFFNbcd(c%)=(c% AND 15)+10*(c%>>4) DEFPROCload_mess(q%):ENDPROC:REM dummy END REM / End of !Stargazer
00000000 52 45 4d 20 3e 20 53 74 61 72 67 61 7a 65 72 20 |REM > Stargazer | 00000010 49 49 20 2d 20 52 65 6c 65 61 73 65 20 32 20 6f |II - Release 2 o| 00000020 66 20 69 6e 74 65 72 61 63 74 69 76 65 20 73 74 |f interactive st| 00000030 61 72 20 70 6c 6f 74 74 65 72 0a 52 45 4d 20 3e |ar plotter.REM >| 00000040 20 56 65 72 73 69 6f 6e 20 37 2e 30 30 20 2d 20 | Version 7.00 - | 00000050 56 65 72 74 69 63 61 6c 20 77 69 6e 64 6f 77 20 |Vertical window | 00000060 61 6e 64 20 54 69 6d 65 20 43 68 61 6e 67 65 20 |and Time Change | 00000070 61 64 64 65 64 20 30 37 2f 30 35 2f 39 32 0a 52 |added 07/05/92.R| 00000080 45 4d 20 3e 20 56 65 72 73 69 6f 6e 20 36 2e 30 |EM > Version 6.0| 00000090 31 20 2d 20 42 75 67 20 46 69 78 65 73 20 20 2d |1 - Bug Fixes -| 000000a0 20 33 31 2f 33 2f 39 32 0a 52 45 4d 20 3e 20 56 | 31/3/92.REM > V| 000000b0 65 72 73 69 6f 6e 20 36 2e 30 30 20 2d 20 53 70 |ersion 6.00 - Sp| 000000c0 65 63 69 61 6c 20 72 65 6c 65 61 73 65 20 28 49 |ecial release (I| 000000d0 29 20 66 6f 72 20 41 72 63 68 69 6d 65 64 65 73 |) for Archimedes| 000000e0 20 57 6f 72 6c 64 20 31 33 2f 30 31 2f 39 32 0a | World 13/01/92.| 000000f0 4c 49 42 52 41 52 59 22 3c 53 74 61 72 24 44 49 |LIBRARY"<Star$DI| 00000100 52 3e 2e 57 69 6e 64 4d 61 6e 22 0a 4c 49 42 52 |R>.WindMan".LIBR| 00000110 41 52 59 22 3c 53 74 61 72 24 44 49 52 3e 2e 53 |ARY"<Star$DIR>.S| 00000120 70 72 69 74 65 4d 61 6e 22 0a 50 52 4f 43 77 69 |priteMan".PROCwi| 00000130 6d 70 5f 69 6e 69 74 28 22 54 41 53 4b 22 2c 22 |mp_init("TASK","| 00000140 53 74 61 72 47 61 7a 65 72 22 29 0a 50 52 4f 43 |StarGazer").PROC| 00000150 73 70 72 69 74 65 5f 69 6e 69 74 28 22 3c 53 74 |sprite_init("<St| 00000160 61 72 24 44 69 72 3e 2e 73 70 72 69 74 65 73 22 |ar$Dir>.sprites"| 00000170 2c 22 73 75 6e 22 29 0a 50 52 4f 43 67 65 74 5f |,"sun").PROCget_| 00000180 69 6e 66 6f 5f 62 6f 78 28 22 3c 53 74 61 72 24 |info_box("<Star$| 00000190 44 69 72 3e 2e 54 65 6d 70 6c 61 74 65 73 22 29 |Dir>.Templates")| 000001a0 0a 4f 4e 45 52 52 4f 52 20 50 52 4f 43 65 72 72 |.ONERROR PROCerr| 000001b0 6f 72 0a 44 49 4d 20 77 5f 74 69 74 6c 65 25 20 |or.DIM w_title% | 000001c0 34 32 3a 24 77 5f 74 69 74 6c 65 25 3d 22 53 74 |42:$w_title%="St| 000001d0 61 72 67 61 7a 65 72 20 52 65 6c 65 61 73 65 20 |argazer Release | 000001e0 49 49 20 28 63 29 20 31 39 39 32 20 53 2e 45 2e |II (c) 1992 S.E.| 000001f0 45 6c 6c 77 6f 6f 64 22 0a 69 63 73 74 61 72 25 |Ellwood".icstar%| 00000200 3d 46 4e 69 63 6f 6e 62 61 72 28 22 69 63 6f 6e |=FNiconbar("icon| 00000210 22 2c 36 34 2c 36 34 29 0a 50 52 4f 43 6d 69 73 |",64,64).PROCmis| 00000220 63 5f 73 65 74 75 70 0a 50 52 4f 43 67 65 74 5f |c_setup.PROCget_| 00000230 70 6c 61 6e 65 74 73 0a 50 52 4f 43 6d 61 6b 65 |planets.PROCmake| 00000240 5f 6d 65 6e 75 73 0a 50 52 4f 43 72 65 61 64 5f |_menus.PROCread_| 00000250 63 6f 6e 73 74 5f 70 61 72 74 73 0a 50 52 4f 43 |const_parts.PROC| 00000260 73 65 74 70 6f 73 28 35 32 2c 30 29 3a 52 45 4d |setpos(52,0):REM| 00000270 20 43 61 6d 62 72 69 64 67 65 0a 50 52 4f 43 7a | Cambridge.PROCz| 00000280 6f 6f 6d 28 30 29 0a 6d 61 69 6e 25 3d 46 4e 6e |oom(0).main%=FNn| 00000290 65 77 5f 77 69 6e 64 6f 77 28 77 5f 74 69 74 6c |ew_window(w_titl| 000002a0 65 25 2c 38 30 30 2c 36 30 30 2c 78 73 25 2c 79 |e%,800,600,xs%,y| 000002b0 73 25 2c 32 30 30 2c 32 30 30 29 0a 50 52 4f 43 |s%,200,200).PROC| 000002c0 73 65 74 5f 73 79 73 74 65 6d 5f 74 69 6d 65 0a |set_system_time.| 000002d0 74 69 6d 65 72 25 3d 54 52 55 45 0a 73 74 61 74 |timer%=TRUE.stat| 000002e0 65 25 3d 2d 31 0a 0a 52 45 4d 20 53 74 61 6e 64 |e%=-1..REM Stand| 000002f0 61 72 64 20 66 75 6e 63 74 69 6f 6e 61 6c 69 6c |ard functionalil| 00000300 74 79 20 66 72 6f 6d 20 46 4e 77 69 6d 70 5f 70 |ty from FNwimp_p| 00000310 6f 6c 6c 20 68 6f 6f 6b 73 2c 20 65 78 74 72 61 |oll hooks, extra| 00000320 73 20 69 6e 20 6c 6f 6f 70 0a 52 45 50 45 41 54 |s in loop.REPEAT| 00000330 0a 20 20 49 46 20 46 4e 77 69 6d 70 5f 70 6f 6c |. IF FNwimp_pol| 00000340 6c 28 30 2c 70 62 25 29 3d 30 20 50 52 4f 43 62 |l(0,pb%)=0 PROCb| 00000350 61 63 6b 67 72 6f 75 6e 64 0a 55 4e 54 49 4c 20 |ackground.UNTIL | 00000360 46 41 4c 53 45 0a 45 4e 44 0a 0a 44 45 46 50 52 |FALSE.END..DEFPR| 00000370 4f 43 65 72 72 6f 72 0a 20 20 2a 43 4c 4f 53 45 |OCerror. *CLOSE| 00000380 0a 20 20 50 52 4f 43 65 72 72 6f 72 62 6f 78 28 |. PROCerrorbox(| 00000390 45 52 52 2c 52 45 50 4f 52 54 24 2b 22 20 61 74 |ERR,REPORT$+" at| 000003a0 20 6c 69 6e 65 20 22 2b 53 54 52 24 45 52 4c 29 | line "+STR$ERL)| 000003b0 0a 20 20 50 52 4f 43 66 69 6e 69 73 68 0a 45 4e |. PROCfinish.EN| 000003c0 44 0a 45 4e 44 50 52 4f 43 0a 0a 52 45 4d 20 2f |D.ENDPROC..REM /| 000003d0 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 | These functions| 000003e0 20 54 61 69 6c 6f 72 20 72 65 73 70 6f 6e 73 65 | Tailor response| 000003f0 20 74 6f 20 77 69 6d 70 5f 70 6f 6c 6c 73 20 74 | to wimp_polls t| 00000400 6f 20 70 72 6f 76 69 64 65 20 73 74 61 72 67 61 |o provide starga| 00000410 7a 65 72 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 |zer functionalit| 00000420 79 0a 0a 44 45 46 50 52 4f 43 6d 65 6e 75 28 6d |y..DEFPROCmenu(m| 00000430 73 78 25 2c 6d 73 79 25 2c 68 61 6e 64 6c 65 25 |sx%,msy%,handle%| 00000440 29 0a 20 20 43 41 53 45 20 68 61 6e 64 6c 65 25 |). CASE handle%| 00000450 20 4f 46 0a 20 20 20 20 57 48 45 4e 20 6d 61 69 | OF. WHEN mai| 00000460 6e 25 3a 20 50 52 4f 43 6e 65 77 5f 6d 65 6e 75 |n%: PROCnew_menu| 00000470 28 77 69 6e 64 5f 6d 65 6e 75 25 2c 6d 73 78 25 |(wind_menu%,msx%| 00000480 2d 33 32 2c 6d 73 79 25 2b 31 36 29 0a 20 20 20 |-32,msy%+16). | 00000490 20 57 48 45 4e 20 2d 32 20 20 20 3a 20 50 52 4f | WHEN -2 : PRO| 000004a0 43 6e 65 77 5f 6d 65 6e 75 28 69 63 6f 6e 5f 6d |Cnew_menu(icon_m| 000004b0 65 6e 75 25 2c 6d 73 78 25 2d 32 30 30 2c 32 34 |enu%,msx%-200,24| 000004c0 30 29 0a 20 20 45 4e 44 43 41 53 45 0a 45 4e 44 |0). ENDCASE.END| 000004d0 50 52 4f 43 0a 0a 44 45 46 50 52 4f 43 6d 61 6b |PROC..DEFPROCmak| 000004e0 65 5f 6d 65 6e 75 73 0a 20 20 4c 4f 43 41 4c 6d |e_menus. LOCALm| 000004f0 25 2c 69 25 0a 20 20 6d 25 3d 30 0a 20 20 52 45 |%,i%. m%=0. RE| 00000500 4d 20 73 70 61 63 65 20 66 6f 72 20 76 61 72 69 |M space for vari| 00000510 61 62 6c 65 20 6d 65 6e 75 20 69 74 65 6d 73 0a |able menu items.| 00000520 20 20 44 49 4d 20 63 6f 6e 73 74 5f 70 74 72 25 | DIM const_ptr%| 00000530 20 31 36 2c 73 74 61 72 5f 70 74 72 25 20 31 36 | 16,star_ptr% 16| 00000540 2c 6c 6f 6e 67 5f 70 74 72 25 20 31 36 2c 6c 61 |,long_ptr% 16,la| 00000550 74 5f 70 74 72 25 20 31 36 2c 69 6e 74 5f 70 74 |t_ptr% 16,int_pt| 00000560 72 25 20 31 36 2c 73 70 61 6e 5f 70 74 72 25 20 |r% 16,span_ptr% | 00000570 31 36 2c 74 69 6d 65 5f 70 74 72 25 20 32 30 0a |16,time_ptr% 20.| 00000580 20 20 6c 61 74 5f 6d 65 6e 75 25 20 20 3d 46 4e | lat_menu% =FN| 00000590 74 65 78 74 5f 6d 65 6e 75 28 22 4c 61 74 69 74 |text_menu("Latit| 000005a0 75 64 65 22 2c 6c 61 74 5f 70 74 72 25 2c 31 36 |ude",lat_ptr%,16| 000005b0 2c 22 41 30 2d 39 64 6d 4e 53 22 29 0a 20 20 6c |,"A0-9dmNS"). l| 000005c0 6f 6e 67 5f 6d 65 6e 75 25 20 3d 46 4e 74 65 78 |ong_menu% =FNtex| 000005d0 74 5f 6d 65 6e 75 28 22 4c 6f 6e 67 69 74 75 64 |t_menu("Longitud| 000005e0 65 22 2c 6c 6f 6e 67 5f 70 74 72 25 2c 31 36 2c |e",long_ptr%,16,| 000005f0 22 41 30 2d 39 64 6d 45 57 22 29 0a 20 20 63 6f |"A0-9dmEW"). co| 00000600 6e 73 74 5f 6d 65 6e 75 25 3d 46 4e 74 65 78 74 |nst_menu%=FNtext| 00000610 5f 6d 65 6e 75 28 22 43 6f 6e 73 74 22 2c 63 6f |_menu("Const",co| 00000620 6e 73 74 5f 70 74 72 25 2c 31 36 2c 22 41 61 2d |nst_ptr%,16,"Aa-| 00000630 7a 22 29 0a 20 20 73 74 61 72 5f 6d 65 6e 75 25 |z"). star_menu%| 00000640 20 3d 46 4e 74 65 78 74 5f 6d 65 6e 75 28 22 53 | =FNtext_menu("S| 00000650 74 61 72 22 2c 73 74 61 72 5f 70 74 72 25 2c 31 |tar",star_ptr%,1| 00000660 36 2c 22 41 61 2d 7a 22 29 0a 20 20 69 6e 74 5f |6,"Aa-z"). int_| 00000670 6d 65 6e 75 25 20 20 3d 46 4e 74 65 78 74 5f 6d |menu% =FNtext_m| 00000680 65 6e 75 28 22 74 69 6d 65 20 73 74 65 70 28 6d |enu("time step(m| 00000690 29 22 2c 69 6e 74 5f 70 74 72 25 2c 31 36 2c 22 |)",int_ptr%,16,"| 000006a0 41 30 2d 39 22 29 0a 20 20 73 70 61 6e 5f 6d 65 |A0-9"). span_me| 000006b0 6e 75 25 20 3d 46 4e 74 65 78 74 5f 6d 65 6e 75 |nu% =FNtext_menu| 000006c0 28 22 74 69 6d 65 20 73 70 61 6e 28 68 29 22 2c |("time span(h)",| 000006d0 73 70 61 6e 5f 70 74 72 25 2c 31 36 2c 22 41 30 |span_ptr%,16,"A0| 000006e0 2d 39 22 29 0a 20 20 74 69 6d 65 5f 6d 65 6e 75 |-9"). time_menu| 000006f0 25 20 3d 46 4e 74 65 78 74 5f 6d 65 6e 75 28 22 |% =FNtext_menu("| 00000700 4e 65 77 20 74 69 6d 65 22 2c 74 69 6d 65 5f 70 |New time",time_p| 00000710 74 72 25 2c 32 30 2c 22 41 30 2d 39 3a 40 2f 68 |tr%,20,"A0-9:@/h| 00000720 22 29 0a 20 20 24 69 6e 74 5f 70 74 72 25 3d 22 |"). $int_ptr%="| 00000730 36 22 0a 20 20 24 73 70 61 6e 5f 70 74 72 25 3d |6". $span_ptr%=| 00000740 22 38 22 0a 0a 20 20 70 6c 61 6e 5f 6d 65 6e 75 |"8".. plan_menu| 00000750 25 3d 46 4e 62 61 73 5f 6d 65 6e 75 28 6d 25 2c |%=FNbas_menu(m%,| 00000760 22 50 6c 61 6e 65 74 22 2c 31 34 34 2c 38 29 0a |"Planet",144,8).| 00000770 20 20 46 4f 52 69 25 3d 31 54 4f 38 0a 20 20 20 | FORi%=1TO8. | 00000780 20 50 52 4f 43 61 64 64 5f 69 74 65 6d 28 6d 25 | PROCadd_item(m%| 00000790 2c 28 69 25 3d 38 29 2c 2d 31 2c 50 6c 61 6e 65 |,(i%=8),-1,Plane| 000007a0 74 24 28 69 25 29 29 0a 20 20 4e 45 58 54 0a 0a |t$(i%)). NEXT..| 000007b0 20 20 66 69 6e 64 5f 6d 65 6e 75 25 3d 46 4e 62 | find_menu%=FNb| 000007c0 61 73 5f 6d 65 6e 75 28 6d 25 2c 22 4f 62 6a 65 |as_menu(m%,"Obje| 000007d0 63 74 22 2c 31 34 34 2c 35 29 0a 20 20 50 52 4f |ct",144,5). PRO| 000007e0 43 61 64 64 5f 69 74 65 6d 28 6d 25 2c 46 41 4c |Cadd_item(m%,FAL| 000007f0 53 45 2c 2d 31 2c 22 53 75 6e 22 29 0a 20 20 50 |SE,-1,"Sun"). P| 00000800 52 4f 43 61 64 64 5f 69 74 65 6d 28 6d 25 2c 46 |ROCadd_item(m%,F| 00000810 41 4c 53 45 2c 2d 31 2c 22 4d 6f 6f 6e 22 29 0a |ALSE,-1,"Moon").| 00000820 20 20 50 52 4f 43 61 64 64 5f 69 74 65 6d 28 6d | PROCadd_item(m| 00000830 25 2c 46 41 4c 53 45 2c 70 6c 61 6e 5f 6d 65 6e |%,FALSE,plan_men| 00000840 75 25 2c 22 50 6c 61 6e 65 74 22 29 0a 20 20 50 |u%,"Planet"). P| 00000850 52 4f 43 61 64 64 5f 69 74 65 6d 28 6d 25 2c 46 |ROCadd_item(m%,F| 00000860 41 4c 53 45 2c 73 74 61 72 5f 6d 65 6e 75 25 2c |ALSE,star_menu%,| 00000870 22 53 74 61 72 22 29 0a 20 20 50 52 4f 43 61 64 |"Star"). PROCad| 00000880 64 5f 69 74 65 6d 28 6d 25 2c 54 52 55 45 2c 63 |d_item(m%,TRUE,c| 00000890 6f 6e 73 74 5f 6d 65 6e 75 25 2c 22 43 6f 6e 73 |onst_menu%,"Cons| 000008a0 74 22 29 0a 0a 20 20 76 69 65 77 5f 6d 65 6e 75 |t").. view_menu| 000008b0 25 3d 46 4e 62 61 73 5f 6d 65 6e 75 28 6d 25 2c |%=FNbas_menu(m%,| 000008c0 22 56 69 65 77 22 2c 31 37 36 2c 32 29 0a 20 20 |"View",176,2). | 000008d0 50 52 4f 43 61 64 64 5f 69 74 65 6d 28 6d 25 2c |PROCadd_item(m%,| 000008e0 46 41 4c 53 45 2c 2d 31 2c 22 48 6f 72 69 7a 6f |FALSE,-1,"Horizo| 000008f0 6e 74 61 6c 22 29 0a 20 20 50 52 4f 43 61 64 64 |ntal"). PROCadd| 00000900 5f 69 74 65 6d 28 6d 25 2c 54 52 55 45 2c 2d 31 |_item(m%,TRUE,-1| 00000910 2c 22 56 65 72 74 69 63 61 6c 22 29 0a 20 20 50 |,"Vertical"). P| 00000920 52 4f 43 74 69 63 6b 5f 69 74 65 6d 28 76 69 65 |ROCtick_item(vie| 00000930 77 5f 6d 65 6e 75 25 2c 30 29 0a 0a 20 20 73 79 |w_menu%,0).. sy| 00000940 6e 63 5f 6d 65 6e 75 25 3d 46 4e 62 61 73 5f 6d |nc_menu%=FNbas_m| 00000950 65 6e 75 28 6d 25 2c 22 54 69 6d 65 72 22 2c 31 |enu(m%,"Timer",1| 00000960 32 38 2c 32 29 0a 20 20 50 52 4f 43 61 64 64 5f |28,2). PROCadd_| 00000970 69 74 65 6d 28 6d 25 2c 46 41 4c 53 45 2c 2d 31 |item(m%,FALSE,-1| 00000980 2c 22 53 79 73 74 65 6d 22 29 0a 20 20 50 52 4f |,"System"). PRO| 00000990 43 61 64 64 5f 69 74 65 6d 28 6d 25 2c 54 52 55 |Cadd_item(m%,TRU| 000009a0 45 2c 74 69 6d 65 5f 6d 65 6e 75 25 2c 22 55 73 |E,time_menu%,"Us| 000009b0 65 72 22 29 0a 20 20 50 52 4f 43 74 69 63 6b 5f |er"). PROCtick_| 000009c0 69 74 65 6d 28 73 79 6e 63 5f 6d 65 6e 75 25 2c |item(sync_menu%,| 000009d0 30 29 0a 20 20 0a 20 20 6f 62 73 5f 6d 65 6e 75 |0). . obs_menu| 000009e0 25 3d 46 4e 62 61 73 5f 6d 65 6e 75 28 6d 25 2c |%=FNbas_menu(m%,| 000009f0 22 4f 62 73 65 72 76 65 72 22 2c 31 36 30 2c 32 |"Observer",160,2| 00000a00 29 0a 20 20 50 52 4f 43 61 64 64 5f 69 74 65 6d |). PROCadd_item| 00000a10 28 6d 25 2c 46 41 4c 53 45 2c 6c 6f 6e 67 5f 6d |(m%,FALSE,long_m| 00000a20 65 6e 75 25 2c 22 4c 6f 6e 67 69 74 75 64 65 22 |enu%,"Longitude"| 00000a30 29 0a 20 20 50 52 4f 43 61 64 64 5f 69 74 65 6d |). PROCadd_item| 00000a40 28 6d 25 2c 54 52 55 45 2c 6c 61 74 5f 6d 65 6e |(m%,TRUE,lat_men| 00000a50 75 25 2c 22 4c 61 74 69 74 75 64 65 22 29 0a 0a |u%,"Latitude")..| 00000a60 20 20 69 63 6f 6e 5f 6d 65 6e 75 25 3d 46 4e 62 | icon_menu%=FNb| 00000a70 61 73 5f 6d 65 6e 75 28 6d 25 2c 22 53 74 61 72 |as_menu(m%,"Star| 00000a80 20 4d 65 6e 75 22 2c 31 36 30 2c 35 29 0a 20 20 | Menu",160,5). | 00000a90 50 52 4f 43 61 64 64 5f 69 6e 66 6f 28 6d 25 29 |PROCadd_info(m%)| 00000aa0 0a 20 20 50 52 4f 43 61 64 64 5f 69 74 65 6d 28 |. PROCadd_item(| 00000ab0 6d 25 2c 46 41 4c 53 45 2c 6f 62 73 5f 6d 65 6e |m%,FALSE,obs_men| 00000ac0 75 25 2c 22 4e 65 77 20 70 6c 61 63 65 22 29 0a |u%,"New place").| 00000ad0 20 20 50 52 4f 43 61 64 64 5f 69 74 65 6d 28 6d | PROCadd_item(m| 00000ae0 25 2c 46 41 4c 53 45 2c 73 79 6e 63 5f 6d 65 6e |%,FALSE,sync_men| 00000af0 75 25 2c 22 43 6c 6f 63 6b 22 29 0a 20 20 50 52 |u%,"Clock"). PR| 00000b00 4f 43 61 64 64 5f 69 74 65 6d 28 6d 25 2c 46 41 |OCadd_item(m%,FA| 00000b10 4c 53 45 2c 76 69 65 77 5f 6d 65 6e 75 25 2c 22 |LSE,view_menu%,"| 00000b20 53 68 6f 77 5f 73 6b 79 22 29 0a 20 20 50 52 4f |Show_sky"). PRO| 00000b30 43 61 64 64 5f 69 74 65 6d 28 6d 25 2c 54 52 55 |Cadd_item(m%,TRU| 00000b40 45 2c 2d 31 2c 22 71 75 69 74 22 29 0a 20 20 50 |E,-1,"quit"). P| 00000b50 52 4f 43 74 69 63 6b 5f 69 74 65 6d 28 69 63 6f |ROCtick_item(ico| 00000b60 6e 5f 6d 65 6e 75 25 2c 32 29 0a 0a 20 20 73 69 |n_menu%,2).. si| 00000b70 6d 5f 6d 65 6e 75 25 3d 46 4e 62 61 73 5f 6d 65 |m_menu%=FNbas_me| 00000b80 6e 75 28 6d 25 2c 22 53 69 6d 75 6c 61 74 69 6f |nu(m%,"Simulatio| 00000b90 6e 22 2c 31 39 32 2c 32 29 0a 20 20 50 52 4f 43 |n",192,2). PROC| 00000ba0 61 64 64 5f 69 74 65 6d 28 6d 25 2c 46 41 4c 53 |add_item(m%,FALS| 00000bb0 45 2c 69 6e 74 5f 6d 65 6e 75 25 2c 22 54 69 6d |E,int_menu%,"Tim| 00000bc0 65 20 73 74 65 70 22 29 0a 20 20 50 52 4f 43 61 |e step"). PROCa| 00000bd0 64 64 5f 69 74 65 6d 28 6d 25 2c 54 52 55 45 2c |dd_item(m%,TRUE,| 00000be0 73 70 61 6e 5f 6d 65 6e 75 25 2c 22 54 69 6d 65 |span_menu%,"Time| 00000bf0 20 73 70 61 6e 22 29 0a 0a 20 20 77 69 6e 64 5f | span").. wind_| 00000c00 6d 65 6e 75 25 3d 46 4e 62 61 73 5f 6d 65 6e 75 |menu%=FNbas_menu| 00000c10 28 6d 25 2c 22 4f 70 74 69 6f 6e 73 22 2c 31 39 |(m%,"Options",19| 00000c20 32 2c 35 29 0a 20 20 50 52 4f 43 61 64 64 5f 69 |2,5). PROCadd_i| 00000c30 74 65 6d 28 6d 25 2c 46 41 4c 53 45 2c 66 69 6e |tem(m%,FALSE,fin| 00000c40 64 5f 6d 65 6e 75 25 2c 22 66 69 6e 64 20 6f 62 |d_menu%,"find ob| 00000c50 6a 65 63 74 22 29 0a 20 20 50 52 4f 43 61 64 64 |ject"). PROCadd| 00000c60 5f 69 74 65 6d 28 6d 25 2c 46 41 4c 53 45 2c 2d |_item(m%,FALSE,-| 00000c70 31 2c 22 53 68 6f 77 20 63 6f 6e 73 74 73 22 29 |1,"Show consts")| 00000c80 0a 20 20 50 52 4f 43 61 64 64 5f 69 74 65 6d 28 |. PROCadd_item(| 00000c90 6d 25 2c 46 41 4c 53 45 2c 2d 31 2c 22 5a 6f 6f |m%,FALSE,-1,"Zoo| 00000ca0 6d 20 69 6e 22 29 0a 20 20 50 52 4f 43 61 64 64 |m in"). PROCadd| 00000cb0 5f 69 74 65 6d 28 6d 25 2c 46 41 4c 53 45 2c 2d |_item(m%,FALSE,-| 00000cc0 31 2c 22 5a 6f 6f 6d 20 6f 75 74 22 29 0a 20 20 |1,"Zoom out"). | 00000cd0 50 52 4f 43 61 64 64 5f 69 74 65 6d 28 6d 25 2c |PROCadd_item(m%,| 00000ce0 54 52 55 45 2c 73 69 6d 5f 6d 65 6e 75 25 2c 22 |TRUE,sim_menu%,"| 00000cf0 53 69 6d 75 6c 61 74 65 22 29 0a 20 20 63 6f 6e |Simulate"). con| 00000d00 73 74 5f 64 72 61 77 25 3d 46 41 4c 53 45 0a 45 |st_draw%=FALSE.E| 00000d10 4e 44 50 52 4f 43 0a 0a 44 45 46 50 52 4f 43 61 |NDPROC..DEFPROCa| 00000d20 63 74 69 6f 6e 28 6d 73 78 25 2c 6d 73 79 25 2c |ction(msx%,msy%,| 00000d30 68 61 6e 64 6c 65 25 29 0a 20 20 43 41 53 45 20 |handle%). CASE | 00000d40 68 61 6e 64 6c 65 25 20 4f 46 0a 20 20 20 20 57 |handle% OF. W| 00000d50 48 45 4e 20 6d 61 69 6e 25 20 3a 20 50 52 4f 43 |HEN main% : PROC| 00000d60 75 6e 71 75 65 28 6d 73 78 25 2c 6d 73 79 25 29 |unque(msx%,msy%)| 00000d70 0a 20 20 20 20 57 48 45 4e 20 2d 32 20 20 20 20 |. WHEN -2 | 00000d80 3a 20 50 52 4f 43 61 63 74 69 76 61 74 65 0a 20 |: PROCactivate. | 00000d90 20 45 4e 44 43 41 53 45 0a 45 4e 44 50 52 4f 43 | ENDCASE.ENDPROC| 00000da0 0a 0a 44 45 46 50 52 4f 43 61 64 6a 75 73 74 28 |..DEFPROCadjust(| 00000db0 6d 73 78 25 2c 6d 73 79 25 2c 68 61 6e 64 6c 65 |msx%,msy%,handle| 00000dc0 25 29 0a 20 20 43 41 53 45 20 68 61 6e 64 6c 65 |%). CASE handle| 00000dd0 25 20 4f 46 0a 20 20 20 20 57 48 45 4e 20 6d 61 |% OF. WHEN ma| 00000de0 69 6e 25 20 3a 20 50 52 4f 43 75 6e 71 75 65 28 |in% : PROCunque(| 00000df0 6d 73 78 25 2c 6d 73 79 25 29 0a 20 20 20 20 57 |msx%,msy%). W| 00000e00 48 45 4e 20 2d 32 20 20 20 20 3a 20 50 52 4f 43 |HEN -2 : PROC| 00000e10 61 63 74 69 76 61 74 65 0a 20 20 45 4e 44 43 41 |activate. ENDCA| 00000e20 53 45 0a 45 4e 44 50 52 4f 43 0a 0a 44 45 46 46 |SE.ENDPROC..DEFF| 00000e30 4e 68 65 6c 70 28 71 25 29 0a 4c 4f 43 41 4c 6d |Nhelp(q%).LOCALm| 00000e40 24 0a 20 20 43 41 53 45 20 54 52 55 45 20 4f 46 |$. CASE TRUE OF| 00000e50 0a 20 20 20 20 57 48 45 4e 20 71 25 21 33 32 3d |. WHEN q%!32=| 00000e60 2d 32 20 41 4e 44 20 71 25 21 33 36 3d 69 63 73 |-2 AND q%!36=ics| 00000e70 74 61 72 25 20 3a 20 0a 20 20 20 20 20 20 6d 24 |tar% : . m$| 00000e80 3d 22 54 68 69 73 20 69 73 20 74 68 65 20 53 74 |="This is the St| 00000e90 61 72 67 61 7a 65 72 20 69 63 6f 6e 2e 7c 4d 43 |argazer icon.|MC| 00000ea0 6c 69 63 6b 20 6f 6e 20 68 65 72 65 20 74 6f 20 |lick on here to | 00000eb0 64 69 73 70 6c 61 79 20 73 74 61 72 73 22 0a 20 |display stars". | 00000ec0 20 20 20 57 48 45 4e 20 71 25 21 33 32 3d 6d 61 | WHEN q%!32=ma| 00000ed0 69 6e 25 20 3a 0a 20 20 20 20 20 20 6d 24 3d 22 |in% :. m$="| 00000ee0 54 68 69 73 20 69 73 20 74 68 65 20 73 74 61 72 |This is the star| 00000ef0 20 64 69 73 70 6c 61 79 20 77 69 6e 64 6f 77 7c | display window|| 00000f00 4d 43 6c 69 63 6b 20 6f 6e 20 68 65 72 65 20 74 |MClick on here t| 00000f10 6f 20 69 64 65 6e 74 69 66 79 20 73 74 61 72 73 |o identify stars| 00000f20 22 0a 20 20 20 20 4f 54 48 45 52 57 49 53 45 20 |". OTHERWISE | 00000f30 3a 6d 24 3d 22 22 0a 20 20 45 4e 44 43 41 53 45 |:m$="". ENDCASE| 00000f40 0a 3d 6d 24 0a 0a 0a 44 45 46 50 52 4f 43 62 61 |.=m$...DEFPROCba| 00000f50 63 6b 67 72 6f 75 6e 64 0a 20 20 43 41 53 45 20 |ckground. CASE | 00000f60 73 74 61 74 65 25 20 4f 46 0a 20 20 20 20 57 48 |state% OF. WH| 00000f70 45 4e 20 2d 31 3a 20 50 52 4f 43 67 65 74 5f 73 |EN -1: PROCget_s| 00000f80 74 61 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 |tars. | 00000f90 20 20 50 52 4f 43 69 6e 66 6f 62 6f 78 28 22 53 | PROCinfobox("S| 00000fa0 74 61 72 20 44 61 74 61 20 22 2b 63 6f 70 79 72 |tar Data "+copyr| 00000fb0 69 67 68 74 24 2c 22 4c 61 73 74 20 64 61 74 61 |ight$,"Last data| 00000fc0 20 75 70 64 61 74 65 20 22 2b 75 70 64 61 74 65 | update "+update| 00000fd0 24 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 |$). | 00000fe0 73 74 61 74 65 25 3d 30 0a 20 20 20 20 57 48 45 |state%=0. WHE| 00000ff0 4e 20 30 20 3a 20 50 52 4f 43 75 6e 74 69 63 6b |N 0 : PROCuntick| 00001000 5f 69 74 65 6d 28 77 69 6e 64 5f 6d 65 6e 75 25 |_item(wind_menu%| 00001010 2c 34 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 |,4). | 00001020 20 50 52 4f 43 73 63 61 6e 73 6b 79 0a 20 20 20 | PROCscansky. | 00001030 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65 25 | state%| 00001040 3d 31 0a 20 20 20 20 57 48 45 4e 20 31 20 3a 20 |=1. WHEN 1 : | 00001050 50 52 4f 43 75 70 64 61 74 65 5f 6d 65 6e 5f 74 |PROCupdate_men_t| 00001060 69 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 |ime. | 00001070 20 49 46 20 6f 70 65 6e 25 20 50 52 4f 43 72 65 | IF open% PROCre| 00001080 64 72 61 77 5f 77 69 6e 64 6f 77 28 6d 61 69 6e |draw_window(main| 00001090 25 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 |%). | 000010a0 73 74 61 74 65 25 3d 32 0a 20 20 20 20 57 48 45 |state%=2. WHE| 000010b0 4e 20 32 20 3a 20 49 46 74 69 6d 65 72 25 20 73 |N 2 : IFtimer% s| 000010c0 74 61 74 65 25 3d 33 0a 20 20 20 20 57 48 45 4e |tate%=3. WHEN| 000010d0 20 33 20 3a 20 50 52 4f 43 69 6e 63 74 69 6d 65 | 3 : PROCinctime| 000010e0 28 46 4e 74 69 6d 65 5f 70 61 73 74 29 0a 20 20 |(FNtime_past). | 000010f0 20 20 20 20 20 20 20 20 20 20 20 50 52 4f 43 63 | PROCc| 00001100 61 6c 63 5f 65 61 72 74 68 5f 70 6f 73 0a 20 20 |alc_earth_pos. | 00001110 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 25 3d | obj%=| 00001120 31 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 73 |1. s| 00001130 74 61 74 65 25 3d 34 0a 20 20 20 20 57 48 45 4e |tate%=4. WHEN| 00001140 20 34 20 3a 20 49 46 20 46 4e 74 65 6e 5f 73 74 | 4 : IF FNten_st| 00001150 61 72 73 28 6f 62 6a 25 29 20 73 74 61 74 65 25 |ars(obj%) state%| 00001160 3d 35 0a 20 20 20 20 57 48 45 4e 20 35 20 3a 20 |=5. WHEN 5 : | 00001170 50 52 4f 43 63 61 6c 63 5f 6f 75 72 5f 67 61 6c |PROCcalc_our_gal| 00001180 61 78 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 |axy. | 00001190 20 73 74 61 74 65 25 3d 36 0a 20 20 20 20 57 48 | state%=6. WH| 000011a0 45 4e 20 36 20 3a 20 49 46 20 6f 70 65 6e 25 20 |EN 6 : IF open% | 000011b0 50 52 4f 43 63 61 6c 63 5f 76 69 65 77 0a 20 20 |PROCcalc_view. | 000011c0 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65 | state| 000011d0 25 3d 37 0a 20 20 20 20 57 48 45 4e 20 37 20 3a |%=7. WHEN 7 :| 000011e0 20 49 46 20 46 4e 6c 6f 6f 6b 5f 6e 65 78 74 20 | IF FNlook_next | 000011f0 3a 73 74 61 74 65 25 3d 31 0a 20 20 20 20 57 48 |:state%=1. WH| 00001200 45 4e 20 38 20 3a 20 49 46 6f 70 65 6e 25 3d 46 |EN 8 : IFopen%=F| 00001210 41 4c 53 45 20 4f 52 20 46 4e 66 61 73 74 5f 73 |ALSE OR FNfast_s| 00001220 63 61 6e 3d 30 20 73 74 61 74 65 25 3d 31 0a 20 |can=0 state%=1. | 00001230 20 45 4e 44 43 41 53 45 0a 45 4e 44 50 52 4f 43 | ENDCASE.ENDPROC| 00001240 0a 0a 44 45 46 46 4e 66 61 73 74 5f 73 63 61 6e |..DEFFNfast_scan| 00001250 0a 20 20 6f 62 6a 25 2b 3d 31 0a 20 20 49 46 6f |. obj%+=1. IFo| 00001260 62 6a 25 3c 6e 75 6d 5f 70 65 72 69 6f 64 73 25 |bj%<num_periods%| 00001270 20 41 4e 44 6f 70 65 6e 25 20 54 48 45 4e 0a 20 | ANDopen% THEN. | 00001280 20 20 20 50 52 4f 43 69 6e 63 74 69 6d 65 28 73 | PROCinctime(s| 00001290 74 65 70 25 29 0a 20 20 20 20 50 52 4f 43 73 63 |tep%). PROCsc| 000012a0 61 6e 73 6b 79 0a 20 20 20 20 50 52 4f 43 72 65 |ansky. PROCre| 000012b0 64 72 61 77 5f 77 69 6e 64 6f 77 28 6d 61 69 6e |draw_window(main| 000012c0 25 29 0a 20 20 45 4c 53 45 0a 20 20 20 20 50 52 |%). ELSE. PR| 000012d0 4f 43 75 6e 74 69 63 6b 5f 69 74 65 6d 28 77 69 |OCuntick_item(wi| 000012e0 6e 64 5f 6d 65 6e 75 25 2c 34 29 0a 20 20 45 4e |nd_menu%,4). EN| 000012f0 44 49 46 0a 3d 6f 62 6a 25 3c 6e 75 6d 5f 70 65 |DIF.=obj%<num_pe| 00001300 72 69 6f 64 73 25 0a 0a 44 45 46 50 52 4f 43 61 |riods%..DEFPROCa| 00001310 63 74 69 76 61 74 65 0a 20 20 50 52 4f 43 63 61 |ctivate. PROCca| 00001320 6c 63 5f 76 69 65 77 0a 20 20 50 52 4f 43 63 61 |lc_view. PROCca| 00001330 6c 63 5f 6f 75 72 5f 67 61 6c 61 78 79 0a 20 20 |lc_our_galaxy. | 00001340 50 52 4f 43 6f 70 65 6e 75 70 28 6d 61 69 6e 25 |PROCopenup(main%| 00001350 29 0a 45 4e 44 50 52 4f 43 0a 0a 0a 44 45 46 50 |).ENDPROC...DEFP| 00001360 52 4f 43 6d 65 6e 75 73 65 6c 65 63 74 28 6d 25 |ROCmenuselect(m%| 00001370 2c 6d 65 6e 75 25 29 0a 20 20 43 41 53 45 20 6d |,menu%). CASE m| 00001380 65 6e 75 25 20 4f 46 0a 20 20 20 20 57 48 45 4e |enu% OF. WHEN| 00001390 20 77 69 6e 64 5f 6d 65 6e 75 25 20 3a 20 50 52 | wind_menu% : PR| 000013a0 4f 43 77 69 6e 64 6d 28 6d 25 29 0a 20 20 20 20 |OCwindm(m%). | 000013b0 57 48 45 4e 20 69 63 6f 6e 5f 6d 65 6e 75 25 20 |WHEN icon_menu% | 000013c0 3a 20 50 52 4f 43 69 63 6f 6e 6d 28 6d 25 29 0a |: PROCiconm(m%).| 000013d0 20 20 45 4e 44 43 41 53 45 0a 45 4e 44 50 52 4f | ENDCASE.ENDPRO| 000013e0 43 0a 0a 44 45 46 50 52 4f 43 77 69 6e 64 6d 28 |C..DEFPROCwindm(| 000013f0 6d 25 29 0a 20 20 43 41 53 45 20 21 6d 25 20 4f |m%). CASE !m% O| 00001400 46 0a 20 20 20 20 57 48 45 4e 30 20 3a 20 50 52 |F. WHEN0 : PR| 00001410 4f 43 66 69 6e 64 5f 6f 62 6a 28 6d 25 2b 34 29 |OCfind_obj(m%+4)| 00001420 0a 20 20 20 20 57 48 45 4e 31 20 3a 20 50 52 4f |. WHEN1 : PRO| 00001430 43 73 68 6f 77 5f 63 6f 6e 73 74 28 63 6f 6e 73 |Cshow_const(cons| 00001440 74 5f 64 72 61 77 25 20 45 4f 52 20 54 52 55 45 |t_draw% EOR TRUE| 00001450 29 0a 20 20 20 20 57 48 45 4e 32 20 3a 20 50 52 |). WHEN2 : PR| 00001460 4f 43 7a 6f 6f 6d 28 31 29 0a 20 20 20 20 57 48 |OCzoom(1). WH| 00001470 45 4e 33 20 3a 20 50 52 4f 43 7a 6f 6f 6d 28 2d |EN3 : PROCzoom(-| 00001480 31 29 0a 20 20 20 20 57 48 45 4e 34 20 3a 20 49 |1). WHEN4 : I| 00001490 46 6d 25 21 34 3d 2d 31 20 50 52 4f 43 73 65 74 |Fm%!4=-1 PROCset| 000014a0 5f 73 69 6d 75 6c 61 74 69 6f 6e 0a 20 20 45 4e |_simulation. EN| 000014b0 44 43 41 53 45 0a 45 4e 44 50 52 4f 43 0a 0a 44 |DCASE.ENDPROC..D| 000014c0 45 46 50 52 4f 43 69 63 6f 6e 6d 28 6d 25 29 0a |EFPROCiconm(m%).| 000014d0 20 20 43 41 53 45 20 21 6d 25 20 4f 46 0a 20 20 | CASE !m% OF. | 000014e0 20 20 57 48 45 4e 31 20 3a 20 50 52 4f 43 6e 65 | WHEN1 : PROCne| 000014f0 77 5f 70 6c 61 63 65 0a 20 20 20 20 57 48 45 4e |w_place. WHEN| 00001500 32 20 3a 20 50 52 4f 43 6e 65 77 5f 74 69 6d 65 |2 : PROCnew_time| 00001510 28 6d 25 21 34 29 0a 20 20 20 20 57 48 45 4e 33 |(m%!4). WHEN3| 00001520 20 3a 20 50 52 4f 43 73 65 74 5f 76 69 65 77 28 | : PROCset_view(| 00001530 6d 25 21 34 29 0a 20 20 20 20 57 48 45 4e 34 20 |m%!4). WHEN4 | 00001540 3a 20 50 52 4f 43 66 69 6e 69 73 68 3a 45 4e 44 |: PROCfinish:END| 00001550 0a 20 20 45 4e 44 43 41 53 45 0a 45 4e 44 50 52 |. ENDCASE.ENDPR| 00001560 4f 43 0a 0a 44 45 46 50 52 4f 43 73 65 74 5f 73 |OC..DEFPROCset_s| 00001570 69 6d 75 6c 61 74 69 6f 6e 0a 20 20 49 46 73 74 |imulation. IFst| 00001580 61 74 65 25 3d 38 20 54 48 45 4e 0a 20 20 20 20 |ate%=8 THEN. | 00001590 6e 75 6d 5f 70 65 72 69 6f 64 73 25 3d 30 0a 20 |num_periods%=0. | 000015a0 20 45 4c 53 45 0a 20 20 20 20 73 74 65 70 25 3d | ELSE. step%=| 000015b0 56 41 4c 28 46 4e 73 67 65 74 28 69 6e 74 5f 70 |VAL(FNsget(int_p| 000015c0 74 72 25 29 29 0a 20 20 20 20 65 6e 64 25 3d 56 |tr%)). end%=V| 000015d0 41 4c 28 46 4e 73 67 65 74 28 73 70 61 6e 5f 70 |AL(FNsget(span_p| 000015e0 74 72 25 29 29 0a 20 20 20 20 49 46 73 74 65 70 |tr%)). IFstep| 000015f0 25 3d 30 20 4f 52 20 65 6e 64 25 3d 30 20 54 48 |%=0 OR end%=0 TH| 00001600 45 4e 0a 20 20 20 20 20 20 50 52 4f 43 65 72 72 |EN. PROCerr| 00001610 6f 72 62 6f 78 28 32 34 30 2c 22 42 61 64 20 74 |orbox(240,"Bad t| 00001620 69 6d 65 20 70 61 72 61 6d 65 74 65 72 73 22 29 |ime parameters")| 00001630 0a 20 20 20 20 45 4c 53 45 0a 20 20 20 20 20 20 |. ELSE. | 00001640 6e 75 6d 5f 70 65 72 69 6f 64 73 25 3d 36 30 2a |num_periods%=60*| 00001650 65 6e 64 25 2f 73 74 65 70 25 0a 20 20 20 20 20 |end%/step%. | 00001660 20 6f 62 6a 25 3d 30 0a 20 20 20 20 20 20 73 74 | obj%=0. st| 00001670 61 74 65 25 3d 38 0a 20 20 20 20 20 20 50 52 4f |ate%=8. PRO| 00001680 43 74 69 63 6b 5f 69 74 65 6d 28 77 69 6e 64 5f |Ctick_item(wind_| 00001690 6d 65 6e 75 25 2c 34 29 0a 20 20 20 20 20 20 50 |menu%,4). P| 000016a0 52 4f 43 77 69 6e 64 5f 63 6c 6f 63 6b 28 30 29 |ROCwind_clock(0)| 000016b0 0a 20 20 20 20 20 20 50 52 4f 43 74 69 63 6b 5f |. PROCtick_| 000016c0 69 74 65 6d 28 73 79 6e 63 5f 6d 65 6e 75 25 2c |item(sync_menu%,| 000016d0 31 29 0a 20 20 20 20 20 20 50 52 4f 43 75 6e 74 |1). PROCunt| 000016e0 69 63 6b 5f 69 74 65 6d 28 73 79 6e 63 5f 6d 65 |ick_item(sync_me| 000016f0 6e 75 25 2c 30 29 0a 20 20 20 20 20 20 24 77 5f |nu%,0). $w_| 00001700 74 69 74 6c 65 25 3d 22 53 69 6d 75 6c 61 74 65 |title%="Simulate| 00001710 64 20 73 74 61 72 20 6d 6f 76 65 6d 65 6e 74 22 |d star movement"| 00001720 0a 20 20 20 20 45 4e 44 49 46 0a 20 20 45 4e 44 |. ENDIF. END| 00001730 49 46 0a 45 4e 44 50 52 4f 43 0a 0a 44 45 46 50 |IF.ENDPROC..DEFP| 00001740 52 4f 43 73 65 74 5f 76 69 65 77 28 76 25 29 0a |ROCset_view(v%).| 00001750 20 20 49 46 76 25 3d 2d 31 20 54 48 45 4e 0a 20 | IFv%=-1 THEN. | 00001760 20 20 20 50 52 4f 43 61 63 74 69 76 61 74 65 0a | PROCactivate.| 00001770 20 20 45 4c 53 45 0a 20 20 20 20 6f 70 65 6e 25 | ELSE. open%| 00001780 3d 54 52 55 45 0a 20 20 20 20 50 52 4f 43 68 6f |=TRUE. PROCho| 00001790 75 72 67 6c 61 73 73 5f 6f 6e 0a 20 20 20 20 49 |urglass_on. I| 000017a0 46 76 25 3d 30 20 54 48 45 4e 0a 20 20 20 20 20 |Fv%=0 THEN. | 000017b0 20 78 73 25 3d 67 64 25 2a 33 36 30 0a 20 20 20 | xs%=gd%*360. | 000017c0 20 20 20 56 65 72 74 69 63 61 6c 3d 46 41 4c 53 | Vertical=FALS| 000017d0 45 0a 20 20 20 20 20 20 50 52 4f 43 75 6e 74 69 |E. PROCunti| 000017e0 63 6b 5f 69 74 65 6d 28 76 69 65 77 5f 6d 65 6e |ck_item(view_men| 000017f0 75 25 2c 31 29 0a 20 20 20 20 20 20 50 52 4f 43 |u%,1). PROC| 00001800 74 69 63 6b 5f 69 74 65 6d 28 76 69 65 77 5f 6d |tick_item(view_m| 00001810 65 6e 75 25 2c 30 29 0a 20 20 20 20 45 4c 53 45 |enu%,0). ELSE| 00001820 0a 20 20 20 20 20 20 78 73 25 3d 79 73 25 0a 20 |. xs%=ys%. | 00001830 20 20 20 20 20 56 65 72 74 69 63 61 6c 3d 54 52 | Vertical=TR| 00001840 55 45 0a 20 20 20 20 20 20 50 52 4f 43 75 6e 74 |UE. PROCunt| 00001850 69 63 6b 5f 69 74 65 6d 28 76 69 65 77 5f 6d 65 |ick_item(view_me| 00001860 6e 75 25 2c 30 29 0a 20 20 20 20 20 20 50 52 4f |nu%,0). PRO| 00001870 43 74 69 63 6b 5f 69 74 65 6d 28 76 69 65 77 5f |Ctick_item(view_| 00001880 6d 65 6e 75 25 2c 31 29 0a 20 20 20 20 45 4e 44 |menu%,1). END| 00001890 49 46 0a 20 20 20 20 6f 70 65 6e 25 3d 54 52 55 |IF. open%=TRU| 000018a0 45 0a 20 20 20 20 50 52 4f 43 63 61 6c 63 5f 76 |E. PROCcalc_v| 000018b0 69 65 77 0a 20 20 20 20 50 52 4f 43 72 65 73 69 |iew. PROCresi| 000018c0 7a 65 5f 77 69 6e 64 6f 77 28 6d 61 69 6e 25 2c |ze_window(main%,| 000018d0 78 73 25 2c 79 73 25 29 0a 20 20 20 20 50 52 4f |xs%,ys%). PRO| 000018e0 43 72 65 64 72 61 77 5f 77 69 6e 64 6f 77 28 6d |Credraw_window(m| 000018f0 61 69 6e 25 29 0a 20 20 20 20 50 52 4f 43 68 6f |ain%). PROCho| 00001900 75 72 67 6c 61 73 73 5f 6f 66 66 0a 20 20 45 4e |urglass_off. EN| 00001910 44 49 46 0a 45 4e 44 50 52 4f 43 0a 0a 44 45 46 |DIF.ENDPROC..DEF| 00001920 50 52 4f 43 66 69 6e 64 5f 6f 62 6a 28 6d 25 29 |PROCfind_obj(m%)| 00001930 0a 4c 4f 43 41 4c 61 6c 74 2c 61 7a 6d 0a 20 20 |.LOCALalt,azm. | 00001940 43 41 53 45 20 21 6d 25 20 4f 46 0a 20 20 20 20 |CASE !m% OF. | 00001950 57 48 45 4e 30 20 3a 20 50 52 4f 43 73 75 6e 28 |WHEN0 : PROCsun(| 00001960 61 6c 74 2c 61 7a 6d 29 3a 50 52 4f 43 73 68 6f |alt,azm):PROCsho| 00001970 77 5f 6f 62 6a 28 61 6c 74 2c 61 7a 6d 2c 22 53 |w_obj(alt,azm,"S| 00001980 75 6e 22 29 0a 20 20 20 20 57 48 45 4e 31 20 3a |un"). WHEN1 :| 00001990 20 50 52 4f 43 6d 6f 6f 6e 28 61 6c 74 2c 61 7a | PROCmoon(alt,az| 000019a0 6d 29 3a 50 52 4f 43 73 68 6f 77 5f 6f 62 6a 28 |m):PROCshow_obj(| 000019b0 61 6c 74 2c 61 7a 6d 2c 22 4d 6f 6f 6e 22 29 0a |alt,azm,"Moon").| 000019c0 20 20 20 20 57 48 45 4e 32 20 3a 20 50 52 4f 43 | WHEN2 : PROC| 000019d0 66 69 6e 64 5f 70 6c 61 6e 65 74 28 31 2b 28 6d |find_planet(1+(m| 000019e0 25 21 34 29 29 0a 20 20 20 20 57 48 45 4e 33 20 |%!4)). WHEN3 | 000019f0 3a 20 50 52 4f 43 66 69 6e 64 5f 73 74 61 72 0a |: PROCfind_star.| 00001a00 20 20 20 20 57 48 45 4e 34 20 3a 20 50 52 4f 43 | WHEN4 : PROC| 00001a10 66 69 6e 64 5f 63 6f 6e 73 74 0a 20 20 45 4e 44 |find_const. END| 00001a20 43 41 53 45 0a 45 4e 44 50 52 4f 43 0a 0a 44 45 |CASE.ENDPROC..DE| 00001a30 46 50 52 4f 43 6e 65 77 5f 74 69 6d 65 28 74 25 |FPROCnew_time(t%| 00001a40 29 0a 20 20 43 41 53 45 20 74 25 20 4f 46 0a 20 |). CASE t% OF. | 00001a50 20 20 20 57 48 45 4e 2d 31 20 3a 20 50 52 4f 43 | WHEN-1 : PROC| 00001a60 77 69 6e 64 5f 63 6c 6f 63 6b 28 74 69 6d 65 72 |wind_clock(timer| 00001a70 25 20 45 4f 52 20 54 52 55 45 29 0a 20 20 20 20 |% EOR TRUE). | 00001a80 4f 54 48 45 52 57 49 53 45 20 3a 20 50 52 4f 43 |OTHERWISE : PROC| 00001a90 73 65 74 5f 63 6c 6f 63 6b 28 74 25 29 3a 73 74 |set_clock(t%):st| 00001aa0 61 74 65 3d 30 0a 20 20 45 4e 44 43 41 53 45 0a |ate=0. ENDCASE.| 00001ab0 45 4e 44 50 52 4f 43 0a 0a 44 45 46 50 52 4f 43 |ENDPROC..DEFPROC| 00001ac0 77 69 6e 64 5f 63 6c 6f 63 6b 28 74 25 29 0a 20 |wind_clock(t%). | 00001ad0 20 74 69 6d 65 72 25 3d 74 25 0a 20 20 49 46 20 | timer%=t%. IF | 00001ae0 74 69 6d 65 72 25 20 50 52 4f 43 74 69 63 6b 5f |timer% PROCtick_| 00001af0 69 74 65 6d 28 69 63 6f 6e 5f 6d 65 6e 75 25 2c |item(icon_menu%,| 00001b00 32 29 20 45 4c 53 45 20 50 52 4f 43 75 6e 74 69 |2) ELSE PROCunti| 00001b10 63 6b 5f 69 74 65 6d 28 69 63 6f 6e 5f 6d 65 6e |ck_item(icon_men| 00001b20 75 25 2c 32 29 0a 45 4e 44 50 52 4f 43 0a 0a 44 |u%,2).ENDPROC..D| 00001b30 45 46 50 52 4f 43 73 65 74 5f 63 6c 6f 63 6b 28 |EFPROCset_clock(| 00001b40 63 25 29 0a 20 20 49 46 63 25 3d 30 20 54 48 45 |c%). IFc%=0 THE| 00001b50 4e 0a 20 20 20 20 20 50 52 4f 43 73 65 74 5f 73 |N. PROCset_s| 00001b60 79 73 74 65 6d 5f 74 69 6d 65 0a 20 20 20 20 20 |ystem_time. | 00001b70 50 52 4f 43 74 69 63 6b 5f 69 74 65 6d 28 73 79 |PROCtick_item(sy| 00001b80 6e 63 5f 6d 65 6e 75 25 2c 30 29 0a 20 20 20 20 |nc_menu%,0). | 00001b90 20 50 52 4f 43 75 6e 74 69 63 6b 5f 69 74 65 6d | PROCuntick_item| 00001ba0 28 73 79 6e 63 5f 6d 65 6e 75 25 2c 31 29 0a 20 |(sync_menu%,1). | 00001bb0 20 45 4c 53 45 0a 20 20 20 20 20 50 52 4f 43 73 | ELSE. PROCs| 00001bc0 65 74 5f 75 73 65 72 5f 74 69 6d 65 0a 20 20 20 |et_user_time. | 00001bd0 20 20 50 52 4f 43 74 69 63 6b 5f 69 74 65 6d 28 | PROCtick_item(| 00001be0 73 79 6e 63 5f 6d 65 6e 75 25 2c 31 29 0a 20 20 |sync_menu%,1). | 00001bf0 20 20 20 50 52 4f 43 75 6e 74 69 63 6b 5f 69 74 | PROCuntick_it| 00001c00 65 6d 28 73 79 6e 63 5f 6d 65 6e 75 25 2c 30 29 |em(sync_menu%,0)| 00001c10 0a 20 20 45 4e 44 49 46 20 0a 45 4e 44 50 52 4f |. ENDIF .ENDPRO| 00001c20 43 20 20 20 20 20 20 20 0a 0a 44 45 46 50 52 4f |C ..DEFPRO| 00001c30 43 73 68 6f 77 5f 63 6f 6e 73 74 28 76 25 29 0a |Cshow_const(v%).| 00001c40 20 20 63 6f 6e 73 74 5f 64 72 61 77 25 3d 76 25 | const_draw%=v%| 00001c50 0a 20 20 49 46 63 6f 6e 73 74 5f 64 72 61 77 25 |. IFconst_draw%| 00001c60 20 50 52 4f 43 74 69 63 6b 5f 69 74 65 6d 28 77 | PROCtick_item(w| 00001c70 69 6e 64 5f 6d 65 6e 75 25 2c 31 29 20 45 4c 53 |ind_menu%,1) ELS| 00001c80 45 50 52 4f 43 75 6e 74 69 63 6b 5f 69 74 65 6d |EPROCuntick_item| 00001c90 28 77 69 6e 64 5f 6d 65 6e 75 25 2c 31 29 0a 20 |(wind_menu%,1). | 00001ca0 20 50 52 4f 43 72 65 64 72 61 77 5f 77 69 6e 64 | PROCredraw_wind| 00001cb0 6f 77 28 6d 61 69 6e 25 29 0a 45 4e 44 50 52 4f |ow(main%).ENDPRO| 00001cc0 43 0a 0a 44 45 46 50 52 4f 43 66 69 6e 64 5f 70 |C..DEFPROCfind_p| 00001cd0 6c 61 6e 65 74 28 70 25 29 0a 20 20 49 46 70 25 |lanet(p%). IFp%| 00001ce0 3e 30 20 54 48 45 4e 0a 20 20 20 20 50 52 4f 43 |>0 THEN. PROC| 00001cf0 70 6c 61 6e 65 74 28 70 25 2c 61 6c 74 2c 61 7a |planet(p%,alt,az| 00001d00 6d 29 0a 20 20 20 20 50 52 4f 43 73 68 6f 77 5f |m). PROCshow_| 00001d10 6f 62 6a 28 61 6c 74 2c 61 7a 6d 2c 50 6c 61 6e |obj(alt,azm,Plan| 00001d20 65 74 24 28 70 25 29 29 0a 20 20 45 4e 44 49 46 |et$(p%)). ENDIF| 00001d30 0a 45 4e 44 50 52 4f 43 0a 0a 44 45 46 50 52 4f |.ENDPROC..DEFPRO| 00001d40 43 66 69 6e 64 5f 73 74 61 72 0a 4c 4f 43 41 4c |Cfind_star.LOCAL| 00001d50 69 25 2c 73 24 0a 20 20 49 46 20 3f 73 74 61 72 |i%,s$. IF ?star| 00001d60 5f 70 74 72 25 3c 3e 31 33 20 54 48 45 4e 0a 20 |_ptr%<>13 THEN. | 00001d70 20 20 20 3f 73 74 61 72 5f 70 74 72 25 2d 3d 33 | ?star_ptr%-=3| 00001d80 32 0a 20 20 20 20 73 24 3d 46 4e 73 67 65 74 28 |2. s$=FNsget(| 00001d90 73 74 61 72 5f 70 74 72 25 29 0a 20 20 20 20 69 |star_ptr%). i| 00001da0 25 3d 30 0a 20 20 20 20 52 45 50 45 41 54 0a 20 |%=0. REPEAT. | 00001db0 20 20 20 20 20 69 25 2b 3d 31 0a 20 20 20 20 55 | i%+=1. U| 00001dc0 4e 54 49 4c 20 69 25 3d 4e 61 6d 65 64 5f 73 74 |NTIL i%=Named_st| 00001dd0 61 72 73 25 20 4f 52 20 53 74 61 72 24 28 69 25 |ars% OR Star$(i%| 00001de0 29 3d 73 24 0a 20 20 20 20 49 46 53 74 61 72 24 |)=s$. IFStar$| 00001df0 28 69 25 29 3d 73 24 20 54 48 45 4e 0a 20 20 20 |(i%)=s$ THEN. | 00001e00 20 20 20 69 25 3d 73 74 61 72 25 28 69 25 29 0a | i%=star%(i%).| 00001e10 20 20 20 20 20 20 50 52 4f 43 73 68 6f 77 5f 6f | PROCshow_o| 00001e20 62 6a 28 41 6c 74 28 69 25 29 2c 41 7a 6d 28 69 |bj(Alt(i%),Azm(i| 00001e30 25 29 2c 73 24 29 0a 20 20 20 20 45 4c 53 45 0a |%),s$). ELSE.| 00001e40 20 20 20 20 20 20 50 52 4f 43 65 72 72 6f 72 62 | PROCerrorb| 00001e50 6f 78 28 32 34 30 2c 22 4e 6f 20 73 74 61 72 20 |ox(240,"No star | 00001e60 6e 61 6d 65 64 20 22 2b 73 24 2b 22 20 4b 6e 6f |named "+s$+" Kno| 00001e70 77 6e 22 29 0a 20 20 20 20 45 4e 44 49 46 0a 20 |wn"). ENDIF. | 00001e80 20 45 4e 44 49 46 20 20 0a 20 20 24 73 74 61 72 | ENDIF . $star| 00001e90 5f 70 74 72 25 3d 22 22 0a 45 4e 44 50 52 4f 43 |_ptr%="".ENDPROC| 00001ea0 0a 0a 44 45 46 50 52 4f 43 66 69 6e 64 5f 63 6f |..DEFPROCfind_co| 00001eb0 6e 73 74 0a 4c 4f 43 41 4c 69 25 2c 73 25 2c 66 |nst.LOCALi%,s%,f| 00001ec0 25 2c 73 24 0a 20 20 50 52 4f 43 73 68 6f 77 5f |%,s$. PROCshow_| 00001ed0 63 6f 6e 73 74 28 54 52 55 45 29 0a 20 20 49 46 |const(TRUE). IF| 00001ee0 20 3f 63 6f 6e 73 74 5f 70 74 72 25 3c 3e 31 33 | ?const_ptr%<>13| 00001ef0 20 54 48 45 4e 0a 20 20 20 20 3f 63 6f 6e 73 74 | THEN. ?const| 00001f00 5f 70 74 72 25 2d 3d 33 32 0a 20 20 20 20 73 24 |_ptr%-=32. s$| 00001f10 3d 46 4e 73 67 65 74 28 63 6f 6e 73 74 5f 70 74 |=FNsget(const_pt| 00001f20 72 25 29 0a 20 20 20 20 69 25 3d 30 0a 20 20 20 |r%). i%=0. | 00001f30 20 52 45 50 45 41 54 0a 20 20 20 20 20 20 69 25 | REPEAT. i%| 00001f40 2b 3d 31 0a 20 20 20 20 55 4e 54 49 4c 20 69 25 |+=1. UNTIL i%| 00001f50 3d 6e 75 6d 5f 63 6f 6e 73 74 20 4f 52 20 43 4e |=num_const OR CN| 00001f60 24 28 69 25 29 3d 73 24 0a 20 20 20 20 49 46 43 |$(i%)=s$. IFC| 00001f70 4e 24 28 69 25 29 3d 73 24 20 54 48 45 4e 0a 20 |N$(i%)=s$ THEN. | 00001f80 20 20 20 20 20 73 25 3d 63 6f 6e 73 74 25 28 69 | s%=const%(i| 00001f90 25 29 0a 20 20 20 20 20 20 66 25 3d 63 6f 6e 73 |%). f%=cons| 00001fa0 74 25 28 69 25 2b 31 29 0a 20 20 20 20 20 20 52 |t%(i%+1). R| 00001fb0 45 50 45 41 54 3a 73 25 2b 3d 31 3a 55 4e 54 49 |EPEAT:s%+=1:UNTI| 00001fc0 4c 59 25 28 73 25 29 3e 30 20 4f 52 73 25 3d 66 |LY%(s%)>0 ORs%=f| 00001fd0 25 0a 20 20 20 20 20 20 50 52 4f 43 73 68 6f 77 |%. PROCshow| 00001fe0 5f 6f 62 6a 28 41 6c 74 28 73 25 29 2c 41 7a 6d |_obj(Alt(s%),Azm| 00001ff0 28 73 25 29 2c 73 24 29 0a 20 20 20 20 45 4c 53 |(s%),s$). ELS| 00002000 45 0a 20 20 20 20 20 20 50 52 4f 43 65 72 72 6f |E. PROCerro| 00002010 72 62 6f 78 28 32 34 30 2c 22 4e 6f 20 43 6f 6e |rbox(240,"No Con| 00002020 73 74 65 6c 61 74 69 6f 6e 20 6e 61 6d 65 64 20 |stelation named | 00002030 22 2b 73 24 2b 22 20 4b 6e 6f 77 6e 22 29 0a 20 |"+s$+" Known"). | 00002040 20 20 20 45 4e 44 49 46 0a 20 20 45 4e 44 49 46 | ENDIF. ENDIF| 00002050 0a 20 20 24 63 6f 6e 73 74 5f 70 74 72 25 3d 22 |. $const_ptr%="| 00002060 22 0a 45 4e 44 50 52 4f 43 0a 0a 44 45 46 50 52 |".ENDPROC..DEFPR| 00002070 4f 43 73 68 6f 77 5f 6f 62 6a 28 61 6c 74 2c 61 |OCshow_obj(alt,a| 00002080 7a 6d 2c 6e 24 29 0a 4c 4f 43 41 4c 78 25 2c 79 |zm,n$).LOCALx%,y| 00002090 25 0a 20 49 46 20 28 61 6c 74 3c 30 29 20 54 48 |%. IF (alt<0) TH| 000020a0 45 4e 20 0a 20 20 20 20 50 52 4f 43 69 6e 66 6f |EN . PROCinfo| 000020b0 62 6f 78 28 6e 24 2c 22 4f 62 6a 65 63 74 20 63 |box(n$,"Object c| 000020c0 75 72 72 65 6e 74 6c 79 20 62 65 6c 6f 77 20 74 |urrently below t| 000020d0 68 65 20 48 6f 72 69 7a 6f 6e 22 29 0a 20 45 4c |he Horizon"). EL| 000020e0 53 45 20 0a 20 20 20 49 46 20 56 65 72 74 69 63 |SE . IF Vertic| 000020f0 61 6c 20 3c 3e 20 28 61 6c 74 3e 52 41 44 28 36 |al <> (alt>RAD(6| 00002100 36 29 29 20 50 52 4f 43 73 65 74 5f 76 69 65 77 |6)) PROCset_view| 00002110 28 61 6c 74 3e 52 41 44 28 36 36 29 29 0a 20 20 |(alt>RAD(66)). | 00002120 20 50 52 4f 43 74 72 61 6e 73 76 69 65 77 28 61 | PROCtransview(a| 00002130 6c 74 2c 61 7a 6d 2c 78 25 2c 79 25 29 0a 20 20 |lt,azm,x%,y%). | 00002140 20 50 52 4f 43 73 63 72 6f 6c 6c 5f 77 69 6e 64 | PROCscroll_wind| 00002150 28 6d 61 69 6e 25 2c 78 25 2c 79 25 2c 78 73 25 |(main%,x%,y%,xs%| 00002160 2c 79 73 25 29 0a 20 20 20 4d 4f 55 53 45 20 54 |,ys%). MOUSE T| 00002170 4f 20 78 25 2c 79 25 0a 20 20 45 4e 44 49 46 0a |O x%,y%. ENDIF.| 00002180 45 4e 44 50 52 4f 43 0a 0a 44 45 46 50 52 4f 43 |ENDPROC..DEFPROC| 00002190 6e 65 77 5f 70 6c 61 63 65 0a 20 20 4c 6f 6e 67 |new_place. Long| 000021a0 3d 46 4e 67 65 74 5f 61 6e 67 6c 65 28 6c 6f 6e |=FNget_angle(lon| 000021b0 67 5f 70 74 72 25 2c 22 57 45 22 2c 56 69 65 77 |g_ptr%,"WE",View| 000021c0 65 72 5f 52 61 68 2a 31 35 2c 22 4c 6f 6e 67 69 |er_Rah*15,"Longi| 000021d0 74 75 64 65 22 29 0a 20 20 4c 61 74 3d 46 4e 67 |tude"). Lat=FNg| 000021e0 65 74 5f 61 6e 67 6c 65 28 6c 61 74 5f 70 74 72 |et_angle(lat_ptr| 000021f0 25 2c 22 4e 53 22 2c 44 45 47 28 56 69 65 77 65 |%,"NS",DEG(Viewe| 00002200 72 5f 4c 61 74 29 2c 22 4c 61 74 69 74 75 64 65 |r_Lat),"Latitude| 00002210 22 29 0a 20 20 50 52 4f 43 73 65 74 70 6f 73 28 |"). PROCsetpos(| 00002220 4c 61 74 2c 4c 6f 6e 67 29 0a 20 20 73 74 61 74 |Lat,Long). stat| 00002230 65 25 3d 30 0a 45 4e 44 50 52 4f 43 0a 0a 44 45 |e%=0.ENDPROC..DE| 00002240 46 46 4e 67 65 74 5f 61 6e 67 6c 65 28 61 25 2c |FFNget_angle(a%,| 00002250 64 24 2c 64 65 66 2c 65 24 29 0a 4c 4f 43 41 4c |d$,def,e$).LOCAL| 00002260 64 25 2c 6d 25 2c 73 25 2c 73 24 0a 20 20 73 24 |d%,m%,s%,s$. s$| 00002270 3d 46 4e 73 67 65 74 28 61 25 29 0a 20 20 43 41 |=FNsget(a%). CA| 00002280 53 45 20 52 49 47 48 54 24 28 73 24 2c 31 29 20 |SE RIGHT$(s$,1) | 00002290 4f 46 0a 20 20 20 20 57 48 45 4e 20 4c 45 46 54 |OF. WHEN LEFT| 000022a0 24 28 64 24 2c 31 29 20 3a 73 25 3d 31 0a 20 20 |$(d$,1) :s%=1. | 000022b0 20 20 57 48 45 4e 20 52 49 47 48 54 24 28 64 24 | WHEN RIGHT$(d$| 000022c0 2c 31 29 3a 73 25 3d 2d 31 0a 20 20 20 20 4f 54 |,1):s%=-1. OT| 000022d0 48 45 52 57 49 53 45 20 20 20 20 20 20 20 20 3a |HERWISE :| 000022e0 73 25 3d 30 0a 20 20 45 4e 44 43 41 53 45 0a 20 |s%=0. ENDCASE. | 000022f0 20 64 25 3d 49 4e 53 54 52 28 73 24 2c 22 64 22 | d%=INSTR(s$,"d"| 00002300 29 0a 20 20 6d 25 3d 49 4e 53 54 52 28 73 24 2c |). m%=INSTR(s$,| 00002310 22 6d 22 29 0a 20 20 49 46 73 25 3d 30 20 4f 52 |"m"). IFs%=0 OR| 00002320 49 4e 53 54 52 28 73 24 2c 22 64 22 2c 64 25 2b |INSTR(s$,"d",d%+| 00002330 31 29 3e 30 20 4f 52 64 25 3c 32 20 4f 52 28 6d |1)>0 ORd%<2 OR(m| 00002340 25 3e 30 20 41 4e 44 28 6d 25 3c 64 25 2b 32 20 |%>0 AND(m%<d%+2 | 00002350 4f 52 6d 25 3c 4c 45 4e 28 73 24 29 2d 31 29 29 |ORm%<LEN(s$)-1))| 00002360 20 4f 52 28 6d 25 3d 30 20 41 4e 44 64 25 3c 4c | OR(m%=0 ANDd%<L| 00002370 45 4e 28 73 24 29 2d 31 29 20 54 48 45 4e 0a 20 |EN(s$)-1) THEN. | 00002380 20 20 20 50 52 4f 43 65 72 72 6f 72 62 6f 78 28 | PROCerrorbox(| 00002390 32 34 30 2c 65 24 2b 22 20 22 2b 73 24 2b 22 20 |240,e$+" "+s$+" | 000023a0 69 6c 6c 20 66 6f 72 6d 61 74 74 65 64 22 2b 53 |ill formatted"+S| 000023b0 54 52 24 28 64 25 29 2b 53 54 52 24 28 6d 25 29 |TR$(d%)+STR$(m%)| 000023c0 2b 53 54 52 24 28 4c 45 4e 28 73 24 29 29 29 0a |+STR$(LEN(s$))).| 000023d0 20 20 45 4c 53 45 0a 20 20 20 20 64 65 66 3d 73 | ELSE. def=s| 000023e0 25 2a 28 56 41 4c 28 4c 45 46 54 24 28 73 24 2c |%*(VAL(LEFT$(s$,| 000023f0 64 25 2d 31 29 29 2b 56 41 4c 28 4d 49 44 24 28 |d%-1))+VAL(MID$(| 00002400 73 24 2c 64 25 2b 31 2c 6d 25 2d 64 25 2d 31 29 |s$,d%+1,m%-d%-1)| 00002410 29 2f 36 30 29 0a 20 20 45 4e 44 49 46 0a 3d 64 |)/60). ENDIF.=d| 00002420 65 66 0a 0a 44 45 46 50 52 4f 43 7a 6f 6f 6d 28 |ef..DEFPROCzoom(| 00002430 73 25 29 0a 20 20 49 46 73 25 3d 30 20 54 48 45 |s%). IFs%=0 THE| 00002440 4e 0a 20 20 20 20 20 73 63 25 3d 31 31 34 36 0a |N. sc%=1146.| 00002450 20 20 20 20 20 67 64 25 3d 32 30 0a 20 20 20 20 | gd%=20. | 00002460 20 63 6f 25 3d 67 64 25 2a 33 33 0a 20 20 20 20 | co%=gd%*33. | 00002470 20 79 73 25 3d 63 6f 25 3c 3c 31 0a 20 20 20 20 | ys%=co%<<1. | 00002480 20 78 73 25 3d 67 64 25 2a 33 36 30 0a 20 20 20 | xs%=gd%*360. | 00002490 20 20 73 63 73 25 3d 32 0a 20 20 20 20 20 56 65 | scs%=2. Ve| 000024a0 72 74 69 63 61 6c 3d 46 41 4c 53 45 0a 20 20 45 |rtical=FALSE. E| 000024b0 4c 53 45 0a 20 20 20 20 73 63 25 3d 73 63 25 2a |LSE. sc%=sc%*| 000024c0 28 32 5e 73 25 29 0a 20 20 20 20 67 64 25 3d 67 |(2^s%). gd%=g| 000024d0 64 25 2a 28 32 5e 73 25 29 0a 20 20 20 20 73 63 |d%*(2^s%). sc| 000024e0 73 25 2d 3d 73 25 0a 20 20 20 20 49 46 73 63 73 |s%-=s%. IFscs| 000024f0 25 3c 3d 30 20 50 52 4f 43 73 68 61 64 65 5f 69 |%<=0 PROCshade_i| 00002500 74 65 6d 28 77 69 6e 64 5f 6d 65 6e 75 25 2c 32 |tem(wind_menu%,2| 00002510 29 20 45 4c 53 45 50 52 4f 43 65 6e 61 62 6c 65 |) ELSEPROCenable| 00002520 5f 69 74 65 6d 28 77 69 6e 64 5f 6d 65 6e 75 25 |_item(wind_menu%| 00002530 2c 32 29 0a 20 20 20 20 49 46 73 63 73 25 3e 3d |,2). IFscs%>=| 00002540 34 20 50 52 4f 43 73 68 61 64 65 5f 69 74 65 6d |4 PROCshade_item| 00002550 28 77 69 6e 64 5f 6d 65 6e 75 25 2c 33 29 20 45 |(wind_menu%,3) E| 00002560 4c 53 45 50 52 4f 43 65 6e 61 62 6c 65 5f 69 74 |LSEPROCenable_it| 00002570 65 6d 28 77 69 6e 64 5f 6d 65 6e 75 25 2c 33 29 |em(wind_menu%,3)| 00002580 0a 20 20 20 20 63 6f 25 3d 67 64 25 2a 33 33 0a |. co%=gd%*33.| 00002590 20 20 20 20 79 73 25 3d 63 6f 25 3c 3c 31 0a 20 | ys%=co%<<1. | 000025a0 20 20 20 49 46 20 56 65 72 74 69 63 61 6c 20 78 | IF Vertical x| 000025b0 73 25 3d 79 73 25 20 45 4c 53 45 78 73 25 3d 67 |s%=ys% ELSExs%=g| 000025c0 64 25 2a 33 36 30 20 0a 20 20 20 20 50 52 4f 43 |d%*360 . PROC| 000025d0 63 61 6c 63 5f 76 69 65 77 0a 20 20 20 20 50 52 |calc_view. PR| 000025e0 4f 43 72 65 73 69 7a 65 5f 77 69 6e 64 6f 77 28 |OCresize_window(| 000025f0 6d 61 69 6e 25 2c 78 73 25 2c 79 73 25 29 0a 20 |main%,xs%,ys%). | 00002600 20 20 20 50 52 4f 43 72 65 64 72 61 77 5f 77 69 | PROCredraw_wi| 00002610 6e 64 6f 77 28 6d 61 69 6e 25 29 0a 20 20 45 4e |ndow(main%). EN| 00002620 44 49 46 0a 45 4e 44 50 52 4f 43 0a 0a 0a 44 45 |DIF.ENDPROC...DE| 00002630 46 50 52 4f 43 72 65 64 72 61 77 5f 77 69 6e 64 |FPROCredraw_wind| 00002640 6f 77 28 68 61 6e 64 6c 65 25 29 0a 4c 4f 43 41 |ow(handle%).LOCA| 00002650 4c 6d 6f 72 65 25 2c 73 24 0a 20 49 46 20 68 61 |Lmore%,s$. IF ha| 00002660 6e 64 6c 65 25 3d 6d 61 69 6e 25 20 54 48 45 4e |ndle%=main% THEN| 00002670 0a 20 20 20 20 6d 6f 72 65 25 20 3d 20 46 4e 67 |. more% = FNg| 00002680 65 74 5f 77 69 6e 64 6f 77 28 6d 61 69 6e 25 2c |et_window(main%,| 00002690 78 30 25 2c 78 31 25 2c 79 30 25 2c 79 31 25 29 |x0%,x1%,y0%,y1%)| 000026a0 0a 20 20 20 20 57 48 49 4c 45 20 6d 6f 72 65 25 |. WHILE more%| 000026b0 0a 20 20 20 20 20 20 50 52 4f 43 64 72 61 77 5f |. PROCdraw_| 000026c0 77 69 6e 64 6f 77 28 78 30 25 2c 78 31 25 2c 79 |window(x0%,x1%,y| 000026d0 30 25 2c 79 31 25 29 0a 20 20 20 20 20 20 6d 6f |0%,y1%). mo| 000026e0 72 65 25 3d 46 4e 67 65 74 5f 72 65 63 74 61 6e |re%=FNget_rectan| 000026f0 67 6c 65 28 6d 61 69 6e 25 2c 78 30 25 2c 78 31 |gle(main%,x0%,x1| 00002700 25 2c 79 30 25 2c 79 31 25 29 0a 20 20 20 20 45 |%,y0%,y1%). E| 00002710 4e 44 57 48 49 4c 45 0a 20 20 45 4e 44 49 46 0a |NDWHILE. ENDIF.| 00002720 45 4e 44 50 52 4f 43 0a 0a 52 45 4d 20 2f 20 57 |ENDPROC..REM / W| 00002730 69 6e 64 6f 77 20 72 65 64 72 61 77 69 6e 67 20 |indow redrawing | 00002740 72 6f 75 74 69 6e 65 73 20 2f 0a 52 45 4d 20 2f |routines /.REM /| 00002750 20 56 65 72 73 69 6f 6e 20 35 2e 32 20 2d 20 4f | Version 5.2 - O| 00002760 70 74 69 6d 69 73 65 64 20 66 6f 72 20 73 70 65 |ptimised for spe| 00002770 65 64 20 6f 6e 20 62 61 73 69 63 2f 63 6f 6d 70 |ed on basic/comp| 00002780 69 6c 65 64 20 62 61 73 69 63 0a 0a 44 45 46 50 |iled basic..DEFP| 00002790 52 4f 43 64 72 61 77 5f 77 69 6e 64 6f 77 28 78 |ROCdraw_window(x| 000027a0 30 25 2c 78 31 25 2c 79 30 25 2c 79 31 25 29 0a |0%,x1%,y0%,y1%).| 000027b0 4c 4f 43 41 4c 69 25 2c 66 25 2c 61 25 2c 62 25 |LOCALi%,f%,a%,b%| 000027c0 2c 74 25 0a 52 45 4d 20 23 72 65 67 69 73 74 65 |,t%.REM #registe| 000027d0 72 20 61 25 0a 52 45 4d 20 23 72 65 67 69 73 74 |r a%.REM #regist| 000027e0 65 72 20 62 25 0a 52 45 4d 20 23 72 65 67 69 73 |er b%.REM #regis| 000027f0 74 65 72 20 69 25 0a 52 45 4d 20 23 72 65 67 69 |ter i%.REM #regi| 00002800 73 74 65 72 20 74 25 0a 20 20 78 30 25 2d 3d 31 |ster t%. x0%-=1| 00002810 36 0a 20 20 78 31 25 2b 3d 31 36 0a 20 20 79 30 |6. x1%+=16. y0| 00002820 25 2d 3d 31 36 0a 20 20 79 31 25 2b 3d 31 36 0a |%-=16. y1%+=16.| 00002830 20 20 56 44 55 32 33 2c 36 2c 31 2c 31 2c 31 2c | VDU23,6,1,1,1,| 00002840 31 2c 31 2c 31 2c 31 2c 31 0a 20 20 49 46 20 56 |1,1,1,1,1. IF V| 00002850 65 72 74 69 63 61 6c 20 50 52 4f 43 76 65 72 74 |ertical PROCvert| 00002860 5f 77 69 6e 64 6f 77 20 45 4c 53 45 20 50 52 4f |_window ELSE PRO| 00002870 43 68 6f 72 69 7a 5f 77 69 6e 64 6f 77 0a 0a 20 |Choriz_window.. | 00002880 20 49 46 63 6f 6e 73 74 5f 64 72 61 77 25 20 54 | IFconst_draw% T| 00002890 48 45 4e 0a 20 20 20 20 53 59 53 20 43 6f 6c 25 |HEN. SYS Col%| 000028a0 2c 31 35 0a 20 20 20 20 66 25 3d 67 64 25 2a 39 |,15. f%=gd%*9| 000028b0 30 0a 20 20 20 20 46 4f 52 69 25 3d 31 54 4f 6d |0. FORi%=1TOm| 000028c0 61 78 5f 6c 69 6e 65 25 0a 20 20 20 20 20 20 61 |ax_line%. a| 000028d0 25 3d 6c 73 25 28 69 25 29 0a 20 20 20 20 20 20 |%=ls%(i%). | 000028e0 62 25 3d 6c 66 25 28 69 25 29 0a 20 20 20 20 20 |b%=lf%(i%). | 000028f0 20 49 46 41 42 53 28 58 25 28 61 25 29 2d 58 25 | IFABS(X%(a%)-X%| 00002900 28 62 25 29 29 3c 66 25 20 4d 4f 56 45 58 25 28 |(b%))<f% MOVEX%(| 00002910 61 25 29 2b 62 78 25 2c 59 25 28 61 25 29 2b 62 |a%)+bx%,Y%(a%)+b| 00002920 79 25 3a 50 4c 4f 54 26 31 35 2c 58 25 28 62 25 |y%:PLOT&15,X%(b%| 00002930 29 2b 62 78 25 2c 59 25 28 62 25 29 2b 62 79 25 |)+bx%,Y%(b%)+by%| 00002940 0a 20 20 20 20 4e 45 58 54 0a 20 20 45 4e 44 49 |. NEXT. ENDI| 00002950 46 0a 0a 20 20 46 4f 52 69 25 3d 31 54 4f 20 73 |F.. FORi%=1TO s| 00002960 64 73 25 0a 20 20 20 20 49 46 58 25 28 69 25 29 |ds%. IFX%(i%)| 00002970 3e 78 30 25 20 41 4e 44 20 58 25 28 69 25 29 3c |>x0% AND X%(i%)<| 00002980 78 31 25 20 54 48 45 4e 0a 20 20 20 20 20 20 49 |x1% THEN. I| 00002990 46 20 59 25 28 69 25 29 3e 79 30 25 20 41 4e 44 |F Y%(i%)>y0% AND| 000029a0 59 25 28 69 25 29 3c 79 31 25 20 54 48 45 4e 0a |Y%(i%)<y1% THEN.| 000029b0 20 20 20 20 20 20 20 20 74 25 3d 4d 61 67 28 69 | t%=Mag(i| 000029c0 25 29 2b 73 63 73 25 3a 49 46 74 25 3c 30 20 74 |%)+scs%:IFt%<0 t| 000029d0 25 3d 30 0a 20 20 20 20 20 20 20 20 49 46 74 25 |%=0. IFt%| 000029e0 3c 39 20 53 59 53 73 70 6f 70 25 2c 26 32 33 34 |<9 SYSspop%,&234| 000029f0 2c 73 70 72 69 74 65 73 25 2c 73 6d 25 28 74 25 |,sprites%,sm%(t%| 00002a00 29 2c 58 25 28 69 25 29 2d 6f 25 28 74 25 29 2b |),X%(i%)-o%(t%)+| 00002a10 62 78 25 2c 59 25 28 69 25 29 2d 6f 25 28 74 25 |bx%,Y%(i%)-o%(t%| 00002a20 29 2b 62 79 25 2c 38 2c 66 61 63 74 6f 72 73 25 |)+by%,8,factors%| 00002a30 2c 70 69 78 74 72 61 6e 73 25 0a 20 20 20 20 20 |,pixtrans%. | 00002a40 20 45 4e 44 49 46 0a 20 20 20 20 45 4e 44 49 46 | ENDIF. ENDIF| 00002a50 0a 20 20 4e 45 58 54 0a 0a 20 20 78 30 25 2d 3d |. NEXT.. x0%-=| 00002a60 32 30 3a 78 31 25 2b 3d 32 30 3a 79 30 25 2d 3d |20:x1%+=20:y0%-=| 00002a70 32 30 3a 79 31 25 2b 3d 32 30 0a 20 20 46 4f 52 |20:y1%+=20. FOR| 00002a80 69 25 3d 31 54 4f 38 0a 20 20 20 20 50 52 4f 43 |i%=1TO8. PROC| 00002a90 73 63 61 6c 65 5f 70 6c 6f 74 28 58 70 25 28 69 |scale_plot(Xp%(i| 00002aa0 25 29 2c 59 70 25 28 69 25 29 2c 50 6c 61 6e 65 |%),Yp%(i%),Plane| 00002ab0 74 24 28 69 25 29 29 0a 20 20 4e 45 58 54 0a 20 |t$(i%)). NEXT. | 00002ac0 20 50 52 4f 43 73 63 61 6c 65 5f 70 6c 6f 74 28 | PROCscale_plot(| 00002ad0 58 73 25 2c 59 73 25 2c 22 73 75 6e 22 29 0a 20 |Xs%,Ys%,"sun"). | 00002ae0 20 50 52 4f 43 73 63 61 6c 65 5f 70 6c 6f 74 28 | PROCscale_plot(| 00002af0 58 6d 25 2c 59 6d 25 2c 22 6d 6f 6f 6e 22 2b 6d |Xm%,Ym%,"moon"+m| 00002b00 6f 6f 6e 5f 70 68 61 73 65 24 29 0a 45 4e 44 50 |oon_phase$).ENDP| 00002b10 52 4f 43 0a 0a 44 45 46 50 52 4f 43 73 63 61 6c |ROC..DEFPROCscal| 00002b20 65 5f 70 6c 6f 74 28 78 25 2c 79 25 2c 73 24 29 |e_plot(x%,y%,s$)| 00002b30 0a 20 20 49 46 78 25 3e 78 30 25 20 41 4e 44 78 |. IFx%>x0% ANDx| 00002b40 25 3c 78 31 25 20 41 4e 44 79 25 3e 79 30 25 20 |%<x1% ANDy%>y0% | 00002b50 41 4e 44 79 25 3c 79 31 25 20 53 59 53 20 73 70 |ANDy%<y1% SYS sp| 00002b60 6f 70 25 2c 26 31 33 34 2c 73 70 72 69 74 65 73 |op%,&134,sprites| 00002b70 25 2c 73 24 2c 78 25 2b 62 78 25 2c 79 25 2b 62 |%,s$,x%+bx%,y%+b| 00002b80 79 25 2c 38 2c 66 61 63 74 6f 72 73 25 2c 70 69 |y%,8,factors%,pi| 00002b90 78 74 72 61 6e 73 25 0a 45 4e 44 50 52 4f 43 0a |xtrans%.ENDPROC.| 00002ba0 0a 44 45 46 50 52 4f 43 76 65 72 74 5f 77 69 6e |.DEFPROCvert_win| 00002bb0 64 6f 77 0a 4c 4f 43 41 4c 69 25 2c 6a 25 2c 78 |dow.LOCALi%,j%,x| 00002bc0 63 25 2c 79 63 25 2c 64 72 25 0a 20 20 78 63 25 |c%,yc%,dr%. xc%| 00002bd0 3d 62 78 25 2b 63 6f 25 0a 20 20 79 63 25 3d 62 |=bx%+co%. yc%=b| 00002be0 79 25 2b 63 6f 25 0a 20 20 56 44 55 35 0a 20 20 |y%+co%. VDU5. | 00002bf0 53 59 53 20 43 6f 6c 25 2c 31 34 0a 20 20 46 4f |SYS Col%,14. FO| 00002c00 52 69 25 3d 31 30 20 54 4f 20 33 30 20 53 54 45 |Ri%=10 TO 30 STE| 00002c10 50 20 31 30 0a 20 20 20 20 64 72 25 3d 69 25 2a |P 10. dr%=i%*| 00002c20 67 64 25 0a 20 20 20 20 4d 4f 56 45 78 63 25 2c |gd%. MOVExc%,| 00002c30 79 63 25 2b 64 72 25 0a 20 20 20 20 46 4f 52 6a |yc%+dr%. FORj| 00002c40 25 3d 31 20 54 4f 20 32 34 0a 20 20 20 20 20 20 |%=1 TO 24. | 00002c50 50 4c 4f 54 26 31 35 2c 78 63 25 2b 64 72 25 2a |PLOT&15,xc%+dr%*| 00002c60 63 78 28 6a 25 29 2c 79 63 25 2b 64 72 25 2a 63 |cx(j%),yc%+dr%*c| 00002c70 79 28 6a 25 29 0a 20 20 20 20 4e 45 58 54 0a 20 |y(j%). NEXT. | 00002c80 20 20 20 4d 4f 56 45 78 63 25 2d 31 36 2c 79 63 | MOVExc%-16,yc| 00002c90 25 2d 64 72 25 2b 33 32 3a 50 52 49 4e 54 3b 39 |%-dr%+32:PRINT;9| 00002ca0 30 2d 69 25 0a 20 20 4e 45 58 54 0a 45 4e 44 50 |0-i%. NEXT.ENDP| 00002cb0 52 4f 43 0a 0a 44 45 46 50 52 4f 43 68 6f 72 69 |ROC..DEFPROChori| 00002cc0 7a 5f 77 69 6e 64 6f 77 0a 4c 4f 43 41 4c 69 25 |z_window.LOCALi%| 00002cd0 2c 74 25 2c 76 25 2c 63 25 0a 20 20 76 25 3d 62 |,t%,v%,c%. v%=b| 00002ce0 79 25 2b 67 64 25 2a 37 32 0a 20 20 63 25 3d 67 |y%+gd%*72. c%=g| 00002cf0 64 25 2a 34 35 0a 20 20 53 59 53 20 43 6f 6c 25 |d%*45. SYS Col%| 00002d00 2c 31 34 0a 20 20 46 4f 52 69 25 3d 31 54 4f 38 |,14. FORi%=1TO8| 00002d10 0a 20 20 20 20 4d 4f 56 45 62 78 25 2d 38 2a 4c |. MOVEbx%-8*L| 00002d20 45 4e 43 50 24 28 69 25 29 2b 63 25 2a 28 69 25 |ENCP$(i%)+c%*(i%| 00002d30 29 2c 62 79 25 2b 33 32 0a 20 20 20 20 50 52 49 |),by%+32. PRI| 00002d40 4e 54 43 50 24 28 69 25 29 0a 20 20 20 20 74 25 |NTCP$(i%). t%| 00002d50 3d 62 78 25 2b 63 25 2a 69 25 0a 20 20 20 20 4d |=bx%+c%*i%. M| 00002d60 4f 56 45 74 25 2c 62 79 25 0a 20 20 20 20 50 4c |OVEt%,by%. PL| 00002d70 4f 54 26 31 35 2c 74 25 2c 76 25 0a 20 20 20 20 |OT&15,t%,v%. | 00002d80 52 45 50 45 41 54 0a 20 20 20 20 20 20 74 25 2d |REPEAT. t%-| 00002d90 3d 34 35 30 0a 20 20 20 20 20 20 4d 4f 56 45 74 |=450. MOVEt| 00002da0 25 2c 62 79 25 0a 20 20 20 20 20 20 50 4c 4f 54 |%,by%. PLOT| 00002db0 26 31 35 2c 74 25 2c 76 25 0a 20 20 20 20 55 4e |&15,t%,v%. UN| 00002dc0 54 49 4c 74 25 3c 3d 62 78 25 2b 63 25 2a 28 69 |TILt%<=bx%+c%*(i| 00002dd0 25 2d 31 29 2b 34 35 30 0a 20 20 4e 45 58 54 0a |%-1)+450. NEXT.| 00002de0 20 20 74 25 3d 62 78 25 2b 67 64 25 2a 33 36 30 | t%=bx%+gd%*360| 00002df0 0a 20 20 46 4f 52 69 25 3d 30 20 54 4f 20 36 30 |. FORi%=0 TO 60| 00002e00 20 53 54 45 50 20 34 30 30 2f 67 64 25 0a 20 20 | STEP 400/gd%. | 00002e10 20 20 76 25 3d 62 79 25 2b 67 64 25 2a 69 25 0a | v%=by%+gd%*i%.| 00002e20 20 20 20 20 4d 4f 56 45 62 78 25 2c 76 25 2b 33 | MOVEbx%,v%+3| 00002e30 32 0a 20 20 20 20 50 52 49 4e 54 3b 69 25 0a 20 |2. PRINT;i%. | 00002e40 20 20 20 4d 4f 56 45 62 78 25 2c 76 25 0a 20 20 | MOVEbx%,v%. | 00002e50 20 20 50 4c 4f 54 26 31 35 2c 74 25 2c 76 25 0a | PLOT&15,t%,v%.| 00002e60 20 20 4e 45 58 54 0a 45 4e 44 50 52 4f 43 0a 0a | NEXT.ENDPROC..| 00002e70 52 45 4d 20 2f 20 52 6f 75 74 69 6e 65 73 20 66 |REM / Routines f| 00002e80 6f 72 20 63 61 6c 63 75 6c 61 74 69 6e 67 20 73 |or calculating s| 00002e90 74 61 72 20 70 6f 73 69 74 69 6f 6e 73 20 2f 0a |tar positions /.| 00002ea0 0a 0a 44 45 46 50 52 4f 43 73 63 61 6e 73 6b 79 |..DEFPROCscansky| 00002eb0 0a 4c 4f 43 41 4c 69 25 0a 20 20 50 52 4f 43 68 |.LOCALi%. PROCh| 00002ec0 6f 75 72 67 6c 61 73 73 5f 6f 6e 0a 20 20 50 52 |ourglass_on. PR| 00002ed0 4f 43 63 61 6c 63 5f 65 61 72 74 68 5f 70 6f 73 |OCcalc_earth_pos| 00002ee0 0a 20 20 46 4f 52 69 25 3d 31 54 4f 20 73 64 73 |. FORi%=1TO sds| 00002ef0 25 0a 20 20 20 20 50 52 4f 43 63 61 6c 63 5f 70 |%. PROCcalc_p| 00002f00 6f 73 28 52 61 68 28 69 25 29 2c 44 65 63 28 69 |os(Rah(i%),Dec(i| 00002f10 25 29 2c 41 6c 74 28 69 25 29 2c 41 7a 6d 28 69 |%),Alt(i%),Azm(i| 00002f20 25 29 29 0a 20 20 4e 45 58 54 0a 20 20 50 52 4f |%)). NEXT. PRO| 00002f30 43 63 61 6c 63 5f 76 69 65 77 0a 20 20 50 52 4f |Ccalc_view. PRO| 00002f40 43 63 61 6c 63 5f 6f 75 72 5f 67 61 6c 61 78 79 |Ccalc_our_galaxy| 00002f50 0a 20 20 50 52 4f 43 68 6f 75 72 67 6c 61 73 73 |. PROChourglass| 00002f60 5f 6f 66 66 0a 45 4e 44 50 52 4f 43 0a 0a 0a 44 |_off.ENDPROC...D| 00002f70 45 46 46 4e 74 65 6e 5f 73 74 61 72 73 28 52 45 |EFFNten_stars(RE| 00002f80 54 55 52 4e 20 69 25 29 0a 4c 4f 43 41 4c 6e 25 |TURN i%).LOCALn%| 00002f90 0a 20 20 6e 25 3d 30 0a 20 20 52 45 50 45 41 54 |. n%=0. REPEAT| 00002fa0 0a 20 20 20 20 50 52 4f 43 63 61 6c 63 5f 70 6f |. PROCcalc_po| 00002fb0 73 28 52 61 68 28 69 25 29 2c 44 65 63 28 69 25 |s(Rah(i%),Dec(i%| 00002fc0 29 2c 41 6c 74 28 69 25 29 2c 41 7a 6d 28 69 25 |),Alt(i%),Azm(i%| 00002fd0 29 29 0a 20 20 20 20 69 25 2b 3d 31 0a 20 20 20 |)). i%+=1. | 00002fe0 20 6e 25 2b 3d 31 0a 20 20 55 4e 54 49 4c 20 69 | n%+=1. UNTIL i| 00002ff0 25 3d 73 64 73 25 20 4f 52 20 6e 25 3d 31 30 0a |%=sds% OR n%=10.| 00003000 3d 28 69 25 3d 73 64 73 25 29 0a 0a 44 45 46 50 |=(i%=sds%)..DEFP| 00003010 52 4f 43 63 61 6c 63 5f 76 69 65 77 0a 4c 4f 43 |ROCcalc_view.LOC| 00003020 41 4c 69 25 2c 74 0a 20 20 49 46 20 56 65 72 74 |ALi%,t. IF Vert| 00003030 69 63 61 6c 20 54 48 45 4e 0a 20 20 20 20 46 4f |ical THEN. FO| 00003040 52 69 25 3d 31 54 4f 73 64 73 25 0a 20 20 20 20 |Ri%=1TOsds%. | 00003050 20 20 74 3d 73 63 25 2a 28 50 49 2f 32 2d 41 6c | t=sc%*(PI/2-Al| 00003060 74 28 69 25 29 29 0a 20 20 20 20 20 20 58 25 28 |t(i%)). X%(| 00003070 69 25 29 3d 63 6f 25 2b 74 2a 53 49 4e 28 41 7a |i%)=co%+t*SIN(Az| 00003080 6d 28 69 25 29 29 0a 20 20 20 20 20 20 59 25 28 |m(i%)). Y%(| 00003090 69 25 29 3d 63 6f 25 2d 74 2a 43 4f 53 28 41 7a |i%)=co%-t*COS(Az| 000030a0 6d 28 69 25 29 29 0a 20 20 20 20 4e 45 58 54 0a |m(i%)). NEXT.| 000030b0 20 20 45 4c 53 45 0a 20 20 20 20 46 4f 52 69 25 | ELSE. FORi%| 000030c0 3d 31 54 4f 73 64 73 25 0a 20 20 20 20 20 20 59 |=1TOsds%. Y| 000030d0 25 28 69 25 29 3d 73 63 25 2a 41 6c 74 28 69 25 |%(i%)=sc%*Alt(i%| 000030e0 29 0a 20 20 20 20 20 20 58 25 28 69 25 29 3d 73 |). X%(i%)=s| 000030f0 63 25 2a 41 7a 6d 28 69 25 29 0a 20 20 20 20 4e |c%*Azm(i%). N| 00003100 45 58 54 0a 20 20 45 4e 44 49 46 0a 45 4e 44 50 |EXT. ENDIF.ENDP| 00003110 52 4f 43 0a 0a 44 45 46 50 52 4f 43 74 72 61 6e |ROC..DEFPROCtran| 00003120 73 76 69 65 77 28 61 6c 74 2c 61 7a 6d 2c 52 45 |sview(alt,azm,RE| 00003130 54 55 52 4e 20 78 25 2c 52 45 54 55 52 4e 20 79 |TURN x%,RETURN y| 00003140 25 29 0a 4c 4f 43 41 4c 74 0a 20 20 49 46 20 56 |%).LOCALt. IF V| 00003150 65 72 74 69 63 61 6c 20 54 48 45 4e 0a 20 20 20 |ertical THEN. | 00003160 20 74 3d 73 63 25 2a 28 50 49 2f 32 2d 61 6c 74 | t=sc%*(PI/2-alt| 00003170 29 0a 20 20 20 20 78 25 3d 63 6f 25 2b 74 2a 53 |). x%=co%+t*S| 00003180 49 4e 28 61 7a 6d 29 0a 20 20 20 20 79 25 3d 63 |IN(azm). y%=c| 00003190 6f 25 2d 74 2a 43 4f 53 28 61 7a 6d 29 0a 20 20 |o%-t*COS(azm). | 000031a0 45 4c 53 45 0a 20 20 20 20 78 25 3d 73 63 25 2a |ELSE. x%=sc%*| 000031b0 61 7a 6d 0a 20 20 20 20 79 25 3d 73 63 25 2a 61 |azm. y%=sc%*a| 000031c0 6c 74 0a 20 20 45 4e 44 49 46 0a 45 4e 44 50 52 |lt. ENDIF.ENDPR| 000031d0 4f 43 0a 0a 44 45 46 50 52 4f 43 63 61 6c 63 5f |OC..DEFPROCcalc_| 000031e0 6f 75 72 5f 67 61 6c 61 78 79 3a 4c 4f 43 41 4c |our_galaxy:LOCAL| 000031f0 69 25 2c 54 31 2c 20 61 6c 74 2c 20 61 7a 6d 0a |i%,T1, alt, azm.| 00003200 20 20 46 4f 52 69 25 3d 31 54 4f 38 0a 20 20 20 | FORi%=1TO8. | 00003210 20 50 52 4f 43 70 6c 61 6e 65 74 28 69 25 2c 61 | PROCplanet(i%,a| 00003220 6c 74 2c 61 7a 6d 29 0a 20 20 20 20 50 52 4f 43 |lt,azm). PROC| 00003230 74 72 61 6e 73 76 69 65 77 28 61 6c 74 2c 61 7a |transview(alt,az| 00003240 6d 2c 58 70 25 28 69 25 29 2c 59 70 25 28 69 25 |m,Xp%(i%),Yp%(i%| 00003250 29 29 0a 20 20 4e 45 58 54 0a 20 20 50 52 4f 43 |)). NEXT. PROC| 00003260 73 75 6e 28 61 6c 74 2c 61 7a 6d 29 0a 20 20 50 |sun(alt,azm). P| 00003270 52 4f 43 74 72 61 6e 73 76 69 65 77 28 61 6c 74 |ROCtransview(alt| 00003280 2c 61 7a 6d 2c 58 73 25 2c 59 73 25 29 0a 20 20 |,azm,Xs%,Ys%). | 00003290 50 52 4f 43 6d 6f 6f 6e 28 61 6c 74 2c 61 7a 6d |PROCmoon(alt,azm| 000032a0 29 0a 20 20 50 52 4f 43 74 72 61 6e 73 76 69 65 |). PROCtransvie| 000032b0 77 28 61 6c 74 2c 61 7a 6d 2c 58 6d 25 2c 59 6d |w(alt,azm,Xm%,Ym| 000032c0 25 29 0a 45 4e 44 50 52 4f 43 0a 0a 0a 52 45 4d |%).ENDPROC...REM| 000032d0 20 2f 20 4f 62 6a 65 63 74 20 64 65 73 63 72 69 | / Object descri| 000032e0 70 74 69 6f 6e 73 20 2f 0a 0a 44 45 46 50 52 4f |ptions /..DEFPRO| 000032f0 43 75 6e 71 75 65 28 58 25 2c 59 25 29 0a 4c 4f |Cunque(X%,Y%).LO| 00003300 43 41 4c 66 25 2c 69 25 2c 72 25 2c 6e 72 25 0a |CALf%,i%,r%,nr%.| 00003310 20 20 72 25 3d 34 30 39 36 0a 20 20 66 25 3d 30 | r%=4096. f%=0| 00003320 0a 20 20 46 4f 52 69 25 3d 31 54 4f 38 0a 20 20 |. FORi%=1TO8. | 00003330 20 20 6e 72 25 3d 28 28 58 25 2d 58 70 25 28 69 | nr%=((X%-Xp%(i| 00003340 25 29 29 5e 32 20 2b 28 59 25 2d 59 70 25 28 69 |%))^2 +(Y%-Yp%(i| 00003350 25 29 29 5e 32 29 0a 20 20 20 20 49 46 20 6e 72 |%))^2). IF nr| 00003360 25 3c 72 25 20 54 48 45 4e 20 66 25 3d 69 25 3a |%<r% THEN f%=i%:| 00003370 72 25 3d 6e 72 25 0a 20 20 4e 45 58 54 0a 20 20 |r%=nr%. NEXT. | 00003380 49 46 66 25 20 54 48 45 4e 0a 20 20 20 20 50 52 |IFf% THEN. PR| 00003390 4f 43 69 6e 66 6f 62 6f 78 28 22 49 6e 66 6f 20 |OCinfobox("Info | 000033a0 6f 6e 20 50 6c 61 6e 65 74 20 22 2b 50 6c 61 6e |on Planet "+Plan| 000033b0 65 74 24 28 66 25 29 2c 46 4e 70 6c 61 6e 65 74 |et$(f%),FNplanet| 000033c0 5f 64 61 74 61 28 66 25 29 29 0a 20 20 45 4c 53 |_data(f%)). ELS| 000033d0 45 0a 20 20 20 20 69 25 3d 30 0a 20 20 20 20 66 |E. i%=0. f| 000033e0 25 3d 30 0a 20 20 20 20 52 45 50 45 41 54 0a 20 |%=0. REPEAT. | 000033f0 20 20 20 20 20 69 25 2b 3d 31 0a 20 20 20 20 20 | i%+=1. | 00003400 20 6e 72 25 3d 28 28 58 25 2d 58 25 28 69 25 29 | nr%=((X%-X%(i%)| 00003410 29 5e 32 20 2b 28 59 25 2d 59 25 28 69 25 29 29 |)^2 +(Y%-Y%(i%))| 00003420 5e 32 29 0a 20 20 20 20 20 20 49 46 20 6e 72 25 |^2). IF nr%| 00003430 3c 72 25 20 54 48 45 4e 20 66 25 3d 69 25 3a 72 |<r% THEN f%=i%:r| 00003440 25 3d 6e 72 25 0a 20 20 20 20 55 4e 54 49 4c 72 |%=nr%. UNTILr| 00003450 25 3c 31 36 20 4f 52 69 25 3d 73 64 73 25 0a 20 |%<16 ORi%=sds%. | 00003460 20 20 20 49 46 66 25 20 54 48 45 4e 0a 20 20 20 | IFf% THEN. | 00003470 20 20 20 4c 4f 43 41 4c 20 61 6c 74 2c 20 61 7a | LOCAL alt, az| 00003480 6d 2c 20 64 61 74 24 0a 20 20 20 20 20 20 50 52 |m, dat$. PR| 00003490 4f 43 63 61 6c 63 5f 70 6f 73 28 52 61 68 28 66 |OCcalc_pos(Rah(f| 000034a0 25 29 2c 44 65 63 28 66 25 29 2c 61 6c 74 2c 61 |%),Dec(f%),alt,a| 000034b0 7a 6d 29 0a 20 20 20 20 20 20 64 61 74 24 3d 46 |zm). dat$=F| 000034c0 4e 70 6f 73 5f 73 74 72 69 6e 67 28 61 6c 74 2c |Npos_string(alt,| 000034d0 61 7a 6d 29 0a 20 20 20 20 20 20 40 25 3d 26 31 |azm). @%=&1| 000034e0 30 32 30 32 30 38 0a 20 20 20 20 20 20 64 61 74 |020208. dat| 000034f0 24 2b 3d 22 20 4d 61 67 6e 69 74 75 64 65 3d 22 |$+=" Magnitude="| 00003500 2b 53 54 52 24 28 4d 61 67 28 66 25 29 29 2b 22 |+STR$(Mag(f%))+"| 00003510 28 76 61 72 3f 29 28 64 6f 75 62 6c 65 3f 29 20 |(var?)(double?) | 00003520 22 2b 46 4e 6f 72 62 69 74 5f 64 61 74 61 28 66 |"+FNorbit_data(f| 00003530 25 29 0a 20 20 20 20 20 20 40 25 3d 31 30 0a 20 |%). @%=10. | 00003540 20 20 20 20 20 50 52 4f 43 69 6e 66 6f 62 6f 78 | PROCinfobox| 00003550 28 22 49 6e 66 6f 20 6f 6e 20 22 2b 46 4e 6e 61 |("Info on "+FNna| 00003560 6d 65 28 67 72 6f 75 70 25 28 66 25 29 29 2b 22 |me(group%(f%))+"| 00003570 20 22 2b 46 4e 63 6f 6e 73 74 6e 61 6d 65 28 66 | "+FNconstname(f| 00003580 25 29 2b 46 4e 73 74 61 72 6e 61 6d 65 28 66 25 |%)+FNstarname(f%| 00003590 29 2c 64 61 74 24 29 0a 20 20 20 20 45 4e 44 49 |),dat$). ENDI| 000035a0 46 0a 20 20 45 4e 44 49 46 0a 45 4e 44 50 52 4f |F. ENDIF.ENDPRO| 000035b0 43 0a 0a 0a 44 45 46 46 4e 70 6c 61 6e 65 74 5f |C...DEFFNplanet_| 000035c0 64 61 74 61 28 70 25 29 0a 20 20 4c 4f 43 41 4c |data(p%). LOCAL| 000035d0 20 61 6c 74 2c 61 7a 6d 2c 53 24 0a 20 20 61 6c | alt,azm,S$. al| 000035e0 74 3d 30 3a 61 7a 6d 3d 30 0a 20 20 50 52 4f 43 |t=0:azm=0. PROC| 000035f0 70 6c 61 6e 65 74 28 70 25 2c 61 6c 74 2c 61 7a |planet(p%,alt,az| 00003600 6d 29 0a 20 20 53 24 3d 46 4e 70 6f 73 5f 73 74 |m). S$=FNpos_st| 00003610 72 69 6e 67 28 61 6c 74 2c 61 7a 6d 29 0a 3d 53 |ring(alt,azm).=S| 00003620 24 0a 0a 44 45 46 46 4e 70 6f 73 5f 73 74 72 69 |$..DEFFNpos_stri| 00003630 6e 67 28 61 6c 74 2c 61 7a 6d 29 0a 4c 4f 43 41 |ng(alt,azm).LOCA| 00003640 4c 64 24 0a 20 20 49 46 61 7a 6d 3e 50 49 20 54 |Ld$. IFazm>PI T| 00003650 48 45 4e 0a 20 20 20 20 64 24 3d 22 57 22 0a 20 |HEN. d$="W". | 00003660 20 20 20 61 7a 6d 3d 32 2a 50 49 2d 61 7a 6d 0a | azm=2*PI-azm.| 00003670 20 20 45 4c 53 45 0a 20 20 20 20 64 24 3d 22 45 | ELSE. d$="E| 00003680 22 0a 20 20 45 4e 44 49 46 0a 3d 22 20 20 41 7a |". ENDIF.=" Az| 00003690 69 6d 75 74 68 3d 22 2b 46 4e 64 61 6e 67 28 61 |imuth="+FNdang(a| 000036a0 7a 6d 29 2b 64 24 2b 22 20 20 41 6c 74 3d 22 2b |zm)+d$+" Alt="+| 000036b0 46 4e 64 61 6e 67 28 61 6c 74 29 0a 0a 44 45 46 |FNdang(alt)..DEF| 000036c0 46 4e 64 61 6e 67 28 61 29 0a 20 20 4c 4f 43 41 |FNdang(a). LOCA| 000036d0 4c 61 25 0a 20 20 61 3d 44 45 47 28 61 29 0a 20 |La%. a=DEG(a). | 000036e0 20 61 25 3d 61 0a 20 20 40 25 3d 31 30 0a 3d 53 | a%=a. @%=10.=S| 000036f0 54 52 24 28 61 25 29 2b 22 b0 22 2b 53 54 52 24 |TR$(a%)+"."+STR$| 00003700 28 49 4e 54 28 36 30 2a 28 61 2d 61 25 29 29 29 |(INT(60*(a-a%)))| 00003710 2b 22 27 22 0a 0a 44 45 46 46 4e 6e 61 6d 65 28 |+"'"..DEFFNname(| 00003720 70 25 29 0a 20 20 49 46 70 25 3c 3d 33 32 20 54 |p%). IFp%<=32 T| 00003730 48 45 4e 3d 43 45 4e 24 28 70 25 29 0a 4c 4f 43 |HEN=CEN$(p%).LOC| 00003740 41 4c 74 24 0a 20 20 74 24 3d 24 70 25 0a 20 20 |ALt$. t$=$p%. | 00003750 49 46 4c 45 46 54 24 28 74 24 29 3d 22 27 22 20 |IFLEFT$(t$)="'" | 00003760 54 48 45 4e 3d 4d 49 44 24 28 74 24 2c 32 2c 31 |THEN=MID$(t$,2,1| 00003770 29 0a 3d 74 24 0a 0a 44 45 46 46 4e 6f 72 62 69 |).=t$..DEFFNorbi| 00003780 74 5f 64 61 74 61 28 73 25 29 0a 4c 4f 43 41 4c |t_data(s%).LOCAL| 00003790 63 2c 74 74 2c 74 72 2c 68 61 68 2c 73 74 2c 64 |c,tt,tr,hah,st,d| 000037a0 24 0a 20 20 63 3d 50 49 2f 32 2d 41 42 53 28 56 |$. c=PI/2-ABS(V| 000037b0 69 65 77 65 72 5f 4c 61 74 2d 44 65 63 28 73 25 |iewer_Lat-Dec(s%| 000037c0 29 29 0a 20 20 73 74 3d 68 6f 75 72 2b 6d 69 6e |)). st=hour+min| 000037d0 2f 36 30 2d 73 74 61 72 64 61 74 65 2b 52 61 68 |/60-stardate+Rah| 000037e0 28 73 25 29 0a 20 20 64 24 3d 22 43 75 6c 6d 69 |(s%). d$="Culmi| 000037f0 6e 61 74 65 73 20 22 2b 46 4e 64 65 63 5f 74 69 |nates "+FNdec_ti| 00003800 6d 65 28 73 74 29 2b 22 20 61 74 20 22 2b 46 4e |me(st)+" at "+FN| 00003810 64 61 6e 67 28 63 29 0a 20 20 49 46 63 3c 30 20 |dang(c). IFc<0 | 00003820 54 48 45 4e 0a 20 20 20 20 64 24 2b 3d 22 20 2d |THEN. d$+=" -| 00003830 4e 65 76 65 72 20 72 69 73 65 73 2d 20 22 0a 20 |Never rises- ". | 00003840 20 45 4c 53 45 0a 20 20 20 20 74 74 3d 2d 54 41 | ELSE. tt=-TA| 00003850 4e 28 44 65 63 28 73 25 29 29 2a 56 6c 73 2f 56 |N(Dec(s%))*Vls/V| 00003860 6c 63 0a 20 20 20 20 49 46 41 42 53 28 74 74 29 |lc. IFABS(tt)| 00003870 3e 3d 31 20 54 48 45 4e 0a 20 20 20 20 20 20 64 |>=1 THEN. d| 00003880 24 2b 3d 22 20 2d 4e 65 76 65 72 20 73 65 74 73 |$+=" -Never sets| 00003890 2d 20 22 0a 20 20 20 20 45 4c 53 45 0a 20 20 20 |- ". ELSE. | 000038a0 20 20 20 68 61 68 3d 31 32 2a 41 43 53 28 74 74 | hah=12*ACS(tt| 000038b0 29 2f 50 49 0a 20 20 20 20 20 20 64 24 2b 3d 22 |)/PI. d$+="| 000038c0 20 20 52 69 73 65 73 20 22 2b 46 4e 64 65 63 5f | Rises "+FNdec_| 000038d0 74 69 6d 65 28 73 74 2d 68 61 68 29 2b 22 2c 20 |time(st-hah)+", | 000038e0 53 65 74 73 20 22 2b 46 4e 64 65 63 5f 74 69 6d |Sets "+FNdec_tim| 000038f0 65 28 73 74 2b 68 61 68 29 0a 20 20 20 20 45 4e |e(st+hah). EN| 00003900 44 49 46 0a 20 20 45 4e 44 49 46 0a 3d 64 24 0a |DIF. ENDIF.=d$.| 00003910 0a 44 45 46 46 4e 73 74 61 72 6e 61 6d 65 28 6e |.DEFFNstarname(n| 00003920 25 29 0a 4c 4f 43 41 4c 69 25 0a 20 20 69 25 3d |%).LOCALi%. i%=| 00003930 30 0a 20 20 52 45 50 45 41 54 0a 20 20 20 20 69 |0. REPEAT. i| 00003940 25 2b 3d 31 0a 20 20 55 4e 54 49 4c 69 25 3d 4e |%+=1. UNTILi%=N| 00003950 61 6d 65 64 5f 73 74 61 72 73 25 20 4f 52 20 73 |amed_stars% OR s| 00003960 74 61 72 25 28 69 25 29 3d 6e 25 0a 20 20 49 46 |tar%(i%)=n%. IF| 00003970 73 74 61 72 25 28 69 25 29 3d 6e 25 20 54 48 45 |star%(i%)=n% THE| 00003980 4e 3d 22 20 2d 20 22 2b 53 74 61 72 24 28 69 25 |N=" - "+Star$(i%| 00003990 29 0a 3d 22 22 0a 0a 44 45 46 46 4e 63 6f 6e 73 |).=""..DEFFNcons| 000039a0 74 6e 61 6d 65 28 6e 25 29 0a 4c 4f 43 41 4c 69 |tname(n%).LOCALi| 000039b0 25 0a 20 20 69 25 3d 30 0a 20 20 52 45 50 45 41 |%. i%=0. REPEA| 000039c0 54 0a 20 20 20 20 69 25 2b 3d 31 0a 20 20 55 4e |T. i%+=1. UN| 000039d0 54 49 4c 63 6f 6e 73 74 25 28 69 25 29 3e 3d 6e |TILconst%(i%)>=n| 000039e0 25 20 4f 52 69 25 3d 6e 75 6d 5f 63 6f 6e 73 74 |% ORi%=num_const| 000039f0 0a 3d 43 4e 24 28 69 25 2b 28 69 25 3c 6e 75 6d |.=CN$(i%+(i%<num| 00003a00 5f 63 6f 6e 73 74 29 29 0a 0a 0a 52 45 4d 20 2f |_const))...REM /| 00003a10 20 49 6e 69 74 69 61 6c 69 73 61 74 69 6f 6e 20 | Initialisation | 00003a20 52 6f 75 74 69 6e 65 73 20 2f 0a 0a 0a 44 45 46 |Routines /...DEF| 00003a30 50 52 4f 43 6d 69 73 63 5f 73 65 74 75 70 0a 4c |PROCmisc_setup.L| 00003a40 4f 43 41 4c 69 25 2c 61 0a 20 20 52 41 48 45 3d |OCALi%,a. RAHE=| 00003a50 31 32 2f 50 49 3a 53 49 44 45 3d 50 49 2f 31 32 |12/PI:SIDE=PI/12| 00003a60 0a 20 20 44 49 4d 44 25 28 31 32 29 2c 4d 24 28 |. DIMD%(12),M$(| 00003a70 31 32 29 0a 20 20 46 4f 52 20 49 25 3d 31 20 54 |12). FOR I%=1 T| 00003a80 4f 20 31 32 0a 20 20 20 20 52 45 41 44 4d 24 28 |O 12. READM$(| 00003a90 49 25 29 2c 54 25 0a 20 20 20 20 44 25 28 49 25 |I%),T%. D%(I%| 00003aa0 29 3d 54 25 2b 32 38 0a 20 20 4e 45 58 54 0a 20 |)=T%+28. NEXT. | 00003ab0 20 44 41 54 41 4a 61 6e 2c 33 2c 46 65 62 2c 31 | DATAJan,3,Feb,1| 00003ac0 2c 4d 61 72 2c 33 2c 41 70 72 2c 32 2c 4d 61 79 |,Mar,3,Apr,2,May| 00003ad0 2c 33 2c 4a 75 6e 2c 32 2c 4a 75 6c 2c 33 2c 41 |,3,Jun,2,Jul,3,A| 00003ae0 75 67 2c 33 2c 53 65 70 2c 32 2c 4f 63 74 2c 33 |ug,3,Sep,2,Oct,3| 00003af0 2c 4e 6f 76 2c 33 2c 44 65 63 2c 33 0a 20 20 6d |,Nov,3,Dec,3. m| 00003b00 6f 6e 24 3d 22 20 20 4a 61 6e 46 65 62 4d 61 72 |on$=" JanFebMar| 00003b10 41 70 72 4d 61 79 4a 75 6e 4a 75 6c 41 75 67 53 |AprMayJunJulAugS| 00003b20 65 70 4f 63 74 4e 6f 76 44 65 63 22 0a 20 20 44 |epOctNovDec". D| 00003b30 49 4d 20 43 50 24 28 38 29 0a 20 20 52 45 53 54 |IM CP$(8). REST| 00003b40 4f 52 45 2b 30 0a 20 20 44 41 54 41 20 22 4e 22 |ORE+0. DATA "N"| 00003b50 2c 20 22 4e 45 22 2c 20 22 45 22 2c 20 22 53 45 |, "NE", "E", "SE| 00003b60 22 2c 20 22 53 22 2c 20 22 53 57 22 2c 20 22 57 |", "S", "SW", "W| 00003b70 22 2c 20 22 4e 57 22 0a 20 20 46 4f 52 69 25 3d |", "NW". FORi%=| 00003b80 30 20 54 4f 37 0a 20 20 20 20 52 45 41 44 20 43 |0 TO7. READ C| 00003b90 50 24 28 69 25 29 0a 20 20 4e 45 58 54 0a 20 20 |P$(i%). NEXT. | 00003ba0 44 49 4d 73 6d 25 28 38 29 2c 6f 25 28 38 29 0a |DIMsm%(8),o%(8).| 00003bb0 20 20 52 45 53 54 4f 52 45 2b 30 0a 20 20 44 41 | RESTORE+0. DA| 00003bc0 54 41 38 2c 36 2c 36 2c 34 2c 34 2c 34 2c 32 2c |TA8,6,6,4,4,4,2,| 00003bd0 30 2c 30 0a 20 20 46 4f 52 69 25 3d 30 54 4f 38 |0,0. FORi%=0TO8| 00003be0 0a 20 20 20 20 52 45 41 44 6f 25 28 69 25 29 0a |. READo%(i%).| 00003bf0 20 20 20 20 53 59 53 20 26 32 65 2c 26 31 31 38 | SYS &2e,&118| 00003c00 2c 73 70 72 69 74 65 73 25 2c 22 6d 61 67 22 2b |,sprites%,"mag"+| 00003c10 53 54 52 24 28 69 25 2d 32 29 20 54 4f 2c 2c 73 |STR$(i%-2) TO,,s| 00003c20 6d 25 28 69 25 29 0a 20 20 4e 45 58 54 0a 20 20 |m%(i%). NEXT. | 00003c30 44 49 4d 63 78 28 32 34 29 2c 63 79 28 32 34 29 |DIMcx(24),cy(24)| 00003c40 0a 20 20 20 46 4f 52 69 25 3d 30 20 54 4f 20 32 |. FORi%=0 TO 2| 00003c50 34 0a 20 20 20 20 20 61 3d 52 41 44 28 69 25 2a |4. a=RAD(i%*| 00003c60 31 35 29 0a 20 20 20 20 20 63 78 28 69 25 29 3d |15). cx(i%)=| 00003c70 53 49 4e 28 61 29 0a 20 20 20 20 20 63 79 28 69 |SIN(a). cy(i| 00003c80 25 29 3d 43 4f 53 28 61 29 0a 20 20 20 4e 45 58 |%)=COS(a). NEX| 00003c90 54 0a 45 4e 44 50 52 4f 43 0a 0a 44 45 46 50 52 |T.ENDPROC..DEFPR| 00003ca0 4f 43 67 65 74 5f 70 6c 61 6e 65 74 73 0a 4c 4f |OCget_planets.LO| 00003cb0 43 41 4c 20 50 2c 20 69 25 0a 20 20 44 49 4d 20 |CAL P, i%. DIM | 00003cc0 50 64 61 74 28 38 2c 31 30 29 2c 20 50 6c 61 6e |Pdat(8,10), Plan| 00003cd0 65 74 24 28 38 29 0a 20 20 52 45 53 54 4f 52 45 |et$(8). RESTORE| 00003ce0 2b 30 0a 20 20 44 41 54 41 20 22 45 61 72 74 68 |+0. DATA "Earth| 00003cf0 22 20 20 2c 20 31 20 20 20 20 20 20 20 2c 20 30 |" , 1 , 0| 00003d00 2e 30 31 36 36 36 34 2c 20 30 2e 30 30 33 36 36 |.016664, 0.00366| 00003d10 2c 20 20 35 33 2e 31 39 31 39 20 2c 32 38 37 2e |, 53.1919 ,287.| 00003d20 36 37 36 37 32 2c 20 31 37 34 2e 34 38 31 37 34 |67672, 174.48174| 00003d30 0a 20 20 44 41 54 41 20 22 4d 65 72 63 75 72 79 |. DATA "Mercury| 00003d40 22 2c 20 30 2e 33 38 37 30 39 38 2c 20 30 2e 32 |", 0.387098, 0.2| 00003d50 30 35 36 33 38 2c 20 37 2e 30 30 32 31 39 2c 20 |05638, 7.00219, | 00003d60 32 32 36 2e 33 30 37 37 37 2c 20 32 39 2e 30 31 |226.30777, 29.01| 00003d70 37 34 37 2c 20 34 37 2e 37 30 34 34 37 0a 20 20 |747, 47.70447. | 00003d80 44 41 54 41 20 22 56 65 6e 75 73 22 20 20 2c 20 |DATA "Venus" , | 00003d90 30 2e 37 32 33 33 33 32 2c 20 30 2e 30 30 36 38 |0.723332, 0.0068| 00003da0 31 37 2c 20 33 2e 33 39 33 38 39 2c 20 20 20 31 |17, 3.39389, 1| 00003db0 2e 34 35 31 38 20 2c 20 35 34 2e 36 39 38 36 33 |.4518 , 54.69863| 00003dc0 2c 20 37 36 2e 31 35 32 36 33 0a 20 20 44 41 54 |, 76.15263. DAT| 00003dd0 41 20 22 4d 61 72 73 22 20 20 20 2c 20 31 2e 35 |A "Mars" , 1.5| 00003de0 32 33 36 37 33 2c 20 30 2e 30 39 33 32 37 20 2c |23673, 0.09327 ,| 00003df0 20 31 2e 38 34 37 37 38 2c 20 33 32 36 2e 37 32 | 1.84778, 326.72| 00003e00 32 39 36 2c 32 38 36 2e 31 33 34 36 31 2c 20 34 |296,286.13461, 4| 00003e10 39 2e 30 39 36 32 0a 20 20 44 41 54 41 20 22 4a |9.0962. DATA "J| 00003e20 75 70 69 74 65 72 22 2c 20 35 2e 32 30 31 36 37 |upiter", 5.20167| 00003e30 20 2c 20 30 2e 30 34 37 39 39 20 2c 20 31 2e 33 | , 0.04799 , 1.3| 00003e40 30 36 35 20 2c 20 20 34 36 2e 38 32 39 34 20 2c |065 , 46.8294 ,| 00003e50 32 37 33 2e 36 31 39 31 20 2c 20 39 39 2e 39 38 |273.6191 , 99.98| 00003e60 30 36 0a 20 20 44 41 54 41 20 22 53 61 74 75 72 |06. DATA "Satur| 00003e70 6e 22 20 2c 20 39 2e 35 37 31 35 37 20 2c 20 30 |n" , 9.57157 , 0| 00003e80 2e 30 35 37 36 32 20 2c 20 32 2e 34 38 38 37 20 |.05762 , 2.4887 | 00003e90 2c 20 20 33 36 2e 38 36 30 32 20 2c 33 33 39 2e |, 36.8602 ,339.| 00003ea0 37 32 32 32 20 2c 20 31 31 33 2e 31 37 30 39 0a |7222 , 113.1709.| 00003eb0 20 20 44 41 54 41 20 22 55 72 61 6e 75 73 22 20 | DATA "Uranus" | 00003ec0 2c 31 39 2e 31 33 39 30 32 20 2c 20 30 2e 30 34 |,19.13902 , 0.04| 00003ed0 36 33 33 20 2c 20 30 2e 37 37 31 31 20 2c 20 20 |633 , 0.7711 , | 00003ee0 34 37 2e 34 33 33 20 20 2c 20 39 33 2e 32 33 33 |47.433 , 93.233| 00003ef0 32 20 2c 20 37 33 2e 38 35 39 35 0a 20 20 44 41 |2 , 73.8595. DA| 00003f00 54 41 20 22 4e 65 70 74 75 6e 65 22 2c 32 39 2e |TA "Neptune",29.| 00003f10 39 33 35 30 33 20 2c 20 30 2e 30 31 32 37 37 20 |93503 , 0.01277 | 00003f20 2c 20 31 2e 37 37 33 39 20 2c 20 32 30 34 2e 33 |, 1.7739 , 204.3| 00003f30 32 39 32 20 2c 32 37 38 2e 36 37 33 35 20 2c 20 |292 ,278.6735 , | 00003f40 31 33 31 2e 32 37 35 35 0a 20 20 44 41 54 41 20 |131.2755. DATA | 00003f50 22 50 6c 75 74 6f 22 20 20 2c 33 39 2e 33 36 37 |"Pluto" ,39.367| 00003f60 35 33 20 2c 20 30 2e 32 34 36 32 39 20 2c 31 37 |53 , 0.24629 ,17| 00003f70 2e 31 33 38 39 20 2c 20 33 34 31 2e 37 32 32 20 |.1389 , 341.722 | 00003f80 20 2c 31 31 33 2e 36 31 32 32 20 2c 20 31 30 39 | ,113.6122 , 109| 00003f90 2e 35 32 33 33 0a 20 20 46 4f 52 69 25 3d 30 54 |.5233. FORi%=0T| 00003fa0 4f 38 0a 20 20 20 20 52 45 41 44 50 6c 61 6e 65 |O8. READPlane| 00003fb0 74 24 28 69 25 29 0a 20 20 20 20 52 45 41 44 20 |t$(i%). READ | 00003fc0 50 3a 52 45 4d 20 50 61 72 61 6d 20 31 0a 20 20 |P:REM Param 1. | 00003fd0 20 20 50 64 61 74 28 69 25 2c 20 30 29 3d 30 2e | Pdat(i%, 0)=0.| 00003fe0 30 31 37 32 30 32 34 20 2f 20 53 51 52 28 50 5e |0172024 / SQR(P^| 00003ff0 33 29 0a 20 20 20 20 50 64 61 74 28 69 25 2c 20 |3). Pdat(i%, | 00004000 31 29 3d 50 0a 20 20 20 20 52 45 41 44 20 50 3a |1)=P. READ P:| 00004010 52 45 4d 20 50 61 72 61 6d 20 32 0a 20 20 20 20 |REM Param 2. | 00004020 50 64 61 74 28 69 25 2c 20 32 29 3d 50 0a 20 20 |Pdat(i%, 2)=P. | 00004030 20 20 50 64 61 74 28 69 25 2c 20 33 29 3d 50 64 | Pdat(i%, 3)=Pd| 00004040 61 74 28 69 25 2c 31 29 2a 53 51 52 28 31 2d 50 |at(i%,1)*SQR(1-P| 00004050 2a 50 29 0a 20 20 20 20 52 45 41 44 20 50 3a 52 |*P). READ P:R| 00004060 45 4d 20 50 61 72 61 6d 20 33 0a 20 20 20 20 50 |EM Param 3. P| 00004070 64 61 74 28 69 25 2c 20 34 29 3d 43 4f 53 52 41 |dat(i%, 4)=COSRA| 00004080 44 28 50 29 0a 20 20 20 20 50 64 61 74 28 69 25 |D(P). Pdat(i%| 00004090 2c 20 35 29 3d 53 49 4e 52 41 44 28 50 29 0a 20 |, 5)=SINRAD(P). | 000040a0 20 20 20 52 45 41 44 20 50 3a 52 45 4d 20 50 61 | READ P:REM Pa| 000040b0 72 61 6d 20 34 0a 20 20 20 20 50 64 61 74 28 69 |ram 4. Pdat(i| 000040c0 25 2c 20 36 29 3d 52 41 44 28 50 29 0a 20 20 20 |%, 6)=RAD(P). | 000040d0 20 52 45 41 44 20 50 3a 52 45 4d 20 50 61 72 61 | READ P:REM Para| 000040e0 6d 20 35 0a 20 20 20 20 50 64 61 74 28 69 25 2c |m 5. Pdat(i%,| 000040f0 20 37 29 3d 43 4f 53 52 41 44 28 50 29 0a 20 20 | 7)=COSRAD(P). | 00004100 20 20 50 64 61 74 28 69 25 2c 20 38 29 3d 53 49 | Pdat(i%, 8)=SI| 00004110 4e 52 41 44 28 50 29 0a 20 20 20 20 52 45 41 44 |NRAD(P). READ| 00004120 20 50 3a 52 45 4d 20 50 61 72 61 6d 20 36 0a 20 | P:REM Param 6. | 00004130 20 20 20 50 64 61 74 28 69 25 2c 20 39 29 3d 43 | Pdat(i%, 9)=C| 00004140 4f 53 52 41 44 28 50 29 0a 20 20 20 20 50 64 61 |OSRAD(P). Pda| 00004150 74 28 69 25 2c 31 30 29 3d 53 49 4e 52 41 44 28 |t(i%,10)=SINRAD(| 00004160 50 29 0a 20 20 4e 45 58 54 0a 20 20 45 61 72 74 |P). NEXT. Eart| 00004170 68 5f 58 3d 30 0a 20 20 45 61 72 74 68 5f 59 3d |h_X=0. Earth_Y=| 00004180 30 0a 20 20 45 61 72 74 68 5f 5a 3d 30 0a 45 4e |0. Earth_Z=0.EN| 00004190 44 50 52 4f 43 0a 0a 0a 44 45 46 50 52 4f 43 72 |DPROC...DEFPROCr| 000041a0 65 61 64 5f 63 6f 6e 73 74 5f 70 61 72 74 73 0a |ead_const_parts.| 000041b0 4c 4f 43 41 4c 69 25 0a 20 20 44 49 4d 20 43 45 |LOCALi%. DIM CE| 000041c0 4e 24 28 32 34 29 0a 20 20 52 45 53 54 4f 52 45 |N$(24). RESTORE| 000041d0 2b 30 0a 20 20 44 41 54 41 20 4f 62 6a 65 63 74 |+0. DATA Object| 000041e0 20 69 6e 2c 41 6c 70 68 61 2c 42 65 74 61 2c 47 | in,Alpha,Beta,G| 000041f0 61 6d 6d 61 2c 44 65 6c 74 61 2c 45 70 73 69 6c |amma,Delta,Epsil| 00004200 6f 6e 2c 5a 65 74 61 2c 45 74 61 2c 54 68 65 74 |on,Zeta,Eta,Thet| 00004210 61 2c 49 6f 74 61 2c 4b 61 70 70 61 0a 20 20 44 |a,Iota,Kappa. D| 00004220 41 54 41 20 4c 61 6d 62 64 61 2c 4d 75 2c 4e 75 |ATA Lambda,Mu,Nu| 00004230 2c 58 69 2c 4f 6d 69 63 72 6f 6e 2c 50 69 2c 52 |,Xi,Omicron,Pi,R| 00004240 68 6f 2c 53 69 67 6d 61 2c 54 61 75 2c 55 70 73 |ho,Sigma,Tau,Ups| 00004250 69 6c 6f 6e 2c 50 68 69 2c 43 68 69 0a 20 20 44 |ilon,Phi,Chi. D| 00004260 41 54 41 20 50 73 69 2c 4f 6d 65 67 61 0a 20 20 |ATA Psi,Omega. | 00004270 44 41 54 41 20 22 61 62 67 64 65 7a 68 30 69 6b |DATA "abgdezh0ik| 00004280 6c 6d 6e 78 6f 70 72 73 74 76 71 66 63 77 22 0a |lmnxoprstvqfcw".| 00004290 20 20 46 4f 52 69 25 3d 30 54 4f 32 34 0a 20 20 | FORi%=0TO24. | 000042a0 20 20 52 45 41 44 43 45 4e 24 28 69 25 29 0a 20 | READCEN$(i%). | 000042b0 20 4e 45 58 54 0a 20 20 52 45 41 44 20 43 6c 6f | NEXT. READ Clo| 000042c0 6f 6b 75 70 24 0a 45 4e 44 50 52 4f 43 0a 0a 44 |okup$.ENDPROC..D| 000042d0 45 46 50 52 4f 43 67 65 74 5f 73 74 61 72 73 0a |EFPROCget_stars.| 000042e0 52 45 4d 20 56 65 72 73 69 6f 6e 20 35 2e 32 20 |REM Version 5.2 | 000042f0 2d 20 6f 70 74 69 6d 69 73 65 64 20 66 6f 72 20 |- optimised for | 00004300 6c 6f 61 64 69 6e 67 20 73 70 65 65 64 0a 4c 4f |loading speed.LO| 00004310 43 41 4c 44 2c 66 25 2c 73 25 2c 69 25 2c 6c 25 |CALD,f%,s%,i%,l%| 00004320 2c 70 25 2c 61 25 2c 62 25 2c 63 6e 25 2c 74 24 |,p%,a%,b%,cn%,t$| 00004330 0a 20 20 50 52 4f 43 68 6f 75 72 67 6c 61 73 73 |. PROChourglass| 00004340 5f 6f 6e 0a 20 20 66 25 3d 4f 50 45 4e 49 4e 28 |_on. f%=OPENIN(| 00004350 22 3c 53 74 61 72 24 44 69 72 3e 2e 53 74 61 72 |"<Star$Dir>.Star| 00004360 5f 6d 61 70 22 29 0a 20 20 49 46 66 25 3d 30 20 |_map"). IFf%=0 | 00004370 50 52 4f 43 62 61 64 66 69 6c 65 28 22 53 74 61 |PROCbadfile("Sta| 00004380 72 5f 4d 61 70 20 6e 6f 74 20 46 6f 75 6e 64 22 |r_Map not Found"| 00004390 29 0a 20 20 63 6f 70 79 72 69 67 68 74 24 3d 46 |). copyright$=F| 000043a0 4e 72 65 61 64 73 74 72 28 66 25 29 0a 20 20 74 |Nreadstr(f%). t| 000043b0 24 3d 46 4e 72 65 61 64 73 74 72 28 66 25 29 0a |$=FNreadstr(f%).| 000043c0 20 20 49 46 20 46 4e 6c 65 66 74 70 61 72 28 74 | IF FNleftpar(t| 000043d0 24 2c 22 3d 22 29 3c 3e 22 55 70 64 61 74 65 22 |$,"=")<>"Update"| 000043e0 20 50 52 4f 43 62 61 64 66 69 6c 65 28 22 4e 6f | PROCbadfile("No| 000043f0 20 75 70 64 61 74 65 22 29 0a 20 20 75 70 64 61 | update"). upda| 00004400 74 65 24 3d 46 4e 72 69 67 68 74 70 61 72 28 74 |te$=FNrightpar(t| 00004410 24 2c 22 3d 22 29 0a 20 20 6e 75 6d 5f 63 6f 6e |$,"="). num_con| 00004420 73 74 3d 38 38 0a 20 20 44 49 4d 20 43 4e 24 28 |st=88. DIM CN$(| 00004430 38 38 29 2c 63 6f 6e 73 74 25 28 38 38 29 2c 53 |88),const%(88),S| 00004440 74 61 72 24 28 34 30 34 29 2c 73 74 61 72 25 28 |tar$(404),star%(| 00004450 34 30 34 29 2c 6c 73 25 28 31 30 30 30 29 2c 6c |404),ls%(1000),l| 00004460 66 25 28 31 30 30 30 29 0a 20 20 73 64 73 25 3d |f%(1000). sds%=| 00004470 56 41 4c 28 46 4e 72 69 67 68 74 70 61 72 28 46 |VAL(FNrightpar(F| 00004480 4e 72 65 61 64 73 74 72 28 66 25 29 2c 22 3d 22 |Nreadstr(f%),"="| 00004490 29 29 0a 20 20 73 74 72 5f 6c 65 6e 25 3d 32 30 |)). str_len%=20| 000044a0 30 30 0a 20 20 44 49 4d 20 52 61 68 28 73 64 73 |00. DIM Rah(sds| 000044b0 25 29 2c 20 44 65 63 28 73 64 73 25 29 2c 20 67 |%), Dec(sds%), g| 000044c0 72 6f 75 70 25 28 73 64 73 25 29 2c 20 4d 61 67 |roup%(sds%), Mag| 000044d0 28 73 64 73 25 29 2c 41 6c 74 28 73 64 73 25 29 |(sds%),Alt(sds%)| 000044e0 2c 41 7a 6d 28 73 64 73 25 29 2c 73 74 72 5f 73 |,Azm(sds%),str_s| 000044f0 70 61 63 65 25 20 73 74 72 5f 6c 65 6e 25 0a 20 |pace% str_len%. | 00004500 20 73 74 72 5f 6c 65 6e 25 2b 3d 73 74 72 5f 73 | str_len%+=str_s| 00004510 70 61 63 65 25 2d 32 0a 20 20 44 49 4d 20 58 70 |pace%-2. DIM Xp| 00004520 25 28 38 29 2c 20 59 70 25 28 38 29 2c 20 58 25 |%(8), Yp%(8), X%| 00004530 28 73 64 73 25 29 2c 20 59 25 28 73 64 73 25 29 |(sds%), Y%(sds%)| 00004540 0a 20 20 4e 61 6d 65 64 5f 73 74 61 72 73 25 3d |. Named_stars%=| 00004550 30 0a 0a 20 20 49 46 46 4e 72 65 61 64 73 74 72 |0.. IFFNreadstr| 00004560 28 66 25 29 3c 3e 22 53 74 61 72 64 61 74 61 22 |(f%)<>"Stardata"| 00004570 20 50 52 4f 43 62 61 64 66 69 6c 65 28 22 42 61 | PROCbadfile("Ba| 00004580 64 20 48 65 61 64 65 72 22 29 0a 20 20 70 25 3d |d Header"). p%=| 00004590 42 47 45 54 23 66 25 3a 52 45 4d 20 6c 66 0a 20 |BGET#f%:REM lf. | 000045a0 20 73 25 3d 30 0a 20 20 6d 61 78 5f 6c 69 6e 65 | s%=0. max_line| 000045b0 25 3d 30 0a 20 20 73 74 72 5f 70 74 72 25 3d 73 |%=0. str_ptr%=s| 000045c0 74 72 5f 73 70 61 63 65 25 0a 20 20 46 4f 52 63 |tr_space%. FORc| 000045d0 6e 25 3d 31 20 54 4f 20 38 38 0a 20 20 20 20 74 |n%=1 TO 88. t| 000045e0 24 3d 46 4e 72 65 61 64 73 74 72 28 66 25 29 0a |$=FNreadstr(f%).| 000045f0 20 20 20 20 49 46 20 56 41 4c 28 46 4e 72 69 67 | IF VAL(FNrig| 00004600 68 74 70 61 72 28 74 24 2c 22 3d 22 29 29 3c 3e |htpar(t$,"="))<>| 00004610 63 6e 25 20 50 52 4f 43 62 61 64 66 69 6c 65 28 |cn% PROCbadfile(| 00004620 22 43 6f 6e 73 74 20 5b 22 2b 74 24 2b 22 5d 20 |"Const ["+t$+"] | 00004630 6f 75 74 20 6f 66 20 73 74 65 70 2c 20 73 68 6f |out of step, sho| 00004640 75 6c 64 20 62 65 20 22 2b 53 54 52 24 28 63 6e |uld be "+STR$(cn| 00004650 25 29 29 0a 20 20 20 20 43 4e 24 28 63 6e 25 29 |%)). CN$(cn%)| 00004660 3d 46 4e 6c 65 66 74 70 61 72 28 74 24 2c 22 3d |=FNleftpar(t$,"=| 00004670 22 29 0a 20 20 20 20 63 6f 6e 73 74 25 28 63 6e |"). const%(cn| 00004680 25 29 3d 73 25 0a 0a 20 20 20 20 52 45 4d 20 67 |%)=s%.. REM g| 00004690 65 74 20 6c 69 6e 65 73 0a 20 20 20 20 70 25 3d |et lines. p%=| 000046a0 42 47 45 54 23 66 25 0a 20 20 20 20 57 48 49 4c |BGET#f%. WHIL| 000046b0 45 70 25 3c 3e 31 30 20 41 4e 44 20 70 25 3c 3e |Ep%<>10 AND p%<>| 000046c0 41 53 43 22 3b 22 0a 20 20 20 20 20 20 74 25 3d |ASC";". t%=| 000046d0 42 47 45 54 23 66 25 0a 20 20 20 20 20 20 49 46 |BGET#f%. IF| 000046e0 74 25 3d 41 53 43 22 2d 22 20 61 25 3d 28 70 25 |t%=ASC"-" a%=(p%| 000046f0 2d 34 38 29 20 45 4c 53 45 61 25 3d 28 70 25 2d |-48) ELSEa%=(p%-| 00004700 34 38 29 2a 31 30 20 2b 20 74 25 2d 34 38 3a 74 |48)*10 + t%-48:t| 00004710 25 3d 42 47 45 54 23 66 25 0a 20 20 20 20 20 20 |%=BGET#f%. | 00004720 74 25 3d 42 47 45 54 23 66 25 0a 20 20 20 20 20 |t%=BGET#f%. | 00004730 20 70 25 3d 42 47 45 54 23 66 25 0a 20 20 20 20 | p%=BGET#f%. | 00004740 20 20 49 46 70 25 3e 34 37 20 41 4e 44 70 25 3c | IFp%>47 ANDp%<| 00004750 35 38 20 62 25 3d 28 74 25 2d 34 38 29 2a 31 30 |58 b%=(t%-48)*10| 00004760 20 2b 20 70 25 2d 34 38 3a 70 25 3d 42 47 45 54 | + p%-48:p%=BGET| 00004770 23 66 25 20 45 4c 53 45 62 25 3d 28 74 25 2d 34 |#f% ELSEb%=(t%-4| 00004780 38 29 0a 20 20 20 20 20 20 6d 61 78 5f 6c 69 6e |8). max_lin| 00004790 65 25 2b 3d 31 0a 20 20 20 20 20 20 6c 73 25 28 |e%+=1. ls%(| 000047a0 6d 61 78 5f 6c 69 6e 65 25 29 3d 61 25 2b 73 25 |max_line%)=a%+s%| 000047b0 0a 20 20 20 20 20 20 6c 66 25 28 6d 61 78 5f 6c |. lf%(max_l| 000047c0 69 6e 65 25 29 3d 62 25 2b 73 25 0a 20 20 20 20 |ine%)=b%+s%. | 000047d0 20 20 49 46 70 25 3c 3e 31 30 20 41 4e 44 70 25 | IFp%<>10 ANDp%| 000047e0 3c 3e 41 53 43 22 2c 22 20 41 4e 44 70 25 3c 3e |<>ASC"," ANDp%<>| 000047f0 41 53 43 22 3b 22 20 50 52 4f 43 62 61 64 66 69 |ASC";" PROCbadfi| 00004800 6c 65 28 22 6f 76 65 72 72 75 6e 20 6f 6e 20 63 |le("overrun on c| 00004810 6f 6e 73 74 20 22 2b 53 54 52 24 28 63 6e 25 29 |onst "+STR$(cn%)| 00004820 2b 22 27 22 2b 53 54 52 24 28 6d 61 78 5f 6c 69 |+"'"+STR$(max_li| 00004830 6e 65 25 29 29 0a 20 20 20 20 20 20 49 46 70 25 |ne%)). IFp%| 00004840 3d 41 53 43 22 2c 22 20 70 25 3d 42 47 45 54 23 |=ASC"," p%=BGET#| 00004850 66 25 0a 20 20 20 20 45 4e 44 57 48 49 4c 45 0a |f%. ENDWHILE.| 00004860 20 20 20 20 57 48 49 4c 45 70 25 3c 3e 31 30 3a | WHILEp%<>10:| 00004870 70 25 3d 42 47 45 54 23 66 25 3a 45 4e 44 57 48 |p%=BGET#f%:ENDWH| 00004880 49 4c 45 3a 52 45 4d 20 73 6b 69 70 20 74 6f 20 |ILE:REM skip to | 00004890 65 6e 64 20 6f 66 20 6c 69 6e 65 0a 0a 20 20 20 |end of line.. | 000048a0 20 70 25 3d 42 47 45 54 23 66 25 0a 20 20 20 20 | p%=BGET#f%. | 000048b0 57 48 49 4c 45 70 25 3c 3e 31 30 0a 20 20 20 20 |WHILEp%<>10. | 000048c0 20 20 73 25 2b 3d 31 0a 20 20 20 20 20 20 49 46 | s%+=1. IF| 000048d0 73 25 3e 73 64 73 25 20 50 52 4f 43 62 61 64 66 |s%>sds% PROCbadf| 000048e0 69 6c 65 28 22 54 6f 6f 20 6d 61 6e 79 20 73 74 |ile("Too many st| 000048f0 61 72 73 20 22 2b 53 54 52 24 28 73 25 29 2b 22 |ars "+STR$(s%)+"| 00004900 2f 22 2b 53 54 52 24 28 73 64 73 25 29 29 0a 20 |/"+STR$(sds%)). | 00004910 20 20 20 20 20 67 72 6f 75 70 25 28 73 25 29 3d | group%(s%)=| 00004920 49 4e 53 54 52 28 43 6c 6f 6f 6b 75 70 24 2c 43 |INSTR(Clookup$,C| 00004930 48 52 24 28 70 25 29 29 0a 20 20 20 20 20 20 49 |HR$(p%)). I| 00004940 46 67 72 6f 75 70 25 28 73 25 29 3d 30 20 54 48 |Fgroup%(s%)=0 TH| 00004950 45 4e 0a 20 20 20 20 20 20 20 20 67 72 6f 75 70 |EN. group| 00004960 25 28 73 25 29 3d 73 74 72 5f 70 74 72 25 0a 20 |%(s%)=str_ptr%. | 00004970 20 20 20 20 20 20 20 52 45 50 45 41 54 0a 20 20 | REPEAT. | 00004980 20 20 20 20 20 20 20 20 49 46 20 73 74 72 5f 70 | IF str_p| 00004990 74 72 25 3e 3d 73 74 72 5f 6c 65 6e 25 20 50 52 |tr%>=str_len% PR| 000049a0 4f 43 62 61 64 66 69 6c 65 28 22 52 75 6e 20 6f |OCbadfile("Run o| 000049b0 75 74 20 6f 66 20 73 74 72 69 6e 67 20 73 70 61 |ut of string spa| 000049c0 63 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 3f |ce"). ?| 000049d0 73 74 72 5f 70 74 72 25 3d 70 25 0a 20 20 20 20 |str_ptr%=p%. | 000049e0 20 20 20 20 20 20 73 74 72 5f 70 74 72 25 2b 3d | str_ptr%+=| 000049f0 31 0a 20 20 20 20 20 20 20 20 20 20 70 25 3d 42 |1. p%=B| 00004a00 47 45 54 23 66 25 0a 20 20 20 20 20 20 20 20 55 |GET#f%. U| 00004a10 4e 54 49 4c 70 25 3d 33 32 20 4f 52 70 25 3d 41 |NTILp%=32 ORp%=A| 00004a20 53 43 22 40 22 0a 20 20 20 20 20 20 20 20 3f 73 |SC"@". ?s| 00004a30 74 72 5f 70 74 72 25 3d 31 33 0a 20 20 20 20 20 |tr_ptr%=13. | 00004a40 20 20 20 73 74 72 5f 70 74 72 25 2b 3d 31 0a 20 | str_ptr%+=1. | 00004a50 20 20 20 20 20 45 4e 44 49 46 0a 20 20 20 20 20 | ENDIF. | 00004a60 20 57 48 49 4c 45 70 25 3c 3e 41 53 43 22 40 22 | WHILEp%<>ASC"@"| 00004a70 3a 70 25 3d 42 47 45 54 23 66 25 3a 45 4e 44 57 |:p%=BGET#f%:ENDW| 00004a80 48 49 4c 45 0a 0a 20 20 20 20 20 20 61 25 3d 42 |HILE.. a%=B| 00004a90 47 45 54 23 66 25 0a 20 20 20 20 20 20 62 25 3d |GET#f%. b%=| 00004aa0 42 47 45 54 23 66 25 0a 20 20 20 20 20 20 74 25 |BGET#f%. t%| 00004ab0 20 3d 20 61 25 2a 33 36 30 30 30 2b 62 25 2a 33 | = a%*36000+b%*3| 00004ac0 36 30 30 0a 20 20 20 20 20 20 61 25 3d 42 47 45 |600. a%=BGE| 00004ad0 54 23 66 25 0a 20 20 20 20 20 20 49 46 61 25 3c |T#f%. IFa%<| 00004ae0 3e 41 53 43 22 68 22 20 50 52 4f 43 62 61 64 66 |>ASC"h" PROCbadf| 00004af0 69 6c 65 28 22 68 20 65 78 70 65 63 74 65 64 22 |ile("h expected"| 00004b00 29 0a 20 20 20 20 20 20 61 25 3d 42 47 45 54 23 |). a%=BGET#| 00004b10 66 25 0a 20 20 20 20 20 20 62 25 3d 42 47 45 54 |f%. b%=BGET| 00004b20 23 66 25 0a 20 20 20 20 20 20 74 25 2b 3d 20 61 |#f%. t%+= a| 00004b30 25 2a 36 30 30 2b 62 25 2a 36 30 0a 20 20 20 20 |%*600+b%*60. | 00004b40 20 20 61 25 3d 42 47 45 54 23 66 25 0a 20 20 20 | a%=BGET#f%. | 00004b50 20 20 20 49 46 61 25 3c 3e 41 53 43 22 6d 22 20 | IFa%<>ASC"m" | 00004b60 50 52 4f 43 62 61 64 66 69 6c 65 28 22 6d 20 65 |PROCbadfile("m e| 00004b70 78 70 65 63 74 65 64 22 29 0a 20 20 20 20 20 20 |xpected"). | 00004b80 61 25 3d 42 47 45 54 23 66 25 0a 20 20 20 20 20 |a%=BGET#f%. | 00004b90 20 62 25 3d 42 47 45 54 23 66 25 0a 20 20 20 20 | b%=BGET#f%. | 00004ba0 20 20 74 25 2b 3d 61 25 2a 31 30 2b 62 25 2d 31 | t%+=a%*10+b%-1| 00004bb0 39 33 33 30 30 38 0a 20 20 20 20 20 20 52 61 68 |933008. Rah| 00004bc0 28 73 25 29 3d 74 25 2f 33 36 30 30 0a 20 20 20 |(s%)=t%/3600. | 00004bd0 20 20 20 61 25 3d 42 47 45 54 23 66 25 0a 20 20 | a%=BGET#f%. | 00004be0 20 20 20 20 49 46 61 25 3c 3e 41 53 43 22 73 22 | IFa%<>ASC"s"| 00004bf0 20 50 52 4f 43 62 61 64 66 69 6c 65 28 22 73 20 | PROCbadfile("s | 00004c00 65 78 70 65 63 74 65 64 20 22 29 0a 20 20 20 20 |expected "). | 00004c10 20 20 61 25 3d 42 47 45 54 23 66 25 0a 20 20 20 | a%=BGET#f%. | 00004c20 20 20 20 49 46 61 25 3c 3e 41 53 43 22 2c 22 20 | IFa%<>ASC"," | 00004c30 50 52 4f 43 62 61 64 66 69 6c 65 28 22 2c 20 65 |PROCbadfile(", e| 00004c40 78 70 65 63 74 65 64 22 29 0a 20 20 20 20 20 20 |xpected"). | 00004c50 70 25 3d 42 47 45 54 23 66 25 3a 52 45 4d 20 73 |p%=BGET#f%:REM s| 00004c60 69 67 6e 0a 20 20 20 20 20 20 61 25 3d 42 47 45 |ign. a%=BGE| 00004c70 54 23 66 25 0a 20 20 20 20 20 20 62 25 3d 42 47 |T#f%. b%=BG| 00004c80 45 54 23 66 25 0a 20 20 20 20 20 20 74 25 20 3d |ET#f%. t% =| 00004c90 61 25 2a 33 36 30 30 30 2b 62 25 2a 33 36 30 30 |a%*36000+b%*3600| 00004ca0 0a 20 20 20 20 20 20 61 25 3d 42 47 45 54 23 66 |. a%=BGET#f| 00004cb0 25 0a 20 20 20 20 20 20 49 46 61 25 3c 3e 41 53 |%. IFa%<>AS| 00004cc0 43 22 64 22 20 50 52 4f 43 62 61 64 66 69 6c 65 |C"d" PROCbadfile| 00004cd0 28 22 64 20 65 78 70 65 63 74 65 64 22 29 0a 20 |("d expected"). | 00004ce0 20 20 20 20 20 61 25 3d 42 47 45 54 23 66 25 0a | a%=BGET#f%.| 00004cf0 20 20 20 20 20 20 62 25 3d 42 47 45 54 23 66 25 | b%=BGET#f%| 00004d00 0a 20 20 20 20 20 20 74 25 2b 3d 61 25 2a 36 30 |. t%+=a%*60| 00004d10 30 2b 62 25 2a 36 30 0a 20 20 20 20 20 20 61 25 |0+b%*60. a%| 00004d20 3d 42 47 45 54 23 66 25 0a 20 20 20 20 20 20 49 |=BGET#f%. I| 00004d30 46 61 25 3c 3e 41 53 43 22 27 22 20 50 52 4f 43 |Fa%<>ASC"'" PROC| 00004d40 62 61 64 66 69 6c 65 28 22 27 20 65 78 70 65 63 |badfile("' expec| 00004d50 74 65 64 22 29 0a 20 20 20 20 20 20 61 25 3d 42 |ted"). a%=B| 00004d60 47 45 54 23 66 25 0a 20 20 20 20 20 20 62 25 3d |GET#f%. b%=| 00004d70 42 47 45 54 23 66 25 0a 20 20 20 20 20 20 74 25 |BGET#f%. t%| 00004d80 2b 3d 61 25 2a 31 30 2b 62 25 2d 31 39 33 33 30 |+=a%*10+b%-19330| 00004d90 30 38 0a 20 20 20 20 20 20 49 46 70 25 3d 41 53 |08. IFp%=AS| 00004da0 43 22 2d 22 20 74 25 3d 2d 74 25 0a 20 20 20 20 |C"-" t%=-t%. | 00004db0 20 20 44 65 63 28 73 25 29 3d 52 41 44 28 74 25 | Dec(s%)=RAD(t%| 00004dc0 2f 33 36 30 30 29 0a 20 20 20 20 20 20 61 25 3d |/3600). a%=| 00004dd0 42 47 45 54 23 66 25 0a 20 20 20 20 20 20 49 46 |BGET#f%. IF| 00004de0 61 25 3c 3e 41 53 43 22 73 22 20 50 52 4f 43 62 |a%<>ASC"s" PROCb| 00004df0 61 64 66 69 6c 65 28 22 73 20 65 78 70 65 63 74 |adfile("s expect| 00004e00 65 64 22 29 0a 20 20 20 20 20 20 61 25 3d 42 47 |ed"). a%=BG| 00004e10 45 54 23 66 25 0a 20 20 20 20 20 20 49 46 61 25 |ET#f%. IFa%| 00004e20 3c 3e 41 53 43 22 5e 22 20 50 52 4f 43 62 61 64 |<>ASC"^" PROCbad| 00004e30 66 69 6c 65 28 22 5e 20 65 78 70 65 63 74 65 64 |file("^ expected| 00004e40 22 29 0a 20 20 20 20 20 20 70 25 3d 42 47 45 54 |"). p%=BGET| 00004e50 23 66 25 0a 20 20 20 20 20 20 49 46 70 25 3d 41 |#f%. IFp%=A| 00004e60 53 43 22 2d 22 20 74 25 3d 42 47 45 54 23 66 25 |SC"-" t%=BGET#f%| 00004e70 20 45 4c 53 45 74 25 3d 70 25 0a 20 20 20 20 20 | ELSEt%=p%. | 00004e80 20 61 25 3d 42 47 45 54 23 66 25 0a 20 20 20 20 | a%=BGET#f%. | 00004e90 20 20 49 46 61 25 3c 3e 41 53 43 22 2e 22 20 50 | IFa%<>ASC"." P| 00004ea0 52 4f 43 62 61 64 66 69 6c 65 28 22 2e 20 65 78 |ROCbadfile(". ex| 00004eb0 70 65 63 74 65 64 22 29 0a 20 20 20 20 20 20 61 |pected"). a| 00004ec0 25 3d 42 47 45 54 23 66 25 0a 20 20 20 20 20 20 |%=BGET#f%. | 00004ed0 62 25 3d 42 47 45 54 23 66 25 0a 20 20 20 20 20 |b%=BGET#f%. | 00004ee0 20 74 25 3d 74 25 2a 31 30 30 2b 61 25 2a 31 30 | t%=t%*100+a%*10| 00004ef0 2b 62 25 2d 35 33 32 38 0a 20 20 20 20 20 20 49 |+b%-5328. I| 00004f00 46 70 25 3d 41 53 43 22 2d 22 20 54 48 45 4e 74 |Fp%=ASC"-" THENt| 00004f10 25 3d 2d 74 25 0a 20 20 20 20 20 20 4d 61 67 28 |%=-t%. Mag(| 00004f20 73 25 29 3d 74 25 2f 31 30 30 0a 20 20 20 20 20 |s%)=t%/100. | 00004f30 20 49 46 42 47 45 54 23 66 25 3d 41 53 43 22 3d | IFBGET#f%=ASC"=| 00004f40 22 20 54 48 45 4e 0a 20 20 20 20 20 20 20 20 4e |" THEN. N| 00004f50 61 6d 65 64 5f 73 74 61 72 73 25 2b 3d 31 0a 20 |amed_stars%+=1. | 00004f60 20 20 20 20 20 20 20 53 74 61 72 24 28 4e 61 6d | Star$(Nam| 00004f70 65 64 5f 73 74 61 72 73 25 29 3d 46 4e 72 65 61 |ed_stars%)=FNrea| 00004f80 64 73 74 72 28 66 25 29 0a 20 20 20 20 20 20 20 |dstr(f%). | 00004f90 20 73 74 61 72 25 28 4e 61 6d 65 64 5f 73 74 61 | star%(Named_sta| 00004fa0 72 73 25 29 3d 73 25 0a 20 20 20 20 20 20 45 4e |rs%)=s%. EN| 00004fb0 44 49 46 0a 20 20 20 20 20 20 70 25 3d 42 47 45 |DIF. p%=BGE| 00004fc0 54 23 66 25 0a 20 20 20 20 45 4e 44 57 48 49 4c |T#f%. ENDWHIL| 00004fd0 45 0a 20 20 4e 45 58 54 0a 20 20 49 46 73 25 20 |E. NEXT. IFs% | 00004fe0 3c 20 73 64 73 25 20 50 52 4f 43 62 61 64 66 69 |< sds% PROCbadfi| 00004ff0 6c 65 28 22 53 74 61 72 73 20 61 63 63 6f 75 6e |le("Stars accoun| 00005000 74 65 64 20 66 6f 72 20 3d 22 2b 53 54 52 24 28 |ted for ="+STR$(| 00005010 73 25 29 29 0a 20 20 43 4c 4f 53 45 23 66 25 0a |s%)). CLOSE#f%.| 00005020 20 20 50 52 4f 43 68 6f 75 72 67 6c 61 73 73 5f | PROChourglass_| 00005030 6f 66 66 0a 45 4e 44 50 52 4f 43 0a 0a 44 45 46 |off.ENDPROC..DEF| 00005040 46 4e 6e 65 78 74 5f 70 61 72 61 6d 28 73 24 2c |FNnext_param(s$,| 00005050 52 45 54 55 52 4e 20 70 25 2c 64 24 29 0a 4c 4f |RETURN p%,d$).LO| 00005060 43 41 4c 6e 25 0a 20 20 6e 25 3d 49 4e 53 54 52 |CALn%. n%=INSTR| 00005070 28 73 24 2c 64 24 2c 70 25 29 0a 20 20 49 46 6e |(s$,d$,p%). IFn| 00005080 25 3d 30 20 6e 25 3d 4c 45 4e 28 73 24 29 2b 31 |%=0 n%=LEN(s$)+1| 00005090 0a 20 20 73 24 3d 4d 49 44 24 28 73 24 2c 70 25 |. s$=MID$(s$,p%| 000050a0 2c 6e 25 2d 70 25 29 0a 20 20 70 25 3d 6e 25 2b |,n%-p%). p%=n%+| 000050b0 31 0a 3d 73 24 0a 0a 44 45 46 46 4e 72 69 67 68 |1.=s$..DEFFNrigh| 000050c0 74 70 61 72 28 74 24 2c 64 24 29 0a 4c 4f 43 41 |tpar(t$,d$).LOCA| 000050d0 4c 20 70 25 0a 20 20 70 25 20 3d 20 49 4e 53 54 |L p%. p% = INST| 000050e0 52 28 74 24 2c 64 24 29 0a 20 20 49 46 70 25 3d |R(t$,d$). IFp%=| 000050f0 30 20 54 48 45 4e 3d 22 22 0a 3d 52 49 47 48 54 |0 THEN="".=RIGHT| 00005100 24 28 74 24 2c 4c 45 4e 28 74 24 29 2d 70 25 29 |$(t$,LEN(t$)-p%)| 00005110 0a 0a 0a 44 45 46 46 4e 6c 65 66 74 70 61 72 28 |...DEFFNleftpar(| 00005120 74 24 2c 64 24 29 0a 4c 4f 43 41 4c 20 70 25 0a |t$,d$).LOCAL p%.| 00005130 20 20 70 25 20 3d 20 49 4e 53 54 52 28 74 24 2c | p% = INSTR(t$,| 00005140 64 24 29 0a 20 20 49 46 70 25 3d 30 20 54 48 45 |d$). IFp%=0 THE| 00005150 4e 3d 22 22 0a 3d 4c 45 46 54 24 28 74 24 2c 70 |N="".=LEFT$(t$,p| 00005160 25 2d 31 29 0a 0a 44 45 46 46 4e 72 65 61 64 73 |%-1)..DEFFNreads| 00005170 74 72 28 66 25 29 0a 4c 4f 43 41 4c 20 67 25 2c |tr(f%).LOCAL g%,| 00005180 74 24 0a 20 20 74 24 3d 22 22 0a 20 20 67 25 3d |t$. t$="". g%=| 00005190 42 47 45 54 23 66 25 0a 20 20 57 48 49 4c 45 20 |BGET#f%. WHILE | 000051a0 67 25 3c 3e 31 30 0a 20 20 52 45 4d 41 4e 44 67 |g%<>10. REMANDg| 000051b0 25 3c 3e 41 53 43 22 3b 22 0a 20 20 20 20 74 24 |%<>ASC";". t$| 000051c0 2b 3d 43 48 52 24 28 67 25 29 0a 20 20 20 20 67 |+=CHR$(g%). g| 000051d0 25 3d 42 47 45 54 23 66 25 0a 20 20 45 4e 44 57 |%=BGET#f%. ENDW| 000051e0 48 49 4c 45 0a 20 20 57 48 49 4c 45 67 25 3c 3e |HILE. WHILEg%<>| 000051f0 31 30 3a 67 25 3d 42 47 45 54 23 66 25 3a 45 4e |10:g%=BGET#f%:EN| 00005200 44 57 48 49 4c 45 0a 3d 74 24 0a 0a 44 45 46 50 |DWHILE.=t$..DEFP| 00005210 52 4f 43 62 61 64 66 69 6c 65 28 74 24 29 0a 20 |ROCbadfile(t$). | 00005220 20 43 4c 4f 53 45 23 66 25 0a 20 20 45 52 52 4f | CLOSE#f%. ERRO| 00005230 52 20 32 35 37 2c 22 42 61 64 20 73 74 61 72 20 |R 257,"Bad star | 00005240 66 69 6c 65 20 28 22 2b 74 24 2b 22 29 20 61 74 |file ("+t$+") at| 00005250 20 63 6f 6e 73 74 22 2b 53 54 52 24 28 63 6e 25 | const"+STR$(cn%| 00005260 29 0a 45 4e 44 50 52 4f 43 0a 0a 52 45 4d 20 2f |).ENDPROC..REM /| 00005270 20 4c 6f 77 20 6c 65 76 65 6c 20 73 74 61 72 6d | Low level starm| 00005280 61 70 20 63 61 6c 63 75 6c 61 74 69 6f 6e 73 20 |ap calculations | 00005290 2f 0a 0a 44 45 46 50 52 4f 43 63 61 6c 63 5f 65 |/..DEFPROCcalc_e| 000052a0 61 72 74 68 5f 70 6f 73 0a 4c 4f 43 41 4c 42 25 |arth_pos.LOCALB%| 000052b0 2c 56 25 2c 65 0a 20 20 42 25 3d 28 6d 6f 6e 74 |,V%,e. B%=(mont| 000052c0 68 2d 31 34 29 2f 31 32 0a 20 20 56 25 3d 33 36 |h-14)/12. V%=36| 000052d0 37 2a 28 6d 6f 6e 74 68 2d 32 2d 31 32 2a 42 25 |7*(month-2-12*B%| 000052e0 29 2f 31 32 2d 33 2a 49 4e 54 28 28 79 65 61 72 |)/12-3*INT((year| 000052f0 2b 36 38 30 30 2b 42 25 29 2f 31 30 30 29 2f 34 |+6800+B%)/100)/4| 00005300 0a 20 20 72 65 61 6c 5f 74 69 6d 65 5f 64 61 79 |. real_time_day| 00005310 3d 64 61 79 2d 32 34 34 37 30 39 35 2e 35 20 2b |=day-2447095.5 +| 00005320 49 4e 54 28 31 34 36 31 2a 28 79 65 61 72 2b 36 |INT(1461*(year+6| 00005330 37 30 30 2b 42 25 29 2f 34 29 20 2b 56 25 20 2b |700+B%)/4) +V% +| 00005340 28 68 6f 75 72 2b 6d 69 6e 2f 36 30 29 2f 32 34 |(hour+min/60)/24| 00005350 0a 20 20 65 3d 52 41 44 28 32 33 2e 34 35 32 20 |. e=RAD(23.452 | 00005360 2d 30 2e 30 31 33 2a 72 65 61 6c 5f 74 69 6d 65 |-0.013*real_time| 00005370 5f 64 61 79 2f 33 36 35 32 35 29 0a 20 20 45 61 |_day/36525). Ea| 00005380 72 74 68 5f 43 6f 73 3d 43 4f 53 28 65 29 0a 20 |rth_Cos=COS(e). | 00005390 20 45 61 72 74 68 5f 53 69 6e 3d 53 49 4e 28 65 | Earth_Sin=SIN(e| 000053a0 29 0a 20 20 73 74 61 72 64 61 74 65 20 3d 20 46 |). stardate = F| 000053b0 4e 72 6d 6f 64 28 36 2e 36 34 36 20 2b 20 32 34 |Nrmod(6.646 + 24| 000053c0 2a 72 65 61 6c 5f 74 69 6d 65 5f 64 61 79 2f 33 |*real_time_day/3| 000053d0 36 35 2e 32 35 20 2b 20 68 6f 75 72 20 2b 20 6d |65.25 + hour + m| 000053e0 69 6e 2f 36 30 2c 20 32 34 29 2d 56 69 65 77 65 |in/60, 24)-Viewe| 000053f0 72 5f 52 61 68 0a 20 20 50 52 4f 43 70 6c 61 6e |r_Rah. PROCplan| 00005400 5f 70 6f 73 28 30 2c 45 61 72 74 68 5f 58 2c 45 |_pos(0,Earth_X,E| 00005410 61 72 74 68 5f 59 2c 45 61 72 74 68 5f 5a 29 0a |arth_Y,Earth_Z).| 00005420 45 4e 44 50 52 4f 43 0a 0a 0a 44 45 46 50 52 4f |ENDPROC...DEFPRO| 00005430 43 73 75 6e 28 52 45 54 55 52 4e 20 61 6c 74 2c |Csun(RETURN alt,| 00005440 52 45 54 55 52 4e 20 61 7a 6d 29 0a 4c 4f 43 41 |RETURN azm).LOCA| 00005450 4c 74 2c 20 6d 0a 20 20 74 3d 72 65 61 6c 5f 74 |Lt, m. t=real_t| 00005460 69 6d 65 5f 64 61 79 2f 33 36 35 32 35 0a 20 20 |ime_day/36525. | 00005470 6d 3d 52 41 44 28 33 35 38 2e 34 37 36 2b 33 36 |m=RAD(358.476+36| 00005480 30 30 30 2a 74 29 0a 20 20 50 52 4f 43 63 61 6c |000*t). PROCcal| 00005490 63 5f 65 71 75 69 76 28 52 41 44 28 32 37 39 2e |c_equiv(RAD(279.| 000054a0 36 39 37 2b 33 36 30 30 30 2a 74 29 2b 52 41 44 |697+36000*t)+RAD| 000054b0 28 28 31 2e 39 31 39 2d 2e 30 30 35 2a 74 29 2a |((1.919-.005*t)*| 000054c0 53 49 4e 28 6d 29 2b 2e 30 32 2a 53 49 4e 28 32 |SIN(m)+.02*SIN(2| 000054d0 2a 6d 29 29 2c 30 2c 61 6c 74 2c 61 7a 6d 29 0a |*m)),0,alt,azm).| 000054e0 45 4e 44 50 52 4f 43 0a 0a 0a 44 45 46 50 52 4f |ENDPROC...DEFPRO| 000054f0 43 6d 6f 6f 6e 28 52 45 54 55 52 4e 20 61 6c 74 |Cmoon(RETURN alt| 00005500 2c 52 45 54 55 52 4e 20 61 7a 6d 29 0a 4c 4f 43 |,RETURN azm).LOC| 00005510 41 4c 59 2c 20 42 45 54 2c 20 4c 41 4d 0a 20 20 |ALY, BET, LAM. | 00005520 59 3d 30 2e 37 2a 53 49 4e 52 41 44 28 33 34 31 |Y=0.7*SINRAD(341| 00005530 2e 35 2b 32 34 2e 33 38 31 35 2a 72 65 61 6c 5f |.5+24.3815*real_| 00005540 74 69 6d 65 5f 64 61 79 29 2b 36 2e 33 2a 53 49 |time_day)+6.3*SI| 00005550 4e 52 41 44 28 32 39 36 2e 31 2b 31 33 2e 30 36 |NRAD(296.1+13.06| 00005560 35 2a 72 65 61 6c 5f 74 69 6d 65 5f 64 61 79 29 |5*real_time_day)| 00005570 0a 20 20 59 2d 3d 31 2e 33 2a 53 49 4e 52 41 44 |. Y-=1.3*SINRAD| 00005580 28 33 31 34 2e 36 2d 31 31 2e 33 31 36 35 31 2a |(314.6-11.31651*| 00005590 72 65 61 6c 5f 74 69 6d 65 5f 64 61 79 29 0a 20 |real_time_day). | 000055a0 20 42 45 54 3d 52 41 44 28 35 2e 32 2a 53 49 4e | BET=RAD(5.2*SIN| 000055b0 52 41 44 28 59 2b 31 31 2e 32 2b 31 33 2e 32 32 |RAD(Y+11.2+13.22| 000055c0 39 33 35 2a 72 65 61 6c 5f 74 69 6d 65 5f 64 61 |935*real_time_da| 000055d0 79 29 29 0a 20 20 59 2b 3d 32 37 30 2e 34 2b 31 |y)). Y+=270.4+1| 000055e0 33 2e 31 37 36 34 2a 72 65 61 6c 5f 74 69 6d 65 |3.1764*real_time| 000055f0 5f 64 61 79 2b 2e 32 2a 53 49 4e 52 41 44 28 32 |_day+.2*SINRAD(2| 00005600 33 32 2e 32 2b 32 36 2e 31 33 2a 72 65 61 6c 5f |32.2+26.13*real_| 00005610 74 69 6d 65 5f 64 61 79 29 0a 20 20 4c 41 4d 3d |time_day). LAM=| 00005620 52 41 44 28 59 2d 2e 31 2a 53 49 4e 52 41 44 28 |RAD(Y-.1*SINRAD(| 00005630 32 32 2e 35 2b 32 36 2e 34 35 38 37 2a 72 65 61 |22.5+26.4587*rea| 00005640 6c 5f 74 69 6d 65 5f 64 61 79 29 2d 2e 32 2a 53 |l_time_day)-.2*S| 00005650 49 4e 52 41 44 28 33 35 38 2e 35 2b 2e 39 38 35 |INRAD(358.5+.985| 00005660 36 2a 72 65 61 6c 5f 74 69 6d 65 5f 64 61 79 29 |6*real_time_day)| 00005670 29 0a 20 20 6d 6f 6f 6e 5f 61 67 65 25 3d 2e 30 |). moon_age%=.0| 00005680 38 32 2a 46 4e 72 6d 6f 64 28 33 35 30 2e 37 34 |82*FNrmod(350.74| 00005690 2b 34 34 35 32 36 37 2e 31 34 2a 28 72 65 61 6c |+445267.14*(real| 000056a0 5f 74 69 6d 65 5f 64 61 79 2f 33 36 35 32 35 29 |_time_day/36525)| 000056b0 2c 20 33 36 30 29 0a 20 20 6d 6f 6f 6e 5f 70 68 |, 360). moon_ph| 000056c0 61 73 65 24 3d 53 54 52 24 28 31 2b 49 4e 54 28 |ase$=STR$(1+INT(| 000056d0 6d 6f 6f 6e 5f 61 67 65 25 2f 37 2e 35 29 29 0a |moon_age%/7.5)).| 000056e0 20 20 50 52 4f 43 63 61 6c 63 5f 65 71 75 69 76 | PROCcalc_equiv| 000056f0 28 4c 41 4d 2c 42 45 54 2c 61 6c 74 2c 61 7a 6d |(LAM,BET,alt,azm| 00005700 29 0a 45 4e 44 50 52 4f 43 0a 0a 0a 44 45 46 50 |).ENDPROC...DEFP| 00005710 52 4f 43 70 6c 61 6e 5f 70 6f 73 28 4e 25 2c 52 |ROCplan_pos(N%,R| 00005720 45 54 55 52 4e 20 78 2c 52 45 54 55 52 4e 20 79 |ETURN x,RETURN y| 00005730 2c 52 45 54 55 52 4e 20 7a 29 0a 4c 4f 43 41 4c |,RETURN z).LOCAL| 00005740 6d 2c 20 63 2c 20 65 2c 20 6e 25 2c 20 78 6c 2c |m, c, e, n%, xl,| 00005750 20 79 6c 0a 20 20 6d 20 3d 20 50 64 61 74 28 4e | yl. m = Pdat(N| 00005760 25 2c 20 36 29 2b 50 64 61 74 28 4e 25 2c 20 30 |%, 6)+Pdat(N%, 0| 00005770 29 2a 28 72 65 61 6c 5f 74 69 6d 65 5f 64 61 79 |)*(real_time_day| 00005780 2d 32 38 31 38 30 2e 35 29 0a 20 20 63 20 3d 20 |-28180.5). c = | 00005790 6d 20 2b 20 50 64 61 74 28 4e 25 2c 32 29 2a 53 |m + Pdat(N%,2)*S| 000057a0 49 4e 28 6d 20 29 0a 20 20 6e 25 3d 31 0a 20 20 |IN(m ). n%=1. | 000057b0 52 45 50 45 41 54 0a 20 20 20 20 65 3d 63 2b 28 |REPEAT. e=c+(| 000057c0 6d 20 2b 20 50 64 61 74 28 4e 25 2c 32 29 2a 53 |m + Pdat(N%,2)*S| 000057d0 49 4e 28 63 29 20 2d 20 63 29 2f 28 20 31 20 2d |IN(c) - c)/( 1 -| 000057e0 20 50 64 61 74 28 4e 25 2c 32 29 2a 43 4f 53 28 | Pdat(N%,2)*COS(| 000057f0 63 29 20 29 0a 20 20 20 20 53 57 41 50 20 63 2c |c) ). SWAP c,| 00005800 20 65 0a 20 20 20 20 6e 25 2b 3d 31 0a 20 20 55 | e. n%+=1. U| 00005810 4e 54 49 4c 41 42 53 28 65 2d 63 29 3c 31 45 2d |NTILABS(e-c)<1E-| 00005820 36 20 4f 52 20 6e 25 3e 31 30 30 0a 20 20 78 3d |6 OR n%>100. x=| 00005830 50 64 61 74 28 4e 25 2c 31 29 2a 28 43 4f 53 28 |Pdat(N%,1)*(COS(| 00005840 65 29 2d 50 64 61 74 28 4e 25 2c 20 32 29 29 0a |e)-Pdat(N%, 2)).| 00005850 20 20 79 3d 50 64 61 74 28 4e 25 2c 33 29 2a 53 | y=Pdat(N%,3)*S| 00005860 49 4e 28 65 29 0a 20 20 78 6c 3d 78 2a 50 64 61 |IN(e). xl=x*Pda| 00005870 74 28 4e 25 2c 37 29 20 2d 20 79 2a 50 64 61 74 |t(N%,7) - y*Pdat| 00005880 28 4e 25 2c 38 29 0a 20 20 79 6c 3d 78 2a 50 64 |(N%,8). yl=x*Pd| 00005890 61 74 28 4e 25 2c 38 29 20 2b 20 79 2a 50 64 61 |at(N%,8) + y*Pda| 000058a0 74 28 4e 25 2c 37 29 0a 20 20 78 3d 78 6c 2a 50 |t(N%,7). x=xl*P| 000058b0 64 61 74 28 4e 25 2c 39 29 20 2d 20 79 6c 2a 50 |dat(N%,9) - yl*P| 000058c0 64 61 74 28 4e 25 2c 31 30 29 2a 50 64 61 74 28 |dat(N%,10)*Pdat(| 000058d0 4e 25 2c 34 29 0a 20 20 79 3d 78 6c 2a 50 64 61 |N%,4). y=xl*Pda| 000058e0 74 28 4e 25 2c 31 30 29 2b 20 79 6c 2a 50 64 61 |t(N%,10)+ yl*Pda| 000058f0 74 28 4e 25 2c 39 29 2a 50 64 61 74 28 4e 25 2c |t(N%,9)*Pdat(N%,| 00005900 34 29 0a 20 20 7a 3d 79 6c 2a 50 64 61 74 28 4e |4). z=yl*Pdat(N| 00005910 25 2c 35 29 0a 45 4e 44 50 52 4f 43 0a 0a 44 45 |%,5).ENDPROC..DE| 00005920 46 50 52 4f 43 70 6c 61 6e 65 74 28 4e 25 2c 52 |FPROCplanet(N%,R| 00005930 45 54 55 52 4e 20 61 6c 74 2c 52 45 54 55 52 4e |ETURN alt,RETURN| 00005940 20 61 7a 6d 29 0a 4c 4f 43 41 4c 20 78 2c 79 2c | azm).LOCAL x,y,| 00005950 7a 0a 78 3d 30 3a 79 3d 30 3a 7a 3d 30 0a 20 20 |z.x=0:y=0:z=0. | 00005960 50 52 4f 43 70 6c 61 6e 5f 70 6f 73 28 4e 25 2c |PROCplan_pos(N%,| 00005970 78 2c 79 2c 7a 29 0a 20 20 78 2d 3d 45 61 72 74 |x,y,z). x-=Eart| 00005980 68 5f 58 0a 20 20 79 2d 3d 45 61 72 74 68 5f 59 |h_X. y-=Earth_Y| 00005990 0a 20 20 7a 2d 3d 45 61 72 74 68 5f 5a 0a 20 20 |. z-=Earth_Z. | 000059a0 50 52 4f 43 63 61 6c 63 5f 65 71 75 69 76 28 41 |PROCcalc_equiv(A| 000059b0 54 4e 28 79 2f 78 29 2b 50 49 2a 28 33 2b 53 47 |TN(y/x)+PI*(3+SG| 000059c0 4e 28 78 29 29 2f 32 2c 41 53 4e 28 7a 2f 53 51 |N(x))/2,ASN(z/SQ| 000059d0 52 28 78 2a 78 2b 79 2a 79 2b 7a 2a 7a 29 29 2c |R(x*x+y*y+z*z)),| 000059e0 61 6c 74 2c 61 7a 6d 29 0a 45 4e 44 50 52 4f 43 |alt,azm).ENDPROC| 000059f0 0a 0a 0a 44 45 46 50 52 4f 43 63 61 6c 63 5f 65 |...DEFPROCcalc_e| 00005a00 71 75 69 76 28 4c 41 4d 2c 42 45 54 2c 52 45 54 |quiv(LAM,BET,RET| 00005a10 55 52 4e 20 61 6c 74 2c 52 45 54 55 52 4e 20 61 |URN alt,RETURN a| 00005a20 7a 6d 29 0a 4c 4f 43 41 4c 63 2c 20 73 2c 20 58 |zm).LOCALc, s, X| 00005a30 0a 20 20 4c 41 4d 3d 46 4e 72 6d 6f 64 28 4c 41 |. LAM=FNrmod(LA| 00005a40 4d 2c 20 32 2a 50 49 29 0a 20 20 63 3d 43 4f 53 |M, 2*PI). c=COS| 00005a50 28 42 45 54 29 0a 20 20 73 3d 53 49 4e 28 42 45 |(BET). s=SIN(BE| 00005a60 54 29 0a 20 20 58 3d 63 2a 53 49 4e 28 4c 41 4d |T). X=c*SIN(LAM| 00005a70 29 0a 20 20 50 52 4f 43 63 61 6c 63 5f 70 6f 73 |). PROCcalc_pos| 00005a80 28 52 41 48 45 2a 46 4e 61 6e 67 28 58 2a 45 61 |(RAHE*FNang(X*Ea| 00005a90 72 74 68 5f 43 6f 73 2d 73 2a 45 61 72 74 68 5f |rth_Cos-s*Earth_| 00005aa0 53 69 6e 2c 63 2a 43 4f 53 28 4c 41 4d 29 29 2c |Sin,c*COS(LAM)),| 00005ab0 41 53 4e 28 73 2a 45 61 72 74 68 5f 43 6f 73 2b |ASN(s*Earth_Cos+| 00005ac0 58 2a 45 61 72 74 68 5f 53 69 6e 29 2c 61 6c 74 |X*Earth_Sin),alt| 00005ad0 2c 61 7a 6d 29 0a 45 4e 44 50 52 4f 43 0a 0a 0a |,azm).ENDPROC...| 00005ae0 44 45 46 50 52 4f 43 63 61 6c 63 5f 70 6f 73 28 |DEFPROCcalc_pos(| 00005af0 52 41 48 2c 44 45 43 2c 20 52 45 54 55 52 4e 20 |RAH,DEC, RETURN | 00005b00 61 6c 74 2c 52 45 54 55 52 4e 20 61 7a 6d 29 0a |alt,RETURN azm).| 00005b10 4c 4f 43 41 4c 20 48 2c 20 58 2c 20 73 2c 20 63 |LOCAL H, X, s, c| 00005b20 0a 20 20 63 3d 2d 43 4f 53 28 44 45 43 29 0a 20 |. c=-COS(DEC). | 00005b30 20 73 3d 20 53 49 4e 28 44 45 43 29 0a 20 20 48 | s= SIN(DEC). H| 00005b40 3d 53 49 44 45 2a 28 73 74 61 72 64 61 74 65 2d |=SIDE*(stardate-| 00005b50 52 41 48 29 0a 20 20 58 3d 63 2a 43 4f 53 28 48 |RAH). X=c*COS(H| 00005b60 29 0a 20 20 61 6c 74 3d 41 53 4e 28 73 2a 56 6c |). alt=ASN(s*Vl| 00005b70 73 2d 58 2a 56 6c 63 29 0a 20 20 61 7a 6d 3d 46 |s-X*Vlc). azm=F| 00005b80 4e 61 6e 67 28 63 2a 53 49 4e 28 48 29 2c 20 73 |Nang(c*SIN(H), s| 00005b90 2a 56 6c 63 2b 58 2a 56 6c 73 29 0a 45 4e 44 50 |*Vlc+X*Vls).ENDP| 00005ba0 52 4f 43 0a 0a 44 45 46 50 52 4f 43 73 65 74 70 |ROC..DEFPROCsetp| 00005bb0 6f 73 28 4c 61 74 2c 4c 6f 6e 67 29 0a 20 20 56 |os(Lat,Long). V| 00005bc0 69 65 77 65 72 5f 4c 61 74 3d 52 41 44 28 4c 61 |iewer_Lat=RAD(La| 00005bd0 74 29 0a 20 20 56 6c 63 3d 43 4f 53 28 56 69 65 |t). Vlc=COS(Vie| 00005be0 77 65 72 5f 4c 61 74 29 0a 20 20 56 6c 73 3d 53 |wer_Lat). Vls=S| 00005bf0 49 4e 28 56 69 65 77 65 72 5f 4c 61 74 29 0a 20 |IN(Viewer_Lat). | 00005c00 20 56 69 65 77 65 72 5f 52 61 68 3d 4c 6f 6e 67 | Viewer_Rah=Long| 00005c10 2f 31 35 0a 20 20 24 6c 6f 6e 67 5f 70 74 72 25 |/15. $long_ptr%| 00005c20 3d 46 4e 6d 61 6b 65 5f 61 6e 67 28 4c 6f 6e 67 |=FNmake_ang(Long| 00005c30 2c 22 57 45 22 29 0a 20 20 24 6c 61 74 5f 70 74 |,"WE"). $lat_pt| 00005c40 72 25 20 3d 46 4e 6d 61 6b 65 5f 61 6e 67 28 4c |r% =FNmake_ang(L| 00005c50 61 74 2c 22 4e 53 22 29 0a 45 4e 44 50 52 4f 43 |at,"NS").ENDPROC| 00005c60 0a 0a 44 45 46 46 4e 6d 61 6b 65 5f 61 6e 67 28 |..DEFFNmake_ang(| 00005c70 61 2c 64 24 29 0a 4c 4f 43 41 4c 64 25 2c 20 6d |a,d$).LOCALd%, m| 00005c80 25 0a 20 20 64 25 3d 41 42 53 28 49 4e 54 28 61 |%. d%=ABS(INT(a| 00005c90 29 29 0a 20 20 6d 25 3d 41 42 53 28 49 4e 54 28 |)). m%=ABS(INT(| 00005ca0 61 2a 36 30 29 29 2d 64 25 2a 36 30 0a 3d 53 54 |a*60))-d%*60.=ST| 00005cb0 52 24 28 64 25 29 2b 22 64 22 2b 53 54 52 24 28 |R$(d%)+"d"+STR$(| 00005cc0 6d 25 29 2b 22 6d 22 2b 4d 49 44 24 28 64 24 2c |m%)+"m"+MID$(d$,| 00005cd0 31 2d 28 61 3c 30 29 2c 31 29 0a 0a 44 45 46 46 |1-(a<0),1)..DEFF| 00005ce0 4e 61 6e 67 28 59 2c 20 58 29 0a 20 20 49 46 58 |Nang(Y, X). IFX| 00005cf0 3d 30 20 54 48 45 4e 3d 50 49 2a 53 47 4e 28 59 |=0 THEN=PI*SGN(Y| 00005d00 29 0a 3d 50 49 2b 41 54 4e 28 59 2f 58 29 2b 28 |).=PI+ATN(Y/X)+(| 00005d10 58 3e 30 29 2a 53 47 4e 28 59 29 2a 50 49 0a 0a |X>0)*SGN(Y)*PI..| 00005d20 0a 44 45 46 46 4e 72 6d 6f 64 28 41 2c 20 4d 29 |.DEFFNrmod(A, M)| 00005d30 0a 20 20 49 46 41 3c 30 20 52 45 50 45 41 54 41 |. IFA<0 REPEATA| 00005d40 2b 3d 4d 3a 55 4e 54 49 4c 41 3e 30 20 45 4c 53 |+=M:UNTILA>0 ELS| 00005d50 45 41 2d 3d 4d 2a 49 4e 54 28 41 2f 4d 29 0a 3d |EA-=M*INT(A/M).=| 00005d60 41 0a 0a 44 45 46 46 4e 64 65 63 5f 74 69 6d 65 |A..DEFFNdec_time| 00005d70 28 41 29 0a 4c 4f 43 41 4c 68 25 2c 6d 25 0a 20 |(A).LOCALh%,m%. | 00005d80 20 41 3d 46 4e 72 6d 6f 64 28 41 2c 32 34 29 0a | A=FNrmod(A,24).| 00005d90 20 20 68 25 3d 41 0a 20 20 6d 25 3d 36 30 2a 28 | h%=A. m%=60*(| 00005da0 41 2d 68 25 29 2b 30 2e 35 0a 20 20 40 25 3d 31 |A-h%)+0.5. @%=1| 00005db0 30 0a 3d 46 4e 64 69 73 70 5f 74 69 6d 65 28 68 |0.=FNdisp_time(h| 00005dc0 25 2c 6d 25 29 0a 0a 44 45 46 46 4e 64 69 73 70 |%,m%)..DEFFNdisp| 00005dd0 5f 74 69 6d 65 28 68 25 2c 6d 25 29 3d 53 54 52 |_time(h%,m%)=STR| 00005de0 49 4e 47 24 28 32 2d 4c 45 4e 53 54 52 24 68 25 |ING$(2-LENSTR$h%| 00005df0 2c 20 22 20 22 29 2b 53 54 52 24 68 25 2b 22 3a |, " ")+STR$h%+":| 00005e00 22 2b 53 54 52 49 4e 47 24 28 32 2d 4c 45 4e 53 |"+STRING$(2-LENS| 00005e10 54 52 24 6d 25 2c 22 30 22 29 2b 53 54 52 24 6d |TR$m%,"0")+STR$m| 00005e20 25 0a 0a 44 45 46 46 4e 6c 6f 6f 6b 5f 6e 65 78 |%..DEFFNlook_nex| 00005e30 74 0a 3d 28 46 4e 64 65 63 6f 64 65 5f 74 69 6d |t.=(FNdecode_tim| 00005e40 65 28 32 30 29 3c 3e 72 6d 69 6e 29 0a 0a 44 45 |e(20)<>rmin)..DE| 00005e50 46 50 52 4f 43 73 65 74 5f 73 79 73 74 65 6d 5f |FPROCset_system_| 00005e60 74 69 6d 65 0a 20 20 6d 69 6e 20 20 3d 46 4e 64 |time. min =FNd| 00005e70 65 63 6f 64 65 5f 74 69 6d 65 28 32 30 29 0a 20 |ecode_time(20). | 00005e80 20 68 6f 75 72 20 3d 46 4e 64 65 63 6f 64 65 5f | hour =FNdecode_| 00005e90 74 69 6d 65 28 31 37 29 0a 20 20 64 61 79 20 20 |time(17). day | 00005ea0 3d 46 4e 64 65 63 6f 64 65 5f 74 69 6d 65 28 35 |=FNdecode_time(5| 00005eb0 29 0a 20 20 6d 6f 6e 74 68 3d 46 4e 64 65 63 6f |). month=FNdeco| 00005ec0 64 65 5f 6d 6f 6e 74 68 0a 20 20 79 65 61 72 20 |de_month. year | 00005ed0 3d 46 4e 64 65 63 6f 64 65 5f 74 69 6d 65 28 31 |=FNdecode_time(1| 00005ee0 34 29 0a 20 20 72 6d 69 6e 3d 46 4e 6e 6f 77 5f |4). rmin=FNnow_| 00005ef0 6d 69 6e 0a 45 4e 44 50 52 4f 43 0a 0a 44 45 46 |min.ENDPROC..DEF| 00005f00 50 52 4f 43 69 6e 63 74 69 6d 65 28 73 25 29 0a |PROCinctime(s%).| 00005f10 20 20 6d 69 6e 2b 3d 73 25 0a 20 20 49 46 20 6d | min+=s%. IF m| 00005f20 69 6e 3e 3d 36 30 20 54 48 45 4e 0a 20 20 20 20 |in>=60 THEN. | 00005f30 68 6f 75 72 2b 3d 6d 69 6e 20 44 49 56 20 36 30 |hour+=min DIV 60| 00005f40 0a 20 20 20 20 6d 69 6e 3d 6d 69 6e 20 4d 4f 44 |. min=min MOD| 00005f50 20 36 30 0a 20 20 20 20 49 46 20 68 6f 75 72 3e | 60. IF hour>| 00005f60 3d 32 34 20 50 52 4f 43 69 6e 63 64 61 79 0a 20 |=24 PROCincday. | 00005f70 20 45 4e 44 49 46 0a 20 20 72 6d 69 6e 3d 46 4e | ENDIF. rmin=FN| 00005f80 6e 6f 77 5f 6d 69 6e 0a 45 4e 44 50 52 4f 43 0a |now_min.ENDPROC.| 00005f90 0a 44 45 46 50 52 4f 43 69 6e 63 64 61 79 0a 4c |.DEFPROCincday.L| 00005fa0 4f 43 41 4c 6c 65 61 70 25 0a 20 20 68 6f 75 72 |OCALleap%. hour| 00005fb0 3d 68 6f 75 72 20 4d 4f 44 20 32 34 0a 20 20 64 |=hour MOD 24. d| 00005fc0 61 79 2b 3d 31 0a 20 20 6c 65 61 70 25 3d 28 6d |ay+=1. leap%=(m| 00005fd0 6f 6e 74 68 3d 32 29 20 41 4e 44 20 28 79 65 61 |onth=2) AND (yea| 00005fe0 72 20 4d 4f 44 34 3d 30 29 0a 20 20 49 46 64 61 |r MOD4=0). IFda| 00005ff0 79 3e 44 25 28 6d 6f 6e 74 68 29 2d 6c 65 61 70 |y>D%(month)-leap| 00006000 25 20 54 48 45 4e 0a 20 20 20 20 6d 6f 6e 74 68 |% THEN. month| 00006010 2b 3d 31 0a 20 20 20 20 64 61 79 3d 31 0a 20 20 |+=1. day=1. | 00006020 20 20 49 46 6d 6f 6e 74 68 3e 31 32 20 54 48 45 | IFmonth>12 THE| 00006030 4e 0a 20 20 20 20 20 20 79 65 61 72 2b 3d 31 0a |N. year+=1.| 00006040 20 20 20 20 20 20 6d 6f 6e 74 68 3d 31 0a 20 20 | month=1. | 00006050 20 20 45 4e 44 49 46 0a 20 20 45 4e 44 49 46 0a | ENDIF. ENDIF.| 00006060 45 4e 44 50 52 4f 43 20 0a 0a 44 45 46 46 4e 74 |ENDPROC ..DEFFNt| 00006070 69 6d 65 5f 70 61 73 74 3a 3d 28 46 4e 6e 6f 77 |ime_past:=(FNnow| 00006080 5f 6d 69 6e 2d 72 6d 69 6e 2b 36 30 29 20 4d 4f |_min-rmin+60) MO| 00006090 44 36 30 0a 0a 44 45 46 50 52 4f 43 75 70 64 61 |D60..DEFPROCupda| 000060a0 74 65 5f 6d 65 6e 5f 74 69 6d 65 0a 4c 4f 43 41 |te_men_time.LOCA| 000060b0 4c 73 24 0a 20 20 24 74 69 6d 65 5f 70 74 72 25 |Ls$. $time_ptr%| 000060c0 3d 53 54 52 24 28 64 61 79 29 2b 22 2f 22 2b 53 |=STR$(day)+"/"+S| 000060d0 54 52 24 28 6d 6f 6e 74 68 29 2b 22 2f 22 2b 53 |TR$(month)+"/"+S| 000060e0 54 52 24 28 79 65 61 72 29 2b 22 40 22 2b 46 4e |TR$(year)+"@"+FN| 000060f0 64 69 73 70 5f 74 69 6d 65 28 68 6f 75 72 2c 6d |disp_time(hour,m| 00006100 69 6e 29 2b 22 68 22 0a 20 20 49 46 56 65 72 74 |in)+"h". IFVert| 00006110 69 63 61 6c 20 73 24 3d 22 56 65 72 74 69 63 61 |ical s$="Vertica| 00006120 6c 22 20 45 4c 53 45 73 24 3d 22 48 6f 72 69 7a |l" ELSEs$="Horiz| 00006130 6f 6e 74 61 6c 22 0a 20 20 24 77 5f 74 69 74 6c |ontal". $w_titl| 00006140 65 25 3d 73 24 2b 22 20 56 69 65 77 20 61 74 20 |e%=s$+" View at | 00006150 22 2b 46 4e 73 74 72 69 6e 67 5f 74 69 6d 65 0a |"+FNstring_time.| 00006160 45 4e 44 50 52 4f 43 0a 0a 44 45 46 46 4e 73 74 |ENDPROC..DEFFNst| 00006170 72 69 6e 67 5f 74 69 6d 65 0a 3d 46 4e 64 69 73 |ring_time.=FNdis| 00006180 70 5f 74 69 6d 65 28 68 6f 75 72 2c 6d 69 6e 29 |p_time(hour,min)| 00006190 2b 22 20 6f 6e 20 22 2b 53 54 52 24 28 64 61 79 |+" on "+STR$(day| 000061a0 29 2b 22 20 22 2b 4d 24 28 6d 6f 6e 74 68 29 2b |)+" "+M$(month)+| 000061b0 22 20 22 2b 53 54 52 24 28 31 39 30 30 2b 79 65 |" "+STR$(1900+ye| 000061c0 61 72 29 0a 0a 44 45 46 46 4e 6e 6f 77 5f 6d 69 |ar)..DEFFNnow_mi| 000061d0 6e 3d 46 4e 64 65 63 6f 64 65 5f 74 69 6d 65 28 |n=FNdecode_time(| 000061e0 32 30 29 0a 0a 44 45 46 46 4e 64 65 63 6f 64 65 |20)..DEFFNdecode| 000061f0 5f 74 69 6d 65 28 69 25 29 0a 3d 56 41 4c 4d 49 |_time(i%).=VALMI| 00006200 44 24 28 54 49 4d 45 24 2c 20 69 25 2c 20 32 29 |D$(TIME$, i%, 2)| 00006210 0a 0a 0a 44 45 46 50 52 4f 43 73 65 74 5f 75 73 |...DEFPROCset_us| 00006220 65 72 5f 74 69 6d 65 0a 4c 4f 43 41 4c 73 24 2c |er_time.LOCALs$,| 00006230 70 25 0a 20 20 73 24 3d 24 74 69 6d 65 5f 70 74 |p%. s$=$time_pt| 00006240 72 25 0a 20 20 70 25 3d 30 0a 20 20 64 61 79 20 |r%. p%=0. day | 00006250 20 3d 56 41 4c 46 4e 6e 65 78 74 5f 70 61 72 61 | =VALFNnext_para| 00006260 6d 28 73 24 2c 70 25 2c 22 2f 22 29 20 20 0a 20 |m(s$,p%,"/") . | 00006270 20 6d 6f 6e 74 68 3d 56 41 4c 46 4e 6e 65 78 74 | month=VALFNnext| 00006280 5f 70 61 72 61 6d 28 73 24 2c 70 25 2c 22 2f 22 |_param(s$,p%,"/"| 00006290 29 0a 20 20 79 65 61 72 20 3d 56 41 4c 46 4e 6e |). year =VALFNn| 000062a0 65 78 74 5f 70 61 72 61 6d 28 73 24 2c 70 25 2c |ext_param(s$,p%,| 000062b0 22 40 22 29 20 20 0a 20 20 68 6f 75 72 20 3d 56 |"@") . hour =V| 000062c0 41 4c 46 4e 6e 65 78 74 5f 70 61 72 61 6d 28 73 |ALFNnext_param(s| 000062d0 24 2c 70 25 2c 22 3a 22 29 0a 20 20 6d 69 6e 20 |$,p%,":"). min | 000062e0 20 3d 56 41 4c 46 4e 6e 65 78 74 5f 70 61 72 61 | =VALFNnext_para| 000062f0 6d 28 73 24 2c 70 25 2c 22 68 22 29 0a 20 20 49 |m(s$,p%,"h"). I| 00006300 46 6d 6f 6e 74 68 3e 31 32 20 4f 52 6d 6f 6e 74 |Fmonth>12 ORmont| 00006310 68 3c 31 20 4f 52 68 6f 75 72 3e 32 34 20 4f 52 |h<1 ORhour>24 OR| 00006320 20 6d 69 6e 3e 36 30 20 4f 52 20 79 65 61 72 3c | min>60 OR year<| 00006330 37 35 20 4f 52 20 79 65 61 72 3e 32 30 32 35 20 |75 OR year>2025 | 00006340 4f 52 20 64 61 79 3e 33 31 20 54 48 45 4e 0a 20 |OR day>31 THEN. | 00006350 20 20 20 50 52 4f 43 65 72 72 6f 72 62 6f 78 28 | PROCerrorbox(| 00006360 32 34 30 2c 22 49 6e 76 61 6c 69 64 20 74 69 6d |240,"Invalid tim| 00006370 65 20 46 6f 72 6d 61 74 20 2d 22 2b 46 4e 73 74 |e Format -"+FNst| 00006380 72 69 6e 67 5f 74 69 6d 65 29 0a 20 20 45 4e 44 |ring_time). END| 00006390 49 46 0a 20 20 49 46 79 65 61 72 3e 31 39 30 30 |IF. IFyear>1900| 000063a0 20 54 48 45 4e 20 79 65 61 72 2d 3d 31 39 30 30 | THEN year-=1900| 000063b0 0a 20 20 72 6d 69 6e 3d 46 4e 6e 6f 77 5f 6d 69 |. rmin=FNnow_mi| 000063c0 6e 0a 45 4e 44 50 52 4f 43 0a 0a 44 45 46 46 4e |n.ENDPROC..DEFFN| 000063d0 64 65 63 6f 64 65 5f 6d 6f 6e 74 68 0a 3d 49 4e |decode_month.=IN| 000063e0 53 54 52 28 6d 6f 6e 24 2c 20 4d 49 44 24 28 54 |STR(mon$, MID$(T| 000063f0 49 4d 45 24 2c 20 38 2c 20 33 29 29 2f 33 0a 0a |IME$, 8, 3))/3..| 00006400 44 45 46 46 4e 62 63 64 28 63 25 29 3d 28 63 25 |DEFFNbcd(c%)=(c%| 00006410 20 41 4e 44 20 31 35 29 2b 31 30 2a 28 63 25 3e | AND 15)+10*(c%>| 00006420 3e 34 29 0a 0a 44 45 46 50 52 4f 43 6c 6f 61 64 |>4)..DEFPROCload| 00006430 5f 6d 65 73 73 28 71 25 29 3a 45 4e 44 50 52 4f |_mess(q%):ENDPRO| 00006440 43 3a 52 45 4d 20 64 75 6d 6d 79 0a 0a 45 4e 44 |C:REM dummy..END| 00006450 0a 0a 52 45 4d 20 2f 20 45 6e 64 20 6f 66 20 21 |..REM / End of !| 00006460 53 74 61 72 67 61 7a 65 72 0a 0a 0a |Stargazer...| 0000646c