/*
**	termData.h
**
**	Global symbol definitions
**
**	Copyright © 1990-1994 by Olaf `Olsen' Barthel
**		All Rights Reserved
*/

extern BOOLEAN			 DebugFlag;

	/* termTag.asm */

extern LONG			TermVersion,
				TermRevision;

extern UBYTE			TermName[],
				TermDate[];

	/* termData.c */

extern struct ExecBase		*SysBase;
extern struct DosLibrary	*DOSBase;
extern struct Library		*GTLayoutBase;

extern struct IntuitionBase	*IntuitionBase;
extern struct GfxBase		*GfxBase;
extern struct RxsLib		*RexxSysBase;
extern struct LocaleBase	*LocaleBase;
extern struct Library		*GadToolsBase,
				*DiskfontBase,
				*ConsoleDevice,
				*TimerBase,
				*UtilityBase,
				*AslBase,
				*IFFParseBase,
				*CxBase,
				*IconBase,
				*LayersBase,
				*TranslatorBase,
				*WorkbenchBase,
				*AmigaGuideBase,
				*DataTypesBase,
				*XEmulatorBase;

extern BYTE			 Kick30;

extern struct timerequest	*TimeRequest;
extern struct MsgPort		*TimePort;

extern struct IOStdReq		*ConsoleRequest;
extern struct KeyMap		*KeyMap;
extern BPTR			 KeySegment;

extern struct Screen		*Screen,
				*DefaultPubScreen,
				*SharedScreen;
extern struct Window		*Window;
extern LONG			 WindowWidth,
				 WindowHeight,
				 WindowLeft,
				 WindowTop;
extern struct Window		*StatusWindow;
extern struct Gadget		*StatusGadget;
extern UWORD			 StatusOffset;
extern APTR			 OldWindowPtr;
extern struct BitMap		*InterleavedBitMap;
extern UBYTE __far		 ScreenTitle[80];
extern UBYTE			 DepthMask;
extern LONG			 RenderPens[4],
				 MappedPens[2][32],
				 SafeTextPen;
extern struct DrawInfo		*DrawInfo;
extern LONG			 ScreenWidth,
				 ScreenHeight;
extern BYTE			 UseMasking;
extern struct IBox		 WindowBox;

extern struct BlockMarker	*WindowMarker;
extern ULONG			 ClickSecs,ClickMicros;
extern BYTE			 FirstClick,HoldClick;
extern LONG			 ClickX,ClickY;

extern struct AppWindow		*WorkbenchWindow;
extern struct MsgPort		*WorkbenchPort;

extern struct ViewPort		*VPort;
extern struct RastPort		*RPort;
extern struct Region		*ClipRegion,
				*OldRegion;
extern struct TextFont		*GFX,*CurrentFont,*UserTextFont;
extern WORD			 UserFontHeight,UserFontWidth,UserFontBase;
extern struct TTextAttr		 UserFont;
extern struct TextFont		*TextFont;
extern WORD			 TextFontHeight,TextFontWidth,TextFontBase;
extern struct TTextAttr		 TextAttr;
extern UBYTE __far		 TextFontName[40],UserFontName[40];
extern struct TagItem		 TagDPI[2];
extern APTR			 VisualInfo;
extern UWORD			 FontRightExtend;

extern ULONG			(*  ReadAPen)(struct RastPort *RPort);
extern ULONG			(*  ReadBPen)(struct RastPort *RPort);
extern ULONG			(*  ReadDrMd)(struct RastPort *RPort);
extern ULONG			(*  SetWrMsk)(struct RastPort *RPort,ULONG Mask);

extern UWORD			 MonoPens[];
extern UWORD			 StandardPens[];
extern UWORD			 ANSIPens[];
extern UWORD			 EGAPens[];
extern UWORD			 AtomicColours[16],
				 EGAColours[16],
				 ANSIColours[16];
extern UWORD			 DefaultColours[32],
				 BlinkColours[32],
				 NormalColours[32],
				 StandardColours[32],
				 PaletteSize;

extern LONG			*OffsetXTable,
				*OffsetYTable;

