📄 soup_in.h
字号:
/* soup_in.h 9-9-92 Artificial Life simulator setup routines *//* Tierra Simulator V4.0: Copyright (c) 1991, 1992 Tom Ray & Virtual Life *//* * sccsid: @(#)soup_in.h 1.5 7/21/92 */#include "license.h"#ifndef SOUP_IN_H#define SOUP_IN_H/* observational parameters: */I32s BrkupSiz = 1024; /* size of output file in K: break.1, break.2 ... */I32s CumGeneBnk = 0; /* Use cumulative gene files, or overwrite */I32s debug = 0; /* 0 = off, 1 = on, printf statements for debugging */I32s DiskOut = 1; /* output data to disk (1 = on, 0 = off) */I32s GeneBnker = 1; /* turn genebanker on and off */I8s GenebankPath[80] = "gb/"; /* path for genebanker output */I32s hangup = 0; /* 0 = exit on error, 1 = hangup on error for debugging */I32s Log = 0; /* 0 = no log file, 1 = write tierra.log file to disk */I32s MaxFreeBlocks = 600;/* initial # of structure for memory allocation */I8s OutPath[80] = "td/"; /* path for data output */I32s RamBankSiz = 30000;/* max num genotypes in ram, use with genebanker */I32s SaveFreq = 100; /* frequency of saving core_out, soup_out and list */I32s SavMinNum = 2; /* minimum number of individuals to save genotype */float SavThrMem = .015;/* threshold memory occupancy to save genotype */float SavThrPop = .015;/* threshold population proportion to save genotype */I32s WatchExe = 0; /* mark executed instructions in genome in genebank */I32s WatchMov = 0; /* set mov bits in genome in genebank */I32s WatchTem = 0; /* set template bits in genome in genebank *//* environmental variables: */I32s alive = 500; /* how many millions of instruction will we run */float DistFreq = .3; /* frequency of disturbance, factor of recovery time */float DistProp = .2; /* proportion of population affected by distrubance */I32s DivSameSiz = 0; /* produce offspring of same size, stop size change */I32s DivSameGen = 0; /* produce offspring of same genotype, stop evolution */I32s DropDead = 5; /* stop system if no reproduction in last x million */float GenPerBkgMut = 16.; /* mut rate control by generations ("cosmic ray") */float GenPerFlaw = 32.;/* flaw control by generations */float GenPerMovMut = 8.;/* mutation rate control by generations (copy mut) */I8s IMapFile[80] = "opcode.map"; /* map of instructions set into space */I32s MalMode = 2; /* 0 = first fit, 1 = better fit, 2 = random preference,3 = near mother's address, 4 = near dx address, 5 = near top of stack address*/I32s MalReapTol = 1; /* 0 = reap by queue, 1 = reap oldest creat wthn MalTol */I32s MalTol = 5; /* multiple of avgsize to search for free block */float MateProb = .2; /* probability of mating, this mal */I32s MateSearchL = 0; /* Search limit to find a mate, like SearchLimit */I32s MateSizeEp = 1; /* critters size +- val => allowed to mate with */float MateXoverProp = 1.0; /* prop. of gene to consider for Xover point */float MaxMalMult = 3; /* multiple of cell size allowed for mal() */I32s MinCellSize = 8; /* minimum size for cells */I32s MinTemplSize = 1; /* minimum size for templates */float MovPropThrDiv = .7;/* min proportion of daughter cell filled by mov */I32s MemModeFree = 0; /* unix chmod for when mem is dealloced, */I32s MemModeProt = 2; /* unix chmod for when mem is Alloced, NOT fully impl!*/I32s new_soup = 1; /* 1 = this a new soup, 0 = restarting an old run */I32s NumCells = 1; /* # of creatures and gaps used to inoculate new soup */double PhotonPow = 1.5;/* power for photon match slice size */I32s PhotonWidth = 8; /* amount by which photons slide to find best fit */I8s PhotonWord[80] = "chlorophill"; /* word used to define photon */float PutLimit = 20.; /* distance for intercellular communication */float ReapRndProp = 0.0; /* rnd prop of top of reaper Q to reap from */float SearchLimit = 5.; /* distance for template search */I32s seed = 0; /* seed for random number generator, 0 uses time to set seed */I32s SizDepSlice = 1; /* set slice size by size of creature */double SlicePow = 1; /* set power for slice size, use when SizDepSlice = 1 */I32s SliceSize = 25; /* slice size when SizDepSlice = 0 */I32s SliceStyle = 2; /* choose style of determining slice size */float SlicFixFrac = 0; /* fixed fraction of slice size */float SlicRanFrac = 2; /* random fraction of slice size */I32s SoupSize = 60000L; /* size of soup in instructions *//* an edited version of the id[INSTNUM] array must be created and placed in the arginst.h file, for use by the assembler/disassembler of arg.c */#if INST == 1InstDef id[INSTNUM] = { {0x00, "nop0", nop, pnop}, {0x01, "nop1", nop, pnop}, {0x02, "not0", not0, pnot0}, {0x03, "shl", shl, pshl}, {0x04, "zero", movdd, pzero}, {0x05, "ifz", ifz, pifz}, {0x06, "sub_ab", math, psub_ab}, {0x07, "sub_ac", math, psub_ac}, {0x08, "inc_a", math, pinc_a}, {0x09, "inc_b", math, pinc_b}, {0x0a, "dec_c", math, pdec_c}, {0x0b, "inc_c", math, pinc_c}, {0x0c, "pushax", push, ppushax}, {0x0d, "pushbx", push, ppushbx}, {0x0e, "pushcx", push, ppushcx}, {0x0f, "pushdx", push, ppushdx}, {0x10, "popax", pop, ppopax}, {0x11, "popbx", pop, ppopbx}, {0x12, "popcx", pop, ppopcx}, {0x13, "popdx", pop, ppopdx}, {0x14, "jmp", adr, ptjmp}, {0x15, "jmpb", adr, ptjmpb}, {0x16, "call", tcall, ptcall}, {0x17, "ret", pop, pret}, {0x18, "movcd", movdd, pmovdc}, {0x19, "movab", movdd, pmovba}, {0x1a, "movii", movii, pmovii}, {0x1b, "adr", adr, padr}, {0x1c, "adrb", adr, padrb}, {0x1d, "adrf", adr, padrf}, {0x1e, "mal", malchm, pmal}, {0x1f, "divide", divide, pdivide}};#endif /* INST == 1 */#if INST == 2InstDef id[INSTNUM] = { {0x00, "nop0", nop, pnop}, {0x01, "nop1", nop, pnop}, {0x02, "ax", regorder, pax}, {0x03, "bx", regorder, pbx}, {0x04, "cx", regorder, pcx}, {0x05, "dx", regorder, pdx}, {0x06, "movdd", movdd, pmovdd}, {0x07, "movdi", movdi, pmovdi}, {0x08, "movid", movid, pmovid}, {0x09, "movii", movii, pmovii}, {0x0a, "push", push, ppush}, {0x0b, "pop", pop, ppop}, {0x0c, "put", put, pput}, {0x0d, "get", get, pget}, {0x0e, "inc", math, pinc}, {0x0f, "dec", math, pdec}, {0x10, "add", math, padd}, {0x11, "sub", math, psub}, {0x12, "zero", movdd, pzero}, {0x13, "shl", shl, pshl}, {0x14, "not0", not0, pnot0}, {0x15, "not", not, pnot}, {0x16, "ifz", ifz, pifz}, {0x17, "iffl", ifz, piffl}, {0x18, "jmp", adr, ptjmp}, {0x19, "jmpb", adr, ptjmpb}, {0x1a, "call", tcall, ptcall}, {0x1b, "adr", adr, padr}, {0x1c, "adrb", adr, padrb}, {0x1d, "adrf", adr, padrf}, {0x1e, "mal", malchm, pmal}, {0x1f, "divide", divide, pdivide}};#endif /* INST == 2 */#if INST == 3InstDef id[INSTNUM] = { {0x00, "nop0", nop, pnop}, {0x01, "nop1", nop, pnop}, {0x02, "rollu", rollu, pnop}, {0x03, "rolld", rolld, pnop}, {0x04, "enter", enter, pnop}, {0x05, "exch", exch, pnop}, {0x06, "movdi", movdi, pmovdi}, {0x07, "movid", movid, pmovid}, {0x08, "movii", movii, pmovii}, {0x09, "push", push, ppush}, {0x0a, "pop", pop3, ppop}, {0x0b, "put", put, pput}, {0x0c, "get", get, pget}, {0x0d, "inc", math, pinc}, {0x0e, "dec", math, pdec}, {0x0f, "add", math3, padd}, {0x10, "sub", math3, psub}, {0x11, "zero", movdd3, pzero}, {0x12, "shl", shl, pshl}, {0x13, "not0", not0, pnot0}, {0x14, "not", not, pnot}, {0x15, "rand", movdd3, prand}, {0x16, "ifz", ifz, pifz}, {0x17, "iffl", ifz, piffl}, {0x18, "jmp", adr, ptjmp}, {0x19, "jmpb", adr, ptjmpb}, {0x1a, "call", tcall, ptcall}, {0x1b, "adr", adr3, padr}, {0x1c, "adrb", adr3, padrb}, {0x1d, "adrf", adr3, padrf}, {0x1e, "mal", malchm3, pmal}, {0x1f, "divide", divide, pdivide}};#endif /* INST == 3 */#if INST == 4InstDef id[INSTNUM] = { {0x00, "nop0", nop, pnop}, {0x01, "nop1", nop, pnop}, {0x02, "movdi", movdi, pmovdi}, {0x03, "movid", movid, pmovid}, {0x04, "movii", movii, pmovii}, {0x05, "pushax", push, ppushax}, {0x06, "pushbx", push, ppushbx}, {0x07, "pushcx", push, ppushcx}, {0x08, "pushdx", push, ppushdx}, {0x09, "popax", pop, ppopax}, {0x0a, "popbx", pop, ppopbx}, {0x0b, "popcx", pop, ppopcx}, {0x0c, "popdx", pop, ppopdx}, {0x0d, "put", put, pput}, {0x0e, "get", get, pget}, {0x0f, "inc", math, pinc}, {0x10, "dec", math, pdec}, {0x11, "add", math, padd}, {0x12, "sub", math, psub}, {0x13, "zero", movdd, pzero}, {0x14, "shl", shl, pshl}, {0x15, "not0", not0, pnot0}, {0x16, "ifz", ifz, pifz}, {0x17, "iffl", ifz, piffl}, {0x18, "jmp", adr, ptjmp}, {0x19, "jmpb", adr, ptjmpb}, {0x1a, "call", tcall, ptcall}, {0x1b, "adr", adr, padr}, {0x1c, "adrb", adr, padrb}, {0x1d, "adrf", adr, padrf}, {0x1e, "mal", malchm, pmal}, {0x1f, "divide", divide, pdivide}};#endif /* INST == 4 */#endif /* SOUP_IN_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -