Home » Personal collection » Acorn hard disk » misc » misc2 » dcfprogs/Biomorphs

dcfprogs/Biomorphs

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Personal collection » Acorn hard disk » misc » misc2
Filename: dcfprogs/Biomorphs
Read OK:
File size: 0C56 bytes
Load address: 0000
Exec address: 0000
File contents
  100 REM * Biomorphs *
  110 REM by Mike Cook
  120 REM (c) Micro User
  130 MODE 1
  140 DIM morph(5,12),parent(5)
  150 DIM gi(5,2),px(12),py(12)
  160 REM READ IN INCREMENTS AND LIMITS (MIN & MAX) OF EACH GENE
  170 RESTORE 200
  180 FOR A%=0 TO 2:FOR B%=0 TO 5
  190 READ gi(B%,A%):NEXT:NEXT
  200 DATA 1,4,0.16,0.2,0.16,2:REM Gene increment value
  210 DATA 1,-36,-3.14,0.1,-3.14,-18:REM Gene minimum value
  220 DATA 9,36,3.14,10,3.14,18:REM Gene maximum value
  230 PROC_INTPOS:REM Intialise display position
  240 PROC_INTP:REM Intialise parent
  250 gen=0
  260 MODE 0
  270 REPEAT
  280 gen=gen+1
  290 PROC_MUTATE
  300 PROC_DISPLAY
  310 PROC_CHOSE
  320 UNTIL FALSE
  330 DEF PROC_INTP
  340 IF A$="C" THEN ENDPROC
  350 parent(0)=1
  360 parent(1)=4
  370 parent(2)=.785
  380 parent(3)=1
  390 parent(4)=0
  400 parent(5)=0
  410 IF A$="A" THEN ENDPROC
  420 FOR A%=0 TO 5
  430 parent(A%)=(RND(5)+1)*gi(A%,0)
  440 NEXT
  450 parent(0)=RND(3)+1
  460 ENDPROC
  470 DEF PROC_MUTATE
  480 FOR B%=1 TO 12
  490 FOR A%=0 TO 5
  500 morph(A%,B%)=parent(A%)
  510 IF (B%MOD2) D%=-1 ELSE D%=1
  520 C%=(B%-1)DIV2
  530 IF C%<>A% THEN 560
  540 IF morph(A%,B%)+D%*(gi(A%,0))<gi(A%,1) OR morph(A%,B%)+D%*(gi(A%,0))>gi(A%,2) THEN 560
  550 morph(A%,B%)=morph(A%,B%)+D%*(gi(A%,0))
  560 NEXT:NEXT:ENDPROC
  570 DEF PROC_DISPLAY
  580 PROC_LINES
  590 PROC_TREE(parent(0),parent(1),parent(2),parent(3),parent(4),parent(5),640,500)
  600 FOR A%=1 TO 12
  610 PROC_TREE(morph(0,A%),morph(1,A%),morph(2,A%),morph(3,A%),morph(4,A%),morph(5,A%),px(A%),py(A%))
  620 NEXT:ENDPROC
  630 DEF PROC_INTPOS
  640 RESTORE 840
  650 FOR A=1 TO 12
  660 READ px(A),py(A):NEXT
  670 PRINT''SPC(14);"Biomorph"
  680 PRINT"An exercise in Darwinian Evolution"
  690 PRINT"By Mike Cook"
  700 PRINT"Based on an idea by Richard Dawkins"
  710 PRINT"Author of THE BLIND WATCHMAKER"
  720 PRINT'''"Options to start evolving from:-"
  730 PRINT"A - A microbe."
  740 PRINT"B - Some random point"
  750 PRINT"C - A defined point"
  760 PRINT"Press the key of your choice.";
  770 A$=GET$:IF NOT(A$="A" OR A$="B" OR A$="C") THEN 770
  780 PRINT:IF A$<>"C" ENDPROC
  790 FOR A%=0 TO 5
  800 PRINT"Gene number ";A%"=";
  810 INPUT parent(A%)
  820 IF parent(A%)>gi(A%,2) OR parent(A%)<gi(A%,1) PRINT"Values between ";gi(A%,1);" and ";gi(A%,2):GOTO 800
  830 NEXT:ENDPROC
  840 DATA 160,860,480,860,800,860,1120,860,160,604,1120,604,160,348,1120,348
  850 DATA 160,92,480,92,800,92,1120,92
  860 DEF PROC_LINES
  870 VDU 12,23,1,0;0;0;0;5
  880 PRINT
  890 FOR X%=320 TO 960 STEP 320
  900 FOR Y%=256 TO 800 STEP 256
  910 MOVE X%,0:DRAW X%,1023
  920 MOVE 0,Y%:DRAW 1259,Y%
  930 NEXT:NEXT
  940 MOVE 640,260:PLOT 7,640,764
  950 MOVE 324,512:PLOT 7,958,512
  960 FOR A%=1 TO 12
  970 MOVE px(A%)-150,py(A%)-60
  980 VDU&40+A%:NEXT
  990 MOVE 360,322
 1000 PRINT"PARENT BOIMORPH"
 1010 MOVE 360,755
 1020 PRINT"GENERATION NUMBER ";gen
 1030 VDU4:ENDPROC
 1040 DEF PROC_CHOSE
 1050 VDU5:MOVE 360,290
 1060 PRINT"? or breed from child (A-L)?";:*FX 15
 1070 A$=GET$
 1080 PRINTA$;:C%=ASCA$-&40
 1090 IF C%<0 OR C%>12 PROC_REVIEW:ENDPROC
 1100 FOR A%=0 TO 5
 1110 parent(A%)=morph(A%,C%)
 1120 NEXT:VDU4:ENDPROC
 1130 DEF PROC_REVIEW
 1140 VDU 22,1
 1150 PRINT"Current Biomorph has:-"
 1160 FOR A%=0 TO 5
 1170 PRINT"GENE ";A%;" VALUE ";parent(A%)
 1180 NEXT
 1190 PROC_TREE(parent(0),parent(1),parent(2),parent(3),parent(4),parent(5),640,300)
 1200 PRINTTAB(0,30);"Press any key to continue";
 1210 A$=GET$:gen=gen-1:VDU 22,0
 1220 ENDPROC
 1230 DEF PROC_TREE(D,L,dA,AR,DT,DS,X,Y)
 1240 MOVE X,Y:DRAW X,Y-L
 1250 PROC_GROW(PI/2,L,X,Y,D)
 1260 ENDPROC
 1270 DEF PROC_GROW(TH,L,X,Y,D)
 1280 IF D MOVE X,Y ELSE ENDPROC
 1290 dX=COS(TH+dA)*(1/AR)
 1300 dY=SIN(TH+dA)*AR
 1310 PLOT 1,dX,dY
 1320 PROC_GROW(TH+dA+DT,L-DS,X+dX,Y+dY,D-1)
 1330 MOVE X,Y
 1340 dX=L*COS(TH-dA)*(1/AR)
 1350 dY=L*SIN(TH-dA)*AR
 1360 PLOT 1,dX,dY:MOVE X,Y
 1370 PROC_GROW(TH-dA-DT,L-DS,X+dX,Y+dY,D-1)
 1380 ENDPROC
d � * Biomorphs *
n � by Mike Cook
x � (c) Micro User
� � 1
� � morph(5,12),parent(5)
� � gi(5,2),px(12),py(12)
�= � READ IN INCREMENTS AND LIMITS (MIN & MAX) OF EACH GENE
� � �dH@
� � A%=0 � 2:� B%=0 � 5
� � gi(B%,A%):�:�
�3 � 1,4,0.16,0.2,0.16,2:REM Gene increment value
�7 � 1,-36,-3.14,0.1,-3.14,-18:REM Gene minimum value
�2 � 9,36,3.14,10,3.14,18:REM Gene maximum value
�* �_INTPOS:� Intialise display position
� �_INTP:� Intialise parent
�
 gen=0
 � 0
 �
 gen=gen+1
"
 �_MUTATE
, �_DISPLAY
6 �_CHOSE
@ � �
J
 � �_INTP
T � A$="C" � �
^ parent(0)=1
h parent(1)=4
r parent(2)=.785
| parent(3)=1
� parent(4)=0
� parent(5)=0
� � A$="A" � �
� � A%=0 � 5
�! parent(A%)=(�(5)+1)*gi(A%,0)
� �
� parent(0)=�(3)+1
� �
� � �_MUTATE
� � B%=1 � 12
� � A%=0 � 5
� morph(A%,B%)=parent(A%)
� � (B%�2) D%=-1 � D%=1
 C%=(B%-1)�2
 � C%<>A% � �TpB
W � morph(A%,B%)+D%*(gi(A%,0))<gi(A%,1) � morph(A%,B%)+D%*(gi(A%,0))>gi(A%,2) � �TpB
&, morph(A%,B%)=morph(A%,B%)+D%*(gi(A%,0))
0
 �:�:�
: � �_DISPLAY
D �_LINES
NP �_TREE(parent(0),parent(1),parent(2),parent(3),parent(4),parent(5),640,500)
X � A%=1 � 12
bb �_TREE(morph(0,A%),morph(1,A%),morph(2,A%),morph(3,A%),morph(4,A%),morph(5,A%),px(A%),py(A%))
l �:�
v � �_INTPOS
� � �DHC
� � A=1 � 12
� � px(A),py(A):�
� �''�(14);"Biomorph"
�* �"An exercise in Darwinian Evolution"
� �"By Mike Cook"
�+ �"Based on an idea by Richard Dawkins"
�& �"Author of THE BLIND WATCHMAKER"
�+ �'''"Options to start evolving from:-"
� �"A - A microbe."
� �"B - Some random point"
� �"C - A defined point"
�& �"Press the key of your choice.";
. A$=�:� �(A$="A" � A$="B" � A$="C") � �TBC
 �:� A$<>"C" �
 � A%=0 � 5
  �"Gene number ";A%"=";
