1 ' BIORYT.BA by Marc LeMay, Quebec 10 CLEAR 300,54705 20 LOADM"LCD-1":LOADM"LCD-2" 30 CLS 40 CALL 55461 50 PRINT"BIORYTHMES" 60 PRINT"----------" 70 PRINT@120,SPACE$(199); 80 PRINT@120,;:INPUT "Nom et pr;nom:";N$ 90 IF LEN(N$)>21 OR LEN(N$)=0 THEN BEEP:GOTO 70 100 PRINT@120,SPACE$(199); 110 PRINT@120,;:PRINT "Date de naissance:":INPUT " [JJ,MM,AAAA]:";J,M,A 120 J=INT(J):IF J<1 OR J>31 THEN BEEP:GOTO 100 130 J$=MID$(STR$(J),2):IF LEN(J$)=1 THEN J$="0"+J$ 140 M=INT(M):IF M<1 OR M>12 THEN BEEP:GOTO 100 150 M$=MID$(STR$(M),2):IF LEN(M$)=1 THEN M$="0"+M$ 160 A=INT(A):IF A<1582 OR A>2013 THEN:BEEP:GOTO 100 170 A$=MID$(STR$(A),4):IF LEN(A$)=1 THEN A$="0"+A$ 180 GOSUB 990:GG=G:J=1 190 PRINT@120,SPACE$(199); 200 PRINT@120,"Mois a visualiser:" 210 INPUT " [MM,AAAA]:";M,A 220 M=INT(M):IF M<1 OR M>12 THEN BEEP:GOTO 190 230 M2$=MID$(STR$(M),2):IF LEN(M2$)=1 THEN M2$="0"+M2$ 240 A=INT(A):A2=A:IF A<1582 OR A>2010 THEN BEEP:GOTO 190 250 A2$=MID$(STR$(A),4):IF LEN(A2$)=1 THEN A2$="0"+A2$ 260 GOSUB 990:TJ=G-GG+1:IF TJ<0 THEN BEEP:RUN 270 RESTORE 980 280 FOR I=1 TO M:READ NJ:NEXT 290 IF M=2 AND A2/4=INT(A2/4) THEN NJ=29 300 CLS:PRINT@40,"Un instant... attendez 1 minute" 310 POKE 54721,255:' LIGNE NOIR 320 POKE 63048,0:' VIDEO NORMAL 330 K$="BIORYTHMES:"+CHR$(0):X=3:Y=3:GOSUB 960 340 K$="-----------"+CHR$(0):X=3:Y=11:GOSUB 960 350 K$="Nom : "+N$+CHR$(0):X=3:Y=24:GOSUB 960 360 K$="Date de naissance: "+J$+"/"+M$+"/"+A$+CHR$(0):X=3:Y=32:GOSUB 960 370 K$="Mois a visualiser: "+M2$+"/"+A2$+CHR$(0):X=3:Y=40:GOSUB 960 380 K$="Physique :"+CHR$(0):X=3:Y=60:GOSUB 960 390 K$="Emotionel :"+CHR$(0):X=3:Y=70:GOSUB 960 400 K$="Intellectuel :"+CHR$(0):X=3:Y=80:GOSUB 960 410 K$="+"+CHR$(0):X=3:Y=110:GOSUB 960 420 K$="-"+CHR$(0):X=3:Y=222:GOSUB 960 430 K$="0"+CHR$(0):X=3:Y=166:GOSUB 960 440 FOR I=5 TO NJ STEP 5 450 K$=MID$(STR$(I),2)+CHR$(0):X=(I-1)*7+10:Y=174:GOSUB 960:Y=Y-2:CALL 55481,0,X*256+Y 460 NEXT 470 POKE 54721,255:'ligne noire 475 POKE 63054,0:POKE 63055,0:CALL 55433,0,239*256:POKE 63054,239:POKE 63055,0:CALL 55433,0,239*256+239:POKE 63054,239:POKE 63055,239:CALL 55433,0,239:POKE 63054,0:POKE 63055,239:CALL 55433,0,0:REM CADRE 480 POKE 63054,10:POKE 63055,170 490 CALL 55433,0,235*256+170 500 FOR I=1 TO 30 510 CALL 55481,0,((I*7)+10)*256+171 520 NEXT 530 POKE 63054,120:POKE 63055,64:CALL 55433,0,180*256+64 540 POKE 54721,153:'ligne pointillee 550 POKE 63054,120:POKE 63055,74:CALL 55433,0,180*256+74 560 POKE 54721,243:'ligne pointillee longue 570 POKE 63054,120:POKE 63055,84:CALL 55433,0,180*256+84 580 PRINT@120,"Le dessin des axes est maintenant termi-n;, il ne reste que les courbes a dessi-ner...";:BEEP 590 X=23:POKE 54721,255:GOSUB 880:PRINT@120,SPACE$(199);:PRINT@120,"Cycle PHYSIQUE trac;..." 600 X=28:POKE 54721,153:GOSUB 880:PRINT@160,"Cycle EMOTIONEL trac;..." 610 X=33:POKE 54721,243:GOSUB 880 620 BEEP 630 POKE 54721,255:POKE 63054,10:POKE 63055,110:CALL 55433,0,10*256+230 640 CLS:PRINT@40,"BIORYTHMES:" 650 PRINT"-----------" 660 PRINT@120," [1]-Ecran LCD" 670 PRINT" [2]-Imprimante" 680 PRINT" [3]-Recommencer" 690 PRINT" [4] Menu du Model 100" 700 PRINT@280,"Appuyer sur le chiffre entre []..."; 710 K$=INKEY$:IF K$="" THEN 710 720 K=VAL(K$):IF K<1 OR K>4 THEN BEEP:GOTO 710 730 ON K GOSUB 750,810,860,870 740 GOTO 640 750 Y=0 760 CALL 62782,0,Y+55570 770 K$=INKEY$:IF K$="" THEN 770 ELSE IF K$=CHR$(27) THEN RETURN 780 IF K$=CHR$(30) AND Y>0 THEN Y=Y-240:GOTO 760 790 IF K$=CHR$(31) AND Y<(22*240) THEN Y=Y+240:GOTO 760 800 BEEP:GOTO 770 810 CLS:PRINT@40,"Voulez-vous un graphique:":PRINT@122,"[1]-Normal":PRINT@162,"[2]-Fonc;":PRINT@280,"Appuyer sur la lettre entre []..."; 815 KK$=INKEY$:IF KK$="" THEN 815 820 IF KK$="1" THEN 840 825 RESTORE 1030 830 IF KK$<>"2" THEN BEEP:GOTO 815 835 READ P:IF P<256 THEN LPRINT CHR$(P);:GOTO 835 840 CLS:PRINT@40,"Appuyer sur [ENTER] lorsque l'imprimantesera prete a recevoir le graphique..." 845 K$=INKEY$:IF K$="" THEN 845 850 IF K$<>CHR$(13) THEN BEEP:GOTO 845 855 CLS:PRINT@40,"Un instant...":IF KK$="1" THEN CALL 54782:BEEP:RETURN:ELSE CALL 54801:BEEP:RETURN 860 RUN 870 CLEAR256,MAXRAM:MENU:END 880 PI=8*ATN(1):J=TJ:FOR I=1 TO NJ-1 890 Y1=J/X:U=INT(Y1):Y1=(Y1-U)*PI 900 Y1=170-60*SIN(Y1):Y1=INT(Y1):J=J+1 910 Y2=J/X:U=INT(Y2):Y2=(Y2-U)*PI 920 Y2=170-60*SIN(Y2):Y2=INT(Y2) 930 X1=INT((I-1)*7+10):POKE 63054,X1:POKE 63055,Y1:X2=INT((I*7+10)*256):CALL 55433,0,X2+Y2 940 NEXT 950 RETURN 960 HL=VARPTR(K$)+1:HL=PEEK(HL)+PEEK(HL+1)*256:POKE 63054,X:POKE 63055,Y:POKE 55319,1 970 CALL 55320,0,HL:RETURN 980 DATA 31,28,31,30,31,30,31,31,30,31,30,31 990 G=365*A+J+31*M-31:IF M>=3 GOTO 1020 1000 A=A-1 1010 H=INT(A/4):K=.75+A/100:I=INT(K):I=INT(I*.75):H=H-I:G=G+H:RETURN 1020 I=-INT(.4*M+2.3):G=G+I:GOTO 1010 1030 DATA 30,13,27,29,27,15,14,27,31,18,999