Assembler source code for the ancestral creature.
genotype: 80 aaa origin: 1-1-1990 00:00:00:00 ancestor parent genotype: human 1st_daughter: flags: 0 inst: 839 mov_daught: 80 2nd_daughter: flags: 0 inst: 813 mov_daught: 80 nop_1 ; 01 0 beginning template nop_1 ; 01 1 beginning template nop_1 ; 01 2 beginning template nop_1 ; 01 3 beginning template zero ; 04 4 put zero in cx or1 ; 02 5 put 1 in first bit of cx shl ; 03 6 shift left cx shl ; 03 7 shift left cx, now cx = 4 ; ax = bx = ; cx = template size dx = mov_cd ; 18 8 move template size to dx ; ax = bx = ; cx = template size dx = template size adrb ; 1c 9 get (backward) address of beginning template nop_0 ; 00 10 compliment to beginning template nop_0 ; 00 11 compliment to beginning template nop_0 ; 00 12 compliment to beginning template nop_0 ; 00 13 compliment to beginning template ; ax = start of mother + 4 bx = ; cx = template size dx = template size sub_ac ; 07 14 subtract cx from ax ; ax = start of mother bx = ; cx = template size dx = template size mov_ab ; 19 15 move start address to bx ; ax = start of mother bx = start of mother ; cx = template size dx = template size adrf ; 1d 16 get (forward) address of end template nop_0 ; 00 17 compliment to end template nop_0 ; 00 18 compliment to end template nop_0 ; 00 19 compliment to end template nop_1 ; 01 20 compliment to end template ; ax = end of mother bx = start of mother ; cx = template size dx = template size inc_a ; 08 21 to include dummy statement to separate creatures sub_ab ; 06 22 subtract start address from end address to get size ; ax = end of mother bx = start of mother ; cx = size of mother dx = template size nop_1 ; 01 23 reproduction loop template nop_1 ; 01 24 reproduction loop template nop_0 ; 00 25 reproduction loop template nop_1 ; 01 26 reproduction loop template mal ; 1e 27 allocate memory for daughter cell, address to ax ; ax = start of daughter bx = start of mother ; cx = size of mother dx = template size call ; 16 28 call template below (copy procedure) nop_0 ; 00 29 copy procedure compliment nop_0 ; 00 30 copy procedure compliment nop_1 ; 01 31 copy procedure compliment nop_1 ; 01 32 copy procedure compliment divide ; 1f 33 create independent daughter cell jmp ; 14 34 jump to template below (reproduction loop, above) nop_0 ; 00 35 reproduction loop compliment nop_0 ; 00 36 reproduction loop compliment nop_1 ; 01 37 reproduction loop compliment nop_0 ; 00 38 reproduction loop compliment if_cz ; 05 39 this is a dummy instruction to separate templates ; begin copy procedure nop_1 ; 01 40 copy procedure template nop_1 ; 01 41 copy procedure template nop_0 ; 00 42 copy procedure template nop_0 ; 00 43 copy procedure template push_ax ; 0c 44 push ax onto stack push_bx ; 0d 45 push bx onto stack push_cx ; 0e 46 push cx onto stack nop_1 ; 01 47 copy loop template nop_0 ; 00 48 copy loop template nop_1 ; 01 49 copy loop template nop_0 ; 00 50 copy loop template mov_iab ; 1a 51 move contents of [bx] to [ax] dec_c ; 0a 52 decrement cx if_cz ; 05 53 if cx == 0 perform next instruction, otherwise skip it jmp ; 14 54 jump to template below (copy procedure exit) nop_0 ; 00 55 copy procedure exit compliment nop_1 ; 01 56 copy procedure exit compliment nop_0 ; 00 57 copy procedure exit compliment nop_0 ; 00 58 copy procedure exit compliment inc_a ; 08 59 increment ax inc_b ; 09 60 increment bx jmp ; 14 61 jump to template below (copy loop) nop_0 ; 00 62 copy loop compliment nop_1 ; 01 63 copy loop compliment nop_0 ; 00 64 copy loop compliment nop_1 ; 01 65 copy loop compliment if_cz ; 05 66 this is a dummy instruction, to separate templates nop_1 ; 01 67 copy procedure exit template nop_0 ; 00 68 copy procedure exit template nop_1 ; 01 69 copy procedure exit template nop_1 ; 01 70 copy procedure exit template pop_cx ; 12 71 pop cx off stack pop_bx ; 11 72 pop bx off stack pop_ax ; 10 73 pop ax off stack ret ; 17 74 return from copy procedure nop_1 ; 01 75 end template nop_1 ; 01 76 end template nop_1 ; 01 77 end template nop_0 ; 00 78 end template if_cz ; 05 79 dummy statement to separate creatures