100 REM BIRTHDAY UPDATED 5-5-77 TO "MITS" BY D. NIXON 
110   DIM Z$(12),L(12),N(60),Y$(7)   
120   DIM G$(12),H$(32)  
130 FOR I=1 TO 12:READ Z$(I):NEXT
140 FOR I=1 TO 12:READ L(I):NEXT 
150 FOR I=1 TO 7:READ Y$(I): NEXT
160 FOR I=1 TO 12:READ G$(I):NEXT
170 FOR I=1 TO 32:READ H$(I):NEXT
180 DATA JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST:  
190 DATA SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER:
200 DATA 31,28,31,30,31,30,31,31,30,31,30,31:
210 DATA THURS,FRI,SATUR,SUN,MON,TUES,WEDNES:
220 DATA THE MOON,THE SUN,THE EARTH,THE PLANET MERCURY,VENUS,MARS:   
230 DATA JUPITER,SATURN,THE PLANET URANUS,THE PLANET NEPTUNE:
240 DATA THE PLANET PLUTO,PEANUT BUTTER: 
250 DATA JUXTAROTATION,CONTRAPOSITION,CONTRASTING PHASES,TRANSPOSITION:  
260 DATA SATISFIED,HAPPY,INTERESTING,TOLERANT:   
270 DATA OFTEN,OCCASIONALLY,SOMETIMES:   
280 DATA TEND TO BE,ARE,ARE INCLINED TO BE:  
290 DATA SHORT OF PATIENCE,UNEASY,AT ODDS:   
300 DATA OTHERS.,CLOSE FRIENDS.,YOUNGER PEOPLE.,THOSE IN AUTHORITY.: 
310 DATA ": BEWARE OF ","  AVOID "   
320 DATA APPLE PIE,BEING ALONE,DARK PLACES,STRANGERS,UNUSUAL SITUATIONS: 
330   DATA BE TAKING A TRIP YOU HAVE NOT MADE BEFORE.
340   DATA BE MEETING SOMEONE YOU WILL KNOW FOR THE REST OF YOUR LIFE.   
350   DATA MAKE SEVERAL IMPORTANT DECISIONS INVOLVING OTHERS.
360   DATA BECOME ILL IF YOU DO NOT LESSEN YOUR UNUSUAL ACTIVITIES.  
370  PRINT "TYPE IN TODAY'S DATE NUMERICALLY: MO,DAY,YEAR"; 
380  INPUT X1,Y1,Z1 
390  IF Z1>99 GOTO 410 
400  Z1=Z1+1900 
410 XF=X1:YF=Y1:ZF=Z1:GOSUB 1220:U=ND
420  PRINT "TODAY IS ";Y$(U-7*INT(U/7)+1);"DAY   (I HOPE)"  
430  PRINT  
440  PRINT "HI, I'M A MICROPROCESSOR."  
450  PRINT "TELL ME YOUR NAME"; 
460  INPUT N$   
470 I=INSTR(N$," ")-1   
480 IF I<0 THEN 580 
490 K$=LEFT$(N$,I)  
500  PRINT "ARE YOU USUALLY CALLED ";K$;
510  INPUT A$   
520 GOSUB 1140   
530  ON NA GOTO 540,560,510
540  PRINT "WHAT DO YOU LIKE TO BE CALLED"; 
550  INPUT K$   
560  PRINT "SO YOUR FULL NAME IS ";N$;", BUT YOU"   
570  PRINT "LIKE TO BE CALLED ";K$;"."  
580  PRINT "HOW OLD ARE YOU, ";K$;  
590  INPUT A
600  A=INT(A)   
610  IF INT((A-5)/95)=0  GOTO 640  
620  PRINT "COME ON, ";K$;", YOU'RE PULLING MY LEG."
630  GOTO 580  
640  PRINT "SO YOU ARE";A;"YEARS OLD."  
650  PRINT "DO YOU KNOW, OFF HAND, HOW MANY DAYS OLD YOU ARE";  
660  INPUT A$   
670 GOSUB 1140   
680  ON NA GOTO 720,690,660
690  PRINT "OK, SMARTY, HOW MANY?"  
700  PRINT "SORRY, ";K$;", YOU'LL HAVE TO BE FASTER THAN THAT!" 
710  GOTO 1600 
720  PRINT "OK, I'LL TELL YOU." 
730  PRINT "IN WHAT MONTH WERE YOU BORN";   
740  INPUT M$   
750  FOR X=1 TO 12  
760  IF M$=Z$(X) GOTO 800  
770  NEXT X 
780  PRINT K$;", YOU MAY BE NICE BUT YOU CAN'T SPELL."  
790  GOTO 730  
800  PRINT "ON WHAT DAY";   
810  INPUT Y
820  Z=Z1-A 
830  IF INT((Y-1)/L(X))=0 GOTO 870 
840  IF (X-1)*(Y-28)*(Z-4*INT(Z/4)+1)=1 GOTO 870   
850  PRINT "COME ON, ";N$;", YOU'RE GIVING ME A HARD TIME." 
860  GOTO 800  
870  REM
880 XF=X1:YF=Y1:ZF=Z:GOSUB 1220:W=ND 
890 XF=X:YF=Y:ZF=Z:GOSUB 1220:V=ND   
900 IF W >= V GOTO 920  
910  Z=Z-1  
920  IF ABS(W-V)>30 GOTO 990   
930  ON SGN(W-V)+2 GOTO 940,980,960
940  PRINT "YOU HAVE A BIRTHDAY COMING UP IN ONLY";V-W;"DAYS!"  
950 GOTO 990
960  PRINT "YOUR BIRTHDAY WAS ONLY";W-V;"DAYS AGO. CONGRATULATIONS!"
970  GOTO 990  
980  PRINT "HAPPY BIRTHDAY, DEAR ";K$;", HAPPY BIRTHDAY TO YOU."
990 XF=X:YF=Y:ZF=Z:GOSUB 1220:V=ND   
1000  PRINT "YOU WERE BORN ON ";Y$(V-7*INT(V/7)+1);"DAY, ";Z$(X);Y;",";Z 
1010  PRINT "WHICH MAKES YOU";U-V;"DAYS OLD."
1020  PRINT "YOU WERE BORN ON THE DAY";V;"AD, AND ON JAN. 1, 2000"   
1030  PRINT "YOU WILL BE";730480!-V;"DAYS OLD."   
1040  PRINT "HOW ABOUT THAT!!!"  
1050  PRINT  
1060  GOSUB 1350 
1070  PRINT "WELL, ";N$; 
1080  IF N$=K$ GOTO 1100 
1090  PRINT " (ALIAS ";K$;")"
1100  PRINT " IT HAS BEEN NICE CHATTING WITH YOU. DO COME AGAIN."
1110  PRINT "GOOD BYE"   
1120  GOTO 1600 
1130 REM SUBROUTINE FOR YES NO REQUEST   
1140 NA=1
1150 IF A$="NO" GOTO 1210
1160 IF A$="N0" GOTO 1210
1170 NA=2
1180 IF A$="YES" GOTO 1210   
1190 NA=3
1200 PRINT "A SIMPLE YES OR NO WILL DO! "
1210 RETURN  
1220 REM SUBROUTINE TO SOLVE FOR NUMBER OF DAYS  
1230 ND=YF-1 
1240  FOR I1=1 TO XF-1   
1250 ND=ND+L(I1) 
1260 NEXT I1 
1270 I1=INT(ZF/100)  
1280 IF ZF<>4*INT(ZF/4) GOTO 1330
1290 IF  ZF/100=I1 GOTO 1330 
1300 IF  ND>59 GOTO 1330 
1310 IF XF=3 GOTO 1330   
1320 ND=ND-1 
1330  ND=ND+36524!*I1+INT(365.25*(ZF-100*I1)) 
1340 RETURN  
1350 REM GENERATE RANDOM HOROSCOPE  
1360 R1=INT(12*RND(1))+1
1370 R2 = INT(12*RND(1))+1  
1380  IF R1=R2 GOTO 1370   
1390 R=1
1400 X=4:GOSUB 1570 
1410 PRINT "YOU WERE BORN UNDER THE ";H$(NR);" OF ";G$(R1)  
1420 X=4:GOSUB 1570 
1430 PRINT "AND ";G$(R2);".  YOU ARE A BASICALLY ";H$(NR)   
1440 X=3:GOSUB 1570 
1450 PRINT "PERSON BUT ";H$(NR);
1460 GOSUB 1570 
1470 PRINT " YOU ";H$(NR)   
1480 GOSUB 1570:N1=NR:X=4:GOSUB 1570:N2=NR:X=2:GOSUB 1570   
1490 PRINT H$(N1);" WITH ";H$(N2);H$(NR)
1500 X=5:GOSUB 1570 
1510 PRINT H$(NR);" FOR THE NEXT WEEK. I PREDICT YOU WILL SOON" 
1520 X=4:GOSUB 1570 
1530 PRINT H$(NR)   
1540 PRINT  
1550 RETURN 
1560 REM SUBROUTINE TO SELECT RANDOM WORDS  
1570 NR=INT(X*RND(1))+R 
1580 R=R+X  
1590 RETURN 
1600 REM END
9991 REM ---------------------------------
9992 REM Updated for bwBASIC 3.0 by Howard Wulf, AF5NE, May 7th  2015:
9993 REM a) changed => to >= on line 900
9999 END
