home *** CD-ROM | disk | FTP | other *** search
/ Collection of Education / collectionofeducationcarat1997.iso / COMPUSCI / NERVES.ZIP / NO87 / NSDATA.C < prev    next >
C/C++ Source or Header  |  1990-12-30  |  10KB  |  211 lines

  1. #ifndef EXTERN
  2. #define EXTERN extern
  3. #endif
  4. EXTERN enum asc_val {CTRLD=4,TAB=9,CR=13,CTRLS=19,ESC=27,SPACE=32};
  5. EXTERN enum ext_val {F1=59,F2,F3,F4,F5,F6,F7,F8,F9,F10,
  6.              UP=72,LEFT=75,RIGHT=77,DOWN=80};
  7. EXTERN char neurfname[39];      /* current neuron filename */
  8. EXTERN char envfname[39];       /* current environment filename */
  9. EXTERN struct Iint {        /* intrinsic current structure */
  10.        int type;        /* type: 0=Vinf; 1=rand */
  11.        float IL;        /* low intrinsic current, Ae-9 */
  12.        float pL[3];        /* parameters for LIC function */
  13.        float IH;        /* high intrinsic current, Ae-9 */
  14.        float pH[2];        /* parameters for HIC function */
  15.        int H;                   /* TRUE if high intrinsic current on */
  16.        int iIL;            /* low intrinsic current */
  17.        int ipL[3];        /* parameters for LIC function */
  18.        int iIH;            /* high intrinsic current, Ae-9 */
  19.        int ipH[2];        /* parameters for HIC function */
  20.        int tint;        /* time since intrinsic current changed, msec */
  21.        int tmax;        /* maximum time since current changed, msec */
  22.        };
  23. EXTERN struct Iint *Iinta;    /* intrinsic current structure area pointer */
  24. EXTERN int ni;            /* number of intrinsic current blocks */
  25. EXTERN struct con {        /* neuron connections structure */
  26.        char sname[7];           /* sending neuron name */
  27.        int s;            /* sending neuron index */
  28.        float Isr;        /* current multiplier from s */
  29.        int ctype;        /* connection type: 0=reg; 1=gate; 2=mod */
  30.        char cname[7];           /* compound synapse neuron name */
  31.        int c;            /* compound synapse neuron index */
  32.        float Icr;        /* compound current constant */
  33.        int U;            /* ungated state, 0 or 1 */
  34.        struct con *next;    /* next connection */
  35.        int iIsr;        /* current integer multiplier from s */
  36.        int iIcr;        /* integer compound current constant */
  37.        };
  38. EXTERN struct con *cona;    /* connections area pointer */
  39. EXTERN int nc;            /* number of connections */
  40. EXTERN enum senst {NONE=0,LAF,LAB,AC,OS,EC,MC};
  41. EXTERN struct neuron {        /* basic neuron structure */
  42.        char name[7];        /* name of neuron */
  43.        float Gmem;        /* membrane conductance, Se-6=(1/ohm)e-6 */
  44.        float Cmem;        /* membrane capacitance, pF=Fe-9 */
  45.        float Vt;        /* threshold voltage, mV=Ve-3 */
  46.        float Fmin;        /* minimum firing frequency, dimensionless */
  47.        float Gain;        /* firing frequency gain, 1/mV = 1/(Ve-3) */
  48.        struct Iint *Iint;    /* pointer to intrinsic current parameters */
  49.        enum senst Isens;    /* sensory current function name */
  50.        float pI[2];             /* sensory current parameters */
  51.        int mtype;        /* motor type: 0=none; 1=force; 2=state */
  52.        int mname;        /* mtr name: 0=fwd|foot; 1=bck|mouth; 2=lat */
  53.        float mconst;        /* motor constant */
  54.        struct con *con;        /* neuron interconnections */
  55.        int iGmem;        /* membrane conductance */
  56.        int iCmem;        /* membrane capacitance */
  57.        long iVt;        /* threshold voltage */
  58.        int iFmin;        /* minimum firing frequency; 0-100 */
  59.        int iGain;        /* gain */
  60.        long ipI[2];        /* sensory current parameters */
  61.        int imconst;        /* motor constant */
  62.        };
  63. EXTERN struct neuron *ns;    /* pointer to neuron list */
  64. EXTERN int nn;            /* number of neurons */
  65. EXTERN struct neurcalc {    /* calculated quantities for neurons */
  66.        long V;            /* voltage; millivolts */
  67.        long Vlast;        /* last voltage */
  68.        int F;            /* firing frequency; 0-100 */
  69.        int Flast;        /* last firing frequency */
  70.        long I;            /* current */
  71.        };
  72. EXTERN struct neurcalc *nsc;    /* pointer to neuron calculation list */
  73. EXTERN int attang[6];            /* leg attachment angle (100xradians)*/
  74. EXTERN int attl[6];             /* leg attachment length */
  75. EXTERN int legl[6];             /* leg length when up */
  76. EXTERN int legang[6];           /* leg angles */
  77. EXTERN int lfoot[6];            /* last foot state */
  78. EXTERN int antenna[2];          /* antenna contact */
  79. EXTERN int antcang[2];          /* antenna contact angle */
  80. EXTERN int antang[2];           /* antenna angle to bug, constant */
  81. EXTERN int antl;                /* antenna length from bug center, constant */
  82. EXTERN int cercus[2];           /* cercus contact */
  83. EXTERN int cercang[2];          /* cercus angle to bug, constant */
  84. EXTERN int cercl;               /* cercus length from bug center, constant */
  85. EXTERN long mouthodor;           /* odor strength at mouth */
  86. EXTERN long odor[2];             /* odor strength at each antenna */
  87. EXTERN long energy;             /* energy capacity */
  88. EXTERN int mouth;               /* mouth contact */
  89. EXTERN int maxlegang[6];        /* maximum leg angles */
  90. EXTERN int minlegang[6];        /* minimum leg angles */
  91. EXTERN int DT;            /* time step */
  92. EXTERN int AspR;                /* aspect ratio */
  93. EXTERN int hdsang[2];
  94. EXTERN int hdsl;
  95. EXTERN int hdtang;
  96. EXTERN int hdtl;
  97. EXTERN int hdbang;
  98. EXTERN int hdbl;
  99. EXTERN int btang[2];
  100. EXTERN int btl;
  101. EXTERN int bmang[2];
  102. EXTERN int bml;
  103. EXTERN int bbang[2];
  104. EXTERN int bbl;
  105. EXTERN int cerbang[2];
  106. EXTERN int cerbl;
  107. EXTERN int antbang[2];
  108. EXTERN int antbl;
  109. EXTERN int nfood;               /* number of food patches */
  110. EXTERN int foodx[NFOOD];        /* food x coordinates */
  111. EXTERN int foody[NFOOD];        /* food y coordinates */
  112. EXTERN long foodsize[NFOOD];    /* food sizes */
  113. EXTERN int foodr[NFOOD];        /* radius of food */
  114. EXTERN int ofoodr[NFOOD];       /* old food radius */
  115. EXTERN int nblock;              /* number of blocks */
  116. EXTERN int blockx[NBLOCK];      /* block x coordinates */
  117. EXTERN int blocky[NBLOCK];      /* block y coordinates */
  118. EXTERN struct graph {           /* graph structure */
  119.        int gtype;               /* graph types: 0-none, 1-var, 2-gait */
  120.        char gneur[7];           /* graph neuron name */
  121.        int g;                   /* graph neuron index */
  122.        int gvar;                /* graph variable: 0-V, 1-F, 2-I */
  123.        int gscale;              /* graph scale */
  124.        } gr[5];
  125. EXTERN int Iextgr;              /* graph whose neuron has external current */
  126. EXTERN int Iextind;             /* index of neuron for external current */
  127. EXTERN long Iextint;            /* external current */
  128. EXTERN struct bug {             /* bug location, etc. */
  129.        long x;                  /* bug x (1000xactual) */
  130.        long y;                  /* bug y (1000xactual) */
  131.        long ang;                /* bug angle (100000xactual) */
  132.        int foot[6];             /* foot states */
  133.        int footx[6];            /* foot x's */
  134.        int footy[6];            /* foot y's */
  135.        int antx[2];        /* antenna x's */
  136.        int anty[2];        /* antenna y's */
  137.        int cercx[2];        /* cercus x's */
  138.        int cercy[2];        /* cercus y's */
  139.        int mouthx;        /* mouth x */
  140.        int mouthy;        /* mouth y */
  141.        int mouthst;        /* mouth state: 0-closed, 1-open */
  142.        };
  143. EXTERN struct bug bug;          /* bug data */
  144. EXTERN struct bug obug;         /* last bug data */
  145. EXTERN struct bugpts {        /* structure of calculted bug pts */
  146.        int head[8];        /* points of head */
  147.        int body[12];        /* points of body */
  148.        int footx[6];        /* foot x's */
  149.        int footy[6];        /* foot y's */
  150.        int legx[6];        /* leg attachment x's */
  151.        int legy[6];        /* leg attachment y's */
  152.        int antx[2];        /* antenna x's */
  153.        int anty[2];        /* antenna y's */
  154.        int antax[2];        /* antenna attachment x's */
  155.        int antay[2];        /* antenna attachment y's */
  156.        int cercx[2];        /* cercus x's */
  157.        int cercy[2];        /* cercus x's */
  158.        int cercax[2];        /* cercus attachment x's */
  159.        int cercay[2];        /* cercus attachment y's */
  160.        };
  161. EXTERN struct bugpts bugp;    /* bug pts */
  162. EXTERN int drawmult;            /* multiple of steps, before draws bug */
  163. EXTERN int edget[2];            /* time left for edge turning */
  164. EXTERN int edgecang[2];         /* angle of bug to edge while turning */
  165. EXTERN int plottype;            /* plot type: 0=graphs; 1=neuron activity */
  166. EXTERN int isin[TWOPI/2+1];     /* int sin table */
  167. EXTERN i