10 ' *****************
20 ' *   BIORYTHME   *
30 ' *      par      * 
40 ' * Henri Bittner *
50 ' *  sur Amstrad  *
60 ' *  1 mars 1986  *
70 ' *****************
80 '
90 DIMjm(12),jd(12)
100 FORi=1TO12:READa,b:jm(i)=a:jd(i)=b:NEXT
110 js$(0)="LUNDI":js$(1)="MARDI":js$(2)="MERCREDI":js$(3)="JEUDI":js$(4)="VENDREDI":js$(5)="SAMEDI":js$(6)="DIMANCHE"
120 CLS:MODE 1:INK 0,13:INK 1,0:INK 2,3:INK 3,1:BORDER 13:PEN 1  
130 PRINT"VOULEZ-VOUS LES INSTRUCTIONS ? (O/N)"     
140 a$=INKEY$:IFa$=""THEN140
150 IFa$="O"ORa$="o"THEN1460
155 IF a$="N" OR a$="n" THEN 170
160 GOTO 140
165 '                
170 ' * ENTREE DES DATES *    
180 ' 
190 CLS:MODE 1
200 PEN3:PRINT"ENTREZ VOTRE DATE DE NAISSANCE":PRINT:PEN1
210 INPUT "ANNEE --->";an:PRINT:GOSUB 980
220 INPUT"MOIS ---->";mois:PRINT:GOSUB1000
230 INPUT"JOUR ---->";jour:PRINT:GOSUB1020
240 a=an-1900:m=mois:j=jour
250 GOSUB 1230:nj0=nj 
260 PEN2:PRINT"VOUS ETES NE UN ";js$(js):PEN3:PRINT
270 PRINT"ENTREZ LA DATE A EXAMINER":PEN 1:PRINT
280 INPUT"ANNEE --->";an:PRINT:GOSUB 980
290 INPUT"MOIS ---->";mois:PRINT:GOSUB1000
300 INPUT"JOUR ---->";jour:PRINT:GOSUB1020
310 a=an-1900:m=mois:j=jour 
320 GOSUB1230:njv=nj-nj0:GOSUB1060
330 PEN2:PRINT"VOUS AVEZ VECU ";njv;" JOURS"
340 '
350 ' * CALCUL DU BIORYTHME *
360 '
370 jr=njv-jour  
380 FOR i=1 TO 33
390 IF(jr+i)/23-INT((jr+i)/23)=0THENIFF=0THENF=i
400 IF(jr+i)/28-INT((jr+i)/28)=0THENIFD=0THEND=i
410 IF(jr+i)/33-INT((jr+i)/33)=0THENE=i
420 IF F>0 AND D>0 AND E>0 THEN 440
430 NEXT i
440 F1=F:D1=D:E1=E
450 IF F>12 THEN F2=F-12:IF F+11<=M1 THEN F3=F+11:GOTO 480
460 IF F2>0 THEN 480
470 F2=F+11:IF F+23<=M1 THEN F3=F+23
480 IF D>14 THEN D2=D-14:IF D+14<=M1 THEN D3=D+14 ELSE 510 
490 IF D2>0 THEN 510
500 D2=D+14:IF D+28<=M1 THEN D3=D+28 
510 IFE+16<=M1THENE2=E+16
520 IF E-17>0 THEN E2=E-17
530 IF E>M1 THEN E1=0
540 INK 3,1:PEN 3:LOCATE 1,25:PRINT"JOURS CRITIQUES : PRESSEZ UNE TOUCHE":CALL &BB06 
550 GOSUB 1110
560 LOCATE6,23:PEN2:PRINT"GRAPHIQUE : PRESSEZ UNE TOUCHE":CALL&BB06
570 '
580 ' * PAGE GRAPHIQUE *
590 '
600 CLS
610 MODE 1
620 INK0,0:INK1,6:INK2,14:INK3,16:BORDER0
630 LOCATE12,1:PEN1:PRINT"BIORYTHME ";mois;an
640 PLOT 65,200:DRAW 561,200,3
650 FOR i=65 TO 567 STEP 16   
660 PLOT i,100:DRAW i,300,3
670 NEXT
680 LOCATE 3,13:PRINT"0"
690 LOCATE 37,13:PRINT"0"
700 LOCATE 3,10:PRINT"+"
710 LOCATE 37,10:PRINT"+"
720 LOCATE 3,16:PRINT"-"
730 LOCATE 37,16:PRINT"-"
740 '
750 ' * courbes *    
760 '
770 E=E-1:D=D-1:F=F-1:Z=16*M1 
780 DEG    
790 LOCATE4,4:PRINT"PHYSIQUE"
800 C9=CINT(360*M1/23):A=360*F/23:T=F*16:c=1:GOSUB1330:PEN2
810 LOCATE14,4:PRINT"EMOTIONNEL"
820 C9=CINT(360*M1/28):A=360*D/28:T=D*16:c=2:GOSUB1330:PEN3
830 PEN 3:LOCATE 26,4:PRINT"INTELLECTUEL" 
840 C9=CINT(360*M1/33):A=360*E/33:T=E*16:c=3:GOSUB1330
850 '
860 LOCATE2+jour,20:PRINTUSING"##";jour;:PRINTCHR$(94)
870 LOCATE 9,24:PEN 3:PRINT"Autre Biorythme -->[B]
880 LOCATE 9,25:PEN 1:PRINT"Quitte ----------->[Q]  
890 a$=INKEY$:IF a$="" THEN 890 
900 IF a$="q"OR a$="Q"THEN CALL 0  
910 'IF a$="q"OR a$="Q"THEN CALL 0  
920 RUN
930 '   
940 ' * ENSEMBLE DES SOUS PROGRAMMES *
950 '
960 ' * Controle des donnees et messages d'erreurs *
970 '
980 IFan<1900ORan>2050THENPEN2:SOUND1,142,10:PRINT"Plage du calendrier :":PRINT:PRINT"Du lundi 1/1/1900 au samedi 31/12/2050":GOTO1070
990 RETURN
1000 IFmois<1ORmois>12THENPEN2:SOUND1,142,10:PRINT"Erreur !":GOTO1070
1010 RETURN
1020 IFmois=2THENIFan>1900ANDan/4-INT(an/4)=0THENM1=jm(mois)+1:GOTO1040
1030 M1=jm(mois)
1040 IFjour<1ORjour>M1THENPEN2:SOUND1,142,10:PRINT:PRINT"Erreur , ce mois a ";M1;" jours !":GOTO1070
1050 RETURN
1060 IFnjv>=0THENRETURNELSEPEN2:SOUND1,142,10:PRINT"Erreur , date anterieure a la naissance"
1070 PEN 3:LOCATE 1,23:PRINT"PRESSEZ UNE TOUCHE ET RECOMMENCEZ !":CALL &BB06:GOTO 190
1080 '
1090 ' * Affichage des dates *
1100 '
1110 CLS:INK0,13:INK1,0:INK2,1:INK3,3:PAPER0:BORDER13:PEN3
1120 LOCATE9,1:PRINT"DATE DES JOURS CRITIQUES":PEN1:PRINT:PRINT
1130 FOR i=1 TO M1 
1140 IFF1=iORF2=iORF3=iTHENPRINT"     PHYSIQUE ------>";:PRINTUSING" ## ";i;:PRINT"-";mois;"-";an:PRINT
1150 IFD1=iORD2=iORD3=iTHENPRINT"     EMOTIONNEL ---->";:PRINTUSING" ## ";i;:PRINT"-";mois;"-";an::PRINT
1160 IFE1=iORE2=iTHENPRINT"     INTELLECTUEL -->";:PRINTUSING" ## ";i;:PRINT"-";mois;"-";an:PRINT
1170 NEXT
1180 RETURN
1190 '
1200 ' * calcul du jour de la semaine *
1210 '    et du nombre de jours vecus
1220 '
1230 IFa>0THENj=j-1ELSEIFmois>2THENj=j-1
1240 IF m=2 AND a/4-INT(a/4)=0 THEN j=j-1   
1250 m=m-1:IF m=0 THEN m=12:a=a-1 
1260 nj=INT(a*365.25)+jd(m)+j+bis:njj=nj    
1270 IF njj>32767 THEN njj=njj-32767
1280 js=njj MOD 7  
1290 RETURN    
1300 '
1310 ' * trace des courbes *
1320 '
1330 ORIGIN65+T,200
1340 FORi=0-ATOC9-A
1350 PLOTi*Z/C9,100*SIN(i),c
1360 NEXT:RETURN
1370 LOCATE2+jour,20:PRINTUSING"##";jour;:PRINTCHR$(94)
1380 '
1390 ' * datas jours du mois et jours depuis le debut de l'annee *
1400 '
1410 DATA 31,31,28,59,31,90,30,120,31,151,30,181,31,212,31,243,30,273,31,304,30,334,31,365     
1420 '
1430 ' * EXPLICATIONS  ( facultatif )
1440 '   le cas echeant , supprimer les lignes 130 a 150 *    
1450 '
1460 MODE 2:CLS:INK 0,13:INK 1,0:PAPER 0:PEN 1
1470 PRINT"Chacun de nous est influence tout au long de sa vie par 3 cycles differents:":PRINT
1480 PRINT"PHYSIQUE ------> 23 jours : reflexes , forme , fatigue , sante .
1490 PRINT"EMOTIONNEL ----> 28 jours : sensibilite , susceptibilite , sautes d'humeur .
1500 PRINT"INTELLECTUEL --> 33 jours : acuite intellectuelle , memoire , concentration .
1510 PRINT:PRINT"les 3 cycles demarrent le jour de la naissance .
1520 PRINT"En phase positive , il y a liberation d'energie et exteriorisation .
1530 PRINT"En phase negative , l'organisme fait le 'plein' ." 
1540 PRINT"Chaque changement de polarite (lorsque la courbe passe par le point 0)          correspond a un jour critique .     
1550 PRINT"Les 3 rythmes etant differents , les combinaisons sont nombreuses .
1560 PRINT"Les jours dits 'critiques' ne sont pas forcement nefastes . Cependant           l'experience demontre que dans ces periodes l'individu est plus sujet a         commettre des erreurs qu 'habituellement . La nature de ces faiblesses         
1570 PRINT"depend de la courbe en question . L'importance des consequences , tres          variable , peut aller du fait le plus anodin jusqu'au plus grave .              Exemple : la difficulte qu'aura un automobiliste a realiser un creneau          
1580 PRINT"ou la fraction de seconde d'inattention qui causera l'accident .
1590 PRINT"Des statistiques realisees aux U.S.A et au Japon , dans les compagnies          d'assurances , les milieux sportifs et les universites ont permis de            verifier l'exactitude de la theorie des Biorythmes .
1600 PRINT"A vous de l'experimenter sur vous-meme et votre entourage grace a ce programme !
1610 PRINT"PRESSEZ UNE TOUCHE POUR CONTINUER"
1620 CALL&BB06
1630 CLS:PRINT"MODE D'EMPLOI DU PROGRAMME"     
1640 PRINT:PRINT"Le calendrier commence le lundi 1-1-1900 et fini le samedi 31-12-2050"
1650 PRINT:PRINT"Les donnees des dates sont a entrer en chiffres . A chaque fois pressez [ENTER]   
1660 PRINT:PRINT"Apres avoir entre la date de naissance , l'ordinateur vous indique              a quel jour de la semaine correspond votre naissance .
1670 PRINT:PRINT"Ensuite entrez la date a examiner (elle ne peut etre anterieure a la naissance)."
1680 PRINT"L'ordinateur vous indique le nombre de jours separant les 2 dates puis la liste des jours critiques dans le mois concerne ."
1690 PRINT:PRINT"Pour un etude plus fine l'ordinateur visualise les courbes de votre Biorythme ."
1700 PRINT"Celles-ci s'arretent en fonction de la longueur du mois ."
1710 PRINT:PRINT"En bas du graphique une fleche pointe sur le jour considere .
1720 PRINT:PRINT"Les passages des courbes sur la ligne mediane ne sont pas les seuls faits
1730 PRINT"significatifs dans un Biorythme . "     
1740 PRINT"Sont egalement revelateurs les courbes en phase , les cretes et les croisements "
1750 PRINT"Ceci dit , bonne utilsation !"
1760 LOCATE 60,25:PRINT"PRESSEZ UNE TOUCHE"       
1770 CALL&BB06:GOTO190