1
0
mirror of https://github.com/PDP-10/stacken.git synced 2026-03-01 17:26:38 +00:00
Files
Lars Brinkhoff 6e18f5ebef Extract files from tape images.
Some tapes could not be extracted.
2021-01-29 10:47:33 +01:00

203 lines
5.5 KiB
Fortran

C ***BIORHYTHM CHARTING PROGRAM***
C 8/2/74
C B.J.
C
PARAMETER TWOPI = 6.2831853
C
C DEFINE A BLANK LINE
C
DIMENSION LINE(60)
C
C DEFINE ARRAYS FOR DEVICE AND VICTIM
C
INTEGER FILE,VICTIM(6)
C
C DEFINE DAYS PER MONTH ARRAY
C
COMMON IDPM(12)
DATA IDPM/31,28,31,30,31,30,31,31,30,31,30,31/
C
C GET OUTPUT DEVICE AND OPEN IT
C
WRITE (5,52)
52 FORMAT (' ENTER OUTPUT DEVICE:(TTY OR LPT) ',$)
READ (5,53) FILE
53 FORMAT (6A5)
IF (FILE .EQ. '') FILE = 'TTY'
OPEN (UNIT=1,DEVICE=FILE,ACCESS='SEQOUT',FILE='BIORHY.THM')
C
C FIND OUT THE GOODIES
C
WRITE (5,54)
54 FORMAT (' WHAT IS YOUR NAME: ',$)
READ (5,53) VICTIM
1 WRITE (5,56)
56 FORMAT (' ENTER YOUR BIRTH DATE (E.G. 5,27,1945): ',$)
READ (5,*) IBM,IBD,IBY
C
C YEAR MAY ALSO BE GIVEN AS JUST THE LAST TWO DIGITS,
C IN WHICH CASE 20TH CENTURY ASSUMED
C
IF (IBY .LT. 100) IBY = IBY + 1900
WRITE (5,58)
58 FORMAT (' ENTER START DATE (E.G. 11,1,1975): ',$)
READ (5,*) ISM,ISD,ISY
IF (ISY .LT. 100) ISY = ISY + 1900
WRITE (5,60)
60 FORMAT (' HOW MANY MONTHS WOULD YOU LIKE ? ',$)
READ (5,*) NMONS
C
C MAKE THE TURKEY ISN'T
C TRYING TO CHART HIS MOTHER'S
C PREGNANCY OR WORSE...
C
IF (IBY - ISY) 4,2,1
2 IF (IBM - ISM) 4,3,1
3 IF (IBD - ISD) 4,4,1
C
C COMPUTE HOW MANY DAYS OLD AT START OF CHART
C
4 IDAGE = -1
IF ((ISY - IBY) .GT. 89) GO TO 10
IDAGE = IDAYS(ISD,ISM,ISY) - IDAYS(IBD,IBM,IBY) + 365*(ISY - IBY)
IF (IBY .EQ. ISY) GO TO 6
DO 5 I = IBY, ISY
IF (MOD(I,4) .EQ. 0) IDAGE = IDAGE + 1
IF (IDAGE .LT. 0) GO TO 10
5 CONTINUE
IF (MOD(ISY,4) .EQ. 0) IDAGE = IDAGE + 1
6 CONTINUE
C
C PRINT BACKGROUND MATERIAL
C IF REQUESTED
C
WRITE (5,62)
62 FORMAT (' SHALL I PRINT THE BACKGROUND MATERIAL',
1' (0=NO,1=YES) ? ',$)
READ (5,*) I
IF (I .NE. 1) GO TO 7
WRITE (1,64)
64 FORMAT (
1' THE "B I O R H Y T H M" THEORY STATES THAT HUMAN LIVES MOVE'/
2' IN PREDICTABLE UNDULATIONS INVOLVING THREE SEPARATE CYCLES:'/
3' (A) PHYSICAL 23 DAYS'/
4' (B) EMOTIONAL 28 DAYS'/
5' (C) INTELLECTUAL 33 DAYS'//
6' THERE ARE THREE MAJOR AREAS TO THIS CHART TO BE OBSERVED:'//
7' MINUS - ZERO - PLUS'///
8' ** ZERO **'//
9' THE DAY THAT THE CYCLE SWITCHES FROM PLUS MINUS OR MINUS'/
1' TO PLUS IS A CRITICAL DAY. IT IS DEFINED AS CRITICAL BE-')
WRITE (1,66)
66 FORMAT (
1' CAUSE YOU ARE NEITHER UP NOR DOWN, BUT IN A STATE OF LIMBO.'//
2' (A) IF PHYSICAL CYCLE THEN PEOPLE TEND TO BE ACCIDENT PRONE.'/
3' (B) IF EMOTIONAL CYCLE THEN POSSIBLE EMOTINAL OUTBURSTS.'/
4' (C) IF INTELLECTUAL CYCLE IT IS NOT AS IMPORTANT, BY ITSELF,'/
5' AS THE OTHER TWO CYCLES. IF IT DOES COINCIDE WITH THE'/
6' OTHER TWO, IT HAS A CONTRIBUTORY EFFECT.'///
7' ** PLUS **'//
8' (A) DURING THE 11 1/2 PLUS DAYS, IT IS A GOOD TIME FOR INTEN-'/
9' SIVE TRAINING IN ATHLETICS OR FOR ANY ACTIVITY REQUIRING'/
1' PHYSICAL STAMINA.')
WRITE (1,68)
68 FORMAT (
1' (B) DURING THE 14 PLUS DAYS, BOTH MEN AND WOMEN ARE PRONE TO'/
2' CHEERFULLNESS, COOPERATION AND A POSITIVE OUTLOOK ON LIFE.'/
3' (C) DURING THE 16 1/2 PLUS DAYS OF THIS CYCLE, A PERSON FINDS'/
4' IT EASIER TO STUDY, WRITE CREATIVELY, UNDERSTAND MATHE-'/
5' MATICS OR PURSUE ANY INTELLECTUAL EFFORTS.'///
6' ** MINUS **'//
7' (A) DURING THE 11 1/2 MINUS DAYS, PERSONS ARE AWARE OF A'/
8' REDUCED VITIALITY AND ENDURANCE. IN SHORT, YOU WILL'/
8' TIRE EASILY ON THESE DAYS.'/
9' (B) DURING THE 14 MINUS DAYS, PERSONS ARE CONVERSE TO THE'/
1' PLUS DAYS. BOTH MEN AND WOMEN ARE CONDUCIVE TO MOOD-')
WRITE (1,70)
70 FORMAT (
1' INESS AND NEGATIVISM.'/
2' (C) DURING THE 16 1/2 MINUS DAYS, CAPACITIES ARE LESSENED.'/
3' THESE ARE DAYS BETTER SPENT ON REVIEW AND PRACTICE.'/
4'1N O T E :'/
5' 1. IT TAKES 58+ YEARS TO CYCLE BACK TO YOUR BIRTH DATE.'//
6' 2. TRUE TRIPLE CRITICAL POINTS OCCUR ONLY EVERY 29 YEARS.'/
7' ALL TRUE AND NEAR TRIPLE POINTS WILL BE SHOWN BY "#".')
7 WRITE (1,53)
WRITE (1,53)
WRITE (1,53)
C
C PRINT AGE IN DAYS AT START OF CHART
C
WRITE (1,200) IDAGE
200 FORMAT (' AT THE START OF THIS CHART YOU WILL BE'I6' DAYS OLD.')
WRITE (1,300) VICTIM
300 FORMAT (///' THIS CHART PREPARED ESPECIALLY FOR '6A5///)
C
C PRINT THE CHART HEADER
C AND INITIALIZE THEN LINE ARRAY
C
WRITE (1,400)
400 FORMAT (T23'MINUS'T37'ZERO'T52'PLUS'/9X60('-'))
DO 8 I = 1, 60
8 LINE(I) = ' '
C
C IF THIS IS A LEAP YEAR THEN
C ALTER THE DAYS PER MONTH
C
IF (MOD(ISY,4) .EQ. 0) IDPM(2) = 29
LINE(30) = '*'
C
C START OF MAIN LOOP
C
C LOCATE THE CURVES
C
9 IP = SIN(MOD(IDAGE,23)/22.*TWOPI)*28 + 30.
IE = SIN(MOD(IDAGE,28)/27.*TWOPI)*28 + 30.
II = SIN(MOD(IDAGE,33)/32.*TWOPI)*28 + 30.
C
C PRINT A LINE OF THE CHART
C
LINE(IP) = 'P'
LINE(IE) = 'E'
LINE(II) = 'I'
IF ((IP .EQ. IE) .AND. (IE .EQ. II)) LINE(IP) = '#'
I = MOD(ISY,100)
WRITE (1,500) ISM,ISD,I,LINE
500 FORMAT(' 'I2'/'I2'/'I2,60A1)
C
C RESTORE LINE
C
LINE(IP) = ' '
LINE(IE) = ' '
LINE(II) = ' '
LINE(30) = '*'
C
C UPDATE CALENDAR
C
IDAGE = IDAGE + 1
ISD = ISD + 1
IF (ISD .LE. IDPM(ISM)) GO TO 10
ISD = 1
ISM = ISM + 1
NMONS = NMONS - 1
IF (NMONS .EQ. 0) STOP 'HAVE A NICE DAY'
IF (ISM .LE. 12) GO TO 10
ISM = 1
ISY = ISY + 1
IDPM(2) = 28
IF (MOD(ISY,4) .EQ. 0) IDPM(2) = 29
10 IF (IDAGE .LT. 0) STOP 'CANT HAPPEN ON DEC'
GO TO 9
END
FUNCTION IDAYS(ID,IM,IY)
COMMON IDPM(12)
IDAYS = 0
IF (IM .EQ. 1) GO TO 1002
J = IM - 1
DO 1001 I = 1, J
1001 IDAYS = IDAYS + IDPM(I)
1002 IDAYS = IDAYS + ID
IF ((MOD(IY,4) .EQ. 0) .AND. (IM .GT. 2)) IDAYS = IDAYS + 1
RETURN
END