/* Structures */

typedef char boolean;
typedef unsigned char byte;

/* network command and data structures */
struct cmd_struct {     /* network command structure */
  int length;			   /* number of 32-bit items */
  int zero;			       /* must be zero */
  int numbin;			   /* number of time bins (1-900) */
  int spare1;			   /* spare */
  int units;               /* code for data units */
  int spacecraft;          /* Voyager 1 or 2 */
  int year;                /* year of century */
  int day;                 /* day of year */
  int hour;                /* hour of day */
  int minute;			   /* minute of hour */
  long int millisec;       /* millisecond of minute */
  long int span;           /* plot span in seconds */
  int filter;			   /* filter channels */
  int fmin;                /* min channel to filter */
  int fmax;                /* max channel to filter */
  int window;              /* window in seconds */
  int nchan;               /* number of channels to plot */
  int chan[16];            /* channel numbers */
  char peaks;              /* nonzero to plot peaks */
  char survey;             /* nonzero to automatically continue */
  char replot;             /* nonzero to replot same time span */
  char fg;                 /* nonzero for electron gyrofrequency trace */
  char fp;                 /* nonzero for plasma frequency trace */
  char autoscale;          /* nonzero to autoscale */
  char fgonly;             /* nonzero for fg only plot */
  char spare2;	           /* spare */
  char spare3;
  char spare4;
};

struct dat_struct {     /* network data structure */
  long int length;		   /* number of 32-bit items */
  int position;            /* relative channel position */
  int flag;                /* data identfication flag */
  int spare0, spare1;	   /* spares */
  int datmin, datmax;      /* actual minimum and maximum data */
  int data[900];           /* data */
  int spare[124];		   /* spare */
};

struct ef {
   double time;
   long mfds;
};

struct cd {
   int year, hour, second, millisec, mod65536, mod60;
};

typedef struct {
   union {
      struct ef ef;
      struct cd cd;
   } org;
   int line;
   byte mode;
   byte ef;
   int data[16];
} cd_type;

struct dev_table             /* structure of graphics driver */
{
  char *name;
  int driver;
  int mode;
};

struct old_params            /* stores some cmd settings */
{
  int numbin;
  int spare;
  int units;
  int spacecraft;
  int year, day, hour, minute;
  long int millisec, span;
};

typedef struct
{
   int month, mday;
} doy_date;


typedef boolean (*fncptr) (void);

typedef struct {
   char *keyword;
   fncptr fnc;
} kmd_type;
