/*****************************************************
 *                  Menu Definitions                 *
 *                                                   *
 *             Created with Menu Creator             *
 *                        by                         *
 *                   David Pehrson                   *
 *                                                   *
 *         Copyright (C) 1986  David Pehrson         *
 *                 Mantis Development                *
 *                                                   *
 *           Modified for Comm program  Djj          *
 *****************************************************/

/* Comm menu handler routines */

#define MENUS  1
#include "globals.h"

#define SYSMAX   6
#define MAXMENU  6

static USHORT  editphone;

struct IntuiText PhoneText[] =
{
   { 3, 1, JAM1, 0, 1, 0, (UBYTE *)"Hang up",     NULL },
   { 3, 1, JAM1, 0, 1, 0, (UBYTE *)"   Alt Service", NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[0].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[1].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[2].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[3].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[4].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[5].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[6].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[7].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[8].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[9].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[10].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[11].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[12].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[13].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[14].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[15].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[16].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[17].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[18].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[19].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[20].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[21].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[22].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[23].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[24].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[25].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[26].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[27].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[28].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[29].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[30].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[31].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[32].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[33].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[34].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[35].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[36].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[37].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[38].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[39].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[40].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[41].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[42].name, NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)&pdir[43].name, NULL }
};

struct IntuiText EolText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   TX EOL = CR",    NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   TX EOL = CR/LF", NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   RX EOL = CR",    NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   RX EOL = CR/LF", NULL }
};

struct IntuiText BaudText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   300",   NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   1200",  NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   2400",  NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   4800",  NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   9600",  NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   19200", NULL }
};

struct IntuiText ParityText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   None", NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Odd",  NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Even", NULL }
};

struct IntuiText LengthText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   8 bits", NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   7 bits", NULL }
};

struct IntuiText StopText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   1 bit",  NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   2 bits", NULL }
};

struct IntuiText DuplexText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Full", NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Half", NULL }
};

struct IntuiText KeyText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)" Load file ",  NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)" Save file ",  NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)" Edit Macro ", NULL }
};

struct IntuiText PlibText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)" Load file ", NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)" Save file ", NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)" Edit file ", NULL }
};

struct IntuiText AltFiletxt[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)" Start ASCII Capture", NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)" Start ASCII Send",    NULL },
   { 3, 1, JAM1, 0, 1, 0, (UBYTE *)" Stop ASCII Capture",  NULL },
   { 3, 1, JAM1, 0, 1, 0, (UBYTE *)" Stop ASCII Send",     NULL },
};

struct IntuiText FileText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)" ",                    NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)" ",                    NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)" XMODEM Receive",      NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"WXMODEM Receive",      NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)" XMODEM Transmit",     NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)" XMODEM Text Send",    NULL },
   { 3, 1, JAM1, 0, 1, 0, (UBYTE *)" QUIT Comm",           NULL },
};

struct IntuiText SysText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Split Screen",   NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   View Transfers", NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Chop Files",     NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   End of Line",    NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Key Macro",      NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Phone Dir",      NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Title Bar",      NULL }
};

struct IntuiText ModeText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Checksum", NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   CRC",      NULL }
};

struct IntuiText SerialText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"Baud Rate",   NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"Parity",      NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"Data Length", NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"Stop Bits",   NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"Duplex",      NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"XON / XOFF",  NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"Send Break",  NULL }
};

struct IntuiText XonText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Turned off",   NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Automatic",    NULL },
};

struct IntuiText TitleText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Off", NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   On" , NULL },
};

struct IntuiText DebugText[] =
{
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Don't mask parity",   NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"                    ",   NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Show HEX chars",      NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"                      ", NULL },
   { 0, 1, JAM1, 0, 1, 0, (UBYTE *)"   Show Protocol chars", NULL }
};

