/* plot2.c -- based on the 3d graphics programs by M. Waite & C. L. Morgan
>>>>>from the book "Graphics Primer for the IBM PC"<<<<<
Converted to Amiga Lattice 'C' by Terry W. Gintz*/

void IMsg();

/* Include the definitions and functions we need */

#include "plot2.h"
#include "plotter2.c"
#include "palette2.c"
#include "formula2.c"
#include "mouse2.c"

extern int palette(),formula();
extern struct ColorMap *p_Co;
extern SHORT mx,my;
double magx,magy;

struct IntuiText titletext = {
   2,2,JAM1,0,0,NL,(UBYTE *)"COS(x)*COS(y)",NL};

struct IntuiText Menu0IText [] = {

   {
   0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
   0,0,            /* Left Edge, Top Edge */
   &TestFont,         /* pointer to Text Font */
   "  new plot  ",   /* text of Menu Item */
   NULL            /* pointer to next IText */
   },

   {0,3,JAM2,0,0,&TestFont,"modify color",NULL },
   {0,3,JAM2,0,0,&TestFont,"new formula ",NULL },
   {0,3,JAM2,0,0,&TestFont,"    quit    ",NULL },
};

struct MenuItem Menu0Item[5] = {
   {
   &Menu0Item[1],         /* pointer to next Item */
   0,0,120,9,      /* Left, Top, Width, Height */
   ITEMTEXT | ITEMENABLED | HIGHCOMP,   /* Flags */
   0,            /* no mutual exclude */
   (APTR)&Menu0IText[0],   /* Render info */   
   NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
   MENUNULL      /* next select */
   },

   {&Menu0Item[2],0,9,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
   0,(APTR)&Menu0IText[1],NULL,NULL,NULL,MENUNULL},

   {&Menu0Item[3],0,18,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
   0,(APTR)&Menu0IText[2],NULL,NULL,NULL,MENUNULL},

   {NULL,0,27,120,9,ITEMTEXT | ITEMENABLED | HIGHCOMP,
   0,(APTR)&Menu0IText[3],NULL,NULL,NULL,MENUNULL}
};

struct IntuiText Menu1IText [] = {

   {
   0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
   0,0,            /* Left Edge, Top Edge */
   &TestFont,         /* pointer to Text Font */
   "  10°",   /* text of Menu Item */
   NULL            /* pointer to next IText */
   },

   {0,3,JAM2,0,0,&TestFont,"  15°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  20°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  25°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  30°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  35°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  40°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  45°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  50°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  55°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  60°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  65°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  70°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  75°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  80°",NULL },
};

struct MenuItem Menu1Item[15] = {
   {
   &Menu1Item[1],         /* pointer to next Item */
   0,0,50,9,      /* Left, Top, Width, Height */
   ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,   /* Flags */
   (~(1 << 0)),            /* mutual exclude */
   (APTR)&Menu1IText[0],   /* Render info */
   NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
   MENUNULL      /* next select */
   },