extern struct Process		*ThisProcess;
extern struct Process		*RexxProcess;
extern struct MsgPort		*TermRexxPort;
extern struct Process		*StatusProcess;
extern struct Task		*BufferTask;
extern struct WBStartup		*WBenchMsg;
extern BPTR			 WBenchLock;
extern BYTE			 CheckBit,
				 OwnDevBit;
extern BYTE			 InRexx;
extern WORD			 LimitCount;
extern UBYTE __far		 LimitMacro[MAX_FILENAME_LENGTH];
extern LONG			 CantQuit;

extern struct InputEvent	*FakeInputEvent;

extern struct IOExtSer		*ReadRequest;
extern struct IOExtSer		*WriteRequest;
extern struct MsgPort		*ReadPort;
extern APTR			 ReadBuffer,
				 HostReadBuffer;
extern UBYTE			*SerialMessage;
extern ULONG			 DTERate;
extern BYTE			 ProcessIO;

extern LONG			 BaudRates[],
				 NumBaudRates;

extern struct RendezvousSemaphore	RendezvousSemaphore;

extern UBYTE __far		 NewDevice[MAX_FILENAME_LENGTH];
extern LONG			 NewUnit;
extern BYTE			 UseNewDevice,
				 UseNewUnit;

extern struct Catalog		*Catalog;
extern struct Locale		*Locale;

extern struct Hotkeys		 Hotkeys;
extern struct NewBroker		 NewTermBroker;

extern struct TextAttr		 DefaultFont;
extern struct TextAttr		 GFXFont;

extern UWORD __chip		 Stopwatch[(1 + 16 + 1) * 2];

extern ULONG __chip		 Crosshatch,Ghosting;

extern BYTE			 IsPrintable[256],
				 CharType[256];
extern UBYTE __far		 IBMConversion[256];
extern BYTE			 GfxTable[256];

extern struct SpecialKey	 SpecialKeys[13];
extern JUMP			*SpecialTable;

extern BYTE			 AbortMap[256];
extern JUMP			*AbortTable;

extern VOID			(*  ConDump)(STRPTR,LONG);
extern VOID			(*  ConOutput)(STRPTR,LONG);
extern VOID			(*  ConProcessData)(register STRPTR,register LONG);

extern UBYTE __far		 SharedBuffer[512];
extern UBYTE __far		 ARexxCommandBuffer[256],
				 AmigaDOSCommandBuffer[256];

extern struct NewMenu		 TermMenu[];
extern struct Menu		*Menu;
extern struct Image		*AmigaGlyph,
				*CheckGlyph;

extern struct TermPort		*TermPort;

extern struct Configuration	*Config,
				*PrivateConfig,
				*BackupConfig;
extern struct SpeechConfig	 SpeechConfig;
extern BYTE			 English;
extern BYTE			 Status;
extern BYTE			 Online,WasOnline;
extern ULONG			 OnlineMinutes,OnlinePlus;
extern UWORD			 PublicModes;

extern UBYTE __far		 LastConfig[MAX_FILENAME_LENGTH];
extern UBYTE __far		 DefaultPubScreenName[MAXPUBSCREENNAME + 1],
				 SomePubScreenName[MAXPUBSCREENNAME + 1];

extern struct Buffer		*FileCapture;
extern BPTR			 PrinterCapture;
extern UBYTE __far		 CaptureName[MAX_FILENAME_LENGTH];
extern BYTE			 StandardPrinterCapture,
				 ControllerActive;
extern LONG			 BufferFlushCount;

extern UBYTE			**BufferLines;
extern LONG			 Lines;
extern struct SignalSemaphore	*BufferSemaphore,
				 BufferTaskSemaphore;
extern LONG			 MaxLines;
extern LONG			 BufferSpace;
extern BYTE			 BufferClosed;
extern BYTE			 BufferFrozen;

extern struct MinList		 ReviewBufferHistory,
				 TextBufferHistory;

extern struct SoundConfig	 SoundConfig;
extern BYTE			 SoundChanged;

extern struct PhoneEntry	**Phonebook;
extern LONG			 PhoneSize;
extern LONG			 NumPhoneEntries;
extern UBYTE __far		 PhonePassword[256];
extern BYTE			 PhonePasswordUsed,
				 RebuildMenu;
extern UBYTE __far		 Password[100];
extern UBYTE __far		 UserName[100];
extern UBYTE __far		 GlobalPassword[256];