struct MenuItem  PhoneItem[ MAXPHONE+2 ] =
{
   {
      &PhoneItem[1], 0, 1, 116, 8, ITEMENABLED | ITEMTEXT | HIGHBOX,
      0, (APTR)&PhoneText[0], NULL, 'H', NULL, NULL
   },
   {
      &PhoneItem[2], 121, 1, 164, 8, ITEMENABLED | ITEMTEXT | HIGHBOX | CHECKIT,
      0, (APTR)&PhoneText[1], NULL, 'A', NULL, NULL
   },
   {
      &PhoneItem[3], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[2], NULL, '1', NULL, NULL
   },
   {
      &PhoneItem[4], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[3], NULL, '2', NULL, NULL
   },
   {
      &PhoneItem[5], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[4], NULL, '3', NULL, NULL
   },
   {
      &PhoneItem[6], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[5], NULL, '4', NULL, NULL
   },
   {
      &PhoneItem[7], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[6], NULL, '5', NULL, NULL
   },
   {
      &PhoneItem[8], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[7], NULL, '6', NULL, NULL
   },
   {
      &PhoneItem[9], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[8], NULL, '7', NULL, NULL
   },
   {
      &PhoneItem[10], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[9], NULL, '8', NULL, NULL
   },
   {
      &PhoneItem[11], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[10], NULL, '9', NULL, NULL
   },
   {
      &PhoneItem[12], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[11], NULL, '0', NULL, NULL
   },
   {
      &PhoneItem[13], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[12], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[14], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[13], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[15], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[14], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[16], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[15], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[17], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[16], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[18], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[17], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[19], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[18], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[20], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[19], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[21], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[20], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[22], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[21], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[23], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[22], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[24], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[23], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[25], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[24], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[26], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[25], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[27], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[26], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[28], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[27], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[29], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[28], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[30], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[29], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[31], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[30], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[32], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[31], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[33], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[32], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[34], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[33], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[35], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[34], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[36], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[35], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[37], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[36], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[38], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[37], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[39], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[38], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[40], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[39], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[41], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[40], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[42], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[41], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[43], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[42], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[44], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[43], NULL, NULL, NULL, NULL
   },
   {
      &PhoneItem[45], 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[44], NULL, NULL, NULL, NULL
   },
   {
      NULL, 0, 0, 140, 8, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PhoneText[45], NULL, NULL, NULL, NULL
   }
};

struct MenuItem EolItems[] =
{
   {
      &EolItems[1], 140, 0, 152, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      2, (APTR)&EolText[0], NULL, NULL, NULL, NULL
   },
   {
      &EolItems[2], 140, 10, 152, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      1, (APTR)&EolText[1], NULL, NULL, NULL, NULL
   },
   {
      &EolItems[3], 140, 20, 152, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      8, (APTR)&EolText[2], NULL, NULL, NULL, NULL
   },
   {
      NULL, 140, 30, 152, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      4, (APTR)&EolText[3], NULL, NULL, NULL, NULL
   },
};

struct MenuItem BaudItems[] =
{
   {
      &BaudItems[1], 92, 0, 80, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      62, (APTR)&BaudText[0], NULL, NULL, NULL, NULL
   },
   {
      &BaudItems[2], 92, 10, 80, 10, CHECKED | ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      61, (APTR)&BaudText[1], NULL, NULL, NULL, NULL
   },
   {
      &BaudItems[3], 92, 20, 80, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      59, (APTR)&BaudText[2], NULL, NULL, NULL, NULL
   },
   {
      &BaudItems[4], 92, 30, 80, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      55, (APTR)&BaudText[3], NULL, NULL, NULL, NULL
   },
   {
      &BaudItems[5], 92, 40, 80, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      47, (APTR)&BaudText[4], NULL, NULL, NULL, NULL
   },
   {
      NULL, 92, 50, 80, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      31, (APTR)&BaudText[5], NULL, NULL, NULL, NULL
   },
};

struct MenuItem ParityItems[] =
{
   {
      &ParityItems[1], 92, 0, 72, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      6, (APTR)&ParityText[0], NULL, NULL, NULL, NULL
   },
   {
      &ParityItems[2], 92, 10, 72, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      5, (APTR)&ParityText[1], NULL, NULL, NULL, NULL
   },
   {
      NULL, 92, 20, 72, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      3, (APTR)&ParityText[2], NULL, NULL, NULL, NULL
   },
};