   {&Menu1Item[2],0,9,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 1)),(APTR)&Menu1IText[1],NULL,NULL,NULL,MENUNULL},

   {&Menu1Item[3],0,18,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 2)),(APTR)&Menu1IText[2],NULL,NULL,NULL,MENUNULL},

   {&Menu1Item[4],0,27,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 3)),(APTR)&Menu1IText[3],NULL,NULL,NULL,MENUNULL},

   {&Menu1Item[5],0,36,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 4)),(APTR)&Menu1IText[4],NULL,NULL,NULL,MENUNULL},

   {&Menu1Item[6],0,45,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 5)),(APTR)&Menu1IText[5],NULL,NULL,NULL,MENUNULL},

   {&Menu1Item[7],0,54,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 6)),(APTR)&Menu1IText[6],NULL,NULL,NULL,MENUNULL},

   {&Menu1Item[8],0,63,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | CHECKED,
   (~(1 << 7)),(APTR)&Menu1IText[7],NULL,NULL,NULL,MENUNULL},

   {&Menu1Item[9],0,72,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 8)),(APTR)&Menu1IText[8],NULL,NULL,NULL,MENUNULL},

   {&Menu1Item[10],0,81,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 9)),(APTR)&Menu1IText[9],NULL,NULL,NULL,MENUNULL},

   {&Menu1Item[11],0,90,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 10)),(APTR)&Menu1IText[10],NULL,NULL,NULL,MENUNULL},

   {&Menu1Item[12],0,99,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 11)),(APTR)&Menu1IText[11],NULL,NULL,NULL,MENUNULL},

   {&Menu1Item[13],0,108,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 12)),(APTR)&Menu1IText[12],NULL,NULL,NULL,MENUNULL},

   {&Menu1Item[14],0,117,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 13)),(APTR)&Menu1IText[13],NULL,NULL,NULL,MENUNULL},

   {NULL,1,126,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 14)),(APTR)&Menu1IText[14],NULL,NULL,NULL,MENUNULL},
};

struct IntuiText Menu2IText [] = {

   {
   0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
   0,0,            /* Left Edge, Top Edge */
   &TestFont,         /* pointer to Text Font */
   "  10°",   /* text of Menu Item */
   NULL            /* pointer to next IText */
   },
                              
   {0,3,JAM2,0,0,&TestFont,"  15°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  20°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  25°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  30°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  35°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  40°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  45°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  50°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  55°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  60°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  65°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  70°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  75°",NULL },
   {0,3,JAM2,0,0,&TestFont,"  80°",NULL },
};

struct MenuItem Menu2Item[15] = {
   {
   &Menu2Item[1],         /* pointer to next Item */
   0,0,50,9,      /* Left, Top, Width, Height */
   ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,   /* Flags */
   (~(1 << 0)),            /* mutual exclude */
   (APTR)&Menu2IText[0],   /* Render info */
   NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
   MENUNULL      /* next select */
   },

   {&Menu2Item[2],0,9,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 1)),(APTR)&Menu2IText[1],NULL,NULL,NULL,MENUNULL},

   {&Menu2Item[3],0,18,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 2)),(APTR)&Menu2IText[2],NULL,NULL,NULL,MENUNULL},

   {&Menu2Item[4],0,27,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 3)),(APTR)&Menu2IText[3],NULL,NULL,NULL,MENUNULL},

   {&Menu2Item[5],0,36,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | CHECKED,
   (~(1 << 4)),(APTR)&Menu2IText[4],NULL,NULL,NULL,MENUNULL},

   {&Menu2Item[6],0,45,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 5)),(APTR)&Menu2IText[5],NULL,NULL,NULL,MENUNULL},

   {&Menu2Item[7],0,54,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 6)),(APTR)&Menu2IText[6],NULL,NULL,NULL,MENUNULL},

   {&Menu2Item[8],0,63,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 7)),(APTR)&Menu2IText[7],NULL,NULL,NULL,MENUNULL},

   {&Menu2Item[9],0,72,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 8)),(APTR)&Menu2IText[8],NULL,NULL,NULL,MENUNULL},

   {&Menu2Item[10],0,81,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 9)),(APTR)&Menu2IText[9],NULL,NULL,NULL,MENUNULL},

   {&Menu2Item[11],0,90,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 10)),(APTR)&Menu2IText[10],NULL,NULL,NULL,MENUNULL},

   {&Menu2Item[12],0,99,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 11)),(APTR)&Menu2IText[11],NULL,NULL,NULL,MENUNULL},

   {&Menu2Item[13],0,108,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 12)),(APTR)&Menu2IText[12],NULL,NULL,NULL,MENUNULL},

   {&Menu2Item[14],0,117,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 13)),(APTR)&Menu2IText[13],NULL,NULL,NULL,MENUNULL},

   {NULL,1,126,50,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 14)),(APTR)&Menu2IText[14],NULL,NULL,NULL,MENUNULL},
};
struct IntuiText Menu3IText [] = {

