
/*
 * Celestial Mechanics Simulation Tool
 *
 *	W. John Guineau
 *      3 Royal Crest Drive #9
 *      Marlboro, Mass. 01752
 *      (508) 485-6233
 *
 * Files:
 *	    cm.c
 *	    cm.h
 *	    cm.doc
 *
 * To Compile with Lattice 5.02:
 *
 *	    lc -b0  -Lm cm
 *
 *			      NOTICE
 *			      ------ 
 *
 *  I have placed this software in the Public Domain with the
 * condition that all the files remain together and that I remain
 * listed as the original author. This software may not be used for
 * commercial purposes or to make money in any way without expressed
 * written permission from the author (me). I'm including the source
 * code so if you make any significant modifications please concider
 * sending me a copy at the above address. I'd also be interested in
 * any interesting saved setup files you create.
 *
 *
 * This is my first Amiga program so I welcome any comments at all.
 * I wrote this program as both a way to learn the Amiga environment
 * and in response to a conversation I had with a friend on Celestial
 * Mechanics.
 *
 *
 */






#define BLKPEN 0
#define WHTPEN 1
#define REDPEN 2
#define ORGPEN 3
#define YLWPEN 4
#define GRNPEN 5
#define BLUPEN 6
#define PURPEN 7

#define REQBCK ORGPEN

#define SX  640
#define SY  400
#define STE 12
#define SD  3
#define COLORS 8

#define PX 220
#define PY STE
#define PW 200
#define PH 12



#define MAX_X 630
#define MAX_Y 340



USHORT	colortable[COLORS] = {
   0x000,			/* BLKPEN */
   0xfff,			/* WHTPEN */
   0xf00,			/* REDPEN */
   0xf90,			/* ORGPEN */
   0xff0,			/* YLWPEN */
   0x0f0,			/* GRNPEN */
   0x00f,			/* BLUPEN */
   0xf0f			/* PURPEN */
};
UWORD	*cp;		/* color palette */



/* 
 * Screen and Windows
 */

struct NewScreen ns = {
   0,0, 		/* Left, top */
   SX,SY,SD,		/* width,height,depth */
   ORGPEN,WHTPEN,	/* detail and block pens */
   HIRES|LACE,		/* mode (max pixels!) */
   CUSTOMSCREEN,	/* type */
   NULL,		/* fonts? */
   "Celestial Mechanics V1.0",
   NULL,		/* gadgets? */
   NULL 		/* bitmap? */

};


#define IDCMPFL (CLOSEWINDOW|MOUSEBUTTONS|MENUPICK|GADGETUP|REQCLEAR)
#define IDCMPFL_MM (CLOSEWINDOW|MOUSEBUTTONS|MENUPICK|GADGETUP|REQCLEAR|MOUSEMOVE)



struct NewWindow nw = {
   0,STE,		   /*  Start position */
   SX,SY-STE,		   /*  width, height,  */
   BLKPEN,WHTPEN,	   /*  detail, block pens */
     		           /*  IDCMP flags */
   IDCMPFL,

   GIMMEZEROZERO
 | ACTIVATE
 | REPORTMOUSE
 | WINDOWCLOSE
 | SMART_REFRESH,

   NULL,		   /* First gadget in list */
   NULL,		   /* User checkmark  */
   "Gravitational Behaviour",/* Window Title */
   NULL,		   /* Pointer to screen (Set later) */
   NULL,		   /* Pointer to superbitmap  */
   0,0,0,0,	           /* Ignored because not sizeable */
   CUSTOMSCREEN 	   /* on our own screen */
};

struct NewWindow npw = {
   PX,PY,		   /*  Start position */
   PW,PH,		   /*  width, height,  */
   ORGPEN,REDPEN,	   /*  detail, block pens */

   NULL,		   /* IDCMP flags */

   BORDERLESS
 | NOCAREREFRESH,

   NULL,		   /* First gadget in list */
   NULL,		   /* User checkmark  */
   NULL,                   /* Window Title */
   NULL,		   /* Pointer to screen (Set later) */
   NULL,		   /* Pointer to superbitmap  */
   0,0,0,0,     	   /* Ignored because not sizeable */
   CUSTOMSCREEN 	   /* on our own screen */
};






/*
 *	Text Attributes
 */
char def_font[] ="topaz.font";

struct TextAttr TxtAt_Plain = { 
   (UBYTE *)def_font,
   8,
   FS_NORMAL,
   FPF_ROMFONT
};

struct TextAttr TxtAt_BIU = {
   (UBYTE *)def_font, 
   8,
   FSF_BOLD | FSF_ITALIC | FSF_UNDERLINED,
   FPF_ROMFONT
};

struct TextAttr TxtAt_BU = {
   (UBYTE *)def_font,
   8,
   FSF_BOLD | FSF_UNDERLINED,
   FPF_ROMFONT
};

struct TextAttr TxtAt_BI = {
   (UBYTE *)def_font,
   8,
   FSF_BOLD | FSF_ITALIC,
   FPF_ROMFONT
};

struct TextAttr TxtAt_B ={
   (UBYTE *)def_font,
   8,
   FSF_BOLD,
   FPF_ROMFONT
};

struct TextAttr TxtAt_IU ={
   (UBYTE *)def_font,
   8,
   FSF_ITALIC | FSF_UNDERLINED,
   FPF_ROMFONT
};

struct TextAttr TxtAt_I ={
   (UBYTE *)def_font,
   8,
   FSF_ITALIC,
   FPF_ROMFONT
};

struct TextAttr TxtAt_U ={
   (UBYTE *)def_font,
   8,
   FSF_UNDERLINED,
   FPF_ROMFONT
};






/**************************************
 *   Gadgets 
 **************************************/

/*
 *  Gadget ID numbers
 */
#define NAMEGAD       1
#define RADIUSGAD     2
#define MASSGAD       3
#define VELOCITYGAD   4
#define DIRECTIONGAD  5
#define OKGAD	      6
#define CANCELGAD     7
#define RESETGAD      8
#define GGAD          9
#define DTGAD         10
#define TGAD          11
#define DSGAD         12
#define TLGAD         13
#define COLOR1GAD     14
#define COLOR2GAD     15
#define COLOR3GAD     16
#define COLOR4GAD     17
#define COLOR5GAD     18
#define COLOR6GAD     19
#define COLOR7GAD     20
#define FNGAD         21
#define FNOKGAD	      22
#define FNCANGAD      23
#define STGAD	      24
#define FXGAD	      25
#define AOKGAD	      26



/*
 * Some common gadget stuff 
 */
struct IntuiText yes_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   3,3, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Yes",                                /* IText */
   NULL 				/* NextText */
};

struct IntuiText no_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   7,3, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "No",                                /* IText */
   NULL 				/* NextText */
};


/*
 *	 cancel gadget
 */

SHORT cancel_Pairs[] = {
   0, 0,
   68,0,
   68,22,
   0, 22,
   0, 0
};

struct Border cancel_bord = {
   -1,	-1,				/* LeftEdge, TopEdge */
   REDPEN,REDPEN,JAM2,			/* FrontPen, BackPen, DrawMode */
   5,					/* Count of XY pairs */
   (SHORT *)&cancel_Pairs,              /* XY pairs */
   NULL 				/* Next Border */
};

char	*cantxt="CANCEL";		/* This gad is either CAN or DEL */
char	*deltxt="DELETE";

struct IntuiText cancel_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   9,8, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   NULL,                                /* IText */
   NULL 				/* NextText */
};