struct MenuItem KeyItems[] =
{
   {
      &KeyItems[1], 140, 0, 96, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&KeyText[0], NULL, NULL, NULL, NULL
   },
   {
      &KeyItems[2], 140, 10, 96, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&KeyText[1], NULL, NULL, NULL, NULL
   },
   {
      NULL, 140, 20, 96, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&KeyText[2], NULL, NULL, NULL, NULL
   },
};

struct MenuItem PlibItems[] =
{
   {
      &PlibItems[1], 140, 0, 96, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PlibText[0], NULL, NULL, NULL, NULL
   },
   {
      &PlibItems[2], 140, 10, 96, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PlibText[1], NULL, NULL, NULL, NULL
   },
   {
      NULL, 140, 20, 96, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&PlibText[2], NULL, NULL, NULL, NULL
   },
};

struct MenuItem LengthItems[] =
{
   {
      &LengthItems[1], 92, 0, 88, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      2, (APTR)&LengthText[0], NULL, NULL, NULL, NULL
   },
   {
      NULL, 92, 10, 88, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      1, (APTR)&LengthText[1], NULL, NULL, NULL, NULL
   },
};

struct MenuItem XonItems[] =
{
   {
      &XonItems[1], 92, 0, 112, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      2, (APTR)&XonText[0], NULL, NULL, NULL, NULL
   },
   {
      NULL, 92, 10, 112, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      1, (APTR)&XonText[1], NULL, NULL, NULL, NULL
   }
};

struct MenuItem TitleItems[] =
{
   {
      &TitleItems[1], 92, 0, 54, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      2, (APTR)&TitleText[0], NULL, NULL, NULL, NULL
   },
   {
      NULL, 92, 10, 54, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      1, (APTR)&TitleText[1], NULL, NULL, NULL, NULL
   }
};

struct MenuItem StopItems[] =
{
   {
      &StopItems[1], 92, 0, 88, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      2, (APTR)&StopText[0], NULL, NULL, NULL, NULL
   },
   {
      NULL, 92, 10, 88, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      1, (APTR)&StopText[1], NULL, NULL, NULL, NULL
   },
};

struct MenuItem DuplexItems[] =
{
   {
      &DuplexItems[1], 92, 0, 72, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      2, (APTR)&DuplexText[0], NULL, NULL, NULL, NULL
   },
   {
      NULL, 92, 10, 72, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      1, (APTR)&DuplexText[1], NULL, NULL, NULL, NULL
   },
};

struct MenuItem FileItems[] =
{
   {
      &FileItems[1], 0, 0, 195, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | HIGHCOMP,
      0, (APTR)&FileText[0], NULL, 'C', NULL, NULL
   },
   {
      &FileItems[2], 0, 10, 195, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | HIGHCOMP,
      0, (APTR)&FileText[1], NULL, 'S', NULL, NULL
   },
   {
      &FileItems[3], 0, 22, 195, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | HIGHCOMP,
      0, (APTR)&FileText[2], NULL, 'D', NULL, NULL
   },
   {
      &FileItems[4], 0, 32, 195, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | HIGHCOMP,
      0, (APTR)&FileText[3], NULL, 'W', NULL, NULL
   },
   {
      &FileItems[5], 0, 44, 195, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | HIGHCOMP,
      0, (APTR)&FileText[4], NULL, 'U', NULL, NULL
   },
   {
      &FileItems[6], 0, 54, 195, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | HIGHCOMP,
      0, (APTR)&FileText[5], NULL, 'T', NULL, NULL
   },
   {
      NULL, 0, 66, 195, 10, ITEMENABLED | ITEMTEXT | COMMSEQ | HIGHBOX,
      0, (APTR)&FileText[6], NULL, 'Q', NULL, NULL
   },
};

struct MenuItem SysItems[] =
{
   {
      &SysItems[1], 0, 0, 152, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      0, (APTR)&SysText[0], NULL, NULL, NULL, NULL
   },
   {
      &SysItems[2], 0, 10, 152, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      0, (APTR)&SysText[1], NULL, NULL, NULL, NULL
   },
   {
      &SysItems[3], 0, 20, 152, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      0, (APTR)&SysText[2], NULL, NULL, NULL, NULL
   },
   {
      &SysItems[4], 0, 30, 152, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&SysText[3], NULL, NULL, &EolItems[0], NULL
   },
   {
      &SysItems[5], 0, 40, 152, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&SysText[4], NULL, NULL, &KeyItems[0], NULL
   },
   {
      &SysItems[6], 0, 50, 152, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&SysText[5], NULL, NULL, &PlibItems[0], NULL
   },
   {
      0, 0, 60, 152, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&SysText[6], NULL, NULL, &TitleItems[0], NULL
   },
};

