1 PRINT "FROM THE APRIL 1984 ASTRONOMY, PAGES 75-77, AS CORRECTED IN THE" 2 PRINT "JULY 1984 ASTRONOMY, PAGES 33-34." 9 PRINT 100 PRINT "--PURPOSE" 102 PRINT 104 PRINT "THIS PROGRAM CALCULATES THE BEGINNING OF DAWN (ASTRONOMICAL," 106 PRINT "NAUTICAL, AND CIVIL), SUNRISE, SUNSET, AND THE END OF DUSK" 108 PRINT "(CIVIL, NAUTICAL, AND ASTRONOMICAL). IT IS ACCURATE TO" 110 PRINT "WITHIN A MINUTE OR SO DURING THE SECOND HALF OF THE TWENTIETH" 112 PRINT "CENTURY. ITS PRECISION DEGRADES NEAR THE POLES WHEN THE SUN" 114 PRINT "REMAINS CLOSE TO THE HORIZON FOR LONG PERIODS OF TIME." 116 PRINT 118 PRINT "--INPUTS--" 120 PRINT 122 PRINT "LAT. : LATITUDE EXPRESSED IN DEGREES, MINUTES, AND SECONDS" 124 PRINT " WHERE NORTH IS POSITIVE AND SOUTH IS NEGATIVE. FOR" 126 PRINT " EXAMPLE, 30.0029 REPRESENTS 30 DEGREES, 00 MINUTES," 128 PRINT " 29 SECONDS NORTH LATITUDE." 130 PRINT 132 PRINT "LON. : LONGITUDE EXPRESSED IN DEGREES, MINUTES, AND SECONDS" 134 PRINT " WHERE WEST IS POSITIVE AND EAST IS NEGATIVE. FOR" 136 PRINT " EXAMPLE, 90.1108 REPRESENTS 90 DEGREES, 11 MINUTES," 138 PRINT " 08 SECONDS WEST LONGITUDE." 140 PRINT 142 PRINT "YEAR : ENTER A NUMBER BETWEEN 1951 AND 2000 INCLUSIVE." 144 PRINT 146 PRINT "MONTH : ENTER A NUMBER BETWEEN 1 AND 12 INCLUSIVE." 148 PRINT 150 PRINT "DAY : ENTER A NUMBER BETWEEN 1 AND 31 INCLUSIVE." 152 PRINT 154 PRINT "ZONE : TIME ZONE, I.E., THE TIME IN HOURS AND MINUTES THAT" 156 PRINT " IS ADDED TO WALL CLOCK TIME TO YIELD UNIVERSAL TIME." 158 PRINT " IN THE FORTY-EIGHT CONTIGUOUS UNITED STATES, REFER" 160 PRINT " TO THE TABLE BELOW." 162 PRINT 164 PRINT " STANDARD DAYLIGHT" 166 PRINT 168 PRINT " EASTERN 5.00 4.00" 170 PRINT " CENTRAL 6.00 5.00" 172 PRINT " MOUNTAIN 7.00 6.00" 174 PRINT " PACIFIC 8.00 7.00" 176 PRINT 178 PRINT "--OUTPUTS--" 180 PRINT 182 PRINT "OUTPUTS ARE EXPRESSED IN HOURS AND MINUTES ON A TWENTY-FOUR" 184 PRINT "HOUR BASIS. FOR EXAMPLE, 6.25 REPRESENTS 6:25 A.M. AND 18.25" 186 PRINT "REPRESENTS 6:25 P.M." 188 PRINT 190 PRINT "THE OUTPUT 0.00 IS A SPECIAL CASE. IT INDICATES THAT THE" 192 PRINT "PHENOMENON DOES NOT OCCUR ON THE SPECIFIC DATE. FOR EXAMPLE," 194 PRINT "THE SUN DOES NOT SET IN MIDSUMMER AT HIGH LATITUDES." 196 PRINT 198 REM 200 REM - CONSTANTS 202 REM 204 A=1.5708 206 B=3.14159 208 C=4.71239 210 D=6.28319 212 REM 214 REM - INPUTS 216 REM 218 INPUT "LAT. ";Z 220 GOSUB 378 222 E=Z*.0174533 224 REM 226 INPUT "LON. ";Z 228 GOSUB 378 230 F=Z*.0174533 232 REM 234 INPUT "YEAR ";H 235 IF H=0 THEN RUN "ASTRMENU.BAS" 236 INPUT "MONTH ";I 238 INPUT "DAY ";J 240 REM 242 INPUT "ZONE ";Z 244 GOSUB 378 246 G=Z*.261799 248 REM 250 REM - DAY OF YEAR 252 REM 254 K=INT((I+9)/12) 256 X=H/4 258 Y=INT(X) 260 Z=X-Y 262 IF Z=0 THEN 266 264 K=K*2 266 H=INT(275*I/9) 268 H=H+J-K-30 270 REM 272 REM - RISING PHENOMENA 274 REM 276 PRINT " " 278 REM 280 I=0 282 J=A 284 GOSUB 404 286 REM 288 R=-.309017 290 GOSUB 510 292 PRINT "A DAWN ";V 294 REM 296 R=-.207912 298 GOSUB 510 300 PRINT "N DAWN ";V 302 REM 304 R=-.104528 306 GOSUB 510 308 PRINT "C DAWN ";V 310 REM 312 R=-.0145439 314 GOSUB 510 316 PRINT "SUNRIS ";V 318 REM 320 REM - SETTING PHENOMRNA 322 REM 324 I=1 326 J=C 328 GOSUB 404 330 REM 332 R=-.0145439 334 GOSUB 510 336 PRINT "SUNSET ";V 338 REM 340 R=-.104528 342 GOSUB 510 344 PRINT "C DUSK ";V 346 REM 348 R=-.207912 350 GOSUB 510 352 PRINT "N DUSK ";V 354 REM 356 R=-.309017 358 GOSUB 510 360 PRINT "A DUSK ";V 362 REM 364 PRINT " " 366 PRINT "------------" 368 PRINT " " 369 PRINT "TYPE 0 AT THE NEXT PROMPT TO END" : PRINT " " 370 GOTO 234 372 REM 374 REM - SEXAGESIMAL TO DECIMAL 376 REM 378 W=1 380 IF Z>=0 THEN 386 382 W=-1 384 Z=ABS(Z) 386 X=INT(Z) 388 Z=(Z-X)*100 390 Y=INT(Z) 392 Z=(Z-Y)*100 394 Z=(X+Y/60+Z/3600)*W 396 RETURN 398 REM 400 REM - APPROXIMATE TIME 402 REM 404 K=H+((J+F)/D) 406 REM 408 REM - SOLAR MEAN ANOMALY 410 REM 412 L=K*.017202 414 L=L-.0574039 416 REM 418 REM - SOLAR TRUE LONGITUDE 420 REM 422 Z=SIN(L) 424 M=L+.0334405*Z 426 Z=SIN(2*L) 428 M=M+3.49066E-04*Z 430 M=M+4.93289 432 REM 434 REM - QUADRANT DETERMINATION 436 REM 438 Z=M 440 GOSUB 608 442 M=Z 444 X=M/A 446 Y=INT(X) 448 Z=X-Y 450 IF Z<>0 THEN 454 452 M=M+4.84814E-06 454 N=2 456 IF M>C THEN 470 458 N=1 460 IF M>A THEN 470 462 N=0 464 REM 466 REM - SOLAR RIGHT ASCENSION 468 REM 470 P=.91746*TAN(M) 472 P=ATN(P) 474 REM 476 REM - QUADRANT ADJUSTMENT 478 REM 480 IF N=0 THEN 496 482 IF N=2 THEN 488 484 P=P+B 486 GOTO 496 488 P=P+D 490 REM 492 REM - SOLAR DECLINATION 494 REM 496 Q=.39782*SIN(M) 498 Q=Q/SQR(-Q*Q+1) 500 Q=ATN(Q) 502 RETURN 504 REM 506 REM - COORDINATE CONVERSION 508 REM 510 S=R-(SIN(Q)*SIN(E)) 512 S=S/(COS(Q)*COS(E)) 514 REM 516 REM - NULL PHENOMENON 518 REM 520 Z=ABS(S) 522 IF Z<=1 THEN 534 524 V=0 526 RETURN 528 REM 530 REM - ADJUSTMENT 532 REM 534 S=S/SQR(-S*S+1) 536 S=-ATN(S)+A 538 IF I=1 THEN 548 540 S=D-S 542 REM 544 REM - LOVAL APPARENT TIME 546 REM 548 Z=.0172028*K 550 T=S+P-Z-1.73364 552 REM 554 REM - UNIVERSAL TIME 556 REM 558 U=T+F 560 REM 562 REM - WALL CLOCK TIME 564 REM 566 V=U-G 568 REM 570 REM - DECIMAL TO SEXAGESIMAL 572 REM 574 Z=V 576 GOSUB 608 578 Z=Z*3.81972 580 V=INT(Z) 582 W=(Z-V)*60 584 X=INT(W) 586 Y=W-X 588 IF Y<.5 THEN 592 590 X=X+1 592 IF X<60 THEN 598 594 V=V+1 596 X=0 598 V=V+X/100 600 RETURN 602 REM 604 REM - NORMALIZATION 606 REM 608 IF Z>=0 THEN 614 610 Z=Z+D 612 GOTO 608 614 IF Z