* � parent(A%)
4d � parent(A%)>gi(A%,2) � parent(A%)<gi(A%,1) �"Values between ";gi(A%,1);" and ";gi(A%,2):� �T`C
> �:�
HI � 160,860,480,860,800,860,1120,860,160,604,1120,604,160,348,1120,348
R# � 160,92,480,92,800,92,1120,92
\ � �_LINES
f � 12,23,1,0;0;0;0;5
p �
z � X%=320 � 960 � 320
� � Y%=256 � 800 � 256
� � X%,0:� X%,1023
� � 0,Y%:� 1259,Y%
� �:�
� � 640,260:� 7,640,764
� � 324,512:� 7,958,512
� � A%=1 � 12
� � px(A%)-150,py(A%)-60
� �&40+A%:�
� � 360,322
� �"PARENT BOIMORPH"
� � 360,755
� �"GENERATION NUMBER ";gen
	 �4:�
 � �_CHOSE
 �5:� 360,290
$, �"? or breed from child (A-L)?";:*FX 15
.	 A$=�
8 �A$;:C%=�A$-&40
B � C%<0 � C%>12 �_REVIEW:�
L � A%=0 � 5
V parent(A%)=morph(A%,C%)
` �:�4:�
j � �_REVIEW
t � 22,1
~ �"Current Biomorph has:-"
� � A%=0 � 5
�% �"GENE ";A%;" VALUE ";parent(A%)
� �
�P �_TREE(parent(0),parent(1),parent(2),parent(3),parent(4),parent(5),640,300)
�) �0,30);"Press any key to continue";
� A$=�:gen=gen-1:� 22,0
� �
�" � �_TREE(D,L,dA,AR,DT,DS,X,Y)
� � X,Y:� X,Y-L
� �_GROW(�/2,L,X,Y,D)
� �
� � �_GROW(TH,L,X,Y,D)
 � D � X,Y � �

 dX=�(TH+dA)*(1/AR)
 dY=�(TH+dA)*AR
 � 1,dX,dY