struct Gadget cancel = {
   NULL,			/* NextGadget pointer */
   130, 115,			/* LeftEdge, TopEdge  */
   68, 22,			/* Width, Height      */
				/* Gadget Flags */
   GADGHCOMP,
				/* Activation Flags */
   RELVERIFY
 | ENDGADGET,
				/* GadgetType */
   BOOLGADGET
 | REQGADGET,
   (APTR)&cancel_bord,          /* GadgetRender */
   NULL,			/* SelectRender */
   &cancel_text,		/* GadgetText */
   0x0, 			/* MutualExclude */
   NULL,			/* SpecialInfo */
   CANCELGAD,			/* GadgetID	    */
   NULL 			/* UserData Pointer */
};


/*
 *	 ok gadget
 */

SHORT ok_Pairs[] = {
   0, 0,
   30,0,
   30,22,
   0, 22,
   0, 0
};

struct Border ok_bord = {
   -1,	-1,		       /* LeftEdge, TopEdge */
   GRNPEN,REDPEN,JAM2,	       /* FrontPen, BackPen, DrawMode*/
   5,			       /* Count of XY p	airs */
   (SHORT *)&ok_Pairs,         /* XY pairs */
   NULL 		       /* Next Border */
};

struct IntuiText ok_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   5,7, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "OK",                                /* IText */
   NULL 				/* NextText */
};


struct Gadget ok = {
   &cancel,			  /* NextGadget pointer */
   15, 115,			  /* LeftEdge, TopEdge	*/
   30, 22,			  /* Width, Height	*/
				  /* Gadget Flags */
   GADGHCOMP,
				  /* Activation Flags */
   RELVERIFY
 | ENDGADGET,
				  /* GadgetType */
   BOOLGADGET
 | REQGADGET,
   (APTR)&ok_bord,                /*  GadgetRender */
   NULL,			  /* SelectRender */
   &ok_text,			  /* GadgetText */
   0x0, 			  /* MutualExclude */
   NULL,			  /* SpecialInfo */
   OKGAD,			  /* GadgetID	      */
   NULL 			  /* UserData Pointer */
};




/*
 *	 reset gadget
 */

SHORT reset_Pairs[] = {
   0, 0,
   51,0,
   51,22,
   0, 22,
   0, 0
};

struct Border reset_bord = {
   -1,	-1,		       /* LeftEdge, TopEdge */
   YLWPEN,REDPEN,JAM2,	       /* FrontPen, BackPen, DrawMode*/
   5,			       /* Count of XY pairs */
   (SHORT *)&reset_Pairs,      /* XY pairs */
   NULL 		       /* Next Border */
};

struct IntuiText reset_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   5,7,  				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "RESET",                             /* IText */
   NULL 				/* NextText */
};


struct Gadget reset = {
   &ok,		 	          /* NextGadget pointer */
   60, 115,			  /* LeftEdge, TopEdge	*/
   51, 22,			  /* Width, Height	*/
				  /* Gadget Flags */
   GADGHCOMP,
				  /* Activation Flags */
   RELVERIFY,
				  /* GadgetType */
   BOOLGADGET
 | REQGADGET,
   (APTR)&reset_bord,             /*  GadgetRender */
   NULL,			  /* SelectRender */
   &reset_text,			  /* GadgetText */
   0x0, 			  /* MutualExclude */
   NULL,			  /* SpecialInfo */
   RESETGAD,			  /* GadgetID	      */
   NULL 			  /* UserData Pointer */
};



/****************************************************
 *  Gadgets in Body Requestor
 ****************************************************/




/*
 *	Text for x,y printout in Body req
 */
char	xy_buf[80];
struct IntuiText xy_text = {
   BLUPEN,WHTPEN,			/* FrontPen, BackPen */
   JAM2,				/* DrawMode */
   15,96,				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   xy_buf,                              /* IText */
   NULL 				/* NextText */
};



/*
 *	 Fixed gadget
 */

struct Image fx_image = {
	0,0,				/* relative to select box */
	30,11,				/* same size as select box */
	SD,				/* planes deep as screen */
	NULL,				/* image data, but we don't need it */
	0x00,				/* planepick- none */
	BLUPEN,				/* planeonoff */
	NULL				/* next image, none */
};

struct IntuiText fx_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   10,82,				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Fixed",                             /* IText */
   &xy_text 				/* NextText */
};


struct Gadget fixed = {
   &reset, 			     /* NextGadget pointer */
   140, 80,			     /* LeftEdge, TopEdge  */
   30, 11,			     /* Width, Height	   */
				     /* Gadget Flags */
   GADGHNONE
 | GADGIMAGE,
   				     /* Activation Flags */
   TOGGLESELECT
 | RELVERIFY,

   BOOLGADGET			     /* GadgetType */
 | REQGADGET,
   (APTR)&fx_image,                  /* GadgetRender */
   NULL,			     /* SelectRender */
   &no_text,			     /* GadgetText */
   0x0, 			     /* MutualExclude */
   NULL,                             /* SpecialInfo */
   FXGAD,	                     /* GadgetID	 */
   NULL 			     /* UserData Pointer */
};


/*
 *	 Color gadgets
 */

struct IntuiText color_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   10,65,				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "COLOR",                             /* IText */
   &fx_text 				/* NextText */
};


struct Image color1_image = {
	0,0,				/* relative to select box */
	10,11,				/* same size as select box */
	SD,				/* planes deep as screen */
	NULL,				/* image data, but we don't need it */
	0x00,				/* planepick- none */
	0x1,				/* planeonoff */
	NULL				/* next image, none */
	};


struct Gadget color1 = {
   &fixed, 			     /* NextGadget pointer */
   119, 63,			     /* LeftEdge, TopEdge  */
   10, 11,			     /* Width, Height	   */
				     /* Gadget Flags */
   GADGHCOMP
 | GADGIMAGE,
   				     /* Activation Flags */
   RELVERIFY,
				     /* GadgetType */
   BOOLGADGET
 | REQGADGET,
   (APTR)&color1_image,              /* GadgetRender */
   NULL,			     /* SelectRender */
   NULL,			     /* GadgetText */
   0x0, 			     /* MutualExclude */
   NULL,                             /* SpecialInfo */
   COLOR1GAD,                        /* GadgetID */
   (APTR)WHTPEN 		     /* UserData Pointer */
};


struct Image color2_image = {
	0,0,				/* relative to select box */
	10,11,				/* same size as select box */
	SD,				/* planes deep as screen */
	NULL,				/* image data, but we don't need it */
	0x00,				/* planepick- none */
	0x2,				/* planeonoff */
	NULL				/* next image, none */
	};


struct Gadget color2 = {
   &color1, 			     /* NextGadget pointer */
   129, 63,			     /* LeftEdge, TopEdge  */
   10, 11,			     /* Width, Height	   */
				     /* Gadget Flags */
   GADGHCOMP
 | GADGIMAGE,
   				     /* Activation Flags */
   RELVERIFY,
				     /* GadgetType */
   BOOLGADGET
 | REQGADGET,
   (APTR)&color2_image,              /* GadgetRender */
   NULL,			     /* SelectRender */
   NULL,			     /* GadgetText */
   0x0, 			     /* MutualExclude */
   NULL,                             /* SpecialInfo */
   COLOR2GAD,                        /* GadgetID */
   (APTR)REDPEN 		     /* UserData Pointer */
};


struct Image color3_image = {
	0,0,				/* relative to select box */
	10,11,				/* same size as select box */
	SD,				/* planes deep as screen */
	NULL,				/* image data, but we don't need it */
	0x00,				/* planepick- none */
	0x3,				/* planeonoff */
	NULL				/* next image, none */
	};