   {
   0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
   0,0,            /* Left Edge, Top Edge */
   &TestFont,         /* pointer to Text Font */
   "  10",   /* text of Menu Item */
   NULL            /* pointer to next IText */
   },
                              
   {0,3,JAM2,0,0,&TestFont,"  20",NULL },
   {0,3,JAM2,0,0,&TestFont,"  30",NULL },
   {0,3,JAM2,0,0,&TestFont,"  40",NULL },
   {0,3,JAM2,0,0,&TestFont,"  50",NULL },
   {0,3,JAM2,0,0,&TestFont,"  60",NULL },
   {0,3,JAM2,0,0,&TestFont,"  70",NULL },
   {0,3,JAM2,0,0,&TestFont,"  80",NULL },
};

struct MenuItem Menu3Item[8] = {
   {
   &Menu3Item[1],         /* pointer to next Item */
   0,0,40,9,      /* Left, Top, Width, Height */
   ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,   /* Flags */
   (~(1 << 0)),            /* mutual exclude */
   (APTR)&Menu3IText[0],   /* Render info */
   NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
   MENUNULL      /* next select */
   },

   {&Menu3Item[2],0,9,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 1)),(APTR)&Menu3IText[1],NULL,NULL,NULL,MENUNULL},

   {&Menu3Item[3],0,18,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 2)),(APTR)&Menu3IText[2],NULL,NULL,NULL,MENUNULL},

   {&Menu3Item[4],0,27,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | CHECKED,
   (~(1 << 3)),(APTR)&Menu3IText[3],NULL,NULL,NULL,MENUNULL},

   {&Menu3Item[5],0,36,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 4)),(APTR)&Menu3IText[4],NULL,NULL,NULL,MENUNULL},

   {&Menu3Item[6],0,45,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 5)),(APTR)&Menu3IText[5],NULL,NULL,NULL,MENUNULL},

   {&Menu3Item[7],0,54,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 6)),(APTR)&Menu3IText[6],NULL,NULL,NULL,MENUNULL},

   {NULL,0,63,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 7)),(APTR)&Menu3IText[7],NULL,NULL,NULL,MENUNULL}

};

struct IntuiText Menu4IText [] = {

   {
   0,3,JAM2,      /* Front Pen, Back Pen, Draw Mode */
   0,0,            /* Left Edge, Top Edge */
   &TestFont,         /* pointer to Text Font */
   "  10",   /* text of Menu Item */
   NULL            /* pointer to next IText */
   },
                              
   {0,3,JAM2,0,0,&TestFont,"  20",NULL },
   {0,3,JAM2,0,0,&TestFont,"  30",NULL },
   {0,3,JAM2,0,0,&TestFont,"  40",NULL },
   {0,3,JAM2,0,0,&TestFont,"  50",NULL },
   {0,3,JAM2,0,0,&TestFont,"  60",NULL },
   {0,3,JAM2,0,0,&TestFont,"  70",NULL },
   {0,3,JAM2,0,0,&TestFont,"  80",NULL },
};

struct MenuItem Menu4Item[8] = {
   {
   &Menu4Item[1],         /* pointer to next Item */
   0,0,40,9,      /* Left, Top, Width, Height */
   ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,   /* Flags */
   (~(1 << 0)),            /* mutual exclude */
   (APTR)&Menu4IText[0],   /* Render info */
   NULL,NULL,NULL,         /*Alt Image, Command (amiga) char, subitem*/
   MENUNULL      /* next select */
   },