(( �_GROW(TH+dA+DT,L-DS,X+dX,Y+dY,D-1)
2
 � X,Y
< dX=L*�(TH-dA)*(1/AR)
F dY=L*�(TH-dA)*AR
P � 1,dX,dY:� X,Y
Z( �_GROW(TH-dA-DT,L-DS,X+dX,Y+dY,D-1)
d �
�
00000000  0d 00 64 14 20 f4 20 2a  20 42 69 6f 6d 6f 72 70  |..d. . * Biomorp|
00000010  68 73 20 2a 0d 00 6e 13  20 f4 20 62 79 20 4d 69  |hs *..n. . by Mi|
00000020  6b 65 20 43 6f 6f 6b 0d  00 78 15 20 f4 20 28 63  |ke Cook..x. . (c|
00000030  29 20 4d 69 63 72 6f 20  55 73 65 72 0d 00 82 08  |) Micro User....|
00000040  20 eb 20 31 0d 00 8c 1c  20 de 20 6d 6f 72 70 68  | . 1.... . morph|
00000050  28 35 2c 31 32 29 2c 70  61 72 65 6e 74 28 35 29  |(5,12),parent(5)|
00000060  0d 00 96 1c 20 de 20 67  69 28 35 2c 32 29 2c 70  |.... . gi(5,2),p|
00000070  78 28 31 32 29 2c 70 79  28 31 32 29 0d 00 a0 3d  |x(12),py(12)...=|
00000080  20 f4 20 52 45 41 44 20  49 4e 20 49 4e 43 52 45  | . READ IN INCRE|
00000090  4d 45 4e 54 53 20 41 4e  44 20 4c 49 4d 49 54 53  |MENTS AND LIMITS|
000000a0  20 28 4d 49 4e 20 26 20  4d 41 58 29 20 4f 46 20  | (MIN & MAX) OF |
000000b0  45 41 43 48 20 47 45 4e  45 0d 00 aa 0b 20 f7 20  |EACH GENE.... . |
000000c0  8d 64 48 40 0d 00 b4 1a  20 e3 20 41 25 3d 30 20  |.dH@.... . A%=0 |
000000d0  b8 20 32 3a e3 20 42 25  3d 30 20 b8 20 35 0d 00  |. 2:. B%=0 . 5..|
000000e0  be 14 20 f3 20 67 69 28  42 25 2c 41 25 29 3a ed  |.. . gi(B%,A%):.|
000000f0  3a ed 0d 00 c8 33 20 dc  20 31 2c 34 2c 30 2e 31  |:....3 . 1,4,0.1|
00000100  36 2c 30 2e 32 2c 30 2e  31 36 2c 32 3a 52 45 4d  |6,0.2,0.16,2:REM|
00000110  20 47 65 6e 65 20 69 6e  63 72 65 6d 65 6e 74 20  | Gene increment |
00000120  76 61 6c 75 65 0d 00 d2  37 20 dc 20 31 2c 2d 33  |value...7 . 1,-3|
00000130  36 2c 2d 33 2e 31 34 2c  30 2e 31 2c 2d 33 2e 31  |6,-3.14,0.1,-3.1|
00000140  34 2c 2d 31 38 3a 52 45  4d 20 47 65 6e 65 20 6d  |4,-18:REM Gene m|
00000150  69 6e 69 6d 75 6d 20 76  61 6c 75 65 0d 00 dc 32  |inimum value...2|
00000160  20 dc 20 39 2c 33 36 2c  33 2e 31 34 2c 31 30 2c  | . 9,36,3.14,10,|
00000170  33 2e 31 34 2c 31 38 3a  52 45 4d 20 47 65 6e 65  |3.14,18:REM Gene|
00000180  20 6d 61 78 69 6d 75 6d  20 76 61 6c 75 65 0d 00  | maximum value..|
00000190  e6 2a 20 f2 5f 49 4e 54  50 4f 53 3a f4 20 49 6e  |.* ._INTPOS:. In|
000001a0  74 69 61 6c 69 73 65 20  64 69 73 70 6c 61 79 20  |tialise display |
000001b0  70 6f 73 69 74 69 6f 6e  0d 00 f0 1e 20 f2 5f 49  |position.... ._I|
000001c0  4e 54 50 3a f4 20 49 6e  74 69 61 6c 69 73 65 20  |NTP:. Intialise |
000001d0  70 61 72 65 6e 74 0d 00  fa 0a 20 67 65 6e 3d 30  |parent.... gen=0|
000001e0  0d 01 04 08 20 eb 20 30  0d 01 0e 06 20 f5 0d 01  |.... . 0.... ...|
000001f0  18 0e 20 67 65 6e 3d 67  65 6e 2b 31 0d 01 22 0d  |.. gen=gen+1..".|
00000200  20 f2 5f 4d 55 54 41 54  45 0d 01 2c 0e 20 f2 5f  | ._MUTATE..,. ._|
00000210  44 49 53 50 4c 41 59 0d  01 36 0c 20 f2 5f 43 48  |DISPLAY..6. ._CH|
00000220  4f 53 45 0d 01 40 08 20  fd 20 a3 0d 01 4a 0d 20  |OSE..@. . ...J. |
00000230  dd 20 f2 5f 49 4e 54 50  0d 01 54 11 20 e7 20 41  |. ._INTP..T. . A|
00000240  24 3d 22 43 22 20 8c 20  e1 0d 01 5e 10 20 70 61  |$="C" . ...^. pa|
00000250  72 65 6e 74 28 30 29 3d  31 0d 01 68 10 20 70 61  |rent(0)=1..h. pa|
00000260  72 65 6e 74 28 31 29 3d  34 0d 01 72 13 20 70 61  |rent(1)=4..r. pa|
00000270  72 65 6e 74 28 32 29 3d  2e 37 38 35 0d 01 7c 10  |rent(2)=.785..|.|
00000280  20 70 61 72 65 6e 74 28  33 29 3d 31 0d 01 86 10  | parent(3)=1....|
00000290  20 70 61 72 65 6e 74 28  34 29 3d 30 0d 01 90 10  | parent(4)=0....|
000002a0  20 70 61 72 65 6e 74 28  35 29 3d 30 0d 01 9a 11  | parent(5)=0....|
000002b0  20 e7 20 41 24 3d 22 41  22 20 8c 20 e1 0d 01 a4  | . A$="A" . ....|
000002c0  0f 20 e3 20 41 25 3d 30  20 b8 20 35 0d 01 ae 21  |. . A%=0 . 5...!|
000002d0  20 70 61 72 65 6e 74 28  41 25 29 3d 28 b3 28 35  | parent(A%)=(.(5|
000002e0  29 2b 31 29 2a 67 69 28  41 25 2c 30 29 0d 01 b8  |)+1)*gi(A%,0)...|
000002f0  06 20 ed 0d 01 c2 15 20  70 61 72 65 6e 74 28 30  |. ..... parent(0|
00000300  29 3d b3 28 33 29 2b 31  0d 01 cc 06 20 e1 0d 01  |)=.(3)+1.... ...|
00000310  d6 0f 20 dd 20 f2 5f 4d  55 54 41 54 45 0d 01 e0  |.. . ._MUTATE...|
00000320  10 20 e3 20 42 25 3d 31  20 b8 20 31 32 0d 01 ea  |. . B%=1 . 12...|
00000330  0f 20 e3 20 41 25 3d 30  20 b8 20 35 0d 01 f4 1c  |. . A%=0 . 5....|
00000340  20 6d 6f 72 70 68 28 41  25 2c 42 25 29 3d 70 61  | morph(A%,B%)=pa|
00000350  72 65 6e 74 28 41 25 29  0d 01 fe 1a 20 e7 20 28  |rent(A%).... . (|
00000360  42 25 83 32 29 20 44 25  3d 2d 31 20 8b 20 44 25  |B%.2) D%=-1 . D%|
00000370  3d 31 0d 02 08 10 20 43  25 3d 28 42 25 2d 31 29  |=1.... C%=(B%-1)|
00000380  81 32 0d 02 12 14 20 e7  20 43 25 3c 3e 41 25 20  |.2.... . C%<>A% |
00000390  8c 20 8d 54 70 42 0d 02  1c 57 20 e7 20 6d 6f 72  |. .TpB...W . mor|
000003a0  70 68 28 41 25 2c 42 25  29 2b 44 25 2a 28 67 69  |ph(A%,B%)+D%*(gi|
000003b0  28 41 25 2c 30 29 29 3c  67 69 28 41 25 2c 31 29  |(A%,0))<gi(A%,1)|
000003c0  20 84 20 6d 6f 72 70 68  28 41 25 2c 42 25 29 2b  | . morph(A%,B%)+|
000003d0  44 25 2a 28 67 69 28 41  25 2c 30 29 29 3e 67 69  |D%*(gi(A%,0))>gi|
000003e0  28 41 25 2c 32 29 20 8c  20 8d 54 70 42 0d 02 26  |(A%,2) . .TpB..&|
000003f0  2c 20 6d 6f 72 70 68 28  41 25 2c 42 25 29 3d 6d  |, morph(A%,B%)=m|
00000400  6f 72 70 68 28 41 25 2c  42 25 29 2b 44 25 2a 28  |orph(A%,B%)+D%*(|
00000410  67 69 28 41 25 2c 30 29  29 0d 02 30 0a 20 ed 3a  |gi(A%,0))..0. .:|
00000420  ed 3a e1 0d 02 3a 10 20  dd 20 f2 5f 44 49 53 50  |.:...:. . ._DISP|
00000430  4c 41 59 0d 02 44 0c 20  f2 5f 4c 49 4e 45 53 0d  |LAY..D. ._LINES.|
00000440  02 4e 50 20 f2 5f 54 52  45 45 28 70 61 72 65 6e  |.NP ._TREE(paren|
00000450  74 28 30 29 2c 70 61 72  65 6e 74 28 31 29 2c 70  |t(0),parent(1),p|
00000460  61 72 65 6e 74 28 32 29  2c 70 61 72 65 6e 74 28  |arent(2),parent(|
00000470  33 29 2c 70 61 72 65 6e  74 28 34 29 2c 70 61 72  |3),parent(4),par|
00000480  65 6e 74 28 35 29 2c 36  34 30 2c 35 30 30 29 0d  |ent(5),640,500).|
00000490  02 58 10 20 e3 20 41 25  3d 31 20 b8 20 31 32 0d  |.X. . A%=1 . 12.|
000004a0  02 62 62 20 f2 5f 54 52  45 45 28 6d 6f 72 70 68  |.bb ._TREE(morph|
000004b0  28 30 2c 41 25 29 2c 6d  6f 72 70 68 28 31 2c 41  |(0,A%),morph(1,A|
000004c0  25 29 2c 6d 6f 72 70 68  28 32 2c 41 25 29 2c 6d  |%),morph(2,A%),m|
000004d0  6f 72 70 68 28 33 2c 41  25 29 2c 6d 6f 72 70 68  |orph(3,A%),morph|
000004e0  28 34 2c 41 25 29 2c 6d  6f 72 70 68 28 35 2c 41  |(4,A%),morph(5,A|
000004f0  25 29 2c 70 78 28 41 25  29 2c 70 79 28 41 25 29  |%),px(A%),py(A%)|
00000500  29 0d 02 6c 08 20 ed 3a  e1 0d 02 76 0f 20 dd 20  |)..l. .:...v. . |
00000510  f2 5f 49 4e 54 50 4f 53  0d 02 80 0b 20 f7 20 8d  |._INTPOS.... . .|
00000520  44 48 43 0d 02 8a 0f 20  e3 20 41 3d 31 20 b8 20  |DHC.... . A=1 . |
00000530  31 32 0d 02 94 14 20 f3  20 70 78 28 41 29 2c 70  |12.... . px(A),p|
00000540  79 28 41 29 3a ed 0d 02  9e 18 20 f1 27 27 89 28  |y(A):..... .''.(|
00000550  31 34 29 3b 22 42 69 6f  6d 6f 72 70 68 22 0d 02  |14);"Biomorph"..|
00000560  a8 2a 20 f1 22 41 6e 20  65 78 65 72 63 69 73 65  |.* ."An exercise|
00000570  20 69 6e 20 44 61 72 77  69 6e 69 61 6e 20 45 76  | in Darwinian Ev|
00000580  6f 6c 75 74 69 6f 6e 22  0d 02 b2 14 20 f1 22 42  |olution".... ."B|
00000590  79 20 4d 69 6b 65 20 43  6f 6f 6b 22 0d 02 bc 2b  |y Mike Cook"...+|
000005a0  20 f1 22 42 61 73 65 64  20 6f 6e 20 61 6e 20 69  | ."Based on an i|
000005b0  64 65 61 20 62 79 20 52  69 63 68 61 72 64 20 44  |dea by Richard D|
000005c0  61 77 6b 69 6e 73 22 0d  02 c6 26 20 f1 22 41 75  |awkins"...& ."Au|
000005d0  74 68 6f 72 20 6f 66 20  54 48 45 20 42 4c 49 4e  |thor of THE BLIN|
000005e0  44 20 57 41 54 43 48 4d  41 4b 45 52 22 0d 02 d0  |D WATCHMAKER"...|
000005f0  2b 20 f1 27 27 27 22 4f  70 74 69 6f 6e 73 20 74  |+ .'''"Options t|
00000600  6f 20 73 74 61 72 74 20  65 76 6f 6c 76 69 6e 67  |o start evolving|
00000610  20 66 72 6f 6d 3a 2d 22  0d 02 da 16 20 f1 22 41  | from:-".... ."A|
00000620  20 2d 20 41 20 6d 69 63  72 6f 62 65 2e 22 0d 02  | - A microbe."..|
00000630  e4 1d 20 f1 22 42 20 2d  20 53 6f 6d 65 20 72 61  |.. ."B - Some ra|
00000640  6e 64 6f 6d 20 70 6f 69  6e 74 22 0d 02 ee 1b 20  |ndom point".... |
00000650  f1 22 43 20 2d 20 41 20  64 65 66 69 6e 65 64 20  |."C - A defined |
00000660  70 6f 69 6e 74 22 0d 02  f8 26 20 f1 22 50 72 65  |point"...& ."Pre|
00000670  73 73 20 74 68 65 20 6b  65 79 20 6f 66 20 79 6f  |ss the key of yo|
00000680  75 72 20 63 68 6f 69 63  65 2e 22 3b 0d 03 02 2e  |ur choice.";....|
00000690  20 41 24 3d be 3a e7 20  ac 28 41 24 3d 22 41 22  | A$=.:. .(A$="A"|
000006a0  20 84 20 41 24 3d 22 42  22 20 84 20 41 24 3d 22  | . A$="B" . A$="|
000006b0  43 22 29 20 8c 20 8d 54  42 43 0d 03 0c 12 20 f1  |C") . .TBC.... .|
000006c0  3a e7 20 41 24 3c 3e 22  43 22 20 e1 0d 03 16 0f  |:. A$<>"C" .....|
000006d0  20 e3 20 41 25 3d 30 20  b8 20 35 0d 03 20 1b 20  | . A%=0 . 5.. . |
000006e0  f1 22 47 65 6e 65 20 6e  75 6d 62 65 72 20 22 3b  |."Gene number ";|
000006f0  41 25 22 3d 22 3b 0d 03  2a 11 20 e8 20 70 61 72  |A%"=";..*. . par|
00000700  65 6e 74 28 41 25 29 0d  03 34 64 20 e7 20 70 61  |ent(A%)..4d . pa|
00000710  72 65 6e 74 28 41 25 29  3e 67 69 28 41 25 2c 32  |rent(A%)>gi(A%,2|
00000720  29 20 84 20 70 61 72 65  6e 74 28 41 25 29 3c 67  |) . parent(A%)<g|
00000730  69 28 41 25 2c 31 29 20  f1 22 56 61 6c 75 65 73  |i(A%,1) ."Values|
00000740  20 62 65 74 77 65 65 6e  20 22 3b 67 69 28 41 25  | between ";gi(A%|
00000750  2c 31 29 3b 22 20 61 6e  64 20 22 3b 67 69 28 41  |,1);" and ";gi(A|
00000760  25 2c 32 29 3a e5 20 8d  54 60 43 0d 03 3e 08 20  |%,2):. .T`C..>. |
00000770  ed 3a e1 0d 03 48 49 20  dc 20 31 36 30 2c 38 36  |.:...HI . 160,86|
00000780  30 2c 34 38 30 2c 38 36  30 2c 38 30 30 2c 38 36  |0,480,860,800,86|
00000790  30 2c 31 31 32 30 2c 38  36 30 2c 31 36 30 2c 36  |0,1120,860,160,6|
000007a0  30 34 2c 31 31 32 30 2c  36 30 34 2c 31 36 30 2c  |04,1120,604,160,|
000007b0  33 34 38 2c 31 31 32 30  2c 33 34 38 0d 03 52 23  |348,1120,348..R#|
000007c0  20 dc 20 31 36 30 2c 39  32 2c 34 38 30 2c 39 32  | . 160,92,480,92|
000007d0  2c 38 30 30 2c 39 32 2c  31 31 32 30 2c 39 32 0d  |,800,92,1120,92.|
000007e0  03 5c 0e 20 dd 20 f2 5f  4c 49 4e 45 53 0d 03 66  |.\. . ._LINES..f|
000007f0  18 20 ef 20 31 32 2c 32  33 2c 31 2c 30 3b 30 3b  |. . 12,23,1,0;0;|
00000800  30 3b 30 3b 35 0d 03 70  06 20 f1 0d 03 7a 19 20  |0;0;5..p. ...z. |
00000810  e3 20 58 25 3d 33 32 30  20 b8 20 39 36 30 20 88  |. X%=320 . 960 .|
00000820  20 33 32 30 0d 03 84 19  20 e3 20 59 25 3d 32 35  | 320.... . Y%=25|
00000830  36 20 b8 20 38 30 30 20  88 20 32 35 36 0d 03 8e  |6 . 800 . 256...|
00000840  15 20 ec 20 58 25 2c 30  3a df 20 58 25 2c 31 30  |. . X%,0:. X%,10|
00000850  32 33 0d 03 98 15 20 ec  20 30 2c 59 25 3a df 20  |23.... . 0,Y%:. |
00000860  31 32 35 39 2c 59 25 0d  03 a2 08 20 ed 3a ed 0d  |1259,Y%.... .:..|
00000870  03 ac 1a 20 ec 20 36 34  30 2c 32 36 30 3a f0 20  |... . 640,260:. |
00000880  37 2c 36 34 30 2c 37 36  34 0d 03 b6 1a 20 ec 20  |7,640,764.... . |
00000890  33 32 34 2c 35 31 32 3a  f0 20 37 2c 39 35 38 2c  |324,512:. 7,958,|
000008a0  35 31 32 0d 03 c0 10 20  e3 20 41 25 3d 31 20 b8  |512.... . A%=1 .|
000008b0  20 31 32 0d 03 ca 1b 20  ec 20 70 78 28 41 25 29  | 12.... . px(A%)|
000008c0  2d 31 35 30 2c 70 79 28  41 25 29 2d 36 30 0d 03  |-150,py(A%)-60..|
000008d0  d4 0e 20 ef 26 34 30 2b  41 25 3a ed 0d 03 de 0e  |.. .&40+A%:.....|
000008e0  20 ec 20 33 36 30 2c 33  32 32 0d 03 e8 17 20 f1  | . 360,322.... .|
000008f0  22 50 41 52 45 4e 54 20  42 4f 49 4d 4f 52 50 48  |"PARENT BOIMORPH|
00000900  22 0d 03 f2 0e 20 ec 20  33 36 30 2c 37 35 35 0d  |".... . 360,755.|
00000910  03 fc 1e 20 f1 22 47 45  4e 45 52 41 54 49 4f 4e  |... ."GENERATION|
00000920  20 4e 55 4d 42 45 52 20  22 3b 67 65 6e 0d 04 06  | NUMBER ";gen...|
00000930  09 20 ef 34 3a e1 0d 04  10 0e 20 dd 20 f2 5f 43  |. .4:..... . ._C|
00000940  48 4f 53 45 0d 04 1a 11  20 ef 35 3a ec 20 33 36  |HOSE.... .5:. 36|
00000950  30 2c 32 39 30 0d 04 24  2c 20 f1 22 3f 20 6f 72  |0,290..$, ."? or|
00000960  20 62 72 65 65 64 20 66  72 6f 6d 20 63 68 69 6c  | breed from chil|
00000970  64 20 28 41 2d 4c 29 3f  22 3b 3a 2a 46 58 20 31  |d (A-L)?";:*FX 1|
00000980  35 0d 04 2e 09 20 41 24  3d be 0d 04 38 14 20 f1  |5.... A$=...8. .|
00000990  41 24 3b 3a 43 25 3d 97  41 24 2d 26 34 30 0d 04  |A$;:C%=.A$-&40..|
000009a0  42 1e 20 e7 20 43 25 3c  30 20 84 20 43 25 3e 31  |B. . C%<0 . C%>1|
000009b0  32 20 f2 5f 52 45 56 49  45 57 3a e1 0d 04 4c 0f  |2 ._REVIEW:...L.|
000009c0  20 e3 20 41 25 3d 30 20  b8 20 35 0d 04 56 1c 20  | . A%=0 . 5..V. |
000009d0  70 61 72 65 6e 74 28 41  25 29 3d 6d 6f 72 70 68  |parent(A%)=morph|
000009e0  28 41 25 2c 43 25 29 0d  04 60 0b 20 ed 3a ef 34  |(A%,C%)..`. .:.4|
000009f0  3a e1 0d 04 6a 0f 20 dd  20 f2 5f 52 45 56 49 45  |:...j. . ._REVIE|
00000a00  57 0d 04 74 0b 20 ef 20  32 32 2c 31 0d 04 7e 1e  |W..t. . 22,1..~.|
00000a10  20 f1 22 43 75 72 72 65  6e 74 20 42 69 6f 6d 6f  | ."Current Biomo|
00000a20  72 70 68 20 68 61 73 3a  2d 22 0d 04 88 0f 20 e3  |rph has:-".... .|
00000a30  20 41 25 3d 30 20 b8 20  35 0d 04 92 25 20 f1 22  | A%=0 . 5...% ."|
00000a40  47 45 4e 45 20 22 3b 41  25 3b 22 20 56 41 4c 55  |GENE ";A%;" VALU|
00000a50  45 20 22 3b 70 61 72 65  6e 74 28 41 25 29 0d 04  |E ";parent(A%)..|
00000a60  9c 06 20 ed 0d 04 a6 50  20 f2 5f 54 52 45 45 28  |.. ....P ._TREE(|
00000a70  70 61 72 65 6e 74 28 30  29 2c 70 61 72 65 6e 74  |parent(0),parent|
00000a80  28 31 29 2c 70 61 72 65  6e 74 28 32 29 2c 70 61  |(1),parent(2),pa|
00000a90  72 65 6e 74 28 33 29 2c  70 61 72 65 6e 74 28 34  |rent(3),parent(4|
00000aa0  29 2c 70 61 72 65 6e 74  28 35 29 2c 36 34 30 2c  |),parent(5),640,|
00000ab0  33 30 30 29 0d 04 b0 29  20 f1 8a 30 2c 33 30 29  |300)...) ..0,30)|
00000ac0  3b 22 50 72 65 73 73 20  61 6e 79 20 6b 65 79 20  |;"Press any key |
00000ad0  74 6f 20 63 6f 6e 74 69  6e 75 65 22 3b 0d 04 ba  |to continue";...|
00000ae0  1a 20 41 24 3d be 3a 67  65 6e 3d 67 65 6e 2d 31  |. A$=.:gen=gen-1|
00000af0  3a ef 20 32 32 2c 30 0d  04 c4 06 20 e1 0d 04 ce  |:. 22,0.... ....|
00000b00  22 20 dd 20 f2 5f 54 52  45 45 28 44 2c 4c 2c 64  |" . ._TREE(D,L,d|
00000b10  41 2c 41 52 2c 44 54 2c  44 53 2c 58 2c 59 29 0d  |A,AR,DT,DS,X,Y).|
00000b20  04 d8 12 20 ec 20 58 2c  59 3a df 20 58 2c 59 2d  |... . X,Y:. X,Y-|
00000b30  4c 0d 04 e2 18 20 f2 5f  47 52 4f 57 28 af 2f 32  |L.... ._GROW(./2|
00000b40  2c 4c 2c 58 2c 59 2c 44  29 0d 04 ec 06 20 e1 0d  |,L,X,Y,D).... ..|
00000b50  04 f6 19 20 dd 20 f2 5f  47 52 4f 57 28 54 48 2c  |... . ._GROW(TH,|
00000b60  4c 2c 58 2c 59 2c 44 29  0d 05 00 12 20 e7 20 44  |L,X,Y,D).... . D|
00000b70  20 ec 20 58 2c 59 20 8b  20 e1 0d 05 0a 17 20 64  | . X,Y . ..... d|
00000b80  58 3d 9b 28 54 48 2b 64  41 29 2a 28 31 2f 41 52  |X=.(TH+dA)*(1/AR|
00000b90  29 0d 05 14 13 20 64 59  3d b5 28 54 48 2b 64 41  |).... dY=.(TH+dA|
00000ba0  29 2a 41 52 0d 05 1e 0e  20 f0 20 31 2c 64 58 2c  |)*AR.... . 1,dX,|
00000bb0  64 59 0d 05 28 28 20 f2  5f 47 52 4f 57 28 54 48  |dY..(( ._GROW(TH|
00000bc0  2b 64 41 2b 44 54 2c 4c  2d 44 53 2c 58 2b 64 58  |+dA+DT,L-DS,X+dX|
00000bd0  2c 59 2b 64 59 2c 44 2d  31 29 0d 05 32 0a 20 ec  |,Y+dY,D-1)..2. .|
00000be0  20 58 2c 59 0d 05 3c 19  20 64 58 3d 4c 2a 9b 28  | X,Y..<. dX=L*.(|
00000bf0  54 48 2d 64 41 29 2a 28  31 2f 41 52 29 0d 05 46  |TH-dA)*(1/AR)..F|
00000c00  15 20 64 59 3d 4c 2a b5  28 54 48 2d 64 41 29 2a  |. dY=L*.(TH-dA)*|
00000c10  41 52 0d 05 50 14 20 f0  20 31 2c 64 58 2c 64 59  |AR..P. . 1,dX,dY|
00000c20  3a ec 20 58 2c 59 0d 05  5a 28 20 f2 5f 47 52 4f  |:. X,Y..Z( ._GRO|
00000c30  57 28 54 48 2d 64 41 2d  44 54 2c 4c 2d 44 53 2c  |W(TH-dA-DT,L-DS,|
00000c40  58 2b 64 58 2c 59 2b 64  59 2c 44 2d 31 29 0d 05  |X+dX,Y+dY,D-1)..|
00000c50  64 06 20 e1 0d ff                                 |d. ...|
00000c56