10 'Save"BioRhytm.gmb" 'v2.1 31 Dec 1986 - 27 Nov 2022 20 'Save"BioRhytm.bs",a 'v2.1 31 Dec 1986 - 27 Nov 2022 30 ' 40 '+--------------------------+ 50 '| Yamaha MSX2-Basic | 60 '| -- BIORHYTHM -- | 70 '| windows and valuaters | 80 '| design | 90 '| by Andrew Rodionov | 100 '+--------------------------+ 110 ' 120 ' 130 '----INITIALIZATIONS-------- 140 ' 150 COLOR=NEW:COLOR15,1:CLS:ONSTOP GOSUB 2540:STOP ON 160 OPEN"GRP:"AS#1 170 KEY OFF 180 DEFINT A-Z:DEFSNG P:DEFDBL N-N 190 PI=4*ATN(1) 200 ' 210 '----MAIN PROGRAM---------- 220 ' 230 GOSUB 380'-1---------DATA OF BIRTH 240 GOSUB 650'-2---------CHOOSEN DATE 250 GOSUB 930'3---------NUMBER OF DAYS LIVED 260 GOSUB 990'4---------DAY OF BIRTH 270 GOSUB 1060'5---------CHOOSE DAY 280 GOSUB 1130'6---------FINAL DISPLAY 290 ' 300 CP=1:DP=1 310 K$=INKEY$ 320 IF K$=CHR$(27) THEN:COLOR15,1,1:_SYSTEM 330 IF K$=CHR$(13) OR K$=" " THEN RUN 340 COLOR=(9,7,CP,CP):COLOR=(12,7,7-CP,7-CP):IF CP=7 OR CP=0 THEN DP=-DP 350 CP=CP+DP 360 GOTO 310 370 ' 380 '1-------DATA OF BIRTH 390 ' 400 ONERRORGOTO2720:SCREEN7:ONERRORGOTO0:COLOR10,1,1:CLS 410 LINE(0,0)-(511,211),4,BF 420 PRESET(160,203):PRINT#1," B I O R H Y T H M " 430 LINE(2,12)-STEP(300,80),1,BF 440 LINE(8,15)-STEP(300,80),1,BF 450 LINE(2,12)-STEP(300,80),7,B 460 '----HELP----------------------- 470 LINE(270,40)-STEP(190,80),1,BF 480 LINE(276,43)-STEP(190,80),1,BF 490 LINE(270,40)-STEP(190,80),8,B 500 COLOR8 510 PRESET(290,65):PRINT#1,"Use cursor keys and" 520 PRESET(290,75):PRINT#1,"space bar to adjust" 530 PRESET(290,85):PRINT#1," valuators." 540 '----1-st WINDOW---------------- 550 COLOR15:PRESET(32+56,26):PRINT#1,"DATE OF BIRTH":XW=32:YW=42:CL=9:CR=1:COLOR7 560 MD=1980:GOSUB 1250'7----------YEAR 570 MD=6:GOSUB 1310 '8----------MONTH 580 MD=15:GOSUB 1380 '9----------DAY 590 Y0=Y: M0=M: D0=D 600 GOSUB 1480'10---------AMOUNT OF DAYS 610 IF V=1 THEN 400 620 N0=N 630 RETURN 640 ' 650 '2--------CHOSEN DATE------ 660 ' 670 LINE(91,101)-STEP(300,80),1,BF 680 LINE(97,104)-STEP(300,80),1,BF 690 LINE(91,101)-STEP(300,80),3,B:COLOR15 700 PRESET(91+32+56,101+16):PRINT#1," CHOSEN DATE " 710 GETDATE DT0$ 'DT0$ = mm/dd/yy US 16 720 GETDATE DT3$ 'DT3$ = yy/mm/dd JP 0 730 ' dd/mm/yy EU 32 740 LC=PEEK(&H2B)AND&H70 750 IF LC=0 THEN DT0$=MID$(DT3$,4,5)+MID$(DT3$,3,1)+MID$(DT3$,1,2) 760 IF LC=32 THEN DT0$=MID$(DT3$,4,3)+MID$(DT3$,1,3)+MID$(DT3$,7,2) 770 XW=91+32:YW=101+32:CL=13:CR=1:COLOR3 ' 12345678 780 'MD=2022:GOSUB 1140'7------------YEAR 790 MD=2000+VAL(MID$(DT0$,7,2)):GOSUB 1250 '7 pos in DT0$ = YEAR (2 digits only) 800 IF Y1 AND ((Y+1) MOD 4)=0 THEN N=N+1 1580 IF D=0 THEN RETURN 1590 FOR I=1 TO Y 1600 N=N+365-(((I)MOD4)=0) 1610 NEXT 1620 RETURN 1630 ' 1640 '11------NAME OF THE DAY------- 1650 ' 1660 N2=N2-INT((N2/7))*7' MOD 7 1670 RESTORE 2700 1680 FOR I=0 TO N2 1690 READ D$ 1700 NEXT 1710 RETURN 1720 ' 1730 '12----DISPLAING THE TEXT---- 1740 ' 1750 LINE (6,159)-STEP(410,45),1,BF 1760 LINE (0,156)-STEP(410,45),10,BF 1770 LINE (0,156)-STEP(410,45),1,B 1780 PRESET(8,160) 1790 PRINT#1," Date of your birth......";D0$;D0;"/";M0;"/";Y0 1800 PRESET(8,170) 1810 PRINT#1," Chosen date.............";D1$;D1;"/";M1;"/";Y1 1820 PRESET(8,180) 1830 PRINT#1," Number of days lived....";N 1840 RETURN 1850 ' 1860 '13----------INTERVAL-------- 1870 ' 1880 FOR I=0 TO 30 1890 COLOR 15+6*(I=15) 1900 GOSUB 2380'17--------DAY N 1910 PRESET(14+16*I,128):PRINT#1,D$ 1920 D$=STR$(D): D$=RIGHT$("0"+RIGHT$(D$,LEN(D$)-1),2) 1930 COLOR 6-(I MOD 2) 1940 PRESET (10+16*I,136):PRINT#1,D$ 1950 NEXT 1960 RETURN 1970 ' 1980 '14----------FRAME--------- 1990 ' 2000 LINE(0,0)-(511,145),1,BF 2010 LINE(0,0)-(511,145),7,B 2020 FOR I=0 TO 31 2030 LINE (8+16*I,11)-STEP(0,120),14 2040 NEXT:COLOR15 2050 LINE(8,10)-(504,120),15,B 2060 LINE(8,65)-(504,65) 2070 LINE(8,2)-STEP(32,6),3,BF:PRESETSTEP(3,-6):PRINT#1,"Physical" 2080 LINE(178,2)-STEP(32,6),13,BF:PRESETSTEP(3,-6):PRINT#1,"Emotional" 2090 LINE(364,2)-STEP(32,6),11,BF:PRESETSTEP(3,-6):PRINT#1,"Intellectual" 2100 RETURN 2110 ' 2120 '15----------GRAPH--------- 2130 ' 2140 N=N-15 2150 PSET(8,65-50*SIN(2*N*PI/23)),2 2160 FOR I=1 TO 62 2170 LINE -(8+8*I,65-50*SIN(2*(N+I/2)*PI/23)),2 2180 NEXT 2190 PSET (8,65-50*SIN(2*N*PI/28)),13 2200 FOR I=1 TO 62 2210 LINE -(8+8*I,65-50*SIN(2*(N+I/2)*PI/28)),13 2220 NEXT 2230 PSET (8,65-50*SIN(2*N*PI/33)),11 2240 FOR I=1 TO 62 2250 LINE -(8+8*I,65-50*SIN(2*(N+I/2)*PI/33)),11 2260 NEXT 2270 RETURN 2280 ' 2290 '16----------MESSAGE-------- 2300 ' 2310 LINE(150,192)-STEP(350,14),1,BF 2320 LINE(144,189)-STEP(350,14),6,BF 2330 LINE(144,189)-STEP(350,14),15,B 2340 PRESET(176,193) 2350 COLOR12,6:PRINT#1,"Hit [SPACE] to restart, [ESC] to exit" 2360 RETURN 2370 ' 2380 '17------------DAY N----------- 2390 ' 2400 D$=MID$("TWTFSSM",1+((I+N1+6)-INT((I+N1+6)/7)*7),1)'MOD7),1) 2410 D=D1-15+I 2420 IF D>0 THEN 2480 2430 M=(M1+10)MOD 12 2440 RESTORE 2690 2450 FOR K=0 TO M : READ DD : NEXT 2460 IF M=1 AND (Y1 MOD 4)=0 THEN DD=DD+1 2470 D=DD+D : RETURN 2480 M=M1-1 : RESTORE 2690 2490 FOR K=0 TO M : READ DD : NEXT 2500 IF M=1 AND (Y1 MOD 4)=0 THEN DD=DD+1 2510 IF D<=DD THEN RETURN 2520 D=D-DD 2530 RETURN 2540 SCREEN0:COLOR15,4:END'-------^STOP Exit 2550 ' 2560 '----VALUATOR------------ 2570 ' 2580 PRESET(XV,YV):PRINT#1,T$:LINE(XV+56,YV)-STEP(MA-MI+4,7),14,B 2590 PRESET(XV+190,YV):PRINT#1,MD:CP=1:DP=1 2600 IF AT$<>"" THEN PRESET(XV+80,YV):PRINT#1,MID$(AT$,(MD-1)*9+1,9) 2610 LINE(XV+57,YV+1)-STEP(MD-MI+1,5),CL,BF 2620 LINESTEP(1,-5)-STEP(MA-MD-1,5),CR,BF 2630 A$=INKEY$:IF A$=" " OR A$=CHR$(13) THEN RETURN 2640 CP=CP+DP:COLOR=(CL,CP):IF CP=1 OR CP=7 THEN DP=-DP 2650 IF A$=CHR$(29) AND MD>MI THEN MD=MD-1:GOTO2590 2660 IF A$=CHR$(28) AND MD