10 REM********************        *                  *        *  B I O R Y T H M *        *                  *        * (C) 1983         * 
20 REM*                  *        * DIOMIDIS         *        *                 *        * SPINELLIS        *        *                  * 
30 REM*                  *        * DO NOT ACCEPT A  *        * PIRATED COPY    *        * PLEASE           *        ******************** 
40 CALL CLEAR
50 CALL COLOR(1,2,8)
60 CALL SCREEN(5)
70 CALL VCHAR(1,31,1,96)
80 FOR I=1 TO 16
90 CALL COLOR(I,2,8)
100 NEXT I
110 CALL CHAR(64,"3C4299A1A199423C")
120 PRINT "      B I O R Y T H M": : : : : : : : :" @ 1983  DIOMIDIS SPINELLIS": : : : : : : : :"   PRESS ANY KEY TO START"
130 CALL KEY(5,RET,ST)
140 IF ST=0 THEN 130
150 CALL SOUND(100,1000,0)
160 DIM MONTH$(12)
170 DIM MONTH(12)
180 FOR I=1 TO 12
190 READ MONTH$(I),MONTH(I)
200 NEXT I
210 TYP$(1)="PHYSICAL"
220 TYP$(2)="SENTIMENTAL"
230 TYP$(3)="INTELIGENT"
240 DATA JANUARY,31,FEBRUARY,28,MARCH,31,APRIL,30,MAY,31,JUNE,30,JULY,31,AUGUST,31,SEPTEMBER,30,OCTOBER,31
250 DATA NOVEMBER,30,DECEMBER,31
260 CALL VCHAR(1,3,32,28*24)
270 GOSUB 540
280 GOSUB 720
290 PRINT : : : : : : : :"READY TO CALCULATE"
300 GOTO 860
310 CALL VCHAR(1,3,32,24*28)
320 PRINT : : : :
330 PRINT "          BIORYTHM": : : : : :"ENTER         FOR": : : :" 1. PHYSICAL ": :" 2. SENTIMENTAL": :" 3. INTELIGENT"
340 PRINT : :" 4. TO CHANGE TARGET MONTH": :" 5. TO ENTER NEW BIRTHDAY": :" 6. EXIT PROGRAM":
350 CALL KEY(5,RET,ST)
360 IF ST=0 THEN 350
370 IF (RET<49)+(RET>54)THEN 350
380 CALL SOUND(100,1000,0)
390 A=RET-48
400 IF A>6 THEN 350
410 IF A=6 THEN 1380
420 IF A=4 THEN 440
430 GOTO 460
440 GOSUB 720
450 GOTO 310
460 IF A=5 THEN 480
470 GOTO 510
480 GOSUB 540
490 GOSUB 720
500 GOTO 310
510 N=23*ABS(A=1)+28*ABS(A=2)+33*ABS(A=3)
520 CALL VCHAR(1,3,32,24*28)
530 RETURN
540 INPUT "PLEASE ENTER YOUR NAME      ":NAME$
550 PRINT : :
560 INPUT "PLEASE ENTER THE YEAR YOU   WERE BORN ":BY
570 RBY=BY
580 PRINT : :
590 INPUT "PLEASE ENTER THE MONTH YOU  WERE BORN (1-12) ":BM
600 RBM=BM
610 PRINT : :
620 INPUT "PLEASE ENTER THE DAY YOU    WERE BORN (1-31) ":BD
630 RBD=BD
640 PRINT : :NAME$;":":"BIRTHDAY :";STR$(BD);"-";MONTH$(BM);"-";STR$(BY): : :"----------------------------": : : :
650 IF BM-3>=0 THEN 690
660 BY=BY-1
670 BM=13+BM
680 GOTO 700
690 BM=BM+1
700 R=INT(365.25*BY)+INT(30.6*BM)+BD
710 RETURN
720 INPUT "PLEASE ENTER THE YEAR YOU   ARE INTERESTED IN ":TY
730 RTY=TY
740 PRINT : :
750 INPUT "PLEASE ENTER THE MONTH YOU  ARE INTERESTED IN (1-12) ":TM
760 RTM=TM
770 PRINT : :
780 IF TM-3>=0 THEN 820
790 TY=TY-1
800 TM=13+TM
810 GOTO 830
820 TM=TM+1
830 NT=INT(365.25*TY)+INT(30.6*TM)
840 D=(NT-R)*ABS(NT-R>0)
850 RETURN
860 GOSUB 310
870 CALL VCHAR(1,3,32,24*28)
880 PRINT : : : : : : :"CALCULATING THE ";TYP$(A): : : :"BIORYTHM OF ";NAME$:"BORN ";RBD;"-";MONTH$(RBM);"-";RBY: : : :
890 PRINT "FOR THE MONTH ";MONTH$(RTM):"OF THE YEAR ";RTY: : : : : :"AFTER THE PLOTTING"
900 PRINT "PRESS ANY KEY TO RETURN TO  THE MAIN INDEX"
910 GOSUB 930
920 GOTO 860
930 CALL CHAR(158,"7808080878080808")
940 CALL COLOR(13,7,1)
950 DIM V(33)
960 DEF U=INT(SIN((((D/N-INT(D/N))*N)/N)*2*3.1415)*183/2+183/2)
970 FOR I=25 TO 32
980 V(I)=0
990 NEXT I
1000 FOR I=1 TO MONTH(RTM)
1010 D=D+1
1020 V(I+1)=U
1030 NEXT I
1040 FOR I=2 TO 16 STEP 2
1050 CALL CHAR(127+I/2,SEG$("0000000000000000",1,I-2)&"FCFCFCFCFCFCFCFC")
1060 NEXT I
1070 CALL CHAR(136,"")
1080 CALL CLEAR
1090 CALL COLOR(1,1,1)
1100 CALL COLOR(14,7,1)
1110 CALL COLOR(16,2,1)
1120 CALL COLOR(3,2,7)
1130 CALL COLOR(4,2,7)
1140 CALL COLOR(10,8,8)
1150 CALL SCREEN(4)
1160 CALL VCHAR(1,1,158,24)
1170 CALL HCHAR(1,1,109,32)
1180 FOR I=2 TO 32
1190 CALL VCHAR(24-INT(V(I)/8),I,128,INT(V(I)/8)+1)
1200 ROW=24-INT(V(I)/8)
1210 CHAR=136-8*(V(I)/8-INT(V(I)/8))
1220 CALL VCHAR(ROW,I,CHAR)
1230 CALL HCHAR(1,I-1,ASC(SEG$("mm"&TYP$(A)&"mm"&MONTH$(RTM)&"mm"&NAME$&"mmmmmmmmmmmmmmmmmm",I-1,1)))
1240 IF ROW>22 THEN 1260
1250 CALL HCHAR(24,I,ASC(SEG$(STR$(I+9),2,1)))
1260 NEXT I
1270 CALL KEY(5,RET,ST)
1280 IF ST=0 THEN 1270
1290 CALL SOUND(100,1000,0)
1300 CALL CLEAR
1310 CALL COLOR(1,2,8)
1320 CALL SCREEN(5)
1330 CALL COLOR(3,2,8)
1340 CALL COLOR(4,2,8)
1350 CALL COLOR(10,2,8)
1360 CALL VCHAR(1,31,1,96)
1370 RETURN
1380 CALL CLEAR
1390 END