struct Gadget color3 = {
   &color2, 			     /* NextGadget pointer */
   139, 63,			     /* LeftEdge, TopEdge  */
   10, 11,			     /* Width, Height	   */
				     /* Gadget Flags */
   GADGHCOMP
 | GADGIMAGE,
   				     /* Activation Flags */
   RELVERIFY,
				     /* GadgetType */
   BOOLGADGET
 | REQGADGET,
   (APTR)&color3_image,              /* GadgetRender */
   NULL,			     /* SelectRender */
   NULL,			     /* GadgetText */
   0x0, 			     /* MutualExclude */
   NULL,                             /* SpecialInfo */
   COLOR3GAD,                        /* GadgetID */
   (APTR)ORGPEN 		     /* UserData Pointer */
};


struct Image color4_image = {
	0,0,				/* relative to select box */
	10,11,				/* same size as select box */
	SD,				/* planes deep as screen */
	NULL,				/* image data, but we don't need it */
	0x00,				/* planepick- none */
	0x4,				/* planeonoff */
	NULL				/* next image, none */
	};


struct Gadget color4 = {
   &color3, 			     /* NextGadget pointer */
   149, 63,			     /* LeftEdge, TopEdge  */
   10, 11,			     /* Width, Height	   */
				     /* Gadget Flags */
   GADGHCOMP
 | GADGIMAGE,
   				     /* Activation Flags */
   RELVERIFY,
				     /* GadgetType */
   BOOLGADGET
 | REQGADGET,
   (APTR)&color4_image,              /* GadgetRender */
   NULL,			     /* SelectRender */
   NULL,			     /* GadgetText */
   0x0, 			     /* MutualExclude */
   NULL,                             /* SpecialInfo */
   COLOR4GAD,                        /* GadgetID */
   (APTR)YLWPEN 		     /* UserData Pointer */
};


struct Image color5_image = {
	0,0,				/* relative to select box */
	10,11,				/* same size as select box */
	SD,				/* planes deep as screen */
	NULL,				/* image data, but we don't need it */
	0x00,				/* planepick- none */
	0x5,				/* planeonoff */
	NULL				/* next image, none */
	};


struct Gadget color5 = {
   &color4, 			     /* NextGadget pointer */
   159, 63,			     /* LeftEdge, TopEdge  */
   10, 11,			     /* Width, Height	   */
				     /* Gadget Flags */
   GADGHCOMP
 | GADGIMAGE,
   				     /* Activation Flags */
   RELVERIFY,
				     /* GadgetType */
   BOOLGADGET
 | REQGADGET,
   (APTR)&color5_image,              /* GadgetRender */
   NULL,			     /* SelectRender */
   NULL,			     /* GadgetText */
   0x0, 			     /* MutualExclude */
   NULL,                             /* SpecialInfo */
   COLOR5GAD,                        /* GadgetID */
   (APTR)GRNPEN 		     /* UserData Pointer */
};


struct Image color6_image = {
	0,0,				/* relative to select box */
	10,11,				/* same size as select box */
	SD,				/* planes deep as screen */
	NULL,				/* image data, but we don't need it */
	0x00,				/* planepick- none */
	0x6,				/* planeonoff */
	NULL				/* next image, none */
	};


struct Gadget color6 = {
   &color5, 			     /* NextGadget pointer */
   169, 63,			     /* LeftEdge, TopEdge  */
   10, 11,			     /* Width, Height	   */
				     /* Gadget Flags */
   GADGHCOMP
 | GADGIMAGE,
   				     /* Activation Flags */
   RELVERIFY,
				     /* GadgetType */
   BOOLGADGET
 | REQGADGET,
   (APTR)&color6_image,              /* GadgetRender */
   NULL,			     /* SelectRender */
   NULL,			     /* GadgetText */
   0x0, 			     /* MutualExclude */
   NULL,                             /* SpecialInfo */
   COLOR6GAD,                        /* GadgetID */
   (APTR)BLUPEN 		     /* UserData Pointer */
};


struct Image color7_image = {
	0,0,				/* relative to select box */
	10,11,				/* same size as select box */
	SD,				/* planes deep as screen */
	NULL,				/* image data, but we don't need it */
	0x00,				/* planepick- none */
	0x7,				/* planeonoff */
	NULL				/* next image, none */
	};


struct Gadget color7 = {
   &color6, 			     /* NextGadget pointer */
   179, 63,			     /* LeftEdge, TopEdge  */
   10, 11,			     /* Width, Height	   */
				     /* Gadget Flags */
   GADGHCOMP
 | GADGIMAGE,
   				     /* Activation Flags */
   RELVERIFY,
				     /* GadgetType */
   BOOLGADGET
 | REQGADGET,
   (APTR)&color7_image,              /* GadgetRender */
   NULL,			     /* SelectRender */
   NULL,			     /* GadgetText */
   0x0, 			     /* MutualExclude */
   NULL,                             /* SpecialInfo */
   COLOR7GAD,                        /* GadgetID */
   (APTR)PURPEN 		     /* UserData Pointer */
};



/*
 *	 direction gadget
 */

SHORT direction_Pairs[] = {
   0, 0,
   90,0,
   90,13,
   0, 13,
   0, 0
};

struct Border direction_bord = {
   -1,	-3,			    /* LeftEdge, TopEdge */
   WHTPEN,REDPEN,JAM2,		    /* FrontPen, BackPen, DrawMode*/
   5,				    /* Count of XY pairs */
   (SHORT *)&direction_Pairs,       /* XY pairs */
   NULL 			    /* Next Border */
};

struct IntuiText dir_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   10,47,				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "DIRECTION",                         /* IText */
   &color_text 				/* NextText */
};


UBYTE direction_sbuf[12] = "0";
UBYTE direction_ubuf[12];

struct StringInfo direction_txstr = {
   direction_sbuf, direction_ubuf,	  /* Buffer, UndoBuffer  */
   0, 12, 0,				  /* BufferPos, MaxChars, DispPos */
   0, 1,				  /* UndoPos, NumChars */
   0, 0, 0,				  /* DispCount, CLeft, CTop */
   0x0, 0,				  /* LayerPtr, LongInt */
   NULL 				  /* AltKeyMap */
};

struct Gadget direction = {
   &color7, 			     /* NextGadget pointer */
   110, 45,			     /* LeftEdge, TopEdge  */
   88, 11,			     /* Width, Height	   */
				     /* Gadget Flags */
   GADGHCOMP,
				     /* Activation Flags */
   RELVERIFY
 | LONGINT
 | STRINGCENTER,
				     /* GadgetType */
   STRGADGET
 | REQGADGET,
   (APTR)&direction_bord,            /* GadgetRender */
   NULL,			     /* SelectRender */
   NULL,			     /* GadgetText */
   0x0, 			     /* MutualExclude */
   (APTR)&direction_txstr,           /* SpecialInfo */
   DIRECTIONGAD,		     /* GadgetID	 */
   NULL 			     /* UserData Pointer */
};


/*
 *	  velocity gadget
 */

SHORT velocity_Pairs[] = {
   0, 0,
   90,0,
   90,13,
   0, 13,
   0, 0
};

struct Border velocity_bord = {
   -1,	-3,			     /* LeftEdge, TopEdge */
   WHTPEN,REDPEN,JAM2,		     /* FrontPen, BackPen, DrawMode*/
   5,				     /* Count of XY pairs */
   (SHORT *)&velocity_Pairs,         /* XY pairs */
   NULL 			     /* Next Border */
};

struct IntuiText vel_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   10,34,				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "VELOCITY",                          /* IText */
   &dir_text				/* NextText */
};


UBYTE velocity_sbuf[20] = "0.0e0";
UBYTE velocity_ubuf[20];

