#!/usr/bin/bwbasic rem BIORHYTMUS rem rem Originalsource aus "ZX Spectrum", 1982 rem von ZX81 auf IBM-PC umgeschrieben 1988 rem Linux Port + CGI 4.1999 Beat Rubischon dim a$(1,60) dim m$(12,3) dim wt$(7,10) dim nr$(7,5) dim mo$(12,9) pi=3.14159265 t=0 m=0 j=0 t1=0 m1=0 j1=0 t2=0 m2=0 j2=0 n$="" for n=1 to 60 a$(1,n)=" " next n m$(1,1)="0" m$(2,1)="31" m$(3,1)="59" m$(4,1)="90" m$(5,1)="120" m$(6,1)="151" m$(7,1)="181" m$(8,1)="212" m$(9,1)="243" m$(10,1)="273" m$(11,1)="304" m$(12,1)="334" wt$(1,1)="Montag " wt$(2,1)="Dienstag " wt$(3,1)="Mittwoch " wt$(4,1)="Donnerstag" wt$(5,1)="Freitag " wt$(6,1)="Samstag " wt$(7,1)="Sonntag " for n=1 to 7 nr$(n,1)=right$(str$(n/7),5) next n mo$(1,1)="Januar " mo$(2,1)="Februar " mo$(3,1)="M„rz " mo$(4,1)="April " mo$(5,1)="Mai " mo$(6,1)="Juni " mo$(7,1)="Juli " mo$(8,1)="August " mo$(9,1)="September" mo$(10,1)="Oktober " mo$(11,1)="November " mo$(12,1)="Dezember " if environ$("CGI") = "" then cgi=0 print "Biorhythmus" print print "Geburtstag (TT MM JJJJ )" print input " Tag ";t input " Monat";m input " Jahr ";j print input "Name und Vorname"; n$ print print "vom (TT MM JJJJ " print input " Tag ";t1 input " Monat";m1 input " Jahr ";j1 print print "bis (wie oben, nicht der Letzte eines Monats!)" print input " Tag ";t2 input " Monat";m2 input " Jahr ";j2 else cgi=1 t=val(environ$("T")) m=val(environ$("M")) j=val(environ$("J")) t1=val(environ$("T1")) m1=val(environ$("M1")) j1=val(environ$("J1")) t2=val(environ$("T2")) m2=val(environ$("M2")) j2=val(environ$("J2")) n$=environ$("N") end if gosub 450 d=t e=m f=j a=s if cgi=0 then rem print chr$(27);chr$(126);chr$(1);chr$(27);"G";chr$(27);"W";chr$(1); print " ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" print " B I O R H Y T M U S" print " ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" rem print chr$(27) ;"W";chr$(0);chr$(27);"H"; print print print "fr ";n$ print o$=str$(d):o$=left$(o$,3):o$=right$(o$,2) print "geboren am ";o$;". ";mo$(e,1);f print o$=str$(t1):o$=left$(o$,3):o$=right$(o$,2) print "Fr die Zeit vom ";o$;". ";mo$(m1,1);j1 o$=str$(t2):o$=left$(o$,3):o$=right$(o$,2) print " bis ";o$;". ";mo$(m2,1);j2 print rem print chr$(27);"G" end if print tab(28);" Negativ 0 Positiv " print "Tag";tab(28);"-10987654321012345678910+" print "-----------------------------------------------------" rem print chr$(27);"H"; gosub 3000 rem print chr$(27);"G"; print "-----------------------------------------------------" print "Tag";tab(28);"-10987654321012345678910+" rem print chr$(27);"H"; if cgi=0 then print print print print " Zeichenerkl„rung:" print " -----------------" print " S = Seelisch, K = K”rperlich, G = Geistig" rem print chr$(12); end if system 430 n=100*sin (2*pi*(b-a)/l) return 450 rem Schalttag einfgen z=0 if (j/4) <> int(j/4) then goto 490 if (j/4) = int(j/4) and (j/400) = int(j/400) then goto 490 if m<=2 then 490 z=1 490 z=z+(j-1)*365+int((j-1)/4) c=val (m$(m,1)) s=z+c+t return 3000 t=t1 m=m1 j=j1 gosub 450 b=s l=28 gosub 430 x=int(n/10+.5) l=33 gosub 430 y=int (n/10+.5) l=23 gosub 430 z=int (n/10+.5) gosub 4000 t1=t1+1 gosub 5000 if t1=t2+1 and m1=m2 and j1=j2 then return goto 3000 4000 o$=right$(str$(s/7),5) wt=6 if o$=nr$(1,1) then wt=7 if o$=nr$(2,1) then wt=1 if o$=nr$(3,1) then wt=2 if o$=nr$(4,1) then wt=3 if o$=nr$(5,1) then wt=4 if o$=nr$(6,1) then wt=5 o$=wt$(wt,1) for n= 1 to 10 a$(1,n)=mid$(o$,n,1) next n t$=str$(t1) if len(t$)=3 then a$(1,13)=mid$(t$,2,1) if len(t$)=3 then a$(1,14)=mid$(t$,3,1) if len(t$)=2 then a$(1,14)=mid$(t$,2,1) a$(1,15)="." o$=mo$(m1,1) for n=1 to 9 a$(1,16+n)=mid$(o$,n,1) next n a$(1,40)=":" a$(1,(40+x))="S" a$(1,(40+y))="G" a$(1,(40+z))="K" rem if wt=7 then print chr$(27);"G"; for n=1 to 28 print a$(1,n); next n rem if wt=7 then print chr$(27);"H"; for n=29 to 60 print a$(1,n); next n print for n=1 to 60 a$(1,n)=" " next n return 5000 dim q(12) q(1)=31 rem Schalttag if j/4=int(j/4) and j/400<>int(j/400) then q(2)=29 if j/4<>int(j/4) or j/400=int (j/400) then q(2)=28 q(3)=31 q(4)=30 q(5)=31 q(6)=30 q(7)=31 q(8)=31 q(9)=30 q(10)=31 q(11)=30 q(12)=31 if t1>q(m1) then gosub 5200 return 5200 t1=1 m1=m1+1 if m1>12 then gosub 5300 return 5300 m1=1 j1=j1+1 return