home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG003.ARK / BIOPRINT.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  7KB  |  184 lines

  1. REM BIORHYTHMS ADAPTED BY W.A.BURTON FROM 'ANONYMOUS' PROGRAM
  2. REM WRITTEN FOR 11 INCH (66 LINE) HARDCOPY PAPER
  3.  
  4.  
  5. REM        INITIALIZE
  6. PAGE.NUMBER=1 : COUNTER=0
  7. DATA JAN,FEB,MAR,APR,MAY,JUN
  8. DATA JUL,AUG,SEP,OCT,NOV,DEC
  9. DATA SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY
  10. DATA SUN,MON,TUE,WED,THU,FRI,SAT,EXTRA.DAY
  11. DATA 33,28,23
  12. DATA I,E,P
  13. DATA 31,28,31,30,31,30,31,31,30,31,30,31
  14. DIM DATE(12),F(3),F$(3),MONTH$(12),LONG.DAY$(7),SHORT.DAY$(8)
  15. FOR I=1 TO 12: READ MONTH$(I):         NEXT I
  16. FOR I=1 TO 7:  READ LONG.DAY$(I):      NEXT I
  17. FOR I=1 TO 8:  READ SHORT.DAY$(I):     NEXT I
  18. FOR I=1 TO 3:  READ F(I):              NEXT I
  19. FOR I=1 TO 3:  READ F$(I):             NEXT I
  20. FOR I=1 TO 12: READ DATE(I):           NEXT I
  21.  
  22. DEF FNCYCLE(X,J)=INT(20*SIN(6.28318*X/J)+0.5)+42
  23. DEF FNFIN(X$)=66-LEN(X$)
  24. DEF FNSTAR(X$)=INT((64-LEN(X$))/2)
  25. DEF FNYEAR$(Y)="19"+LEFT$(STR$(Y),2)
  26. DEF FNSTRING$(LAST$,FIG$,POSITION)=LEFT$(LAST$,POSITION-1)  \
  27.     +FIG$+MID$(LAST$,POSITION+1,1000)
  28.  
  29. INPUT "WHAT IS YOUR NAME";SUBJECT$
  30. INPUT "BIRTHDATE (MO,DAY,Y)";BM,BD,BY
  31. BM=INT(BM): BD=INT(BD): BY=INT(BY)
  32. M=BM: D=BD: Y=BY: GOSUB 1000
  33. BW=W
  34. BT=JD
  35.  
  36. INPUT "CHART START (MO,DAY,YR)";SM,SD,SY : PRINT
  37. PRINT "                    ***  INSTRUCTIONS  ***" : PRINT
  38. PRINT "THIS PROGRAM IS FORMATTED TO PRINT ON 11 INCH (66 LINE) PAPER." : PRINT
  39. PRINT "THE NEXT QUESTION YOU WILL BE ASKED WILL BE: CHART DAYS ?"
  40. PRINT "THIS MEANS 'HOW MANY DAYS SHALL WE PLOT'..."
  41. PRINT "KEY IN YOUR RESPONSE, BUT DON'T HIT RETURN UNTIL YOU HAVE :"
  42. PRINT "        1 - ADVANCED THE PAPER IN YOUR PRINTER TO VERY TOP OF PAGE"
  43. PRINT "        2 - SWITCHED FROM 'LOCAL' TO 'LINE' MODE"
  44. PRINT "WHEN NOS. 1 & 2 ARE DONE, HIT CARRIAGE RETURN"
  45. INPUT "CHART DAYS";CHART.DAYS
  46. FOR PRINT.LOOP=1 TO 4 : PRINT : NEXT PRINT.LOOP
  47. SM=INT(SM): SD=INT(SD): SY=INT(SY)
  48. M=SM: D=SD: Y=SY: GOSUB 1000
  49. SW=W
  50. ST=JD
  51.  
  52. REM        TIMES TO BIRTH & START
  53. ELAPSED.DAYS=ST-BT
  54.  
  55. REM        PART 1
  56. HEADING$="BIO-RHYTHM ANALYSIS FOR "+SUBJECT$
  57. PART.1$="  "
  58. STAR=FNSTAR(HEADING$)
  59. FOR I=1 TO STAR: PART.1$=PART.1$+" ": NEXT I
  60. PART.1$=PART.1$+HEADING$
  61. FIN=FNFIN(PART.1$)
  62. FOR I=1 TO FIN: PART.1$=PART.1$+" ": NEXT I
  63. PRINT PART.1$
  64.  
  65.   REM        PART 2
  66. HEADING$="STARTING DATE: "+LONG.DAY$(SW)+", "+MONTH$(SM)+" "  \
  67.     +STR$(SD)+", "+FNYEAR$(SY)
  68. PART.2$="  "
  69. STAR=FNSTAR(HEADING$)
  70. FOR I=1 TO STAR: PART.2$=PART.2$+" ": NEXT I
  71. PART.2$=PART.2$+HEADING$
  72. FIN=FNFIN(PART.2$)
  73. FOR I=1 TO FIN: PART.2$=PART.2$+" ": NEXT I
  74. PRINT PART.2$
  75.  
  76. REM         PART 3
  77. HEADING$="BIRTHDATE: "+LONG.DAY$(BW)+", "+MONTH$(BM)+" "+STR$(BD)    \
  78.     +", "+FNYEAR$(BY)
  79. PART.3$="  "
  80. STAR=FNSTAR(HEADING$)
  81. FOR I=1 TO STAR: PART.3$=PART.3$+" ": NEXT I
  82. PART.3$=PART.3$+HEADING$
  83. FIN=FNFIN(PART.3$)
  84. FOR I=1 TO FIN: PART.3$=PART.3$+" ": NEXT I
  85. PRINT PART.3$
  86. FOR PRINT.LOOP=1 TO 8 : PRINT : NEXT PRINT.LOOP
  87. PRINT "                       *** BIORHYTHM THEORY ***" : PRINT
  88. PRINT "AT THE TIME WHEN EACH OF US IS BORN, WE ARE GOVERNED BY THE CYCLES"
  89. PRINT "OF SEVERAL PREDICTABLE RHYTHMS WHICH AFFECT OUR BEHAVIOUR, FORTUNE,"
  90. PRINT "AND HAPPINESS THROUGHOUT OUR LIFETIMES." : PRINT
  91. PRINT "BIORHYTHM ANALYSIS ASSERTS THAT THERE ARE THREE PRIMARY RHYTHMS"
  92. PRINT "WHICH MOST CERTAINLY AFFECT ONE'S ENTIRE LIFE, BUT WHICH CAN BE"
  93. PRINT "ACCURATELY FORECAST, KNOWING ONLY A SUBJECT'S BIRTHDATE." : PRINT
  94. PRINT "IT IS ASSUMED THAT AT BIRTH (A CRISIS TIME) THE THREE MAJOR RHYTHMS:"
  95. PRINT "1) PHYSICAL, 2) EMOTIONAL AND 3) INTELLECTUAL START AN 'UPWARD'"
  96. PRINT "TREND. THE PERIODS OF THESE RHYTHMS ARE AS FOLLOWS:" : PRINT
  97. PRINT "        PHYSICAL     (P)  23 DAY CYCLE"
  98. PRINT "        EMOTIONAL    (E)  28 DAY CYCLE"
  99. PRINT "        INTELLECTUAL (I)  33 DAY CYCLE" : PRINT
  100. PRINT "THESE THREE CYCLES EXHIBIT THE FORM OF A PURE SINE WAVE; THAT IS TO"
  101. PRINT "SAY THAT EACH WILL BE IN A POSITIVE (UP) POSITION FOR NEARLY HALF"
  102. PRINT "A FULL CYCLE, AND LIKEWISE EACH FULL CYCLE WILL EXHIBIT NEGATIVE"
  103. PRINT "(DOWN) QUALITIES DURING ALMOST HALF OF ITS DUTY-CYCLE." : PRINT
  104. PRINT "FOR EXAMPLE: LET US ASSUME THAT A PHYSICAL (23 DAY) CYCLE STARTED"
  105. PRINT "AT A POINT THAT WAS NEITHER POSITIVE NOR NEGATIVE (UP NOR DOWN),"
  106. PRINT "THE CYCLE WOULD START DURING SUCH A 'NEUTRAL' (CRISIS) DAY."
  107. PRINT "HALF WAY THRU THE 23 DAY CYCLE ANOTHER SUCH DAY WILL OCCUR, AND FI-"
  108. PRINT "NALLY, THE PHYSICAL CYCLE WILL END ON A THIRD SUCH DAY. THIS LEAVES"
  109. PRINT "APP. 20 DAYS WHICH ARE EITHER 'UP' OR 'DOWN'." : PRINT
  110. PRINT "IT CAN BE SAID THAT WHEN ANY OF A PERSON'S THREE BIORHYTHMS"
  111. PRINT "ARE 'UP', THEN THE PORTION OF THEIR LIFE GOVERNED BY THAT RHYTHM IS"
  112. PRINT "GOING WELL. WHEN ANY RHYTHM'S ARE 'DOWN', THAT IS A TIME WHEN THE"
  113. PRINT "CORRESPONDING PART OF THEIR LIFE HAS 'SLOWED DOWN FOR REST & RECHARGE'."
  114. PRINT
  115. PRINT "THE CRITICAL DAYS OCCUR WHEN ANY CURVE MAKES A TRANSITION FROM 'UP'"
  116. PRINT "TO 'DOWN' OR VICE-VERSA. DURING THESE CRISES, A PERSON MAY WELL"
  117. PRINT "BE BETRAYED BY THE RHYTHM(S) IN TRANSITION. THE CRISIS IS GREATLY"
  118. PRINT "MAGNIFIED IF MORE THAN ONE RHYTHM IS IN A CRISIS PERIOD. SEVERAL"
  119. PRINT "TIMES DURING A NORMAL LIFETIME, THREE SIMULTANEOUS CRISES WILL OCCUR"
  120. PRINT "ON A SINGLE DAY! THESE ARE VERY,VERY BAD DAYS. THE WORST CASE POSSIBLE"
  121. PRINT "OCCURS WHEN THREE RHYTHMS PASS FROM THEIR 'UP' CYCLES TO THEIR 'DOWN'"
  122. PRINT "CYCLES ON THE SAME DAY..."
  123. PRINT "EXAMPLE: PLOT YOUR BIORHYTHM CHART FOR APP. A MONTH BEFORE YOUR THIRTY-"
  124. PRINT "FIFTH BIRTHDAY."
  125. FOR PRINT.LOOP=1 TO 8 : PRINT : NEXT PRINT.LOOP
  126.  
  127. REM        PART 4
  128. BLANK$="                "
  129. PART.4$="  "+BLANK$+"DOWN"+BLANK$+"CRITICAL"+BLANK$+"UP"
  130. PRINT TAB(60); "PAGE "; PAGE.NUMBER
  131. PAGE.NUMBER=PAGE.NUMBER+1
  132. PRINT: PRINT PART.4$
  133. FOR PRINT.LOOP=1 TO 68 : PRINT "-"; : NEXT PRINT.LOOP : PRINT
  134.     IF Y/4 = INT(Y/4) THEN LY=1 ELSE LY=0
  135.     OUTPUT$=SHORT.DAY$(SW)+" "+STR$(SD)+MONTH$(SM)
  136.    REM        SET UP STARTING POSITIONS
  137. DUMMY$="                                         :                     "
  138. REM    START CYCLE
  139.     FOR J=1 TO CHART.DAYS
  140.     START$=SHORT.DAY$(W)+" "+STR$(D)
  141.     IF J = 1 OR D = 1 THEN START$=START$+" "+MONTH$(M)
  142.     OUTPUT$=START$+MID$(DUMMY$,LEN(START$)+1,1000)
  143.         FOR I=1 TO 3
  144.         POSIT=FNCYCLE(ELAPSED.DAYS,F(I))
  145.         OUTPUT$=FNSTRING$(OUTPUT$,F$(I),POSIT)
  146.         NEXT I
  147.     PRINT OUTPUT$
  148.     COUNTER=COUNTER+1
  149.     IF COUNTER > 55 THEN GOSUB 2000
  150.     IF J = CHART.DAYS THEN 600
  151.     L=DATE(M)
  152.     IF M = 2 AND LY = 1 THEN L=29
  153.     D=D+1
  154.     IF D LE L THEN 300
  155.     D=1
  156.     M=M+1
  157.     IF M > 12 THEN M=1
  158.     L=DATE(M)
  159. 300    ELAPSED.DAYS=ELAPSED.DAYS+1
  160.     W=W+1
  161.     IF SHORT.DAY$(W)="EXTRA.DAY" THEN W=1
  162. 320    NEXT J
  163. 600    FOR PRINT.LOOP=1 TO 20 : PRINT : NEXT PRINT.LOOP    
  164. FOR PRINT.LOOP=1 TO 10 : PRINT.LOOP=PRINT.LOOP-1 : NEXT PRINT.LOOP
  165.  
  166. 1000    IF M > 2 THEN 1010
  167. MM=M+13
  168. Y=Y-1
  169. GO TO 1020
  170. 1010 MM=M+1
  171. 1020 JD=INT(365.25*Y)+INT(30.6001*MM)+D
  172. Q=(JD)/7
  173. W=7*(Q-INT(Q))+1
  174. RETURN
  175.  
  176. REM    'PAGINATE IT ALL'
  177. 2000    COUNTER=0
  178.     FOR PRINT.LOOP=1 TO 6 : PRINT : NEXT PRINT.LOOP
  179.     PRINT TAB(60); "PAGE "; PAGE.NUMBER
  180.     PRINT : PAGE.NUMBER=PAGE.NUMBER+1
  181.     PRINT PART.4$
  182.     FOR PRINT.LOOP=1 TO 68 : PRINT "-"; : NEXT PRINT.LOOP : PRINT
  183.     RETURN
  184.