struct StringInfo velocity_txstr = {
   velocity_sbuf, velocity_ubuf,	   /* Buffer, UndoBuffer  */
   0, 20, 0,				   /* BufferPos, MaxChars, DispPos */
   0, 5,				   /* UndoPos, NumChars */
   0, 0, 0,				   /* DispCount, CLeft, CTop */
   0x0, 0,				   /* LayerPtr, LongInt */
   NULL 				   /* AltKeyMap */
};


struct Gadget velocity = {
   &direction,			/* NextGadget pointer */
   110, 32,			/* LeftEdge, TopEdge  */
   88, 11,			/* Width, Height      */
				/* Gadget Flags */
   GADGHCOMP,
				/* Activation Flags */
   RELVERIFY
 | STRINGCENTER,
				/* GadgetType */
   STRGADGET
 | REQGADGET,
   (APTR)&velocity_bord,        /*  GadgetRender */
   NULL,			/* SelectRender */
   NULL,			/* GadgetText */
   0x0, 			/* MutualExclude */
   (APTR)&velocity_txstr,       /* SpecialInfo */
   VELOCITYGAD, 		/* GadgetID */
   NULL 			/* UserData Pointer */
};


/*
 *	name gadget
 */

SHORT name_Pairs[] = {
   0, 0,
   90,0,
   90,13,
   0, 13,
   0, 0
};

struct Border name_bord = {
   -1,	-3,			  /* LeftEdge, TopEdge */
   WHTPEN,REDPEN,JAM2,		  /* FrontPen, BackPen, DrawMode*/
   5,				  /* Count of XY pairs */
   (SHORT *)&name_Pairs,          /* XY pairs */
   NULL 			  /* Next Border */
};

struct IntuiText name_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   10,8,                                /* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "NAME",                              /* IText */
   &vel_text				/* NextText */
};

UBYTE name_sbuf[12] = "SUN";
UBYTE name_ubuf[12];

struct StringInfo name_txstr = {
   name_sbuf, name_ubuf,            /* Buffer, UndoBuffer */
   0, 12, 0,			    /* BufferPos, MaxChars, DispPos */
   0, 3,			    /* UndoPos, NumChars */
   0, 0, 0,			    /* DispCount, CLeft, CTop */
   0x0, 0,			    /* LayerPtr, LongInt */
   NULL 			    /* AltKeyMap */
};

struct Gadget name= {
   &velocity,			/* NextGadget pointer */
   110, 6,			/* LeftEdge, TopEdge  */
   88, 11,			/* Width, Height      */
				/* Gadget Flags */
   GADGHCOMP,
				/* Activation Flags */
   RELVERIFY
 | STRINGCENTER,
				/* GadgetType */
   STRGADGET
 | REQGADGET,
   (APTR)&name_bord,            /* GadgetRender */
   NULL,			/* SelectRender */
   NULL,			/* GadgetText */
   0x0, 			/* MutualExclude */
   (APTR)&name_txstr,           /* SpecialInfo */
   NAMEGAD,   			/* GadgetID */
   NULL 			/* UserData Pointer */
};




/*
 *	  mass gadget
 */

SHORT mass_Pairs[] = {
   0, 0,
   90,0,
   90,13,
   0, 13,
   0, 0
};

struct Border mass_bord = {
   -1,	-3,			  /* LeftEdge, TopEdge */
   WHTPEN,REDPEN,JAM2,		  /* FrontPen, BackPen, DrawMode*/
   5,				  /* Count of XY pairs */
   (SHORT *)&mass_Pairs,          /* XY pairs */
   NULL 			  /* Next Border */
};

struct IntuiText mass_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   10,21,				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "MASS",                              /* IText */
   &name_text 			/* NextText */
};

UBYTE mass_sbuf[20] = "1.0e0";
UBYTE mass_ubuf[20];

struct StringInfo mass_txstr = {
   mass_sbuf, mass_ubuf,	    /* Buffer, UndoBuffer */
   0, 20, 0,			    /* BufferPos, MaxChars, DispPos */
   0, 5,			    /* UndoPos, NumChars */
   0, 0, 0,			    /* DispCount, CLeft, CTop */
   0x0, 1,			    /* LayerPtr, LongInt */
   NULL 			    /* AltKeyMap */
};

struct Gadget mass = {
   &name,			/* NextGadget pointer */
   110, 19,			/* LeftEdge, TopEdge  */
   88, 11,			/* Width, Height      */
				/* Gadget Flags */
   GADGHCOMP,
				/* Activation Flags */
   RELVERIFY
 | STRINGCENTER,
				/* GadgetType */
   STRGADGET
 | REQGADGET,
   (APTR)&mass_bord,            /* GadgetRender */
   NULL,			/* SelectRender */
   NULL,			/* GadgetText */
   0x0, 			/* MutualExclude */
   (APTR)&mass_txstr,           /* SpecialInfo */
   MASSGAD,			/* GadgetID */
   NULL 			/* UserData Pointer */
};



/****************************************************
 *  Gadgets in Setup Requestor
 ****************************************************/


/*
 *	 ShowTime gadget
 */

struct Image st_image = {
	0,0,				/* relative to select box */
	30,11,				/* same size as select box */
	SD,				/* planes deep as screen */
	NULL,				/* image data, but we don't need it */
	0x00,				/* planepick- none */
	BLUPEN,				/* planeonoff */
	NULL				/* next image, none */
};

struct IntuiText st_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   10,98,				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "ShowTime",                          /* IText */
   NULL 				/* NextText */
};


struct Gadget st = {
   &reset, 			     /* NextGadget pointer */
   145, 96,			     /* LeftEdge, TopEdge  */
   30, 11,			     /* Width, Height	   */
				     /* Gadget Flags */
   GADGHNONE
 | GADGIMAGE,
   				     /* Activation Flags */
   TOGGLESELECT
 | RELVERIFY,

   BOOLGADGET			     /* GadgetType */
 | REQGADGET,
   (APTR)&st_image,                  /* GadgetRender */
   NULL,			     /* SelectRender */
   &no_text,			     /* GadgetText */
   0x0, 			     /* MutualExclude */
   NULL,                             /* SpecialInfo */
   STGAD,	                     /* GadgetID	 */
   NULL 			     /* UserData Pointer */
};


/*
 *	 TrailLength gadget
 */

SHORT tl_Pairs[] = {
   0, 0,
   90,0,
   90,13,
   0, 13,
   0, 0
};

struct Border tl_bord = {
   -1,	-3,			    /* LeftEdge, TopEdge */
   WHTPEN,REDPEN,JAM2,		    /* FrontPen, BackPen, DrawMode*/
   5,				    /* Count of XY pairs */
   (SHORT *)&tl_Pairs,              /* XY pairs */
   NULL 			    /* Next Border */
};


UBYTE tl_sbuf[20] = "0";
UBYTE tl_ubuf[20];

struct StringInfo tl_txstr = {
   tl_sbuf, tl_ubuf,  	                  /* Buffer, UndoBuffer  */
   0, 20, 0,				  /* BufferPos, MaxChars, DispPos */
   0, 1,				  /* UndoPos, NumChars */
   0, 0, 0,				  /* DispCount, CLeft, CTop */
   0x0, 1,				  /* LayerPtr, LongInt */
   NULL 				  /* AltKeyMap */
};

struct IntuiText tl_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   10,60,				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "TrailLength",                       /* IText */
   &st_text  				/* NextText */
};