extern UBYTE __far		 CurrentBBSName[40],
				 CurrentBBSNumber[100],
				 CurrentBBSComment[100];

extern UBYTE __far		 LastPhone[MAX_FILENAME_LENGTH];
extern UBYTE __far		 LastKeys[MAX_FILENAME_LENGTH];
extern UBYTE __far		 LastMacros[MAX_FILENAME_LENGTH];
extern UBYTE __far		 LastTranslation[MAX_FILENAME_LENGTH];
extern UBYTE __far		 LastCursorKeys[MAX_FILENAME_LENGTH];
extern UBYTE __far		 LastSpeech[MAX_FILENAME_LENGTH];
extern UBYTE __far		 LastSound[MAX_FILENAME_LENGTH];

extern struct MacroKeys		*MacroKeys;
extern struct CursorKeys	*CursorKeys;

extern UBYTE			*StripBuffer;

extern UWORD			 LastLine,LastColumn,LastPixel;
extern BYTE			 Charset,Attributes,FgPen,BgPen;
extern WORD			 CursorX,CursorY,Top,Bottom;
extern BYTE			 UseRegion,RegionSet,InSequence,Quiet,Blocking;
extern BYTE			*TabStops;
extern UWORD			 TabStopMax;
extern BYTE			 CharMode[2];

extern BYTE			 ResetDisplay,
				 DisplayReopened,
				 FixPubScreenMode,
				 FixScreenSize,
				 Apocalypse;

extern struct SignalSemaphore	 TerminalSemaphore;	// Protection from shape changers

extern STRPTR			 AttentionBuffers[SCAN_COUNT];
extern BYTE			 BaudPending,FullCheck,UseFlow;
extern UBYTE			 BaudBuffer[80],BaudCount;

extern struct FlowInfo		 FlowInfo;
extern STRPTR			 DataHold;
extern LONG			 DataSize;

extern BYTE			 BinaryTransfer;
extern LONG			 TransferBits;
extern VOID			(*  ConTransfer)(STRPTR,LONG);

extern struct Window		*TransferWindow,
				*TransferPerfWindow;
extern struct LayoutHandle	*TransferHandle;
extern UBYTE __far		 TransferTitleBuffer[256];
extern STRPTR			 TransferWindowTitle;
extern BOOLEAN			 TransferZoomed;
extern struct Menu		*TransferMenu;
extern struct Gadget		*TransferGadgetArray[GAD_TRANSFER_SKIP + 1];
extern struct List		 TransferInfoList;

extern struct FileTransferInfo	*FileTransferInfo;

extern UBYTE			*DownloadPath;
extern BYTE			 Uploading;
extern BYTE			 DidTransfer;

extern struct Library		*XProtocolBase;
extern struct XPR_IO		*XprIO;

extern UBYTE __far		 ProtocolOptsBuffer[256];
extern BYTE			 NewLibrary,NewOptions;
extern BOOLEAN			 XPRCommandSelected;
extern UBYTE __far		 LastXprLibrary[MAX_FILENAME_LENGTH];
extern UBYTE __far		 ConvNumber[30],ConvNumber10[30];
extern BYTE			 UsesZModem,SendAbort,TransferAborted,TransferFailed,TransferError;

extern UBYTE			 ZModemCancel[20];

extern LONG			 CurrentPay;
extern LONG			 PayPerUnit[2];
extern LONG			 SecPerUnit[2];
extern LONG			 WhichUnit;
extern struct PhoneEntry	*ChosenEntry;
extern BYTE			 ChosenInUse;

extern UBYTE __far		 WindowName[256];

extern ULONG			 BlockNestCount;
extern BYTE			 WeAreBlocking;

extern struct List		*DialList;
extern BYTE			 SendStartup;
extern LONG			 FirstDialMenu;
extern struct RexxMsg		*DialMsg;

extern BYTE			 ReleaseSerial;
extern BYTE			 ResetSerial;
extern BYTE			 BatchMode;
extern BYTE			 MainTerminated,
				 IconTerminated,
				 DoIconify,
				 DoDial,
				 KeepQuiet;

extern BYTE			 ConfigChanged,PhonebookChanged,TranslationChanged,
				 MacroChanged,CursorKeysChanged,FastMacrosChanged,
				 HotkeysChanged,SpeechChanged,BufferChanged;

