100 REM PURPOSE -- 102 REM 104 REM THIS PROGRAM GIVES THE TIME OF 106 REM SUNRISE, SUNSET, AND TWILIGHT 108 REM (ASTRONOMICAL, NAUTICAL, AND 110 REM CIVIL) TO WITHIN A MINUTE OR 112 REM TWO DURING THE SECOND HALF OF 114 REM THE TWENTIETH CENTURY. 116 REM 118 REM INPUTS -- 120 REM 122 REM LATITUDE IN DEGREES, MINUTES, 124 REM AND SECONDS, NORTH IS POSITIVE. 126 REM EXAMPLE: 30,0028 REPRESENTS 30 128 REM DEGREES, 00 MINUTES, 28 SECONDS 130 REM NORTH LATITUDE. 132 REM 134 REM LONGITUDE IN DEGREES, MINUTES, 136 REM AND SECONDS. WEST IS POSITIVE. 138 REM EXAMPLE: 90.1109 REPRESENTS 90 140 REM DEGREES, 11 MINUTES, 09 SECONDS 142 REM WEST LONGITUDE. 144 REM 146 REM TIME ZONE IN HOURS AND MINUTES 148 REM THAT ARE ADDED TO WALL CLOCK 150 REM TIME TO YIELD UNIVERSAL TIME. 152 REM IN THE FORTY-EIGHT CONTIGUOUS 154 REM UNITED STATES, SEE TABLE BELOW. 156 REM 158 REM STANDARD DAYLIGHT 160 REM 162 REM EASTERN 5.00 4.00 164 REM CENTRAL 6.00 5.00 166 REM MOUNTAIN 7.00 6.00 168 REM PACIFIC 8.00 7.00 170 REM 172 REM YEAR (1951 THRU 2000) 174 REM 176 REM MONTH (1 THRU 12) 178 REM 180 REM DAY (1 THRU 31) 182 REM 184 REM OUYPUTS -- 186 REM 188 REM OUTPUTS ARE GIVEN IN HOURS AND 190 REM MINUTES ON A TWENTY-FOUR HOUR 192 REM BASIS. EXAMPLE: 6.25 REPRESENTS 194 REM 6:25 A.M., AND 18.25 REPRESENTS 196 REM 6:25 P.M. 198 REM 200 REM A ZERO OUTPUT INDICATES THAT 202 REM THE PHENOMENON DOES NOT OCCUR 204 REM ON THE SPECIFIED DATE. E.G., 206 REM THE SUN DOES NOT SET IN MID- 208 REM SUMMER AT HIGH LATITUDES. 210 REM 212 REM SAMPLE -- 214 REM 216 REM LAT 218 REM ? 30 33.3123 220 REM LON 222 REM ? 90 112.0205 224 REM ZONE 226 REM ? 5 7 228 REM YEAR 230 REM ? 1983 1984 232 REM MONTH 234 REM ? 5 12 236 REM DAY 238 REM ? 19 12 240 REM 242 REM A DAWN 4.33 5.55 244 REM N DAWN 5.06 6.25 246 REM C DAWN 5.38 6.56 248 REM SUNRIS 6.04 7.24 250 REM SUNSET 19.49 17.21 252 REM C DUSK 20.15 17.49 254 REM N DUSK 20.47 18.20 256 REM A DUSK 21.21 18.50 258 REM 260 REM ------------------------------- 262 REM 264 REM - CONSTANTS 266 REM 268 LET A=1.5708 270 LET B=3.14159 272 LET C=4.71239 274 LET D=6.28319 276 REM 278 REM - INPUTS 280 REM 282 PRINT "LAT" 284 INPUT Z 286 GOSUB 452 288 LET E=Z*1.74533E-2 290 REM 292 PRINT "LON" 294 INPUT Z 296 GOSUB 452 298 LET F=Z*1.74533E-2 300 REM 302 PRINT "ZONE" 304 INPUT Z 306 GOSUB 452 308 LET G=Z*2.61799E-1 310 REM 312 PRINT "YEAR" 314 INPUT H 316 REM 318 PRINT "MONTH" 320 INPUT I 322 REM 324 PRINT "DAY" 326 INPUT J 328 REM 330 REM - DAY OF YEAR 332 REM 334 LET K=INT((I+9)/12) 336 LET X=H/4 338 LET Y=INT(X) 340 LET Z=X-Y 342 IF Z=0 THEN 346 344 LET K=K*2 346 LET H=INT(275*I/9) 348 LET H=H+J-K-30 350 REM 352 REM - RISING PHENOMENA 354 REM 356 PRINT " " 358 REM 360 LET I=0 362 LET J=A 364 GOSUB 478 366 REM 368 LET R=-3.09017E-1 370 GOSUB 584 372 PRINT "A DAWN";V 374 REM 376 LET R=-2.07912E-1 378 GOSUB 584 380 PRINT "N DAWN";V 382 REM 384 LET R=-1.04528E-1 386 GOSUB 584 388 PRINT "C DAWN";V 390 REM 392 LET R=-1.45439E-2 394 GOSUB 584 396 PRINT "SUNRIS";V 398 REM 400 REM - SETTING PHENOMENA 402 REM 404 LET I=1 406 LET J=C 408 GOSUB 478 410 REM 412 LET R=-1.45439E-2 414 GOSUB 584 416 PRINT "SUNSET";V 418 REM 420 LET R=-1.04528E-1 422 GOSUB 584 424 PRINT "C DUSK";V 426 REM 428 LET R=-2.07912E-1 430 GOSUB 584 432 PRINT "N DUSK";V 434 REM 436 LET R=-3.09017E-1 438 GOSUB 584 440 PRINT "A DUSK";V 442 REM 444 GOTO 696 446 REM 448 REM - SEXADESIMAL TO DECIMAL 450 REM 452 LET W=1 454 IF Z>=0 THEN 460 456 LET W=-1 458 LET Z=ABS(Z) 460 LET X=INT(Z) 462 LET Z=(Z-X)*100 464 LET Y=INT(Z) 466 LET Z=(Z-Y)*100 468 LET Z=(X+Y/60+Z/3600)*W 470 RETURN 472 REM 474 REM - APPROXIMATE TIME 476 REM 478 LET K=H+((J+F)/D) 480 REM 482 REM - SOLAR MEAN ANOMALY 484 REM 486 LET L=K*1.7202E-2 488 LET L=L-5.74039E-2 490 REM 492 REM - SOLAR TRUE LONGITUDE 494 REM 496 LET Z=SIN (L) 498 LET M=L+3.34405E-2*Z 500 LET Z=SIN(2*L) 502 LET M=M+3.49066E-4*Z 504 LET M=M+4.93289 506 REM 508 REM - QUADRANT DETERMINATION 510 REM 512 LET Z=M 514 GOSUB 682 516 LET M=Z 518 LET X=M/A 520 LET Y=INT(X) 522 LET Z=X-Y 524 IF Z<>0 THEN 528 526 LET M=M+4.84814E-6 528 LET N=2 530 IF M>C THEN 544 532 LET N=1 534 IF M>A THEN 544 536 LET N=0 538 REM 540 REM - SOLAR RIGHT ASCENSION 542 REM 544 LET P=SIN(M)/COS(M) 546 LET P=ATN(.91746*P) 548 REM 550 REM - QUADRANT ADJUSTMENT 552 REM 554 IF N=0 THEN 570 556 IF N=2 THEN 562 558 LET P=P+B 560 GOTO 570 562 LET P=P+D 564 REM 566 REM - SOLAR DECLINATION 568 REM 570 LET Q=.39782*SIN (M) 572 LET Q=Q/SQR(-Q*Q+1) 574 LET Q=ATN(Q) 576 RETURN 578 REM 580 REM - COORDINATE CONVERSION 582 REM 584 LET S=R-(SIN(Q)*SIN(E)) 586 LET S=S/(COS(Q)*COS(E)) 588 REM 590 REM - NULL PHENOMENON 592 REM 594 LET Z=ABS(S) 596 IF Z<=1 THEN 608 598 LET V=0 600 RETURN 602 REM 604 REM -ADJUSTMENT 606 REM 608 LET S=S/SQR(-S*S+1) 610 LET S=-ATN(S)+A 612 IF I=1 THEN 622 614 LET S=D-S 616 REM 618 REM - LOCAL APPARENT TIME 620 REM 622 LET Z=1.72028E-2*K 624 LET T=S+P-Z-1.73364 626 REM 628 REM - UNIVERSAL TIME 630 REM 632 LET U=T+F 634 REM 636 REM - WALL CLOCK TIME 638 REM 640 LET V=U-G 642 REM 644 REM - DECIMAL TO SEXADESIMAL 646 REM 648 LET Z=V 650 GOSUB 682 652 LET Z=Z*3.81972 654 LET V=INT(Z) 656 LET W=(Z-V)*60 658 LET X=INT(W) 660 LET Y=W-X 662 IF Y<.5 THEN 666 664 LET X=X+1 666 IF X<60 THEN 672 668 LET V=V+1 670 LET X=0 672 LET V=V+X/100 674 RETURN 676 REM 678 REM - NORMALIZATION 680 REM 682 IF Z>=0 THEN 688 684 LET Z=Z+D 686 GOTO 682 688 IF Z