struct MenuItem ModeItems[] =
{
   {
      &ModeItems[1], 0, 0, 104, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      2, (APTR)&ModeText[0], NULL, NULL, NULL, NULL
   },
   {
      NULL, 0, 10, 104, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      1, (APTR)&ModeText[1], NULL, NULL, NULL, NULL
   },
};

struct MenuItem SerialItems[] =
{
   {
      &SerialItems[1], 0, 0, 104, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&SerialText[0], NULL, NULL, &BaudItems[0], NULL
   },
   {
      &SerialItems[2], 0, 10, 104, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&SerialText[1], NULL, NULL, &ParityItems[0], NULL
   },
   {
      &SerialItems[3], 0, 20, 104, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&SerialText[2], NULL, NULL, &LengthItems[0], NULL
   },
   {
      &SerialItems[4], 0, 30, 104, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&SerialText[3], NULL, NULL, &StopItems[0], NULL
   },
   {
      &SerialItems[5], 0, 40, 104, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&SerialText[4], NULL, NULL, &DuplexItems[0], NULL
   },
   {
      &SerialItems[6], 0, 50, 104, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&SerialText[5], NULL, NULL, &XonItems[0], NULL
   },
   {
      NULL, 0, 60, 104, 10, ITEMENABLED | ITEMTEXT | HIGHCOMP,
      0, (APTR)&SerialText[6], NULL, 'B', NULL, NULL
   }
};

struct MenuItem DebugItems[] =
{
   {
      &DebugItems[1], 0, 0, 192, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      0, (APTR)&DebugText[0], NULL, NULL, NULL, NULL
   },
   {
      &DebugItems[2], 0, 10, 192, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      0, (APTR)&DebugText[1], NULL, NULL, NULL, NULL
   },
   {
      &DebugItems[3], 0, 20, 192, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      0, (APTR)&DebugText[2], NULL, NULL, NULL, NULL
   },
   {
      &DebugItems[4], 0, 30, 192, 10, ITEMENABLED | CHECKIT | ITEMTEXT | HIGHCOMP,
      0, (APTR)&DebugText[3], NULL, NULL, NULL, NULL
   },
   {
      0, 0, 40, 192, 10, ITEMENABLED | ITEMTEXT | CHECKIT | HIGHCOMP,
      0, (APTR)&DebugText[4], NULL, NULL, NULL, NULL
   }
};


struct Menu menu[] =
{
   { &menu[1], 5,   0, 54, 8, MENUENABLED, (BYTE *)" File",  &FileItems[0]   },
   { &menu[2], 56,  0, 70, 8, MENUENABLED, (BYTE *)" System",&SysItems[0]    },
   { &menu[3], 125, 0, 54, 8, MENUENABLED, (BYTE *)" Mode",  &ModeItems[0]   },
   { &menu[4], 178, 0, 70, 8, MENUENABLED, (BYTE *)" Serial",&SerialItems[0] },
   { &menu[5], 247, 0,302, 8, MENUENABLED, (BYTE *)" Phone", &PhoneItem[0]   },
   { NULL,     3,   0,  1, 0, MENUENABLED, (BYTE *)"",       &DebugItems[0]  },
};

/*****************************************************************/
/*    The following function initializes the structure arrays    */
/*   needed to provide the phone library.                        */
/*****************************************************************/
void InitPhoneItem()
{
SHORT n;

/* initialize each menu item and IntuiText with loop */
  for( n = 2; n < MAXPHONE+2; n++ )
  {
    if( n & 1 )
      PhoneItem[n].LeftEdge     = 145;
    else
      PhoneItem[n].LeftEdge     = 0;

    PhoneItem[n].TopEdge      = ((SHORT)((n-2)/2) * 8) + 9;
  }
}

