
  extern struct DosLibrary *DOSBase;

#ifdef MAIN
  short Errors;
  struct List *ErrorList;
  struct Window       *W;
  void                *vi;
  struct Screen       *mysc;
  struct Gadget       *glist,*my_gads[AMOUNTOFGADGETS];
  int                 topborder;
  struct ReqToolsBase *ReqToolsBase;
  struct Library      *GadToolsBase;
  struct TextFont     *ScreenFont;
  struct Menu         *MainMenu=NULL;

  struct Process *myproc;
  APTR oldwinptr;

  char outputstring[42],dummystring[MAX_PATH_LEN+1];

  char screentitle[101];  /* need this so as i can print the version number to it..*/
  char windowtitle[31];  /* need this so as i can print the version number to it..*/
  char __far *filename[2][MAX_FILES_IN_LIST+1];
  LONG __far filetype[2][MAX_FILES_IN_LIST+1];
  LONG __far filesize[2][MAX_FILES_IN_LIST+1];
  struct DateStamp __far filedate[2][MAX_FILES_IN_LIST+1];
  BYTE __far filetags[2][MAX_FILES_IN_LIST+1];
  BYTE DisplayType[2]={D_SIZE,D_SIZE};

  short actuallytransferred=AT_NO;
  int allocated[2]={0,0};
  int totalfiles[2]={0,0};
  int selectedfiles[2]={0,0};
  float selectedsize[2]={0,0};
  int displayoffset[2]={0,0};
  BOOL pathok[2]={FALSE,FALSE};
  short currentside=0;
  char screenname[10];
  char patt[41]="\0";
  char okmsg[4]="OK!";
  char dosstr[MAX_COMMAND_LEN+1]="",batchstring[MAX_COMMAND_LEN+1];
  char defaultcomment[MAX_COMMENT_LEN+1]="";
  char cpath[2][MAX_PATH_LEN+1];
  BOOL gadgetsok=FALSE;
  WORD wtop=0;
  WORD zoomcoords[4]={0,0,100,0};
  BOOL iconised=FALSE;
  BPTR outputconfile;
  BOOL __far tempautooverwrite;
  BOOL skipall;
  BOOL customscreenopen=FALSE;
  BOOL active=TRUE;
  LONG mouseupdn;
  LONG mouseaction;
  BYTE sortmode[2]={S_NAME,S_NAME};
  ULONG reqtags[] = {RTGS_Flags, GSREQF_CENTERTEXT,RT_Underscore, '_',TAG_END};
  struct ColorSpec ScreenColors[] = {
     0, 0x0A, 0x0A, 0x0A,
     1, 0x00, 0x00, 0x00,
     2, 0x0F, 0x0F, 0x0F,
     3, 0x06, 0x08, 0x0B,
     4, 0x09, 0x09, 0x09,
     5, 0x0B, 0x0B, 0x0B,
     6, 0x0B, 0x0A, 0x09,
     7, 0x0F, 0x0B, 0x0A,
    ~0, 0x00, 0x00, 0x00 };

  UWORD DriPens[] = {
    0,1,1,2,1,3,1,0,2,1,2,1,0 };

/*
 *  For Status Window!
 */
  struct Gadget       *statglist, *statgads[AMOUNTOFSTATGADGETS];
  struct Window *statw=NULL;

/*
 *  For Config Window!
 */
  struct Gadget       *cfgglist, *cfggads[AMOUNTOFCFGGADGETS];
  struct Window *cfgw;
  struct Menu         *CfgMenu=NULL;

/*
 *  For Protection Window!
 */
  struct Gadget       *protglist, *protgads[AMOUNTOFPROTGADGETS];
  struct Window *protw;

/*
 *  For Protection Window!
 */
  struct Gadget       *modglist, *modgads[AMOUNTOFMODGADGETS];
  struct Window *modw;


  char outputcon[MAX_PATH_LEN+1];
  char defaulticonfile[MAX_PATH_LEN+1];
  BOOL setprotverify;
  BOOL deleteverify;
  BOOL ignorehiddenbit;
  BOOL ignoreinserteddisks;
  BOOL ignorenodisk;
  BOOL mixfilesanddraws;
  BOOL autooverwrite;
  BOOL nomessages;
  BOOL shufflescreens;
  BOOL useworkbenchscreen;
  ULONG scrH;
  ULONG scrID;

  char cancelcontmsg[MAX_CANCELCONTMSG_LEN+1];
  BYTE dircol,filecol,highlightcol;
  BYTE lines_per_side;
  ULONG max_copy_buf_size;
  char CommandString[8][MAX_COMMAND_LEN+1];

  int filexpos[2]={7,374};
  char devicegadnames[2][12][MAX_DEV_GAD_NAME_LEN+1];
  char devicegadactual[2][12][MAX_DEV_GAD_ACTUAL_LEN+1];
  char usergadnames[2][15][MAX_USER_GAD_NAME_LEN+1];
  char usergadactual[2][15][MAX_USER_GAD_ACTUAL_LEN+1];
  BYTE usergadflags[2][15];
  struct TextAttr ScreenFontAttr = {"                                 ",8,FS_NORMAL,FPB_ROMFONT};

