10  REM  CELLULAR GENERATION, BY WILLIAM K. CHAR, JANUARY 10, 1974
20  REM
30  DIM A$[10],B$[10],A[2],B[2],X$[10]
40  DEF FNR()=INT(2*RND())+1
50  PRINT "GENETIC CHARACTERISTICS."
60  PRINT 
70  PRINT "NEED INSTRUCTIONS";
80  INPUT X$
90  IF X$[1,1]="N" THEN 210
100  PRINT 
110  PRINT "     CELL IS A SIMPLE GENETICS PROGRAM WHICH SIMULATES THE"
120  PRINT "CHARACTERISTICS OF PARENTS WHICH ARE PASSED TO THEIR"
130  PRINT "OFFSPRING.  THESE CHARACTERISTICS CAN BE SUCH TRAITS AS"
140  PRINT "CURLY OR STRAIT HAIR, LIGHT OR DARK EYES, SICKLED OR"
150  PRINT "NORMAL HEMOGLOBIN."
160  PRINT 
170  PRINT "     I WILL NEED TO KNOW THE GENOTYPES OF THE PARENTS, SUCH"
180  PRINT "AS 'NORMAL-NORMAL', 'NORMAL-SICKLED', OR ANY OTHER COMBINA-"
190  PRINT "TION.  YOU WILL HAVE TO TYPE IN THESE TWO GENOTYPES SEPA-"
200  PRINT "RATELY."
210  PRINT 
220  PRINT "WHAT ARE THE TWO TRAITS TO BE STUDIED:"
230  PRINT "...DOMINATE TRAIT: ";
240  INPUT A$
250  PRINT "...RECESSIVE TRAIT: ";
260  INPUT B$
270  RESTORE 
280  DATA "MALE","FEMALE"
290  FOR I=1 TO 2
300  READ X$
310  PRINT 
320  PRINT "GENOTYPE OF "X$" PARENT:"
330  FOR J=1 TO 2
340  GOTO J OF 350,370
350  PRINT "1ST: ";
360  GOTO 380
370  PRINT "2ND: ";
380  INPUT X$
390  K=0
400  IF A$=X$ THEN 450
410  K=1
420  IF B$=X$ THEN 450
430  PRINT "I THOUGHT WE WERE ONLY STUDYING "A$" AND "B$" TRAITS."
440  GOTO 340
450  GOTO I OF 460,480
460  A[J]=K
470  GOTO 490
480  B[J]=K
490  NEXT J
500  NEXT I
510  REM  ===== SPECIAL CASES:  ALL PURE OR ALL HYBRID =====
520  PRINT 
530  IF A[1]#A[2] THEN 650
540  IF B[1]#B[2] THEN 650
550  PRINT "BECAUSE THE PARENTS ARE PURE GENOTYPES, ALL OFFSPRING WILL BE"
560  IF A[1]=B[1] THEN 590
570  PRINT A$"-"B$"; THAT IS, PURE HYBRID OR CARRIERS."
580  GOTO 1160
590  IF A[1] THEN 620
600  PRINT A$"-"A$"; THAT IS, PURE DOMINATE OR NORMAL."
610  GOTO 1160
620  PRINT B$"-"B$"; THAT IS, PURE RECESSIVE OR LETHAL."
630  GOTO 1160
640  REM  ===== SIMULATE =====
650  PRINT "HOW MANY OFFSPRING TO STUDY (USUALLY A HIGH NUMBER)";
660  INPUT N
670  K=0
680  IF N>50 THEN 810
690  PRINT 
700  PRINT "DETAILED REPORT (YES OR NO)";
710  INPUT X$
720  IF X$[1,1]="N" THEN 880
730  K=1
740  PRINT 
750  PRINT "NO.   GENOTYPE"TAB(LEN(A$)+LEN(B$)+12)"PHENOTYPE"
760  FOR I=1 TO LEN(A$)+LEN(B$)+21
770  PRINT "=";
780  NEXT I
790  PRINT 
800  GOTO 880
810  PRINT 
820  PRINT "BECAUSE THERE ARE OVER 50 OFFSPRING, ONLY TOTALS WILL BE"
830  PRINT "PRINTED.  I CAN ONLY SIMULATED 5000 OFFSPRING PER MINUTE."
840  PRINT "PLEASE WAIT ACCORDINGLY."
850  REM
860  REM  K0=DOMINATE  K1=RECESSIVE  K2=CARRIER
870  REM
880  K0=K1=K2=0
890  FOR I=1 TO N
900  A=A[FNR(I)]
910  B=B[FNR(I)]
920  IF A=B THEN 960
930  K2=K2+1
940  J=2
950  GOTO 990
960  IF A THEN 1000
970  K0=K0+1
980  J=0
990  GOTO 1020
1000  K1=K1+1
1010  J=1
1020  IF  NOT K THEN 1130
1030  PRINT I;
1040  X=A
1050  GOSUB 1220
1060  PRINT "-";
1070  X=B
1080  GOSUB 1220
1090  PRINT TAB(LEN(A$)+LEN(B$)+12);
1100  X=J
1110  GOSUB 1220
1120  PRINT 
1130  NEXT I
1140  PRINT 
1150  PRINT A$"="K0"HYBRIDS="K2;B$"="K1
1160  PRINT 
1170  PRINT "AGAIN (YES OR NO)";
1180  INPUT X$
1190  IF X$[1,1]="Y" THEN 270
1200  STOP 
1210  REM  ===== PRINT SUBROUTINE =====
1220  GOTO X OF 1250,1270
1230  PRINT A$;
1240  GOTO 1280
1250  PRINT B$;
1260  GOTO 1280
1270  PRINT "HYBRID";
1280  RETURN 
1290  END 