/*  Change the text message in the ASCII Capture and ASCII Send menu
    entries
*/

Swap_capture(which,flag)
int flag,which;
{
   if(which == ASCCAPT)
   {
      if(flag == START)       /* Start ASCII Capture */
      {
          FileText[0]          = AltFiletxt[0];
          FileItems[0].Flags    &= ~HIGHBOX;
          FileItems[0].Flags    |= HIGHCOMP;
      }
      else                    /* Stop ASCII Capture */
      {
         FileText[0]          = AltFiletxt[2];
         FileItems[0].Flags    &= ~HIGHCOMP;
         FileItems[0].Flags    |= HIGHBOX;
      }
   }
   else if(which == ASCSEND)
   {
      if(flag == START)       /* Start ASCII Send */
      {
         FileText[1]         = AltFiletxt[1];
         FileItems[1].Flags    &= ~HIGHBOX;
         FileItems[1].Flags    |= HIGHCOMP;
      }
      else                    /* Stop ASCII Send */
      {
         FileText[1]          = AltFiletxt[3];
         FileItems[1].Flags    &= ~HIGHCOMP;
         FileItems[1].Flags    |= HIGHBOX;
      }
   }
}

/*   The following function initializes the Menu structure array with
     appropriate values
*/

InitMenus()
{
  InitPhoneItem();

  ModeItems[1].Flags   |= CHECKED;      /* CRC */
/*  BaudItems[1].Flags   |= CHECKED;  */    /* 1200 baud */
  SysItems[2].Flags    |= CHECKED;      /* CHOP mode  */
  ParityItems[0].Flags |= CHECKED;      /* no parity */
  LengthItems[0].Flags |= CHECKED;      /* 8 bits */
  StopItems[0].Flags   |= CHECKED;      /* 1 stop bit */
  EolItems[0].Flags    |= CHECKED;      /* TX EOL = CR */
  EolItems[2].Flags    |= CHECKED;      /* RX EOL = CR */
  DuplexItems[0].Flags |= CHECKED;      /* Full Duplex */
  PlibItems[1].Flags   &= ~ITEMENABLED; /* Save Phone Dir */
  XonItems[0].Flags    |= CHECKED;      /* XON / XOFF off */
  TitleItems[0].Flags  |= CHECKED;      /* Title bar off */

  FileText[0]           = AltFiletxt[0];
  FileText[1]           = AltFiletxt[1];
}

Set_Menus(val)
int val;
{
   if(val)
   {
      set_menus_on(tx_window);
      if(rx_window)
         set_menus_on(rx_window);
   }
   else
   {
      set_menus_off(tx_window);
      if(rx_window)
         set_menus_off(rx_window);
   }
}

/* enable menus after an XMODEM transfer */
set_menus_on(window)
struct Window *window;
{
   ULONG n;

   OnMenu(window,SHIFTITEM( NOITEM ) | 0);    /* File menu */
   OnMenu(window,SHIFTITEM( NOITEM ) | 2);    /* Mode menu */
   OnMenu(window,SHIFTITEM( NOITEM ) | 3);    /* Serial menu */
   OnMenu(window,SHIFTITEM( NOITEM ) | 4);    /* Phone menu */

   for( n = 3; n < SYSMAX; n++)
      OnMenu(window,SHIFTSUB( NOSUB ) | SHIFTITEM( n ) | 1 );
   PlibItems[2].Flags = editphone;
}

/* Disable menus during an XMODEM transfer */
set_menus_off(window)
struct Window *window;
{
   ULONG n;

   editphone = PlibItems[2].Flags;

   OffMenu(window,SHIFTITEM( NOITEM ) | 0);    /* File menu */
   OffMenu(window,SHIFTITEM( NOITEM ) | 2);    /* Mode menu */
   OffMenu(window,SHIFTITEM( NOITEM ) | 3);    /* Serial menu */
   OffMenu(window,SHIFTITEM( NOITEM ) | 4);    /* Phone menu */

   for(n = 3; n < SYSMAX; n++)            /* disable some of System menu */
      OffMenu(window, SHIFTSUB( NOSUB) | SHIFTITEM( n ) | 1 );
}


