extern struct Library *DOSBase;
#include <pragmas/asl_pragmas.h>
#include <pragmas/cia_pragmas.h>
#include <pragmas/console_pragmas.h>
#include <pragmas/diskfont_pragmas.h>
#include <pragmas/dos_pragmas.h>
#include <pragmas/exec_pragmas.h>
#include <pragmas/gadtools_pragmas.h>
#include <pragmas/graphics_pragmas.h>
#include <pragmas/icon_pragmas.h>
#include <pragmas/input_pragmas.h>
#include <pragmas/intuition_pragmas.h>
#include <pragmas/rexxsyslib_pragmas.h>
#include <pragmas/timer_pragmas.h>
#include <pragmas/utility_pragmas.h>
#include <pragmas/wb_pragmas.h>

/* bbs.h... Needed to compile AELib & Mybbs */
/* Define our GLOBAL Names */
/* USED ONLY IN MENU.C line 567 so I dont show what I am working on to others */
#define STD_WHITE "[37m"
#define STD_CLEAR "[0m"
#define STDWCLR STD_CLEAR STD_WHITE

#define LCALLER_LOWLEVEL        250L
#define NL NULL
#define PROG_NAME "AmiExpress"              /* also used for our main msg port */
#define PROG_AUTHOR "Ronald T. Shaw"
#define PROG_AUTHOR1 "Joseph Hodge"
/* MsgPort Names */
//#define MAINPORT_NAME "SPZPORT"  /* main BBS port name the only link between programs */
#define PORT_NAME "AmiExpress_Node."        /* ths is only the prefix msgport name*/
#define JOECODE 1
#define JOEPROG 1
#include <exec/exec.h>
#include <dos/dosextens.h>
#include <workbench/workbench.h>
#include <dos/dos.h>
#include <exec/memory.h>
#include <clib/asl_protos.h>
#include <devices/serial.h>
#include <hardware/cia.h>
#include <clib/exec_protos.h>
#include <clib/dos_protos.h>
#include <clib/icon_protos.h>
#include <clib/alib_protos.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <ctype.h>
#include <time.h>
#include "sc:ae/code/acp3.00/semis.h"
#include "express.h"

struct AEInfo {
            struct MsgPort *WSerPort;
            struct MsgPort *RSerPort;
            struct MsgPort *WConPort;
            struct MsgPort *RConPort;
            struct MsgPort *TPort;
            struct MsgPort *MRPort;
            struct MsgPort *SWPort;
            struct MsgPort *ZWPort;
            struct IOStdReq *SWReq;
            struct IOStdReq *ZWReq;
            struct IOExtSer *WSerReq,*RSerReq;
            struct IOStdReq *WConReq,*RConReq;
            struct Commands *myCmds;
            UBYTE SOUT;
            UBYTE COUT;
};
#define WriteSerPort    Xinfo.WSerPort
#define ReadSerPort     Xinfo.RSerPort
#define WriteConPort    Xinfo.WConPort
#define ReadConPort     Xinfo.RConPort
#define TimerPort       Xinfo.TPort
#define MyRexxPort      Xinfo.MRPort
#define StatWritePort   Xinfo.SWPort
#define ZmodemWritePort Xinfo.ZWPort
#define StatWriteReq    Xinfo.SWReq
#define ZmodemWriteReq  Xinfo.ZWReq
#define WriteSerReq     Xinfo.WSerReq
#define ReadSerReq      Xinfo.RSerReq
#define WriteConReq     Xinfo.WConReq
#define ReadConReq      Xinfo.RConReq
#define Cmds            Xinfo.myCmds
#define SEROUT          Xinfo.SOUT
#define KEYIN           Xinfo.COUT
#define Chat_Reg   1
#define Chat_Give  2
#define Chat_GetIt 3
#define Chat_UnReg 4
#define Chat_Open  5
#define Chat_Close 6
#define Chat_QueryReg 7
#define Chat_QueryOpen 8
#define Chat_Clear 9
#ifdef MAIN_PROG
BOOL RTS_DEBUG = FALSE;
struct IntuitionBase *IntuitionBase = NL;
struct GfxBase *GfxBase = NL;
struct UtilityBase *UtilityBase = NL;
struct RexxSysBase *RexxSysBase =NL;
struct Screen *MYScreen = NL;
struct Window *MYwindow=NL, *StatusPane=NL, *Iconify=NL, *ZmodemStatsWin=NL;