struct Gadget tl = {
   &st, 			     /* NextGadget pointer */
   110, 58,			     /* LeftEdge, TopEdge  */
   88, 11,			     /* Width, Height	   */
				     /* Gadget Flags */
   GADGHCOMP,
   				     /* Activation Flags */
   RELVERIFY
 | LONGINT
 | STRINGCENTER,
				     /* GadgetType */
	   STRGADGET
 | REQGADGET,
   (APTR)&tl_bord,                   /* GadgetRender */
   NULL,			     /* SelectRender */
   NULL,			     /* GadgetText */
   0x0, 			     /* MutualExclude */
   (APTR)&tl_txstr,                  /* SpecialInfo */
   TLGAD,	                     /* GadgetID	 */
   NULL 			     /* UserData Pointer */
};


/*
 *	 ds (Delta S) gadget
 */

SHORT ds_Pairs[] = {
   0, 0,
   90,0,
   90,13,
   0, 13,
   0, 0
};

struct Border ds_bord = {
   -1,	-3,			    /* LeftEdge, TopEdge */
   WHTPEN,REDPEN,JAM2,		    /* FrontPen, BackPen, DrawMode*/
   5,				    /* Count of XY pairs */
   (SHORT *)&ds_Pairs,              /* XY pairs */
   NULL 			    /* Next Border */
};

struct IntuiText ds_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   10,47,				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Units/Pixel",                       /* IText */
   &tl_text 				/* NextText */
};


UBYTE ds_sbuf[20] = "1.0e0";
UBYTE ds_ubuf[20];

struct StringInfo ds_txstr = {
   ds_sbuf, ds_ubuf,  	                  /* Buffer, UndoBuffer  */
   0, 20, 0,				  /* BufferPos, MaxChars, DispPos */
   0, 5,				  /* UndoPos, NumChars */
   0, 0, 0,				  /* DispCount, CLeft, CTop */
   0x0, 1,				  /* LayerPtr, LongInt */
   NULL 				  /* AltKeyMap */
};

struct Gadget ds = {
   &tl,  			     /* NextGadget pointer */
   110, 45,			     /* LeftEdge, TopEdge  */
   88, 11,			     /* Width, Height	   */
				     /* Gadget Flags */
   GADGHCOMP,
				     /* Activation Flags */
   RELVERIFY
 | STRINGCENTER,
				     /* GadgetType */
   STRGADGET
 | REQGADGET,
   (APTR)&ds_bord,                   /*  GadgetRender */
   NULL,			     /* SelectRender */
   NULL,			     /* GadgetText */
   0x0, 			     /* MutualExclude */
   (APTR)&ds_txstr,                  /* SpecialInfo */
   DSGAD,		             /* GadgetID	 */
   NULL 			     /* UserData Pointer */
};


/*
 *	  t_gadget
 */

SHORT t_Pairs[] = {
   0, 0,
   90,0,
   90,13,
   0, 13,
   0, 0
};

struct Border t_bord = {
   -1,	-3,			     /* LeftEdge, TopEdge */
   WHTPEN,REDPEN,JAM2,		     /* FrontPen, BackPen, DrawMode*/
   5,				     /* Count of XY pairs */
   (SHORT *)&t_Pairs,                /* XY pairs */
   NULL 			     /* Next Border */
};

struct IntuiText t_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   10,34,				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Real Time",                         /* IText */
   &ds_text				/* NextText */
};


UBYTE t_sbuf[12] = "0";
UBYTE t_ubuf[12];

struct StringInfo t_txstr = {
   t_sbuf, t_ubuf,	                   /* Buffer, UndoBuffer  */
   0, 12, 0,				   /* BufferPos, MaxChars, DispPos */
   0, 1,				   /* UndoPos, NumChars */
   0, 0, 0,				   /* DispCount, CLeft, CTop */
   0x0, 0,				   /* LayerPtr, LongInt */
   NULL 				   /* AltKeyMap */
};


struct Gadget t = {
   &ds,	                        /* NextGadget pointer */
   110, 32,			/* LeftEdge, TopEdge  */
   88, 11,			/* Width, Height      */
				/* Gadget Flags */
   GADGHCOMP,
				/* Activation Flags */
   RELVERIFY
 | LONGINT
 | STRINGCENTER,
				/* GadgetType */
   STRGADGET
 | REQGADGET,
   (APTR)&t_bord,               /*  GadgetRender */
   NULL,			/* SelectRender */
   NULL,			/* GadgetText */
   0x0, 			/* MutualExclude */
   (APTR)&t_txstr,              /* SpecialInfo */
   TGAD, 		        /* GadgetID */
   NULL 			/* UserData Pointer */
};


/*
 *	G gadget
 */

SHORT G_Pairs[] = {
   0, 0,
   90,0,
   90,13,
   0, 13,
   0, 0
};

struct Border G_bord = {
   -1,	-3,			  /* LeftEdge, TopEdge */
   WHTPEN,REDPEN,JAM2,		  /* FrontPen, BackPen, DrawMode*/
   5,				  /* Count of XY pairs */
   (SHORT *)&G_Pairs,             /* XY pairs */
   NULL 			  /* Next Border */
};

struct IntuiText G_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   10,8,	                        /* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Gravity (G)",                       /* IText */
   &t_text				/* NextText */
};

UBYTE G_sbuf[20] = "6.67e0";
UBYTE G_ubuf[20];

struct StringInfo G_txstr = {
   G_sbuf, G_ubuf,                /* Buffer, UndoBuffer */
   0, 20, 0,			    /* BufferPos, MaxChars, DispPos */
   0, 6,			    /* UndoPos, NumChars */
   0, 0, 0,			    /* DispCount, CLeft, CTop */
   0x0, 0,			    /* LayerPtr, LongInt */
   NULL 			    /* AltKeyMap */
};

struct Gadget G = {
   &t,              		/* NextGadget pointer */
   110, 6,			/* LeftEdge, TopEdge  */
   88, 11,			/* Width, Height      */
				/* Gadget Flags */
   GADGHCOMP,
				/* Activation Flags */
   RELVERIFY
 | STRINGCENTER,
				/* GadgetType */
   STRGADGET
 | REQGADGET,
   (APTR)&G_bord,               /* GadgetRender */
   NULL,			/* SelectRender */
   NULL,			/* GadgetText */
   0x0, 			/* MutualExclude */
   (APTR)&G_txstr,              /* SpecialInfo */
   GGAD,			/* GadgetID */
   NULL 			/* UserData Pointer */
};




/*
 *	  dt gadget
 */

SHORT dt_Pairs[] = {
   0, 0,
   90,0,
   90,13,
   0, 13,
   0, 0
};

struct Border dt_bord = {
   -1,	-3,			  /* LeftEdge, TopEdge */
   WHTPEN,REDPEN,JAM2,		  /* FrontPen, BackPen, DrawMode*/
   5,				  /* Count of XY pairs */
   (SHORT *)&dt_Pairs,            /* XY pairs */
   NULL 			  /* Next Border */
};

struct IntuiText dt_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   10,21,				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Sim Time",                          /* IText */
   &G_text                              /* NextText */
};

UBYTE dt_sbuf[20] = "1.0e0";
UBYTE dt_ubuf[20];

struct StringInfo dt_txstr = {
   dt_sbuf, dt_ubuf,       	    /* Buffer, UndoBuffer */
   0, 20, 0,			    /* BufferPos, MaxChars, DispPos */
   0, 5,			    /* UndoPos, NumChars */
   0, 0, 0,			    /* DispCount, CLeft, CTop */
   0x0, 1,			    /* LayerPtr, LongInt */
   NULL 			    /* AltKeyMap */
};

