home *** CD-ROM | disk | FTP | other *** search
- 100 REM*****************************************************************
- 110 REM
- 120 REM BIORHYTHM WALL CALENDAR
- 130 REM
- 140 REM WRITTEN BY
- 150 REM
- 160 REM RON WILLIAMS
- 170 REM 1845 COCHRAN RD.
- 180 REM MORGAN HILL, CA 95037
- 190 REM (408) 779-8655
- 200 REM
- 210 REM BASED ON A CONCEPT BY
- 220 REM DR. ROBERT SMITH AT
- 230 REM CONTROL DATA CORP.
- 240 REM
- 250 REM
- 260 REM THE ONLY INPUT THE PROGRAM REQUIRES IS YOUR NAME AND YOUR
- 270 REM DATE OF BIRTH (GIVEN AS MM,DD,YYYY OR MM,DD,YY).
- 280 REM THIS PROGRAM PRINTS OUT A 12-MONTH CALENDER FOR 1978. IF SOME
- 290 REM PARTICULAR DAY HAS A 'P', AN 'S' OR AN 'I' INSTEAD OF A
- 300 REM NUMBER, IT MEANS THAT DAY IS A P(HYSICAL), S(ENSITIVITY) OR
- 310 REM I(NTELLECTUAL) CRITICAL DAY FOR YOU. A '+' OR '-' FOLLOWING
- 320 REM ONE OF THE THREE LETTERS ABOVE MEANS THE SINE CURVE IS
- 330 REM BEGINNING ITS UPWARD(+) OR DOWNWARD(-) SWING.
- 340 REM
- 350 REM IF TWO LETTERS APPEAR ON THE CALENDAR, IT MEANS YOU HAVE A
- 360 REM DOUBLE-CRITICAL DAY! (E.G. 'PS' MEANS YOUR PHYSICAL AND
- 370 REM SENSITIVITY CYCLES ARE BOTH CRITICAL ON THAT DAY).
- 380 REM
- 390 REM IF A DOUBLE ASTERISK (**) APPEARS ON THE CALENDAR, IT MEANS
- 400 REM ALL THREE CYCLES ARE CRITICAL ON THAT DAY! YOU'D BEST JUST
- 410 REM STAY HOME N BED!! ONE GOOD(?) THING YOU MIGHT SAY
- 420 REM ABOUT A TRIPLE-CRITICAL DAY IS THAT YOU ONLY HAVE 9 OF THEM
- 430 REM IN THE 58-YEAR BIORHYTHM LIFE CYCLE (YOUR THREE CYCLES
- 440 REM START OVER AGAIN ABOUT EVERY 58 YEARS).
- 450 REM
- 460 REM THIS PROGRAM WAS ORIGINALLY WRITTEN IN PL/M FOR THE INTELLEC
- 470 REM MICROCOMPUTER DEVELOPMENT SYSTEM.
- 480 REM BEING INNATELY LAZY, I MERELY TRANSLATED THE CODE (INSTEAD OF
- 490 REM REDESIGNING IT) WHEN I REWROTE IT IN MICROSOFT DISK BASIC.
- 500 REM THIS LAME EXCUSE IS MY WAY OF TELLING THE USER THAT THE
- 510 REM PROGRAM RUNS SLO-O-O-W AS COMPARED TO THE PL/M VERSION.
- 520 REM
- 530 REM
- 540 REM******************************************************************
- 550 REM
- 560 CLEAR 1000
- 570 DEFINT A-E:DEFINT G-Z
- 580 DIM CA(583),CB$(71)
- 590 WIDTH80
- 600 GOSUB 1600
- 610 LINEINPUT"PLEASE ENTER YOUR NAME ===> ";N$
- 620 INPUT"NOW ENTER YOUR BIRTHDATE (E.G. 5,22,1934) ===> ";MM,DD,YY
- 630 IF YY<1000 THEN YY=YY+1900
- 640 PRINT:LINEINPUT"POSITION PAPER AT TOP OF FORM, THEN HIT -RETURN-";A$
- 650 PRINT:PRINT"WAIT....YOUR BIORHYTHM CALENDAR WILL BE PRINTING SHORTLY....."
- 660 CY=1978
- 670 X=MM:Y=DD:Z=YY:IFX<3THENGOSUB1770ELSEGOSUB1780
- 680 F1=F
- 690 X=1:Y=1:Z=1978:GOSUB1770
- 700 TD=F-F1+1
- 710 IF CY MOD 4=0 THEN MV(13)=29
- 720 FOR K=0TO583:CA(K)=0:NEXT
- 730 MV(1)=MV(13):CP=SD(CY-1971)
- 740 FORJ=1TO12
- 750 L=MV(J-1)
- 760 RP=6*(J-1)+1
- 770 FOR K=1TOL
- 780 CA(CP+7*(RP-1))=K
- 790 CP=CP+1
- 800 IF CP>7 THEN CP=1:RP=RP+1
- 810 NEXT K
- 820 NEXTJ
- 830 CL=23:RP=0
- 840 FOR L=1 TO 3
- 850 MC=TD MOD CL
- 860 FOR J=1 TO 72
- 870 FOR K=1 TO 7
- 880 SL=K+7*(J-1)
- 890 IF CA(SL)=0 THEN 960
- 900 IF MC-CL\2-1 = 0 THEN 940
- 910 IF MC>CL THEN CA(SL)=CA(SL)+1000*(L+RP)+200:MC=1
- 920 MC=MC+1
- 930 GOTO 960
- 940 CA(SL)=CA(SL)+1000*(L+RP)+100
- 950 MC=MC+1
- 960 NEXT K
- 970 NEXT J
- 980 CL=CL+5:RP=RP+1
- 990 NEXT L
- 1000 REM
- 1010 L=0:KL=7*(CY-1971)
- 1020 FOR J=1TO7
- 1030 MG=10000
- 1040 FOR K=0TO71:CB$(K)=" ":NEXTK
- 1050 L=L+1:M=HP(L-1):IF M<>0 THEN CB$(M)="$":GOTO 1050
- 1060 CP=KL+J:K=HN(CP-1)
- 1070 IF K=0 THEN FOR I=48TO53:CB$(I)="$":NEXTI:GOTO 1120
- 1080 FOR N=1 TO 5:LP=K\MG:K=K-LP*MG
- 1090 IF LP<>0 THEN CB$(LP+47)="$"
- 1100 MG=MG\10
- 1110 NEXT N
- 1120 LPRINTTAB(5);:FOR I=0 TO 71:LPRINT CB$(I);:NEXT I:LPRINT
- 1130 NEXT J
- 1140 PRINT
- 1150 FOR I=0TO71:CB$(I)=" ":NEXT I
- 1160 LPRINT:LPRINTTAB(23);"BIORHYTHM CALENDAR FOR ";N$:LPRINT
- 1170 LPRINT:LPRINTTAB(11);"P=PHYSICAL S=SENSITIVITY I=INTELLECTUAL"
- 1180 LPRINTTAB(18);"+ = CURVE RISING - = CURVE FALLING"
- 1190 LPRINTTAB(25);"** = TRIPLE CRITICAL DAY!":LPRINT
- 1200 FOR L=1 TO 12 STEP 3
- 1210 ON L\3+1 GOSUB 1560,1570,1580,1590
- 1220 LPRINTTAB(5);" S M T W T F S S M T W T F S S M T W T F S":LPRINT
- 1230 N=6*(L-1)+1
- 1240 FOR M=1 TO 6
- 1250 LP=3
- 1260 RP=N
- 1270 JL=RP+12
- 1280 FOR K=0 TO 71:CB$(K)=" ":NEXT K
- 1290 IF RP>JL THEN 1500
- 1300 FOR K=1 TO 7
- 1310 IF CA(K+7*(RP-1))=0 THEN 1460
- 1320 SL=K+7*(RP-1)
- 1330 IF CA(SL)>8500 THEN CB$(LP)="*":CB$(LP-1)="*":GOTO1460
- 1340 IF CA(SL)>8200 THEN CB$(LP)="I":CB$(LP-1)="S":GOTO1460
- 1350 IF CA(SL)>6200 THEN CB$(LP)="I":CB$(LP-1)="P":GOTO1460
- 1360 IF CA(SL)>5200 THEN CB$(LP)="+":CB$(LP-1)="I":GOTO1460
- 1370 IF CA(SL)>5100 THEN CB$(LP)="-":CB$(LP-1)="I":GOTO1460
- 1380 IF CA(SL)>4200 THEN CB$(LP)="S":CB$(LP-1)="P":GOTO1460
- 1390 IF CA(SL)>3200 THEN CB$(LP)="+":CB$(LP-1)="S":GOTO1460
- 1400 IF CA(SL)>3100 THEN CB$(LP)="-":CB$(LP-1)="S":GOTO1460
- 1410 IF CA(SL)>1200 THEN CB$(LP)="+":CB$(LP-1)="P":GOTO1460
- 1420 IF CA(SL)>1100 THEN CB$(LP)="-":CB$(LP-1)="P":GOTO1460
- 1430 CB$(LP)=MID$(STR$(CA(SL) MOD 10),2)
- 1440 CB$(LP-1)=MID$(STR$(CA(SL)\10),2)
- 1450 IF CB$(LP-1)="0"THENCB$(LP-1)=" "
- 1460 LP=LP+3
- 1470 NEXT K
- 1480 RP=RP+6:LP=LP+4
- 1490 GOTO 1290
- 1500 LPRINTTAB(5);:FOR I=0 TO 71:LPRINTCB$(I);:NEXT I:LPRINT
- 1510 N=N+1
- 1520 NEXT M
- 1530 LPRINT
- 1540 NEXT L
- 1550 END
- 1560 LPRINTTAB(5);" J A N U A R Y F E B R U A R Y M A R C H":LPRINT:RETURN
- 1570 LPRINTTAB(5);" A P R I L M A Y J U N E":LPRINT:RETURN
- 1580 LPRINTTAB(5);" J U L Y A U G U S T S E P T E M B E R":LPRINT:RETURN
- 1590 LPRINTTAB(5);" O C T O B E R N O V E M B E R D E C E M B E R":LPRINT:RETURN
- 1600 DIM HP(49)
- 1610 FOR I=0TO48:READHP(I):NEXT
- 1620 DATA 21,29,30,31,32,38,39,40,41,42,43,0,20,21,28,33,38,43,0
- 1630 DATA 19,21,28,32,33,41,42,0,21,29,30,31,33,40,0,21,32,40,0
- 1640 DATA 21,31,40,0,19,20,21,22,30,40,0
- 1650 DIM MV(24)
- 1660 FOR I=0TO23:READMV(I):NEXT
- 1670 DATA 31,28,31,30,31,30,31,31,30,31,30,31,31,28,31,30,31,30,31,31
- 1680 DATA 30,31,30,31
- 1690 DIM SD(9)
- 1700 FOR I=0TO8:READSD(I):NEXT
- 1710 DATA 6,7,2,3,4,5,7,1,2
- 1720 DIM HN(63)
- 1730 FOR I=49 TO 55:READHN(I):NEXT
- 1740 DATA 2345,16,16,2345,16,16,2345
- 1750 PRINT:PRINT
- 1760 RETURN
- 1770 F=365*Z+Y+31*(X-1)+INT((Z-1)/4)-INT(.75*(INT((Z-1)/100)+1)):RETURN
- 1780 F=365*Z+Y+31*(X-1)-INT(.4*X+2.3)+INT(Z/4)-INT(.75*(INT(Z/100)+1)):RETURN
- NT((Z-1)/4)-INT(.75*(INT((Z-1)/10