static struct NewMenu __far MainNewMenu[] = {
    NM_TITLE, (STRPTR)"Main", NULL, 0, NULL, NULL,
    NM_ITEM, (STRPTR)"About", (STRPTR)"?", 0, 0L, NULL,
    NM_ITEM, (STRPTR)"Help", NULL, 0, 0L, NULL,
    NM_ITEM, (STRPTR)"Quit!", (STRPTR)"Q", 0, 0L, NULL,
    NM_TITLE, (STRPTR)"Config", NULL, 0, NULL, NULL,
    NM_ITEM, (STRPTR)"Edit", (STRPTR)"E", 0, 0L, NULL,
    NM_ITEM, (STRPTR)"Load", (STRPTR)"L", 0, 0L, NULL,
    NM_ITEM, (STRPTR)"Save", (STRPTR)"S", 0, 0L, NULL,
    NM_ITEM, (STRPTR)"Save As", (STRPTR)"A", 0, 0L, NULL,
    NM_TITLE, (STRPTR)"Misc", NULL, 0, NULL, NULL,
    NM_ITEM, (STRPTR)"Group Tag", (STRPTR)"T", 0, 0L, NULL,
    NM_ITEM, (STRPTR)"Group UnTag", (STRPTR)"U", 0, 0L, NULL,
    NM_ITEM, (STRPTR)"Format", (STRPTR)"F", 0, 0L, NULL,
#ifdef PUBLIC
    NM_TITLE, (STRPTR)"SHAREWARE", NULL, 0, NULL, NULL,
    NM_ITEM, (STRPTR)"Please Pay Your Shareware Fee", NULL, 0, 0L, NULL,
    NM_ITEM, (STRPTR)"Of 15 UK Pounds NOW!!!", NULL, 0, 0L, NULL,
#endif
    NM_END, NULL, NULL, 0, 0L, NULL };


#else

  extern struct Window       *W;
  extern void                *vi;
  extern struct Screen       *mysc;
  extern struct Gadget       *glist,*my_gads[AMOUNTOFGADGETS];
  extern int                 topborder;
  extern struct ReqToolsBase *ReqToolsBase;
  extern struct Library      *GadToolsBase;
  extern struct TextFont     *ScreenFont;
  extern struct Menu         *MainMenu;

  extern struct Process *myproc;
  extern APTR oldwinptr;
  extern char outputstring[42],dummystring[MAX_PATH_LEN+1];

  extern short actuallytransferred;
  extern char screentitle[101];  /* need this so as i can print the version number to it..*/
  extern char windowtitle[31];  /* need this so as i can print the version number to it..*/
  extern char __far *filename[2][MAX_FILES_IN_LIST+1];
  extern LONG __far filetype[2][MAX_FILES_IN_LIST+1];
  extern LONG __far filesize[2][MAX_FILES_IN_LIST+1];
  extern struct DateStamp __far filedate[2][MAX_FILES_IN_LIST+1];
  extern BYTE __far filetags[2][MAX_FILES_IN_LIST+1];
  extern BYTE DisplayType;
  extern int allocated[2];
  extern int totalfiles[2];
  extern int selectedfiles[2];
  extern float selectedsize[2];
  extern int displayoffset[2];
  extern char screenname[10];
  extern char patt[41];
  extern BOOL pathok[2];
  extern int currentside;
  extern char dosstr[MAX_COMMAND_LEN+1],batchstring[MAX_COMMAND_LEN+1];
  extern char defaultcomment[MAX_COMMENT_LEN+1];
  extern char cpath[2][MAX_PATH_LEN+1];
  extern BOOL gadgetsok;
  extern WORD zoomcoords[4];
  extern BOOL iconised;
  extern BPTR outputconfile;
  extern BOOL __far tempautooverwrite;
  extern BOOL skipall;
  extern BOOL customscreenopen;
  extern struct ColorSpec ScreenColors[];
  extern UWORD DriPens[];

/*
 *  For Status Window!
 */
  extern struct Gadget       *statglist, *statgads[AMOUNTOFSTATGADGETS];
  extern struct Window *statw;

/*
 *  For Config Window!
 */
  extern struct Gadget       *cfgglist, *cfggads[AMOUNTOFCFGGADGETS];
  extern struct Window *cfgw;
  extern struct Menu         *CfgMenu;

  extern ULONG reqtags[];
/*
 *  For Protection Window!
 */
  extern struct Gadget       *protglist, *protgads[AMOUNTOFPROTGADGETS];
  extern struct Window *protw;

/*
 *  For Protection Window!
 */
  extern struct Gadget       *modglist, *modgads[AMOUNTOFMODGADGETS];
  extern struct Window *modw;


  extern char outputcon[MAX_PATH_LEN+1];
  extern char defaulticonfile[MAX_PATH_LEN+1];
  extern BOOL setprotverify;
  extern BOOL deleteverify;
  extern BOOL ignorehiddenbit;
  extern BOOL ignoreinserteddisks;
  extern BOOL ignorenodisk;
  extern BOOL mixfilesanddraws;
  extern BOOL autooverwrite;
  extern BOOL nomessages;
  extern BOOL shufflescreens;
  extern BOOL useworkbenchscreen;
  extern BOOL active;
  extern ULONG scrH;
  extern ULONG scrID;

  extern char cancelcontmsg[MAX_CANCELCONTMSG_LEN+1];
  extern BYTE dircol,filecol,highlightcol;
  extern BYTE lines_per_side;
  extern ULONG max_copy_buf_size;
  extern char CommandString[8][MAX_COMMAND_LEN+1];

  extern int filexpos[2];
  extern char devicegadnames[2][12][MAX_DEV_GAD_NAME_LEN+1];
  extern char devicegadactual[2][12][MAX_DEV_GAD_ACTUAL_LEN+1];
  extern char usergadnames[2][15][MAX_USER_GAD_NAME_LEN+1];
  extern char usergadactual[2][15][MAX_USER_GAD_ACTUAL_LEN+1];
  extern BYTE usergadflags[2][15];
  extern struct TextAttr ScreenFontAttr;
  extern LONG mouseupdn;
  extern LONG mouseaction;
  extern struct NewMenu __far MainNewMenu[];
  extern BYTE sortmode[2];
  extern short Errors;
  extern struct List *ErrorList;
  extern char okmsg[4];
#endif