Date: Mon, 17 Jun 2013 10:16:52 -0700 From: Chris Maness <chris@chrismaness.com> To: "freebsd-questions@freebsd.org" <freebsd-questions@freebsd.org> Subject: Any BASIC Gurus around? Message-ID: <CANnsUMG-2yaGgY-_aXtt2UTTRPCGFgFzhE0_sF74%2B%2Bsaw5Uy1g@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
I am having trouble getting this old USNO basic program running in bwBASIC. The error output is not clear to me where the problem is. Here is the code, if someone wouldn't mind running it and suggesting edits: 10 DEF FNARCOS(ARG)=3D1.570796-ATN(ARG/SQR(1.-ARG*ARG)) 20 DEF FNARCSIN(ARG)=3DATN(ARG/SQR(1.-ARG*ARG)) 30 DEF FNDEG(ARG)=3DINT(ARG)+((ARG-INT(ARG))*1O.)/6. 40 DEF FNDMS(ARG)=3DINT(ARG)+6. * (ARG - INT(ARG)) / 10! 50 RD=3D57.29578 60 DR=3D1./RD 70 DIM A(4) 80 DIM B(2) 90 A(1)=3D-.01454 100 A(2)=3D-.10453 110 A(3)=3D-.20791 120 A(4)=3D.00233 130 CE=3D.91775 140 SE=3D.39715 150 INPUT "LONGITUDE IN DEG."; LO 160 LI=3DABS(LO) 170 INPUT "LATITUDE IN DEG."; F 180 F=3DF*DR 190 S1=3DSIN(F) 200 CI=3DCOS(F) 210 INPUT "YEAR (4 DIGITS)"; IY 220 INPUT "MONTH (NUMERAL)"; IM 230 INPUT "DAY (NUMERAL)"; ID 240 C=3D360. 250 J=3D367*IY-INT(7*(IY+INT((IM+9)/12))/4)+INT(275*IM/9)+ID-730531. 260 INPUT "UNIVERSAL TIME =3D 0, ZONE TIME =3D 1, LOCAL MEAN TIME =3D 2"; Z 270 DT=3D0. 280 IF Z=3D0. THEN LET DT=3D-LO/C 290 IF Z=3D1. THEN LET DT=3D-(LI-15*INT((LI+7.5)/15))/C*SGN(LO) 300 INPUT "HOUR (4 DIGIT NUMERAL ON 24 HOUR CLOCK)"; H 310 ZO#=3DJ-.5 320 IF H>0 THEN GOTO 870 330 PRINT "DATA FOR ";IY; ", MONTH ";IM; ", DAY";ID 340 FOR L=3D1 TO 4 350 ON L GOTO 370, 650, 650, 360 360 C=3D347.81 370 M=3D.5+DT 380 K=3D1 390 M=3DM-DT 400 E=3DM-LO/360. 410 GOSUB 430 420 GOTO 530 430 D#-ZO#+E 440 IF ABS(E)>=3D1 THEN LET E=3DE-SGN(E) 450 GOSUB 1220 460 IF L=3D4 THEN GOSUB 1720 470 T=3DT+LO+360.*E 480 T=3DT-INT(T/360.)*360. 490 U=3DT-AS 500 IF ABS(U) > 180! THEN LET U=3DU-360.*SGN(U) 510 U=3DU/C 520 RETURN 530 M=3DM-U+DT 540 IF L<4 THEN LET K=3DK+1 550 ON K GOTO 600,560,600,580,600,620 560 IF M>=3DO. AND M<1. THEN GOTO 620 570 GOTO 590 580 IF M>=3DO. THEN GOTO 620 590 M=3DM-SGN(M) 600 K=3DK+1 610 GOTO 390 620 H=3DFNARCSIN(COS(F-DS))*RD 630 IF L=3D4 THEN LET H=3DH-.95*COS(H) 640 GOSUB 2160 650 GOSUB 2000 660 B(1)=3DM-H 670 B(2)=3DM+H 680 FOR I=3D1 TO 2 690 K=3D2*I-3 700 FOR N=3D1 TO 6 710 B(I)=3DB(I)-DT 720 E=3DB(I)-LO/360. 730 GOSUB 430 740 GOSUB 2000 750 B(I)=3DB(I)+K*H-U+DT 760 IF L<4 THEN LET N=3DN+1 770 ON N GOTO 820,780,820,800,820,830 780 IF B(I)>=3DO. AND B(I)<1. THEN GOTO 830 790 GOTO 810 800 IF B(I)>=3DO. THEN GOTO 830 810 B(I)=3DB(I)-SGN(B(I)) 820 NEXT N 830 NEXT I 840 ON L GOSUB 1350,1400,1400,1610 850 NEXT L 860 GOTO 150 870 INPUT"SKY CONDITION =3D 1,2,3,10,";SK 880 PRINT"DATA FOR ";IY;", MONTH ";IM;", DAY ";ID;", AT ";H;" HOURS" 890 E=3DFNDEG(H/100.)/24.-DT-LO/360. 900 D#=3DZO#+E 910 N=3D1 920 GOSUB 1220 930 T=3DT+360.*E+LO 940 IF N=3D2 THEN GOSUB 1720 950 H=3DT-AS 960 GOSUB 2060 970 Z=3DH*DR 980 H=3DH-.95*(N-1)*COS(H*DR) 990 GOSUB 2160 1000 GOSUB 2200 1010 HA=3DINT(ABS(HA)+.5)*SGN(HA) 1020 ON N GOTO 1030, 1090 1030 IS=3D133775.*M/SK 1040 PRINT"SUN AZIMUTH (DEG.) ";AZ 1050 PRINT"SUN ALTITUDE (DOG.) ";HA 1060 PRINT"SUN ILLUMINANCE (LUX) ";IS 1070 N=3D2 1080 GOTO 940 1090 E=3DFNARCOS(COS(V-LS)*CB) 1100 P=3D.892*EXP(-3.343/((TAN(E/2.))^.632))+.0344*(SIN(E)-E*COS(E)) 1110 P=3D.418*P/(1.-.005*COS(E)-.03*SIN(Z)) 1120 IL=3DP*M/SK 1130 IS=3DIS+IL+.0005/SK 1140 PRINT"MOON AZIMUTH (DEG.) ";AZ 1150 PRINT"MOON ALTITUDE (DEG.) ";HA 1160 PRINT"MOON ILLUMINANCE (LUX) ";IL 1170 IL=3DINT(50.*(1.-COS(E=BB+.5) 1180 PRINT" (";IL;"% OF MOON ILLUMINATED)" 1190 PRINT"TOTAL ILLUMINANCE (LUX) ";IS 1200 GOTO 300 1210 END 1220 TD#=3D280.46#+.98565#*D# 1230 T=3DTD#-INT(TD#/360#)*360# 1240 IF T<O. THEN LET T=3DT+360. 1250 TD#=3D357.5#+.9856#*D# 1260 G=3D(TD#-INT(TD#/360#)*360#)*DR 1270 LS=3D(T+1.91*SIN(G))*DR 1280 AS=3DATN(CE*TAN(LS))*RD 1290 Y=3DCOS(LS) 1300 IF Y<O. THEN LET AS=3DAS+180. 1310 SD=3DSE*SIN(LS) 1320 DS=3DFNARCSIN(SD) 1330 T=3DT-180. 1340 RETURN 1350 R=3DM 1360 GOSUB 1700 1370 PRINT"SUN MERIDIAN PASSAGE AT ";R 1380 HA=3DINT(ABS(HA)+.5)*SGN(HA) 1390 PRINT"ALTITUDE AT MER. PASS. ";HA 1400 FOR 1=3D1 TO 2 1410 R=3DB(I) 1420 GOSUB 1700 1430 IF R>=3D4800. OR R<O. THEN GOTO 1680 1440 ON 2*(L-1)+I GOTO 1450,1470,1530,1550,1570,1590,1650,1670 1450 PRINT"TIME OF SUNRISE ";R 1460 GOTO 1680 1470 PRINT"TIME OF SUNSET ";R 1480 R=3DB(2)-B(1) 1490 IF R<O. THEN LET R=3DR+1. 1500 GOSUB 1700 1510 PRINT"TOTAL DAYLIGHT ";R 1520 GOTO 1680 1530 PRINT"BEGIN CIVIL TWILIGHT AT ";R 1540 GOTO 1680 1550 PRINT"END CIVIL TWILIGHT AT ";R 1560 GOTO 1680 1570 PRINT"BEGIN NAUTICAL TWILIGHT ";R 1580 GOTO 1680 1590 PRINT"END NAUTICAL TWILIGHT ";R 1600 GOTO 1680 1610 R=3DM 1620 GOSUB 1700 1630 PRINT"MOON MERIDIAN PASSAGE AT";R 1640 GOTO 1380 1650 PRINT"TIME OF MOONRISE ";R 1660 GOTO 1680 1670 PRINT"TIME OF MOONSET ";R 1680 NEXT I 1690 RETURN 1700 R=3DINT(100.*FNDMS(R*24.)+.5) 1710 RETURN 1720 TD#=3D218.32#+13.1764#*D# 1730 V=3DTD#-INT(TD#/360#)*360# 1740 IF V<O. THEN LET V=3DV+360. 1750 TD#=3D134.96#+13.06499#*D# 1760 Y=3D(TD#-INT(TD#/360#)*360#)*DR 1770 TD#=3D93.27#+13.22935#*D# 1780 O=3D(TD#-INT(TD#/360#)*360#)*DR 1790 TD#=3D235.7#+24.3815#*D# 1800 W=3D(TD#-INT(TD#/360#)*360#)*DR 1810 SB=3DSIN(Y) 1820 CB=3DCOS(Y) 1830 X=3DSIN(O) 1840 S=3DCOS(O) 1850 SD=3DSIN(W) 1860 CD=3DCOS(W) 1870 V=3DV+(6.29-1.27*CD+.43*CB)*SB+(.66+1.27*CB)*SD-.19*SIN(G)-.23*X*S 1880 V=3DV*DR 1890 Y=3D((5.13-.17*CD)*X+(.56*SB+.17*SD)*S)*DR 1900 SV=3DSIN(V) 1910 SB=3DSIN(Y) 1920 CB=3DCOS(Y) 1930 Q=3DCB*COS(V) 1940 P=3DCE*SV*CB-SE*SB 1950 SD=3DSE*SV*CB+CE*SB 1960 AS=3DATN(P/Q)*RD 1970 IF Q<O. THEN LET AS=3DAS+180. 1980 DS=3DFNARCSIN(SD) 1990 RETURN 2000 H=3D(A(L)-SI*SD)/(CI*COS(D))S 2010 IF ABS(H>1. THEN GOTO 2040 2020 H=3DFNARCOS(H)*RD/C 2030 RETURN 2040 H=3D1.5 2050 RETURN 2060 CD=3DCOS(PS) 2070 CS=3DCOS(H*DR) 2080 Q=3DSD*CI-CD*SI*CS 2090 P=3D-CD*SIN(H*DR) 2100 AZ=3DATN(P/Q)*RD 2110 IF Q<O. THEN LET AZ=3DAZ+180. 2120 IF AZ<O. THEN LET AZ=3DAZ+360. 2130 AZ=3DINT(AZ+.5) 2140 H=3DFNARCSIN(SO*SI+CD*CI*CS)*RD 2150 RETURN 2160 HA=3DH 2170 IF H<(-5./6.) THEN GOTO 2190 2180 HA=3DH+1./(TAN((H+8.59/(H+4.42))*DR))/60. 2190 RETURN 2200 U=3DSIN(HA*DR) 2210 X=3D753.6616 2220 S=3DFNARCSIN(X*COS(HA*DR)/(X+1.)) 2230 M=3DX*(COS(S)-U)+COS(S) 2240 M=3DEXP(-.21*M)*U+.0289*EXP(-.042*M)*(1.+(HA+90.)*U/57.29578) 2250 RETURN Thanks, Chris Maness
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANnsUMG-2yaGgY-_aXtt2UTTRPCGFgFzhE0_sF74%2B%2Bsaw5Uy1g>