struct Gadget dt = {
   &G,          		/* NextGadget pointer */
   110, 19,			/* LeftEdge, TopEdge  */
   88, 11,			/* Width, Height      */
				/* Gadget Flags */
   GADGHCOMP,
				/* Activation Flags */
   RELVERIFY
 | STRINGCENTER,
				/* GadgetType */
   STRGADGET
 | REQGADGET,
   (APTR)&dt_bord,              /* GadgetRender */
   NULL,			/* SelectRender */
   NULL,			/* GadgetText */
   0x0, 			/* MutualExclude */
   (APTR)&dt_txstr,             /* SpecialInfo */
   DTGAD, 			/* GadgetID */
   NULL 			/* UserData Pointer */
};





/*
 *	 FileName cancel gadget
 */

SHORT fncancel_Pairs[] = {
   0, 0,
   68,0,
   68,22,
   0, 22,
   0, 0
};

struct Border fncancel_bord = {
   -1,	-1,				/* LeftEdge, TopEdge */
   REDPEN,REDPEN,JAM2,			/* FrontPen, BackPen, DrawMode */
   5,					/* Count of XY pairs */
   (SHORT *)&fncancel_Pairs,              /* XY pairs */
   NULL 				/* Next Border */
};

struct IntuiText fncancel_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   9,8, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "CANCEL",                            /* IText */
   NULL 				/* NextText */
};

struct Gadget fncancel = {
   NULL,			/* NextGadget pointer */
   230, 35,			/* LeftEdge, TopEdge  */
   68, 22,			/* Width, Height      */
				/* Gadget Flags */
   GADGHCOMP,
				/* Activation Flags */
   RELVERIFY
 | ENDGADGET,
				/* GadgetType */
   BOOLGADGET
 | REQGADGET,
   (APTR)&fncancel_bord,          /* GadgetRender */
   NULL,			/* SelectRender */
   &fncancel_text,		/* GadgetText */
   0x0, 			/* MutualExclude */
   NULL,			/* SpecialInfo */
   FNCANGAD,			/* GadgetID	    */
   NULL 			/* UserData Pointer */
};


/*
 *	fnok gadget
 */

SHORT fnok_Pairs[] = {
   0, 0,
   30,0,
   30,22,
   0, 22,
   0, 0
};

struct Border fnok_bord = {
   -1,	-1,		       /* LeftEdge, TopEdge */
   GRNPEN,REDPEN,JAM2,	       /* FrontPen, BackPen, DrawMode*/
   5,			       /* Count of XY pairs */
   (SHORT *)&fnok_Pairs,         /* XY pairs */
   NULL 		       /* Next Border */
};

struct IntuiText fnok_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   5,7, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "OK",                                /* IText */
   NULL 				/* NextText */
};


struct Gadget fnok = {
   &fncancel,			  /* NextGadget pointer */
   100, 35,			  /* LeftEdge, TopEdge	*/
   30, 22,			  /* Width, Height	*/
				  /* Gadget Flags */
   GADGHCOMP,
				  /* Activation Flags */
   RELVERIFY
 | ENDGADGET,
				  /* GadgetType */
   BOOLGADGET
 | REQGADGET,
   (APTR)&fnok_bord,                /*  GadgetRender */
   NULL,			  /* SelectRender */
   &fnok_text,			  /* GadgetText */
   0x0, 			  /* MutualExclude */
   NULL,			  /* SpecialInfo */
   FNOKGAD,			  /* GadgetID	      */
   NULL 			  /* UserData Pointer */
};





/*
 *	 FileName gadget
 */

SHORT fn_Pairs[] = {
   0, 0,
   300,0,
   300,10,
   0, 10,
   0, 0
};

struct Border fn_bord = {
   -1,	-1,			    /* LeftEdge, TopEdge */
   YLWPEN,REDPEN,JAM2,		    /* FrontPen, BackPen, DrawMode*/
   5,				    /* Count of XY pairs */
   (SHORT *)&fn_Pairs,              /* XY pairs */
   NULL 			    /* Next Border */
};

struct IntuiText fn_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   140,5,				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Data File Name?",                   /* IText */
   NULL  				/* NextText */
};


UBYTE fn_sbuf[100] = "CM.DAT";
UBYTE fn_ubuf[100];

struct StringInfo fn_txstr = {
   fn_sbuf, fn_ubuf,  	                  /* Buffer, UndoBuffer  */
   0, 100, 0,				  /* BufferPos, MaxChars, DispPos */
   0, 6,				  /* UndoPos, NumChars */
   0, 0, 0,				  /* DispCount, CLeft, CTop */
   0x0, 0,				  /* LayerPtr, LongInt */
   NULL 				  /* AltKeyMap */
};

struct Gadget fn = {
   &fnok,  			     /* NextGadget pointer */
   50, 20,			     /* LeftEdge, TopEdge  */
   300, 10,			     /* Width, Height	   */
				     /* Gadget Flags */
   GADGHCOMP,
				     /* Activation Flags */
   RELVERIFY
 | ENDGADGET
 | STRINGCENTER,
				     /* GadgetType */
   STRGADGET
 | REQGADGET,
   (APTR)&fn_bord,                   /* GadgetRender */
   NULL,			     /* SelectRender */
   NULL,			     /* GadgetText */
   0x0, 			     /* MutualExclude */
   (APTR)&fn_txstr,                  /* SpecialInfo */
   FNGAD,		             /* GadgetID	 */
   NULL 			     /* UserData Pointer */
};





/*
 *	 aok gadget
 */


SHORT aok_Pairs[] = {
   0, 0,
   25,0,
   25,12,
   0, 12,
   0, 0
};

struct Border aok_bord = {
   -1,	-1,		       /* LeftEdge, TopEdge */
   GRNPEN,REDPEN,JAM2,	       /* FrontPen, BackPen, DrawMode*/
   5,			       /* Count of XY p	airs */
   (SHORT *)&aok_Pairs,        /* XY pairs */
   NULL 		       /* Next Border */
};

struct IntuiText aok_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   5,2, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "OK",                                /* IText */
   NULL 				/* NextText */
};


struct IntuiText A_text6 = {
   ORGPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   25,11,				/* LeftEdge, TopEdge */
   &TxtAt_BI, 				/* TextAttr */
   "Celestial Mechanics",               /* IText */
   NULL  				/* NextText */
};

struct IntuiText A_text5 = {
   ORGPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   25,21,				/* LeftEdge, TopEdge */
   &TxtAt_BI, 				/* TextAttr */
   "     Simulator     ",               /* IText */
   &A_text6  				/* NextText */
};

struct IntuiText A_text4 = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   25,38,				/* LeftEdge, TopEdge */
   &TxtAt_Plain, 			/* TextAttr */
   "  W. John Guineau  ",               /* IText */
   &A_text5  				/* NextText */
};

struct IntuiText A_text3 = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   25,46,				/* LeftEdge, TopEdge */
   &TxtAt_Plain, 			/* TextAttr */
   "3 Royal Crest Dr #0",               /* IText */
   &A_text4  				/* NextText */
};

struct IntuiText A_text2 = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   25,54,				/* LeftEdge, TopEdge */
   &TxtAt_Plain, 			/* TextAttr */
   " Marlboro, Ma 01752",               /* IText */
   &A_text3  				/* NextText */
};

struct IntuiText A_text = {
   WHTPEN,REDPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   25,62,				/* LeftEdge, TopEdge */
   &TxtAt_Plain, 				/* TextAttr */
   "  (508) 485-6233   ",               /* IText */
   &A_text2  				/* NextText */
};


struct Gadget aok = {
   NULL,  			     /* NextGadget pointer */
   85, 82,			     /* LeftEdge, TopEdge  */
   23, 10,			     /* Width, Height	   */
				     /* Gadget Flags */
   GADGHCOMP,
				     /* Activation Flags */
   RELVERIFY
 | ENDGADGET,
				     /* GadgetType */
   BOOLGADGET
 | REQGADGET,
   (APTR)&aok_bord,                  /* GadgetRender */
   NULL,			     /* SelectRender */
   &aok_text,			     /* GadgetText */
   0x0, 			     /* MutualExclude */
   NULL,                             /* SpecialInfo */
   AOKGAD,		             /* GadgetID	 */
   NULL 			     /* UserData Pointer */
};