   {&Menu4Item[2],0,9,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 1)),(APTR)&Menu4IText[1],NULL,NULL,NULL,MENUNULL},

   {&Menu4Item[3],0,18,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 2)),(APTR)&Menu4IText[2],NULL,NULL,NULL,MENUNULL},

   {&Menu4Item[4],0,27,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | CHECKED,
   (~(1 << 3)),(APTR)&Menu4IText[3],NULL,NULL,NULL,MENUNULL},

   {&Menu4Item[5],0,36,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 4)),(APTR)&Menu4IText[4],NULL,NULL,NULL,MENUNULL},

   {&Menu4Item[6],0,45,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 5)),(APTR)&Menu4IText[5],NULL,NULL,NULL,MENUNULL},

   {&Menu4Item[7],0,54,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 6)),(APTR)&Menu4IText[6],NULL,NULL,NULL,MENUNULL},

   {NULL,0,63,40,9,ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
   (~(1 << 7)),(APTR)&Menu4IText[7],NULL,NULL,NULL,MENUNULL}

};

struct Menu BdMenu[5] = {
{
   &BdMenu[1],      /* ptr to next Menu */
   10,0,130,0,   /* left,top,width,height--top and height ignored */
   MENUENABLED,   /* Flags */
   "    Main    ",   /* menu title */
   &Menu0Item[0]   /* First Item in list */
},
   {&BdMenu[2],140,0,50,0,MENUENABLED,"Spin",&Menu1Item[0]},
   {&BdMenu[3],200,0,50,0,MENUENABLED,"Tip ",&Menu2Item[0]},
   {&BdMenu[4],260,0,40,0,MENUENABLED,"M*X",&Menu3Item[0]},
   {NULL,310,0,40,0,MENUENABLED,"M*Y",&Menu4Item[0]}
};

int foo;
UWORD color18, color19;
extern char z[30];
extern int spin,tip;

main()
{
   USHORT drawing;

   drawing=1;
   initwind();
   init_colors();
   init_scr();
   strcpy(z,"COS(x)*COS(y)");
   color18=GetRGB4(p_Co,18);
   color19=GetRGB4(p_Co,19);
   SetRGB4(vp,18,15,0,0);
   SetRGB4(vp,19,15,15,15);
   SetPointer(w,&PointImage,14,16,0,0);
   magx=40.0;
   magy=40.0;
   mx=320;
   my=200;
   spin=45;
   tip=30;
   plotter();
   PrintIText(w->RPort,&titletext,200,350);
   ClearPointer(w);
   while(drawing)
   {
      IMsg();
   }
}   /* end of main */