struct IntuiMessage *IconifyMsg=NL, *ZSMsg=NL;
struct DrawInfo *drinfo = NL;
struct Image *closeimage = NL;


struct timerequest *TimerMsg=NL;

struct RexxMsg *SDReplyRexx = NL ,*SReplyRexx = NL;

struct Remember *RememberKey=NL;
struct StartOption *Sopt=NL;
struct Library *GadToolsBase=NL;
struct User User;
struct UserKeys User_keys;
struct User GHoozer;
struct UserKeys GHoozer2;
struct MailStat MailStat;
struct MailHeader MailHeader;
struct SinglePort *SingleNode=NL;
struct MultiPort *MasterNode=NL;
struct Library *AslBase=NULL;
struct ZModem ZModemInfo;
struct TempSysopInfo TSI;
struct AEInfo Xinfo;
FILE *CaptureFP =NL;

ULONG DosBase;                 /* this is so fucking cheap */
ULONG DiskFontBase;

UBYTE NodeWork[255];
ULONG *MemConf=NULL;
struct List *ConfDBList;
ULONG ProgFlag = 0L; /* used for my programs signals */

//ULONG *ptr1, *ptr2, cksum;
ULONG cksum;
ULONG TimerSig, DoorSig, SerCharSig, ConCharSig, IconifySig, RexxSig,SysopStatus;

long  NumOfZMsgs, Time_holder, GL1, Startup_Time;
long  Time_connect, Time_menu_entry, Time_system, Time_remaining, Time_limit;
long  TTEFF,TTCPS,TTTM,TMPBT,TBT,DTBT,BytesADL,Last_Msg_Read_Conf,
      Last_New_Read_Conf,Time_Last_On;

UWORD Sysopdl;
int   Boards_Are_Active,LogON,zresume,NumSkipd,QuickFlag,AnsiColor;
int   ChatFlag=0,FreeDFlag,gnsflag,HistorySelect;
int   Bulletins_Are_Active, MaxDirs,ChatSerFlag,ChatConFlag;
int   Whence_The_Logon,SySChat,PagedFlag=0;
int   Online_Baud, Online_BaudR, Online_NFiles,BitPlanes,DONF;
int   IO_Flags[7], NewUserFlagsAR[7], CHATF,ComputerEntries;
int   Chat_Stat, CN, ValidUser, GIFP1, GIFP2, GI1, GI2;
int   newacs[100];
int QuietNode;
char  RecFileNames[1024], DateStr[30], Conference_Location[100], Upload_Location[100],
      MsgBase_Location[100];
      Conference_Name[100], *ComputerTypes[255], MAINMENU_Li[255];
char  Command[6][40];  
char  flaglist[2048], GR[6], rfinal[3072], NodeStr[255];
char  ConnectString[50], ReservedName[40], titlebar[150], ititlebar[250],ptitlebar[250];
char TrapConnect[200];
char UserDataLoc[200];
char UserKeyLoc[200];
char Screen_Location[100];
UBYTE GSTR1[1024], GSTR2[1024], GSTR3[1024], ShutDownFlag, NewSinceFlag;
UBYTE NODENUMBER,*HistoryBuf =NL,NumHistItems,WhichHist;
//UBYTE SEROUT = 0;
UBYTE serverin[20];
BYTE  NOFKeys,OnlineEdit,FreeDownloads,ICON,AWAITLOGON,ICONATS,CNOZOOM,
      ZWindow,EXECBATCH,DStatBar,BeenUDd,DeBuG;
//BYTE KEYIN
BOOL TrueReset;

UBYTE WORKB[1024];