/***********************************************************
 *
 *	MENUS
 *
 ***********************************************************/


/*
 * MenuNumber component definitions
 */
#define M_Control 0
#define I_Stop	  0
#define I_Start   1

#define M_Edit	  1
#define I_ClearB  0
#define I_ClearS  1
#define I_Modify  2
#define I_Create  3
#define I_Setup   4

#define M_File	  2
#define I_Exit	  0
#define I_SavScr  1
#define I_SavDat  2
#define I_LoadDat 3
#define I_About   4

/*
 *  MenuNumber Shortcuts
 */
#define MN_CStop   (SHIFTMENU(M_Control)|SHIFTITEM(I_Stop)|SHIFTSUB(NOSUB))
#define MN_CStart  (SHIFTMENU(M_Control)|SHIFTITEM(I_Start)|SHIFTSUB(NOSUB))

#define MN_ESetup  (SHIFTMENU(M_Edit)|SHIFTITEM(I_Setup)|SHIFTSUB(NOSUB))
#define MN_ECreate (SHIFTMENU(M_Edit)|SHIFTITEM(I_Create)|SHIFTSUB(NOSUB))
#define MN_EMod    (SHIFTMENU(M_Edit)|SHIFTITEM(I_Modify)|SHIFTSUB(NOSUB))
#define MN_EClearS (SHIFTMENU(M_Edit)|SHIFTITEM(I_ClearS)|SHIFTSUB(NOSUB))
#define MN_EClearB (SHIFTMENU(M_Edit)|SHIFTITEM(I_ClearB)|SHIFTSUB(NOSUB))

#define MN_FAbout  (SHIFTMENU(M_File)|SHIFTITEM(I_About)|SHIFTSUB(NOSUB))
#define MN_FLDat   (SHIFTMENU(M_File)|SHIFTITEM(I_LoadDat)|SHIFTSUB(NOSUB))
#define MN_FSDat   (SHIFTMENU(M_File)|SHIFTITEM(I_SavDat)|SHIFTSUB(NOSUB))
#define MN_FSScr   (SHIFTMENU(M_File)|SHIFTITEM(I_SavScr)|SHIFTSUB(NOSUB))
#define MN_FExit   (SHIFTMENU(M_File)|SHIFTITEM(I_Exit)|SHIFTSUB(NOSUB))



/*
 * "File" menu subitems
 */
struct IntuiText AboutTxt = {
   BLKPEN,WHTPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   0,0, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "About",                             /* IText */
   NULL 				/* NextText */
};

struct MenuItem About = {
   NULL,		    /* next item */
   0,0,100,10,		    /* Left,Top Edge, Width, Height */
   ITEMENABLED		    /* flags */
 | ITEMTEXT
 | HIGHCOMP,
   0L,			    /* MutualExclude */
   (APTR)&AboutTxt,         /* Name */
   0,			    /* Command */
   NULL,		    /* SubItem */
   0			    /* NextSelect */
};

struct IntuiText LoadTxt = {
   BLKPEN,WHTPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   0,0, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Load Data",                         /* IText */
   NULL 				/* NextText */
};

struct MenuItem LoadData = {
   &About,		    /* next item */
   0,10,100,10, 	    /* Left,Top Edge, Width, Height */
   ITEMENABLED		    /* flags */
 | ITEMTEXT
 | HIGHCOMP,
   0L,			    /* MutualExclude */
   (APTR)&LoadTxt,          /* Name */
   0,			    /* Command */
   NULL,		    /* SubItem */
   0			    /* NextSelect */
};

struct IntuiText SaveDTxt = {
   BLKPEN,WHTPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   0,0, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Save Data",                         /* IText */
   NULL 				/* NextText */
};

struct MenuItem SaveData = {
   &LoadData,		    /* next item */
   0,20,100,10, 	    /* Left,Top Edge, Width, Height */
   ITEMENABLED		    /* flags */
 | ITEMTEXT
 | HIGHCOMP,
   0L,			    /* MutualExclude */
   (APTR)&SaveDTxt,         /* Name */
   0,			    /* Command */
   NULL,		    /* SubItem */
   0			    /* NextSelect */
};

struct IntuiText SaveSTxt = {
   BLKPEN,WHTPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   0,0, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Save Screen",                       /* IText */
   NULL 				/* NextText */
};

struct MenuItem SaveScreen = {
   &SaveData,		    /* next item */
   0,30,100,10, 	    /* Left,Top Edge, Width, Height */
   ITEMENABLED		    /* flags */
 | ITEMTEXT
 | HIGHCOMP,
   0L,			    /* MutualExclude */
   (APTR)&SaveSTxt,         /* Name */
   0,			    /* Command */
   NULL,		    /* SubItem */
   0			    /* NextSelect */
};

struct IntuiText ExitTxt = {
   BLKPEN,WHTPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   0,0, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Exit",                              /* IText */
   NULL 				/* NextText */
};

struct MenuItem Exit = {
   &SaveScreen, 	    /* next item */
   0,40,100,10, 	    /* Left,Top Edge, Width, Height */
   ITEMENABLED		    /* flags */
 | ITEMTEXT
 | HIGHCOMP,
   0L,			    /* MutualExclude */
   (APTR)&ExitTxt,          /* Name */
   0,			    /* Command */
   NULL,		    /* SubItem */
   0			    /* NextSelect */
};



/*
 * "Edit" menu subitems
 */
struct IntuiText SetupTxt = {
   BLKPEN,WHTPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   0,0, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Setup...",                          /* IText */
   NULL 				/* NextText */
};

struct MenuItem Setup = {
   NULL,		    /* next item */
   0,0,100,10,		    /* Left,Top Edge, Width, Height */
   ITEMENABLED		    /* flags */
 | ITEMTEXT
 | HIGHCOMP,
   0L,			    /* MutualExclude */
   (APTR)&SetupTxt,         /* Name */
   0,			    /* Command */
   NULL,		    /* SubItem */
   0			    /* NextSelect */
};

struct IntuiText CreateTxt = {
   BLKPEN,WHTPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   0,0, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Create...",                         /* IText */
   NULL 				/* NextText */
};

struct MenuItem Create = {
   &Setup,		    /* next item */
   0,10,100,10,		    /* Left,Top Edge, Width, Height */
   ITEMENABLED		    /* flags */
 | ITEMTEXT
 | HIGHCOMP,
   0L,			    /* MutualExclude */
   (APTR)&CreateTxt,        /* Name */
   0,			    /* Command */
   NULL,		    /* SubItem */
   0			    /* NextSelect */
};

struct IntuiText ModifyTxt = {
   BLKPEN,WHTPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   0,0, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Modify...",                         /* IText */
   NULL 				/* NextText */
};

struct MenuItem Modify = {
   &Create,		    /* next item */
   0,20,100,10, 	    /* Left,Top Edge, Width, Height */
   ITEMENABLED		    /* flags */
 | ITEMTEXT
 | HIGHCOMP,
   0L,			    /* MutualExclude */
   (APTR)&ModifyTxt,        /* Name */
   0,			    /* Command */
   NULL,		    /* SubItem */
   0			    /* NextSelect */
};

struct IntuiText ClearSTxt = {
   BLKPEN,WHTPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   0,0, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Clear Screen",                      /* IText */
   NULL 				/* NextText */
};

