10  REM************************************************************
20  REM** COPYRIGHT 1971 BY THE REGENTS OF THE UNIV. OF CALIF.   **
30  REM** PRODUCED AT THE LAWRENCE HALL OF SCIENCE, BERKELEY     **
40  REM** [MODIFIED AND DOCUMENTED BY THE AARDVARK AT THE PCC]   **
50  REM************************************************************
60  REM
70  DIM A$[21],B$[36],C$[72],A[12]
80  REM** A IS AN ARRAY CONTAINING THE NUMBER OF DAYS IN EACH MONTH
90  MAT  READ A
100  REM** FNY IS THE NUMBER OF DAYS IN FEBRUARY OF THE YEAR Y
110  DEF FNY()=29-SGN(/4-INT(/4))
120  REM**  FNS IS THE SINEWAVE FUNCTION
130  DEF FNS()=INT(14*SIN((/P-INT(/P))*6.28318)+30.5)
140  REM** FNM IS THE REMAINDER OF X AND 7
150  DEF FNM()=INT(7*(/7-INT(/7))+.5)
160  A$="MONTUEWEDTHUFRISATSUN"
170  B$="JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"
180  PRINT " DO YOU KNOW WHAT A BIORHYTHM IS [Y-N]";
190  INPUT C$
200  IF C$[1,1]="Y" THEN 500
210  PRINT "     THE BIORYTHEM THEORY POSTULATES THAT THERE ARE CERTAIN"
220  PRINT "METABOLIC RHYTHMS THAT HAVE A CONSTANT CYCLE TIME IN THE HUMAN"
230  PRINT "BODY, AND ARE KNOWN AS INNER CLOCKS."
240  PRINT "    TWO PHYSICIANS, ONE A CONTEMPORARY OF FREUD, CONCURRENTLY"
250  PRINT "DESCRIBED A 23-DAY CYCLE THAT CORRELATED WITH PHYSICAL "
260  PRINT "VITALITY, ENDURANCE, AND ENERGY; AND A 28-DAY CYCLE THAT"
270  PRINT "CORRESPONDS TO SENSITIVITY, INTUITION, AND CHEERFULNESS. A"
280  PRINT "THIRD CYCLE WAS OBSERVED BY A PROFESSER AND OTHERS IN THE"
290  PRINT "1920'S AND 1930'S, AND IS A 33-DAY COGNITIVE OR INTELLECTUAL"
300  PRINT "CYCLE THAT RELATES TO MENTAL ALERTNESS AND JUDGEMENT."
310  PRINT "    ALL THREE CYCLES START UP FROM BIRTH OR THE BEGINNING OF"
320  PRINT "INDEPENDENT LIFE."
330  PRINT "     THE DAYS ON WHICH THE MEDIAN (0) LINE IS CROSSED ARE "
340  PRINT "CALLED CRITICAL DAYS, ESPECIALLY FOR THE PHYSICAL AND SEN-"
350  PRINT "SITIVITY CYCLES AND ARE WHEN ACCIDENTS ARE THE MOST LIKELY"
360  PRINT "TO OCCUR.  THE HIGH (+) PERIODS IN THE VARIOUS CYCLES ARE THE"
370  PRINT "TIMES WHEN YOU SHOULD HAVE THE MOST ENERGY, BE MOST CHEERFUL,"
380  PRINT "OUTGOING AND MENTALLY ALERT.  THE LOW (-) TIMES ARE REGARDED"
390  PRINT "AS RECUPERITIVE PERIODS."
400  PRINT "     ALTHOUGH ALL CYCLES ARE SAID TO START FROM ZERO AT THE"
410  PRINT "TIME OF BIRTH, BIORHYTHM HAS NOTHING TO DO WITH ASTROLOGY."
420  PRINT "     A TOKYO TAXI COMPANY HAS REPORTED A 60% CUT IN ACCIDENTS"
430  PRINT "BY GIVING DRIVERS AN 'EXTRA-CAREFUL-TODAY'REMINDER ON "
440  PRINT "CRITICAL DAYS"
450  PRINT '10"GRAPH SYMBOLS:"'13'10'10"    I : MEDIAN LINE        (0 LINE)"
460  PRINT "    P : PHYSICAL CYCLE     (23-DAY)"
470  PRINT "    S : SENSITIVITY CYCLE  (28-DAY)"
480  PRINT "    C : COGNITIVE CYCLE    (33-DAY)"
490  PRINT '10'10
500  K=1
510  PRINT " BIRTHDAY [MM,DD,YYYY]";
520  INPUT M,D,Y
530  REM** THE BELOW REDUCES A NUMBER TO ONLY ITS 10'S AND 1'S DIGITS
540  Y=INT(100.1*(Y/100-INT(Y/100)))
550  REM** CHECK FOR ERRORS
560  A[2]=FNY(Y)
570  IF M<1 OR M>12 OR ABS(M)#INT(M) THEN 1550
580  IF D<1 OR D>A[M] OR INT(D) <> ABS(D) THEN 1570
590  REM** NOW CONVERT D TO JULIAN
600  FOR I=1 TO M-1
610  D=D+A[I]
620  NEXT I
630  K=2
640  PRINT " PLOT STARTING DATE [MM,DD,YYYY]";
650  INPUT M1,D1,Y1
660  D0=D1
670  REM** THE BELOW DOES THE SAME AS THE ABOVE FOR PLOT DATE
680  Y1=INT(100.1*(Y1/100-INT(Y1/100)))
690  A[2]=FNY(Y1)
700  IF M1<1 OR M1>12 OR ABS(M1)#INT(M1) THEN 1550
710  IF D1<1 OR D1>A[M] OR INT(D1)#ABS(D1) THEN 1570
720  FOR I=1 TO M1-1
730  D1=D1+A[I]
740  NEXT I
750  REM** 'S' WILL END UP BEING HOW MANY DAYS FROM BIRTH TO PLOT DATE
760  S=0
770  REM** FIRST, ADD IN LEAP YEARS FROM BIRTH TO PLOT DATE
780  FOR I=Y+1 TO Y1-1
790  S=S+(I/4=INT(I/4))
800  NEXT I
810  REM** NOW CHECK FOR BIRTH YEAR BEING LEAP
820  S=S+(Y/4=INT(Y/4) AND D>58)
830  REM** WE ADD HOW MANY YEARS OLD YOU ARE * 365
840  S=S+(Y1-Y-1+(D1 >= D))*365
850  REM** AND FINALLY, WE ADD HOW MANY DAYS SINCE THE LAST BIRTHDAY
860  S=S+(D1 >= D)*(D1-D)
870  S=S+(D1<D)*(730-D-D1)
880  IF S<0 THEN 1590
890  REM** D3= HOW MANY DAYS FROM THE YEAR 1900 TO PLOT DATE
900  D3=Y1*365+D1
910  FOR I=1 TO Y1-1
920  D3=D3+(I/4=INT(I/4))
930  NEXT I
940  PRINT " HOW MANY DAYS DO YOU WANT PLOTTED";
950  INPUT D9
960  D9=D9*2
970  D1=D0
980  REM**            START OF PRINTING  *******************************
990  PRINT '10'10;TAB(20);"(-)     (0)     (+)"'10
1000  FOR Q=1 TO D9
1010  REM** C$ IS THE OUTPUT STRING
1020  C$=""
1030  IF D1 <> INT(D1) THEN 1130
1040  REM************* SET UP DATE*******
1050  E=FNM(D3-1)+1
1060  REM** YOU WILL NOTE THAT 1/1/1900 WAS A MONDAY
1070  PRINT A$[3*E-2,3*E];
1080  PRINT D1;
1090  IF D1 <> 1 THEN 1130
1100  PRINT B$[3*M1-2,3*M1];
1110  PRINT Y1;
1120  REM*********** SET UP PRINTING****
1130  FOR X=LEN(C$)+1 TO 72
1140  C$[X,X]=" "
1150  NEXT X
1160  FOR X=1 TO 3
1170  P=5*X+18
1180  X[X]=FNS(S)
1190  NEXT X
1200  C$[30,30]="I"
1210  C$[X[1],X[1]]="P"
1220  IF X[1]#X[2] OR X[1]#X[3] OR X[2]#X[3] THEN 1250
1230  C$[X[1],X[1]]="*"
1240  GOTO 1350
1250  IF X[1]#X[2] THEN 1280
1260  C$[X[3],X[3]]="C"
1270  GOTO 1290
1280  IF X[2]#X[3] THEN 1310
1290  C$[X[2],X[2]]="*"
1300  GOTO 1350
1310  C$[X[2],X[2]]="S"
1320  IF X[1]=X[3] THEN 1230
1330  C$[X[3],X[3]]="C"
1340  REM** OUTPUT C$
1350  FOR X=15 TO 72
1360  IF C$[X,X]=" " THEN 1380
1370  PRINT TAB(X-1);C$[X,X];
1380  NEXT X
1390  PRINT 
1400  REM**  RESET DATE
1410  D3=D3+.5
1420  S=S+.5
1430  D1=D1+.5
1440  IF D1<A[M1]+1 THEN 1510
1450  D1=1
1460  M1=M1+1
1470  IF M1<13 THEN 1510
1480  M1=1
1490  Y1=Y1+1
1500  A[2]=FNY(Y)
1510  NEXT Q
1520  PRINT '10'10'10
1530  GOTO 180
1540  REM**       ERRORS  ***
1550  PRINT '10'7"IMPROPER MONTH"
1560  GOTO 1580
1570  PRINT '10'7"IMPROPER DAY"
1580  GOTO K OF 510,640
1590  PRINT '10'7"PLOT STARTING DATE EARLIER THEN BIRTHDAY"
1600  GOTO 640
1610  DATA 31,28,31,30,31,30,31,31,30,31,30,31
1620  END 