int MCIViewSafe=TRUE;
int TakeCredits;
int System_Calls;
BOOL TrapDoor=FALSE;
BOOL mcimail;
int ServerCmd=0;
BOOL GETCLIP=FALSE;
int RawArrow=0;
BOOL MCIDoor=FALSE;
struct ansi
{
  int ansicode;
  char buf[20];
};
struct ansi strip,stripr;
struct Process *mytask=NL;
#else
struct ansi
{
  int ansicode;
  char buf[20];
} ;
extern int transfering;
extern struct Process *mytask;
extern struct ansi strip,stripr;
extern BOOL RTS_DEBUG;
extern struct Library *IconBase;
extern BOOL TrapDoor;
extern UBYTE WORKB[1024];
extern int RawArrow;
extern BOOL GETCLIP;
extern BOOL MCIDoor;
extern struct Library *GadToolsBase;
extern struct IntuitionBase *IntuitionBase;
extern struct GfxBase *GfxBase;
extern struct UtilityBase *UtilityBase;
extern struct RexxSysBase *RexxSysBase;
extern struct DrawInfo *drinfo;
extern struct Image *closeimage;
extern struct AEInfo Xinfo;
extern struct Remember *RememberKey;
extern struct Gadget MG;
extern int QuietNode;
extern struct Screen *MYScreen;
extern struct StartOption *Sopt;
extern struct NewScreen MYNewScreen;
extern struct NewWindow MYNewWindow, PaneStatus, CloseIt, ZmodemStats;
extern struct NewWindow OpenIt;
extern struct Window *MYwindow, *StatusPane, *Iconify, *ZmodemStatsWin;
extern struct SinglePort *SingleNode;
extern struct MultiPort *MasterNode;
//extern struct IOExtSer *WriteSerReq, *ReadSerReq;
//extern struct IOStdReq *WriteConReq, *ReadConReq, *StatWriteReq, *ZmodemWriteReq;
extern struct timerequest *TimerMsg;
//extern struct MsgPort *WriteSerPort, *ReadSerPort, *TimerPort;
//extern struct MsgPort *WriteConPort, *ReadConPort, *StatWritePort, *ZmodemWritePort;
//extern struct MsgPort *MyRexxPort;
extern struct Library *AslBase;
//extern struct Commands *Cmds;
extern struct User User;
extern struct UserKeys User_keys;
extern struct MailHeader MailHeader;
extern struct MailStat MailStat;
extern ULONG *MemConf;
extern struct ZModem ZModemInfo;

extern FILE  *CaptureFP;

extern ULONG ProgFlag;                      /* used for my programs signals */
extern ULONG TimerSig, DoorSig, SerCharSig, ConCharSig, IconifySig,RexxSig;

extern long  Time_connect, Time_menu_entry, Time_system, Time_remaining, Time_limit;
extern long  Time_holder, Startup_Time;
extern long  BytesADL,TTEFF,TTCPS,TTTM,TMPBT,TBT,DTBT;
extern long  TTEFF,TTCPS,TTTM,TMPBT,TBT,DTBT,BytesADL,Last_Msg_Read_Conf,
             Last_New_Read_Conf,Time_Last_On;
extern char Screen_Location[100];

extern int   GIFP1, GIFP2, GI1, GI2;
extern int   Bulletins_Are_Active, Whence_The_Logon,IO_Flags[], GI1;
extern int   Boards_Are_Active, BitPlanes, GIFP1, GIFP2;
extern int   ComputerEntries, gnsflag, MaxDirs, DirScan, StartDir, LineCount;
extern int   Online_Baud, Online_BaudR, Online_NFiles, DONF;
extern int   AnsiColor,CN, FreeDFlag, LogON,zresume,NumSkipd,QuickFlag;
extern int   PagedFlag,SySChat;
extern int   IO_Flags[7], NewUserFlagsAR[7], CHATF,ComputerEntries;
extern int   ChatFlag,HistorySelect;
extern int newacs[100];
extern int MCIViewSafe;
extern int System_Calls;
extern BOOL mcimail;
extern UWORD Sysopdl;

extern UBYTE GSTR1[1024], GSTR2[1024], GSTR3[1024];
extern UBYTE *HistoryBuf;
//extern UBYTE SEROUT;
extern UBYTE serverin[20];

extern BYTE  NOFKeys,OnlineEdit,FreeDownloads,ICON,AWAITLOGON,ICONATS,CNOZOOM,
      ZWindow,EXECBATCH,DStatBar,BeenUDd,DeBuG,DStatBar;
//extern BYTE KEYIN
extern char  titlebar[150], NodeStr[255], *ComputerTypes[255], flaglist[2048];
extern char  GR[6], rfinal[3072], Command[6][40];
extern char  ConnectString[50],RecFileNames[1024];
extern char  Conference_Location[],MsgBase_Location[],Upload_Location[], DateStr[30];
extern char  Conference_Name[100], MAINMENU_Li[255];
extern char TrapConnect[];
extern char UserDataLoc[];
extern char UserKeyLoc[];
extern int ServerCmd;
#endif


#include "myinfo.h"
#include "bbs.protos"