void IMsg()
{
   struct IntuiMessage *BdMsg;      /* Intuition message structure */
   ULONG Mclass;               /* Message class */
   USHORT Mcode;            /* Message code */

while (BdMsg = (struct IntuiMessage *)GetMsg(w->UserPort))
   {
   Mclass = BdMsg->Class;
   Mcode = BdMsg->Code;
   ReplyMsg(BdMsg);
   switch (Mclass) {
      case CLOSEWINDOW:
         clear_colors();
         Cleanup();
         exit(TRUE);
         break;

      case MENUPICK:
         switch (MENUNUM(Mcode)){
            case 0:
               switch (ITEMNUM(Mcode)){
                  case 0:
                     color18=GetRGB4(p_Co,18);
                     color19=GetRGB4(p_Co,19);
                     SetRGB4(vp,18,0,15,0);
                     SetRGB4(vp,19,11,4,0);
                     SetPointer(w,&CursorImage,14,16,0,0);
                     mouse();
                     ClearPointer(w);
                     color18=GetRGB4(p_Co,18);
                     color19=GetRGB4(p_Co,19);
                     SetRGB4(vp,18,15,0,0);
                     SetRGB4(vp,19,15,15,15);
                     SetPointer(w,&PointImage,14,16,0,0);
                     plotter();
                     titletext.IText=(UBYTE *)z;
                     PrintIText(w->RPort,&titletext,200,350);
                     ClearPointer(w);
                     break;
                  case 1:
                     palette(w);
                     break;
                  case 2:
                     foo=formula(w);
                     if (foo==1){
                        color18=GetRGB4(p_Co,18);
                        color19=GetRGB4(p_Co,19);
                        SetRGB4(vp,18,0,15,0);
                        SetRGB4(vp,19,11,4,0);
                        SetPointer(w,&CursorImage,14,16,0,0);
                        mouse();
                        ClearPointer(w);
                        color18=GetRGB4(p_Co,18);
                        color19=GetRGB4(p_Co,19);
                        SetRGB4(vp,18,15,0,0);
                        SetRGB4(vp,19,15,15,15);
                        SetPointer(w,&PointImage,14,16,0,0);
                        plotter();
                        titletext.IText=(UBYTE *)z;
                        PrintIText(w->RPort,&titletext,200,350);
                        ClearPointer(w);
                     }
                     break;
                  case 3:
                     clear_colors();
                     Cleanup();
                     exit(TRUE);
                     break;
               }
               break;
            case 1:
               switch(ITEMNUM(Mcode)){
                  case 0:
                     spin=10;
                     break;
                  case 1:
                     spin=15;
                     break;
                  case 2:
                     spin=20;
                     break;
                  case 3:
                     spin=25;
                     break;
                  case 4:
                     spin=30;
                     break;
                  case 5:
                     spin=35;
                     break;
                  case 6:
                     spin=40;
                     break;
                  case 7:
                     spin=45;
                     break;
                  case 8:
                     spin=50;
                     break;
                  case 9:
                     spin=55;
                     break;
                  case 10:
                     spin=60;
                     break;
                  case 11:
                     spin=65;
                     break;
                  case 12:
                     spin=70;
                     break;
                  case 13:
                     spin=75;
                     break;
                  case 14:
                     spin=80;
                     break;
               }
               break;
            case 2:
               switch(ITEMNUM(Mcode)){
                  case 0:
                     tip=10;
                     break;
                  case 1:
                     tip=15;
                     break;
                  case 2:
                     tip=20;
                     break;
                  case 3:
                     tip=25;
                     break;
                  case 4:
                     tip=30;
                     break;
                  case 5:
                     tip=35;
                     break;
                  case 6:
                     tip=40;
                     break;
                  case 7:
                     tip=45;
                     break;
                  case 8:
                     tip=50;
                     break;
                  case 9:
                     tip=55;
                     break;
                  case 10:
                     tip=60;
                     break;
                  case 11:
                     tip=65;
                     break;
                  case 12:
                     tip=70;
                     break;
                  case 13:
                     tip=75;
                     break;
                  case 14:
                     tip=80;
                     break;
               }
               break;
            case 3:
               switch(ITEMNUM(Mcode)){
                  case 0:
                     magx=10.0;
                     break;
                  case 1:
                     magx=20.0;
                     break;
                  case 2:
                     magx=30.0;
                     break;
                  case 3:
                     magx=40.0;
                     break;
                  case 4:
                     magx=50.0;
                     break;
                  case 5:
                     magx=60.0;
                     break;
                  case 6:
                     magx=70.0;
                     break;
                  case 7:
                     magx=80.0;
                     break;
               }
               break;
            case 4:
               switch(ITEMNUM(Mcode)){
                  case 0:
                     magy=10.0;
                     break;
                  case 1:
                     magy=20.0;
                     break;
                  case 2:
                     magy=30.0;
                     break;
                  case 3:
                     magy=40.0;
                     break;
                  case 4:
                     magy=50.0;
                     break;
                  case 5:
                     magy=60.0;
                     break;
                  case 6:
                     magy=70.0;
                     break;
                  case 7:
                     magy=80.0;
                     break;
               }
               break;
         }
   } 
  /* end of Class switch */      
   }/* while */
}

init_scr()
{
 
SetMenuStrip(w,&BdMenu);

}   /* end of init_scr */

Cleanup()
{
   CloseWindow(w);
   CloseScreen(screen);
}