struct MenuItem ClearS = {
   &Modify,		    /* next item */
   0,30,100,10, 	    /* Left,Top Edge, Width, Height */
   ITEMENABLED		    /* flags */
 | ITEMTEXT
 | HIGHCOMP,
   0L,			    /* MutualExclude */
   (APTR)&ClearSTxt,        /* Name */
   0,			    /* Command */
   NULL,		    /* SubItem */
   0			    /* NextSelect */
};

struct IntuiText ClearBTxt = {
   BLKPEN,WHTPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   0,0, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Clear Bodys",                       /* IText */
   NULL 				/* NextText */
};

struct MenuItem ClearB = {
   &ClearS,		    /* next item */
   0,40,100,10, 	    /* Left,Top Edge, Width, Height */
   ITEMENABLED		    /* flags */
 | ITEMTEXT
 | HIGHCOMP,
   0L,			    /* MutualExclude */
   (APTR)&ClearBTxt,        /* Name */
   0,			    /* Command */
   NULL,		    /* SubItem */
   0			    /* NextSelect */
};



/*
 * "Control" menu subitems
 */

struct IntuiText StartTxt = {
   BLKPEN,WHTPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   0,0, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Start",                             /* IText */
   NULL 				/* NextText */
};

struct MenuItem Start = {
   NULL,		    /* next item */
   0,0,100,10, 	            /* Left,Top Edge, Width, Height */
   ITEMENABLED		    /* flags */
 | ITEMTEXT
 | HIGHCOMP,
   0L,			    /* MutualExclude */
   (APTR)&StartTxt,         /* Name */
   0,			    /* Command */
   NULL,		    /* SubItem */
   0			    /* NextSelect */
};

struct IntuiText StopTxt = {
   BLKPEN,WHTPEN,			/* FrontPen, BackPen */
   JAM1,				/* DrawMode */
   0,0, 				/* LeftEdge, TopEdge */
   &TxtAt_Plain,			/* TextAttr */
   "Stop",                              /* IText */
   NULL 				/* NextText */
};

struct MenuItem Stop = {
   &Start,		    /* next item */
   0,10,100,10, 	    /* Left,Top Edge, Width, Height */
   ITEMENABLED		    /* flags */
 | ITEMTEXT
 | HIGHCOMP,
   0L,			    /* MutualExclude */
   (APTR)&StopTxt,          /* Name */
   0,			    /* Command */
   NULL,		    /* SubItem */
   0			    /* NextSelect */
};



/*
 *   Actual Menus
 */
struct Menu File = {
   NULL,		    /* NextMenu */
   0,0,50,0,		    /* Left,Top Edge, Width, Height */
   MENUENABLED, 	    /* flags */
   "File",                  /* Name */
   &Exit		    /* First Item */

};

struct Menu Edit = {
   &File,		    /* NextMenu */
   50,0,50,0,		    /* Left,Top Edge, Width, Height */
   MENUENABLED, 	    /* flags */
   "Edit",                  /* Name */
   &ClearB		    /* First Item */

};

struct Menu Control = {
   &Edit,		    /* NextMenu */
   100,0,90,0,		    /* Left,Top Edge, Width, Height */
   MENUENABLED, 	    /* flags */
   "Control",               /* Name */
   &Stop		    /* First Item */

};




/********************************************************
 *  Requesters
 ********************************************************/




SHORT req_Pairs[] = {
  0,	  0,
  209,	  0,
  209,	  149,
  0,	  149,
  0,	  0
};

struct Border req_bord = {
  0,  0,			       /* LeftEdge, TopEdge */
  PURPEN,ORGPEN,JAM2,		       /* FrontPen, BackPen, DrawMode*/
  5,				       /* Count of XY pairs */
  (SHORT *)&req_Pairs,                 /* XY pairs */
  NULL				       /* Next Border */
};



SHORT fnr_Pairs[] = {
  0,	  0,
  399,	  0,
  399,	  59,
  0,	  59,
  0,	  0
};

struct Border fnr_bord = {
  0,  0,			       /* LeftEdge, TopEdge */
  PURPEN,ORGPEN,JAM2,		       /* FrontPen, BackPen, DrawMode*/
  5,				       /* Count of XY pairs */
  (SHORT *)&fnr_Pairs,                 /* XY pairs */
  NULL				       /* Next Border */
};



SHORT A_Pairs2[] = {
  4,	  4,
  195,	  4,
  195,	  95,
  4,	  95,
  4,	  4
};

struct Border A_bord2 = {
  0,  0,			       /* LeftEdge, TopEdge */
  GRNPEN,BLUPEN,JAM2,		       /* FrontPen, BackPen, DrawMode*/
  5,				       /* Count of XY pairs */
  (SHORT *)&A_Pairs2,                  /* XY pairs */
  NULL				       /* Next Border */
};

SHORT A_Pairs[] = {
  0,	  0,
  199,	  0,
  199,	  99,
  0,	  99,
  0,	  0
};

struct Border A_bord = {
  0,  0,			       /* LeftEdge, TopEdge */
  REDPEN,GRNPEN,JAM2,		       /* FrontPen, BackPen, DrawMode*/
  5,				       /* Count of XY pairs */
  (SHORT *)&A_Pairs,                   /* XY pairs */
  &A_bord2			       /* Next Border */
};





struct Requester BodyInfo = {
   NULL,			/* OlderRequester */
   200,100,			/* LeftEdge,TopEdge */
   210,150,			/* Width Height */
   0,0, 			/* RelLeft,RelTop */
   &mass,			/* gadgets */
   &req_bord,			/* ReqBorder */
   &mass_text,			/* text */
   NULL,			/* Flags */
   REQBCK,			/* BackFill (pen) */
   NULL,			/* ReqLayer */
   {NULL},			/* pad */
   {NULL},			/* ImageBMap */
   NULL,			/* RWindow */
   {NULL}			/* pad */
};


struct Requester SetupInfo = {
   NULL,			/* OlderRequester */
   200,100,			/* LeftEdge,TopEdge */
   210,150,			/* Width Height */
   0,0, 			/* RelLeft,RelTop */
   &dt,                         /* gadgets */
   &req_bord,			/* ReqBorder */
   &dt_text,			/* text */
   NULL,			/* Flags */
   REQBCK,			/* BackFill (pen) */
   NULL,			/* ReqLayer */
   {NULL},			/* pad */
   {NULL},			/* ImageBMap */
   NULL,			/* RWindow */
   {NULL}			/* pad */
};


struct Requester FileName = {
   NULL,			/* OlderRequester */
   100,100,			/* LeftEdge,TopEdge */
   400,60,			/* Width Height */
   0,0, 			/* RelLeft,RelTop */
   &fn,                         /* gadgets */
   &fnr_bord,			/* ReqBorder */
   &fn_text,			/* text */
   NULL,			/* Flags */
   REQBCK,			/* BackFill (pen) */
   NULL,			/* ReqLayer */
   {NULL},			/* pad */
   {NULL},			/* ImageBMap */
   NULL,			/* RWindow */
   {NULL}			/* pad */
};


struct Requester RAbout = {
   NULL,			/* OlderRequester */
   200,100,			/* LeftEdge,TopEdge */
   200,100,			/* Width Height */
   0,0, 			/* RelLeft,RelTop */
   &aok,                        /* gadgets */
   &A_bord,			/* ReqBorder */
   &A_text,			/* text */
   NULL,			/* Flags */
   BLUPEN,			/* BackFill (pen) */
   NULL,			/* ReqLayer */
   {NULL},			/* pad */
   {NULL},			/* ImageBMap */
   NULL,			/* RWindow */
   {NULL}			/* pad */
};