extern UBYTE __far		 LastDownload[MAX_FILENAME_LENGTH];
extern UBYTE __far		 LastUpload[MAX_FILENAME_LENGTH];

extern struct Hook		 CommandHook,
				 PasswordHook;
extern BYTE			 DontActivate;

extern struct Window		*CommandWindow;
extern struct Gadget		*CommandGadget;
extern struct Gadget		*ActiveGadget;

extern struct Process		*ClipProcess;
extern struct MsgPort		*ClipPort;
extern BYTE			 ClipInput,
				 ClipXerox,
				 ClipPrefix;

extern UBYTE __far		 SendPrompt[256];
extern LONG			 SendPromptLen;
extern BYTE			(*  SendLine)(register STRPTR,register LONG);

extern struct Window		*PacketWindow;
extern struct Gadget		*PacketGadgetArray[2];
extern struct Menu		*PacketMenu;
extern struct Gadget		*PacketGadgetList;
extern struct List		 PacketHistoryList;

extern struct NewMenu		 GetsMenu[];

extern BYTE			 Initializing,LoadColours;

extern UBYTE			*Raster,*RasterAttr;
extern LONG			 RasterWidth,RasterHeight;
extern BYTE			 Marking;
extern struct SignalSemaphore	*RasterSemaphore;
extern BYTE			 RasterEnabled;

extern struct GenericList	*GenericListTable[GLIST_COUNT];

extern ULONG			 VersionProps[2];

extern struct Window		*TopWindow;
extern struct Window		*WindowStack[5];
extern WORD			 WindowStackPtr;

extern LONG			 TermID;
extern UBYTE __far		 TermIDString[];
extern UBYTE __far		 RexxPortName[256];

extern struct List		 FastMacroList;
extern LONG			 FastMacroCount;
extern UBYTE __far		 LastFastMacros[MAX_FILENAME_LENGTH];
extern struct Window		*FastWindow;
extern WORD			 FastWindowLeft,
				 FastWindowTop,
				 FastWindowHeight;

extern struct List		 DoubleBufferList;
extern struct SignalSemaphore	 DoubleBufferSemaphore;

extern struct XEM_IO		*XEM_IO;
extern ULONG			 XEM_Signal;
extern struct XEmulatorHostData	 XEM_HostData;
extern UBYTE			*OptionTitle;
extern struct List		 XEM_MacroList;
extern struct XEmulatorMacroKey	*XEM_MacroKeys;
extern UBYTE __far		 EmulationName[40];

extern struct List		 EmptyList;

extern UWORD			 ScrollLineFirst,ScrollLineLast,
				 ScrollLineCount;
extern struct ScrollLineInfo	*ScrollLines;

extern struct Window		*ReviewWindow;

extern ULONG			 BytesIn,
				 BytesOut;
extern struct DateStamp		 SessionStart;
extern struct Window		*InfoWindow;

extern LONG			 InterWidth,
				 InterHeight;

extern struct TranslationEntry	**SendTable,
				**ReceiveTable;

extern struct WindowInfo	 WindowInfoTable[];

extern struct Hook		 LocaleHook;
extern struct Hook		 GuideHook;

extern struct MsgQueue		*SpecialQueue;

extern STRPTR			*EditLabels;
extern struct List		*EditList;
extern struct Node		*EditNode;

extern struct Hook		 BackfillHook;

extern BOOLEAN			(*SerWriteBypass)(STRPTR Buffer,LONG Size);

extern UBYTE __far		 ShrunkenName[MAX_FILENAME_LENGTH],
				 OriginalName[MAX_FILENAME_LENGTH];

extern struct MsgQueue		*TerminalQueue;
/*
extern struct DChannel		*NetChannel;
extern struct MsgPort		*NetListen;
extern ULONG			 NetSigMask;
extern BOOLEAN			 NetTerminated;
*/

extern struct DiskObject	 DropIcon;

extern BOOL			 RememberOutput,
				 RememberInput,
				 Recording,
				 RecordingLine;

extern BOOLEAN			 WatchTraps;
extern BOOLEAN			 TrapsChanged;
extern UBYTE			 LastTraps[MAX_FILENAME_LENGTH];
