/* ** $Id: termGlobal.h,v 1.10 92/05/08 20:49:55 olsen Sta Locker: olsen $ ** $Revision: 1.10 $ ** $Date: 92/05/08 20:49:55 $ ** ** Global data definitions and function forward declarations ** ** Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM ** All Rights Reserved */ #include "xproto.h" #include "xem.h" /* Menu item codes. */ enum { MEN_OPEN=1,MEN_SAVE,MEN_SAVEAS,MEN_PRINTSCREEN,MEN_ICONIFY,MEN_ABOUT,MEN_QUIT, MEN_SETCONSOLE,MEN_DOSCOMMAND,MEN_REXXCOMMAND,MEN_EDIT,MEN_PASTE,MEN_PACKET,MEN_FASTMACROPANEL, MEN_CLEARBUFFER,MEN_DISPLAYBUFFER,MEN_CLOSEBUFFER,MEN_FREEZEBUFFER,MEN_LOADBUFFER,MEN_SAVEBUFFER,MEN_CAPTUREDISK,MEN_CAPTUREPRINTER, MEN_UPLOADTEXT,MEN_DOWNLOADTEXT,MEN_SEND,MEN_RECEIVE,MEN_UPLOAD,MEN_DOWNLOAD,MEN_XFERPROTOCOL,MEN_SELECTXFER, MEN_PHONEBOOK,MEN_DIAL,MEN_REDIAL,MEN_PLAY,MEN_SENDBREAK,MEN_FLUSHBUFFER,MEN_HANGUP,MEN_RELEASE, MEN_CLEARSCREEN,MEN_RESETSTYLES,MEN_RESETFONT,MEN_RESETTERMINAL,MEN_SAVEILBM,MEN_SAVEASCII, MEN_SERIAL,MEN_MODEM,MEN_TRANSFER,MEN_FASTMACROS,MEN_MACROS,MEN_SCREEN,MEN_TERMINAL,MEN_COMMANDS,MEN_EMULATION,MEN_PATH,MEN_MISC,MEN_HOTKEYS,MEN_SPEECH }; /* Serial settings. */ enum { PARITY_NONE,PARITY_EVEN,PARITY_ODD,PARITY_MARK,PARITY_SPACE }; enum { HANDSHAKING_XONXOFF,HANDSHAKING_RTSCTS,HANDSHAKING_NONE,HANDSHAKING_RTSCTS_DSR }; enum { DUPLEX_FULL,DUPLEX_HALF }; /* Terminal settings. */ enum { CR_IGNORE,CR_ASCR,CR_ASCRLF }; enum { LF_IGNORE,LF_ASLF,LF_ASLFCR }; enum { EMULATION_ANSIVT100,EMULATION_ATOMIC,EMULATION_TTY,EMULATION_EXTERNAL }; enum { COLOUR_AMIGA,COLOUR_EIGHT,COLOUR_SIXTEEN,COLOUR_MONO }; /* Protocol types. */ enum { PROTOCOL_XMODEM,PROTOCOL_XMODEMCRC,PROTOCOL_YMODEM,PROTOCOL_ZMODEM }; /* Font types. */ enum { FONT_TOPAZ,FONT_IBM }; /* Status types. */ enum { STATUS_READY,STATUS_HOLDING,STATUS_DIALING,STATUS_UPLOAD, STATUS_DOWNLOAD,STATUS_BREAKING,STATUS_HANGUP }; /* Status line modes. */ enum { STATUSLINE_DISABLED,STATUSLINE_STANDARD,STATUSLINE_COMPRESSED }; /* Font scales. */ enum { SCALE_NORMAL,SCALE_HALF }; enum { SCALE_ATTR_NORMAL,SCALE_ATTR_TOP2X,SCALE_ATTR_BOT2X,SCALE_ATTR_2X }; /* Character tables. */ enum { TABLE_ASCII,TABLE_GFX }; /* Transfer types. */ enum { TRANSFER_BINARY,TRANSFER_TEXT,TRANSFER_ASCII }; /* Upload panel actions. */ enum { UPLOAD_TEXT=1,UPLOAD_BINARY,UPLOAD_IGNORE,UPLOAD_ABORT }; /* Day of week flags. */ #define DAY_MONDAY (1 << 0) #define DAY_TUESDAY (1 << 1) #define DAY_WEDNESDAY (1 << 2) #define DAY_THURSDAY (1 << 3) #define DAY_FRIDAY (1 << 4) #define DAY_SATURDAY (1 << 5) #define DAY_SUNDAY (1 << 6) /* These signal masks will make life a bit easier. */ #define SIG_WINDOW (1 << Window -> UserPort -> mp_SigBit) #define SIG_REXX (1 << TermRexxPort -> mp_SigBit) #define SIG_SERIAL (1 << ReadPort -> mp_SigBit) #define SIG_PACKET (1 << PacketWindow -> UserPort -> mp_SigBit) #define SIG_TIMER (1 << TimePort -> mp_SigBit) #define SIG_AUDIO (1 << AudioBlock -> ioa_Request . io_Message . mn_ReplyPort -> mp_SigBit) #define SIG_REVIEW ((1 << ReviewPort -> mp_SigBit) | (1 << ReviewWindow -> UserPort -> mp_SigBit)) #define SIG_CLIP SIGBREAKF_CTRL_E /* Some support macros for gadtools objects. */ #define GT_CHECKED(G) ((((struct Gadget *)(G)) -> Flags & GFLG_SELECTED) ? TRUE : FALSE) #define GT_DISABLED(G) ((((struct Gadget *)(G)) -> Flags & GFLG_DISABLED) ? TRUE : FALSE) #define GT_STRING(G) (((struct StringInfo *)(((struct Gadget *)(G)) -> SpecialInfo)) -> Buffer) #define GT_INTEGER(G) (((struct StringInfo *)(((struct Gadget *)(G)) -> SpecialInfo)) -> LongInt) /* Definitions to access the line signal setting functions supported by * some IO serial boards (namely the ASDG board). */ #define SIOCMD_SETCTRLLINES (CMD_NONSTD + 7) #define SIOB_RTSB 0 #define SIOB_DTRB 1 #define SIOB_RTSF (1 << SIOB_RTSB) #define SIOB_DTRF (1 << SIOB_DTRB) /* Kludge: this bit indicates that the shared serial access is enabled. */ #define SERIAL_SHARED 2 /* YAK (Yet Another Kludge): this bit indicates that a somewhat simpler * and faster screen layout is to be used. */ #define TERMINAL_FASTER 2 /* Special character treatment. */ struct SpecialKey { UBYTE Key; VOID (*Routine)(); }; /* Cursor backup data. */ struct CursorData { struct TextFont *CurrentFont; WORD CursorX, CursorY; BYTE Charset; BYTE CharMode[2]; BYTE Attributes; BYTE FgPen, BgPen; UBYTE Style; }; /* Global data link. */ struct TermPort { struct MsgPort ExecNode; struct Window *TopWindow; struct SignalSemaphore OpenSemaphore; LONG ID,OpenCount,HoldIt; LONG Reserved[5]; }; /* Support for optimized scrolling routines. */ struct ScrollLineInfo { UBYTE Left,Right; UBYTE ColourMask; UBYTE Shift; }; /* A dial list entry. */ struct PhoneNode { struct Node VanillaNode; UBYTE LocalName[50]; struct PhoneEntry *Entry; }; /* A Fast! macro list entry. */ struct MacroNode { struct MacroNode *mn_Succ; /* Modeled after the default Node. */ struct MacroNode *mn_Pred; WORD mn_Pad; /* Included only for Node compatibility. */ UBYTE *mn_Macro; /* = ln_Name, title */ UBYTE *mn_Code; /* The execution code. */ }; /* Speech preferences. */ struct SpeechConfig { WORD Rate; WORD Pitch; LONG Frequency; BYTE Sex; BYTE Volume; BYTE Enabled; BYTE Pad; }; /* Macro Preferences. */ struct MacroKeys { UBYTE Keys[4][10][256]; }; /* term configuration. */ struct Configuration { /* Serial Preferences. */ ULONG BaudRate; BYTE BitsPerChar; BYTE Parity; BYTE StopBits; BYTE Handshaking; BYTE Duplex; BYTE HighSpeed; ULONG BreakLength; UBYTE SerialDevice[40]; LONG UnitNumber; /* Modem Preferences. */ UBYTE ModemInit[80]; UBYTE ModemExit[80]; UBYTE ModemHangup[80]; UBYTE DialPrefix[80]; LONG RedialDelay; LONG DialRetries; LONG DialTimeout; BYTE ConnectAutoCapture; BYTE ConnectAutoBaud; BYTE LogActions; UBYTE NoCarrier[16]; UBYTE Connect[16]; UBYTE Voice[16]; UBYTE Ring[16]; UBYTE Busy[16]; /* Transfer Preferences. */ UBYTE Protocol[40]; /* Startup macro. */ UBYTE StartupMacro[256]; /* Macro Preferences. */ UBYTE MacroFile[256]; /* Screen Preferences. */ ULONG DisplayMode; UWORD Colours[16]; BYTE MakeScreenPublic; BYTE ShanghaiWindows; /* Terminal Preferences. */ BYTE CaptureFilter; BYTE DestructiveBackspace; BYTE AudibleBell; BYTE VisibleBell; BYTE EightyColumns; BYTE DisableBlinking; BYTE SendCR; BYTE SendLF; BYTE ColourMode; BYTE Emulation; BYTE Font; /* Emulation control. */ BYTE CursorApp; BYTE FontScale; BYTE JumpScroll; BYTE AutoWrap; BYTE CursorWrap; BYTE NewLine; BYTE InsertChar; BYTE NumApp; /* Path Preferences. */ UBYTE DefaultStorage[256]; UBYTE TextUploadPath[256]; UBYTE TextDownloadPath[256]; UBYTE ASCIIUploadPath[256]; UBYTE ASCIIDownloadPath[256]; UBYTE BinaryUploadPath[256]; UBYTE BinaryDownloadPath[256]; UBYTE CapturePath[256]; UBYTE LogFile[256]; UBYTE Editor[256]; UBYTE BeepSound[256]; /* Extension in version 1.9b */ BYTE SwapBSDelete; BYTE StripBit8; /* Some more extensions... */ BYTE RasterEnabled; UBYTE EmulationName[256]; /* Up-/Download Macros. */ UBYTE UploadMacro[256]; UBYTE DownloadMacro[256]; /* Default fast! macro file. */ UBYTE FastMacroFile[256]; /* Program priority. */ BYTE Priority; /* Override transfer path. */ BYTE OverridePath; /* Backup config between switching to phone entries. */ BYTE BackupConfig; /* ZModem auto upload panel enabled? */ BYTE AutoUpload; /* No dialtone string. */ UBYTE NoDialTone[16]; /* Check carrier upon `CARRIER LOST' message. */ BYTE CheckCarrier; /* Display the screen title bar? */ BYTE TitleBar; /* Display the status lines? */ BYTE StatusLine; BYTE DropDTR; /* Custom keymap file name. */ UBYTE KeyMapName[40]; /* Serial buffer size. */ LONG SerBuffSize; /* Maximum log book buffer size. */ LONG MaxLogBuffSize; /* Is the buffering enabled? */ BYTE BufferEnabled; /* Receive CR/LF as... */ BYTE ReceiveCR; BYTE ReceiveLF; /* Set `archived' bit on uploaded files. */ BYTE SetArchivedBit; /* Open the fast! macro panel on startup? */ BYTE OpenFastMacroPanel; /* Pass xON/xOFF through to modem? */ BYTE PassThrough; /* Use system DisplayBeep()? */ BYTE SystemBeep; BYTE Pad; /* Answerback message. */ UBYTE AnswerBack[41]; BYTE Pad2; }; /* term hotkey configuration. */ struct Hotkeys { UBYTE termScreenToFront[256]; UBYTE BufferScreenToFront[256]; UBYTE SkipDialEntry[256]; BYTE CommodityPriority; BYTE HotkeysEnabled; ULONG Reserved[25]; }; /* The TimeDate structure */ struct TimeDate { WORD PayPerUnit[2]; WORD SecPerUnit[2]; WORD TimeOfDay[2]; BYTE Month; /* Month of year or -1 -> Day = bitmapped days of week. */ BYTE Day; /* Day of month or -1 -> standard settings. */ UBYTE Comment[22]; /* Comment for this entry. */ }; struct TimeDateNode { struct Node VanillaNode; /* Default node entry. */ UBYTE Buffer[30]; /* Name buffer. */ struct TimeDate TimeDate; /* The TimeDate structure. */ }; /* A phonebook entry. */ struct PhoneEntry { struct PhoneNode *Node; struct MinList TimeDateList; LONG Count; UBYTE Name[30]; UBYTE Number[40]; UBYTE Password[20]; UBYTE UserName[20]; LONG PayPerUnit[2]; LONG SecPerUnit[2]; LONG TimeOfDay[2]; struct Configuration Config; }; /* Number of buffers to be used for buffered I/O. */ #define BUFFER_NUMBER 2 /* Auxiliary structure for buffered file I/O. */ struct Buffer { struct Message Message; /* Vanilla message header. */ BYTE Read; /* Last access has read data. */ BYTE Written; /* Last access has written data. */ LONG Action; /* Action to perform. */ LONG ActionData[2]; /* Seek and the like. */ LONG Result; /* Return value. */ BPTR FileHandle; /* Dos filehandle. */ UBYTE *Data; /* Data buffer. */ LONG BufLength; /* Length of data buffer. */ LONG BufPosition; /* Read/write pointer into buffer. */ LONG ReadBufFull; /* How many bytes are still to be read from the buffer? */ LONG WriteBufFull; /* How many bytes are still to be written to the buffer?*/ LONG RealPosition; /* Real position in file. */ LONG Cached; /* How many bytes in pre-load cache. */ UBYTE *DataBuffer[BUFFER_NUMBER]; /* The data buffers. */ LONG DataLength[BUFFER_NUMBER]; /* The lengths of the data buffers. */ WORD DataCount; /* Which buffer to use. */ BYTE WriteAccess; /* TRUE if a write file handle. */ BYTE LastActionFailed; /* TRUE if last action failed -> abort actions. */ struct Process *Child; struct Process *Caller; /* Synchronization. */ BPTR DirLock; struct InfoData __aligned InfoData; BYTE Fresh; /* TRUE if no read/write access has taken place yet. */ }; /* Global data flow <-> term interface. */ struct FlowInfo { BYTE Changed; BYTE NoCarrier; BYTE ZModemUpload; BYTE Connect; BYTE Voice; BYTE Ring; BYTE Busy; BYTE NoDialTone; }; /* A scan sequence, somewhat similar to the FlowInfo * structure. */ struct ScanNode { struct MinNode Node; UBYTE *Sequence; /* Character sequence to be matched. */ LONG Count; /* Number of characters matched. */ }; /* xpr serial bits. */ #define ST_PARTYON (1 << 0) #define ST_PARTYODD (1 << 1) #define ST_7WIRE (1 << 2) #define ST_QBREAK (1 << 3) #define ST_RADBOOGIE (1 << 4) #define ST_SHARED (1 << 5) #define ST_EOFMODE (1 << 6) #define ST_XDISABLED (1 << 7) #define ST_PARTYMARKON (1 << 8) #define ST_PARTYMARK (1 << 9) #define ST_2BITS (1 << 10) #define ST_READ7 (1 << 11) #define ST_WRITE7 (1 << 12) /* Miscellaneous definitions. */ #define MILLION 1000000 #define ATTR_UNDERLINE 1 #define ATTR_HIGHLIGHT 2 #define ATTR_BLINK 4 #define ATTR_INVERSE 8 /* Status macro (is character printable?). */ #define IsPrintable(c) (ValidTab[(c)]) #define IsControl(c) (((c) > 127 && (c) < 160) ? TRUE : FALSE) /* Set the stopwatch pointer. */ #define SetWait(Window) SetPointer((Window),&Stopwatch[0],16,16,-6,0) /* Audio channels. */ #define LEFT0F 1 #define RIGHT0F 2 #define RIGHT1F 4 #define LEFT1F 8 /* Program revision and the approriate info structure. */ struct TermInfo { UWORD Version; UWORD Revision; }; extern LONG TermVersion, TermRevision; extern UBYTE TermName[], TermDate[]; /* Beep.c */ BYTE CreateBeep(VOID); VOID DeleteBeep(VOID); VOID ClearAudio(VOID); VOID Beep(VOID); BYTE OpenSound(UBYTE *Name); /* CommandPanel.c */ VOID CommandPanel(struct Configuration *Config); /* Console.c */ VOID __regargs CaptureToFile(APTR Buffer,LONG Size); VOID __regargs Capture(APTR Buffer,LONG Size); VOID ClosePrinterCapture(BYTE Force); BYTE OpenPrinterCapture(BYTE Controller); VOID PrintRegion(WORD Top,WORD Bottom); BYTE __regargs HandleCursor(UBYTE Char); VOID DoBackspace(VOID); VOID DoSomeBeep(VOID); VOID DoLF(VOID); VOID DoIgnore(VOID); VOID DoShiftIn(VOID); VOID DoShiftOut(VOID); VOID DoCR_LF(VOID); VOID DoFF(VOID); VOID DoLF_FF_VT(VOID); VOID DoCR(VOID); VOID DoTab(VOID); VOID DoEnq(VOID); VOID __regargs GfxText(struct RastPort *RPort,STRPTR Buffer,LONG Length); VOID __regargs ConWrite(APTR Buffer,LONG Size); VOID __regargs ConProcess(UBYTE *String,LONG Size); VOID __stdargs ConWrites(UBYTE *String,...); UBYTE __regargs KeyConvert(struct IntuiMessage *Massage,UBYTE *Buffer,LONG *Len); /* CopyPanel.c */ VOID CopyPanel(struct Configuration *MyConfig); /* DatePanel.c */ BYTE DatePanel(struct TimeDate *TimeDate); /* DayPanel.c */ BYTE DayPanel(struct TimeDate *TimeDate); /* DialPanel.c */ BYTE DialPanel(VOID); /* FastMacros.c */ VOID RefreshFastWindow(WORD Height); VOID CloseFastWindow(VOID); BYTE OpenFastWindow(VOID); struct MacroNode * NewFastMacro(UBYTE *Macro,UBYTE *Code); VOID RemFastMacro(struct MacroNode *Node); struct MacroNode * GetFastMacro(LONG Offset); VOID ClearFastMacroList(struct List *List); LONG GetFastMacroOffset(struct MacroNode *MacroNode); VOID __regargs MoveList(struct List *From,struct List *To); BYTE SaveFastMacros(UBYTE *Name); BYTE LoadFastMacros(UBYTE *Name); /* FastMacroPanel.c */ VOID FastMacroPanel(VOID); /* FileBuffer.c */ LONG __stdargs BPrintf(struct Buffer *Buffer,UBYTE *Format,...); BYTE __regargs BufferClose(struct Buffer *Buffer); struct Buffer * __regargs BufferOpen(UBYTE *Name,UBYTE *AccessMode); LONG __regargs BufferRead(struct Buffer *Buffer,UBYTE *Destination,LONG Size); LONG __regargs BufferWrite(struct Buffer *Buffer,UBYTE *Source,LONG Size); BYTE __regargs BufferSeek(struct Buffer *Buffer,LONG Offset,LONG Origin); /* GadgetSupport.c */ VOID KeySelect(struct Gadget **GadgetList,WORD Last,UBYTE Key,struct Window *Window,struct Gadget **Gadget,ULONG *Class,ULONG *Code); /* Identify.c */ VOID Identify(UBYTE *Name); /* ImportPanel.c */ VOID ImportPanel(struct PhoneEntry *Entry,struct List *PhoneList); /* LocaleSupport.c */ VOID __regargs LocaleOpen(STRPTR CatalogName,STRPTR BuiltIn,LONG Version); VOID LocaleClose(VOID); VOID LanguageCheck(VOID); WORD __regargs GadToolsStrlen(STRPTR String); WORD __regargs GadToolsLongestString(WORD From,WORD To); STRPTR __regargs SmallCurrency(VOID); STRPTR __regargs CreateSum(LONG Quantity,BYTE UseCurrency); VOID __regargs LocalizeString(STRPTR *Strings,WORD From,WORD To); VOID __regargs LocalizeMenu(struct NewMenu *Menu,WORD From); STRPTR __regargs LocaleString(LONG ID); /* Packet.c */ VOID ClearPacketHistory(VOID); VOID __saveds __asm PacketKey(register __a0 struct Hook *Hook,register __a1 ULONG *Msg,register __a2 struct SGWork *Work); BYTE HandlePacket(VOID); VOID AddPacketHistory(UBYTE *Buffer); VOID DeletePacketWindow(VOID); BYTE CreatePacketWindow(VOID); /* ParseCode.c */ VOID DoCancel(VOID); VOID CSIFake(VOID); BYTE __regargs ParseCode(UBYTE c); /* ParseRoutines.c */ VOID ClearCursor(VOID); VOID DrawCursor(VOID); VOID SetCursor(VOID); VOID __regargs ClipBlitCursor(UBYTE DoClip,UBYTE DoMove); VOID BackupRender(VOID); VOID __regargs ShiftChar(LONG Size); VOID DownLine(VOID); VOID ResetCursor(VOID); UBYTE * Ignore(VOID); UBYTE * __regargs ScrollUp(UBYTE *Buffer); UBYTE * __regargs ScrollDown(UBYTE *Buffer); UBYTE * CursorScrollDown(VOID); UBYTE * CursorScrollUp(VOID); UBYTE * NextLine(VOID); UBYTE * SaveCursor(VOID); UBYTE * __regargs FontStuff(UBYTE *); UBYTE * LoadCursor(VOID); UBYTE * __regargs ScaleFont(UBYTE *); UBYTE * AlignmentTest(VOID); UBYTE * SetTab(VOID); UBYTE * __regargs RequestTerminal(UBYTE *Buffer); UBYTE * Reset(VOID); UBYTE * __regargs RequestInformation(UBYTE *Buffer); UBYTE * __regargs SetSomething(UBYTE *Buffer); UBYTE * __regargs PrinterController(UBYTE *Buffer); UBYTE * __regargs NumericAppMode(UBYTE *Buffer); UBYTE * __regargs MoveCursor(UBYTE *Buffer); UBYTE * __regargs EraseLine(UBYTE *Buffer); UBYTE * __regargs EraseScreen(UBYTE *Buffer); UBYTE * __regargs EraseCharacters(UBYTE *Buffer); UBYTE * __regargs InsertLine(UBYTE *Buffer); UBYTE * __regargs ClearLine(UBYTE *Buffer); UBYTE * __regargs SetTabs(UBYTE *Buffer); UBYTE * __regargs SetAbsolutePosition(UBYTE *Buffer); UBYTE * __regargs SetAttributes(UBYTE *Buffer); UBYTE * __regargs SetRegion(UBYTE *Buffer); VOID ResetCursor(VOID); /* PathPanel.c */ BYTE PathPanel(struct Configuration *Config); /* PasswordUserPanel.c */ VOID PasswordUserPanel(struct PhoneEntry *Entry); /* SaveILBM. */ LONG SaveRPort(struct RastPort *RPort,struct ViewPort *VPort,LONG LeftEdge,LONG TopEdge,LONG Width,LONG Height,LONG ParentWidth,LONG ParentHeight,LONG Cookie,STRPTR Name); /* Scale.c */ VOID DeleteScale(VOID); BYTE CreateScale(VOID); VOID __regargs PrintScaled(UBYTE *Buffer,LONG Size,UBYTE Scale); /* Serial.c */ VOID XOn(VOID); VOID __regargs SetFlags(struct IOExtSer *SomeRequest); VOID __regargs SerialCommand(UBYTE *String); VOID __regargs SerWrite(APTR Buffer,LONG Size); VOID ClearSerial(VOID); BYTE DropDTR(VOID); VOID DeleteSerial(VOID); UBYTE * CreateSerial(VOID); /* SpeechPanel.c */ VOID SpeechPanel(VOID); /* StringHook.c */ VOID __saveds ClipServer(VOID); VOID __saveds __asm CommandKey(register __a0 struct Hook *Hook,register __a1 ULONG *Msg,register __a2 struct SGWork *Work); /* termAux.c */ UBYTE * __regargs ExtractString(UBYTE *String,UBYTE *Destination,BYTE ReturnEnd); VOID __regargs DeleteInterleavedBitMap(struct BitMap *SomeBitMap); struct BitMap * __regargs CreateInterleavedBitMap(LONG Width,LONG Height,WORD Depth); struct Node * GetListNode(LONG Offset,struct List *List); struct ConUnit * GetConUnit(struct MsgPort *); VOID AddDownloadObject(UBYTE *Line); VOID ClearDownloadObjects(VOID); struct ScanNode * SequenceFilter(UBYTE Char); VOID AddSequenceObject(UBYTE *Sequence); VOID ClearSequenceObjects(VOID); VOID __stdargs LogAction(UBYTE *String,...); VOID FlushMsg(struct Window *Window); BYTE GetString(UBYTE *Prompt,UBYTE *Buffer); VOID __regargs WakeUp(struct Window *Window,BYTE Activate); VOID SendAmigaDOSCommand(UBYTE *Name); VOID __saveds RexxBackgroundServer(VOID); VOID SendARexxCommand(UBYTE *Name); LONG ahtoi(UBYTE *String); VOID __regargs BlockWindow(struct Window *Window); VOID __regargs ReleaseWindow(struct Window *Window); VOID BlockWindows(VOID); VOID ReleaseWindows(VOID); LONG LineRead(BPTR File,UBYTE *Buffer,LONG MaxChars); VOID FlowInit(VOID); VOID FlowFilter(UBYTE Char); BYTE LoadMacros(UBYTE *Name,struct MacroKeys *Keys); struct MenuItem * FindThisItem(ULONG MenuID); LONG GetFileSize(UBYTE *Name); struct FileRequester * GetFile(UBYTE *Title,UBYTE *Directory,UBYTE *Name,UBYTE *Buffer,UBYTE *Pattern,BYTE SaveFlag,BYTE MultiSelect,BYTE DirsOnly,UBYTE *OKText); WORD __stdargs MyEasyRequest(struct Window *Window,UBYTE *Text,UBYTE *Gadgets,...); VOID SelectTime(struct PhoneEntry *SomeEntry); VOID __saveds StatusServer(VOID); VOID CloseWindowSafely(struct Window *Window); VOID WaitTime(LONG Secs,LONG Micros); UBYTE * GetEnvDOS(UBYTE *Name,UBYTE *Buffer); BYTE SetEnvDOS(UBYTE *Name,UBYTE *Value); VOID BumpWindow(struct Window *SomeWindow); VOID BumpDefault(VOID); BYTE WriteIFFData(UBYTE *Name,APTR Data,LONG Size,ULONG Type); BYTE ReadIFFData(UBYTE *Name,APTR Data,LONG Size,ULONG Type); VOID PushWindow(struct Window *Window); VOID PopWindow(VOID); /* termBuffer.c */ VOID __saveds BufferServer(VOID); VOID AddLine(UBYTE *Line,LONG Size); VOID ClearBuffer(VOID); VOID StoreBuffer(APTR Buffer,LONG Size); /* termClip.c */ BYTE SaveClip(APTR Buffer,LONG Size); LONG LoadClip(APTR Buffer,LONG Size); /* termCrypt.c */ UBYTE * Encrypt(UBYTE *Source,WORD SourceLen,UBYTE *Destination,UBYTE *Key,WORD KeyLen,BYTE Prefill); UBYTE * Decrypt(UBYTE *Source,WORD SourceLen,UBYTE *Destination,UBYTE *Key,WORD KeyLen,BYTE Prefill); BYTE CryptPanel(UBYTE *Buffer); /* termInfo.c */ BYTE ShowInfo(BYTE Ticks); /* termInit.c */ struct Process * SegmentSplit(STRPTR Name,BYTE Pri,LONG StackSize,APTR Function); VOID ConfigSetup(VOID); BYTE DeleteDisplay(VOID); UBYTE * CreateDisplay(BYTE FirstSetup); VOID CloseAll(VOID); UBYTE * OpenAll(STRPTR ConfigPath); /* termHotkeys. */ VOID ShutdownCx(VOID); BYTE SetupCx(VOID); /* termMain.c */ LONG __saveds main(VOID); VOID __saveds HandleInput(VOID); BYTE HandleWindow(VOID); BYTE HandleSerial(VOID); VOID HandleCode(ULONG Code,ULONG Qualifier,struct MenuItem *MenuItem); VOID HandleMenu(ULONG Code,ULONG Qualifier); /* termPhone.c */ VOID RemoveDialEntry(LONG Entry); VOID RemoveDialNode(struct PhoneNode *Node); VOID SortToList(struct PhoneNode *PhoneNode); VOID FreeDialList(VOID); VOID SetPrefToDefaults(struct Configuration *Config,UBYTE *PathBuffer); struct List * CreatePhoneList(VOID); VOID DeletePhoneList(struct List *PhoneList); VOID SortPhoneEntries(VOID); VOID FreeTimeDateList(struct List *List); VOID CopyTimeDateList(struct List *From,struct List *To,BYTE SkipFirst); VOID AdaptTimeDateNode(struct TimeDateNode *Node); struct TimeDateNode * CreateTimeDateNode(BYTE Month,BYTE Day,UBYTE *Comment); VOID RemPhoneEntry(LONG Num); BYTE NewPhoneEntry(VOID); struct PhoneEntry ** CreatePhonebook(LONG Size,LONG *AllocSize,BYTE CreateEntries); VOID DeletePhonebook(struct PhoneEntry **,LONG Size,BYTE FreeEntries); BYTE SavePhonebook(UBYTE *Name); BYTE LoadPhonebook(UBYTE *Name); /* TerminalPanel.c */ VOID TerminalPanel(struct Configuration *Config); /* SerialPanel.c */ BYTE SerialPanel(struct Configuration *Config); /* ScreenPanel.c */ BYTE __regargs ModeOkay(ULONG ID); BYTE ScreenPanel(struct Configuration *Config); /* PhonePanel.c */ BYTE PhonePanel(VOID); /* ModemPanel.c */ BYTE ModemPanel(struct Configuration *Config); /* MacroPanel.c */ VOID MacroPanel(struct MacroKeys *MacroKeys); /* termRaster.c */ VOID RasterClip(BYTE SingleChar,BYTE Xerox); VOID DeleteRaster(VOID); BYTE CreateRaster(VOID); VOID __regargs RasterEraseScreen(BYTE Mode); VOID __regargs RasterEraseLine(BYTE Mode); VOID __regargs RasterEraseCharacters(WORD Chars); VOID __regargs RasterClearLine(WORD Lines,WORD Top); VOID __regargs RasterInsertLine(WORD Lines,WORD Top); VOID __regargs RasterScrollRegion(WORD Direction,WORD RasterTop,WORD RasterBottom,WORD RasterLines); VOID __regargs RasterShiftChar(WORD Size); VOID __regargs RasterPutString(UBYTE *String,WORD Length); /* termReview.c */ VOID DeleteReview(VOID); BYTE CreateReview(VOID); VOID UpdateReview(BYTE Force); BYTE HandleReview(VOID); /* termRexx.c */ BYTE SendRexxCommand(struct RexxHost *HostPort,STRPTR CommandString,STRPTR FileExtension,STRPTR HostName); VOID FreeRexxCommand(struct RexxMsg *RexxMessage); VOID ReplyRexxCommand(struct RexxMsg *RexxMessage,LONG Primary,LONG Secondary,STRPTR Result); STRPTR GetToken(STRPTR String,LONG *StartChar,STRPTR AuxBuff,LONG MaxLength); UBYTE * QueryBaud(VOID); UBYTE * QueryDataBits(VOID); UBYTE * QueryParity(VOID); UBYTE * QueryStopBits(VOID); UBYTE * QueryHandshaking(VOID); UBYTE * QueryDuplex(VOID); UBYTE * QueryHighspeed(VOID); UBYTE * QueryBreakLength(VOID); UBYTE * QuerySerialDevice(VOID); UBYTE * QueryUnitNumber(VOID); UBYTE * QueryModemInit(VOID); UBYTE * QueryModemExit(VOID); UBYTE * QueryDialPrefix(VOID); UBYTE * QueryRedialDelay(VOID); UBYTE * QueryDialRetries(VOID); UBYTE * QueryDialTimeout(VOID); UBYTE * QueryConnectAutoBaud(VOID); UBYTE * QueryNoCarrier(VOID); UBYTE * QueryConnect(VOID); UBYTE * QueryError(VOID); UBYTE * QueryVoice(VOID); UBYTE * QueryRing(VOID); UBYTE * QueryBusy(VOID); UBYTE * QueryOkay(VOID); UBYTE * QueryProtocol(VOID); UBYTE * QueryProtocolOptions(VOID); UBYTE * QueryMacroFile(VOID); UBYTE * QueryDisplay(VOID); UBYTE * QueryPublicScreen(VOID); UBYTE * QueryShanghai(VOID); UBYTE * QueryCaptureFilter(VOID); UBYTE * QueryDSBackSpace(VOID); UBYTE * QueryAudBell(VOID); UBYTE * QueryVisBell(VOID); UBYTE * QueryEightyColumns(VOID); UBYTE * QuerySendCR(VOID); UBYTE * QuerySendLF(VOID); UBYTE * QueryColourMode(VOID); UBYTE * QueryEmulation(VOID); UBYTE * QueryFont(VOID); UBYTE * QueryStatus(VOID); UBYTE * QuerySerial(VOID); UBYTE * QueryStartup(VOID); UBYTE * QueryRequesters(VOID); UBYTE * QueryTimeout(VOID); UBYTE * QueryLine(VOID); UBYTE * QueryLines(VOID); UBYTE * QueryColumns(VOID); UBYTE * QueryCursor(VOID); UBYTE * QueryModemHangup(VOID); UBYTE * QueryAutoCapture(VOID); UBYTE * QueryLogActions(VOID); UBYTE * QueryBlinking(VOID); UBYTE * QueryCursorMode(VOID); UBYTE * QueryFontScale(VOID); UBYTE * QueryJumpScroll(VOID); UBYTE * QueryCharacterWrap(VOID); UBYTE * QueryCursorWrap(VOID); UBYTE * QueryNewLine(VOID); UBYTE * QueryInsert(VOID); UBYTE * QueryNumeric(VOID); UBYTE * QueryDefaultStore(VOID); UBYTE * QueryTUploadPath(VOID); UBYTE * QueryTDownloadPath(VOID); UBYTE * QueryAUploadPath(VOID); UBYTE * QueryADownloadPath(VOID); UBYTE * QueryBUploadPath(VOID); UBYTE * QueryBDownloadPath(VOID); UBYTE * QueryCapturePath(VOID); UBYTE * QueryLogFile(VOID); UBYTE * QueryEditor(VOID); UBYTE * QueryBeepSound(VOID); UBYTE * QueryCaptureState(VOID); UBYTE * QueryDownloads(VOID); UBYTE * QueryScreenAddress(VOID); UBYTE * QuerySpeechFile(VOID); UBYTE * QuerySpeechRate(VOID); UBYTE * QuerySpeechPitch(VOID); UBYTE * QuerySpeechFrequency(VOID); UBYTE * QuerySpeechVolume(VOID); UBYTE * QuerySpeechSex(VOID); UBYTE * QuerySpeech(VOID); VOID RexxSetBaud(UBYTE *String); VOID RexxSetDataBits(UBYTE *String); VOID RexxSetParity(UBYTE *String); VOID RexxSetStopBits(UBYTE *String); VOID RexxSetHandshaking(UBYTE *String); VOID RexxSetDuplex(UBYTE *String); VOID RexxSetHighSpeed(UBYTE *String); VOID RexxSetBreakLength(UBYTE *String); VOID RexxSetSerialDevice(UBYTE *String); VOID RexxSetUnitNumber(UBYTE *String); VOID RexxSetModemInit(UBYTE *String); VOID RexxSetModemExit(UBYTE *String); VOID RexxSetDialPrefix(UBYTE *String); VOID RexxSetRedialDelay(UBYTE *String); VOID RexxSetDialRetries(UBYTE *String); VOID RexxSetDialTimeout(UBYTE *String); VOID RexxSetConnectAutoBaud(UBYTE *String); VOID RexxSetNoCarrier(UBYTE *String); VOID RexxSetConnect(UBYTE *String); VOID RexxSetError(UBYTE *String); VOID RexxSetVoice(UBYTE *String); VOID RexxSetRing(UBYTE *String); VOID RexxSetBusy(UBYTE *String); VOID RexxSetOkay(UBYTE *String); VOID RexxSetScreenMode(UBYTE *String); VOID RexxSetFilter(UBYTE *String); VOID RexxSetBackspace(UBYTE *String); VOID RexxSetCR(UBYTE *String); VOID RexxSetLF(UBYTE *String); VOID RexxSet80Columns(UBYTE *String); VOID RexxSetColourMode(UBYTE *String); VOID RexxSetEmulation(UBYTE *String); VOID RexxSetStartup(UBYTE *String); VOID RexxSetFont(UBYTE *String); VOID RexxSetProtocol(UBYTE *String); VOID RexxSetProtocolOptions(UBYTE *String); VOID RexxSetMacro(UBYTE *String); VOID RexxSetColour(UBYTE *String); VOID RexxSetScreen(UBYTE *String); VOID RexxSetBell(UBYTE *String); VOID RexxSetMacroFile(UBYTE *String); VOID RexxSetRequesters(UBYTE *String); VOID RexxSetTimeout(UBYTE *String); VOID RexxSetSerial(UBYTE *String); VOID RexxSetModemHangup(UBYTE *String); VOID RexxSetAutoCapture(UBYTE *String); VOID RexxSetLogActions(UBYTE *String); VOID RexxSetBlinking(UBYTE *String); VOID RexxSetCursorMode(UBYTE *String); VOID RexxSetFontScale(UBYTE *String); VOID RexxSetJumpScroll(UBYTE *String); VOID RexxSetCharacterWrap(UBYTE *String); VOID RexxSetCursorWrap(UBYTE *String); VOID RexxSetNewLine(UBYTE *String); VOID RexxSetInsert(UBYTE *String); VOID RexxSetNumeric(UBYTE *String); VOID RexxSetDefaultStore(UBYTE *String); VOID RexxSetTUploadPath(UBYTE *String); VOID RexxSetTDownloadPath(UBYTE *String); VOID RexxSetAUploadPath(UBYTE *String); VOID RexxSetADownloadPath(UBYTE *String); VOID RexxSetBUploadPath(UBYTE *String); VOID RexxSetBDownloadPath(UBYTE *String); VOID RexxSetCapturePath(UBYTE *String); VOID RexxSetLogFile(UBYTE *String); VOID RexxSetEditor(UBYTE *String); VOID RexxSetSpeechRate(UBYTE *String); VOID RexxSetSpeechPitch(UBYTE *String); VOID RexxSetSpeechFrequency(UBYTE *String); VOID RexxSetSpeechVolume(UBYTE *String); VOID RexxSetSpeechSex(UBYTE *String); VOID RexxSetSpeech(UBYTE *String); UBYTE * RexxBreak(VOID); UBYTE * RexxTUpload(UBYTE *String); UBYTE * RexxTDownload(UBYTE *String); UBYTE * RexxBDownload(UBYTE *String); UBYTE * RexxBUpload(UBYTE *String); UBYTE * RexxWrite(UBYTE *String,UBYTE *String2); UBYTE * RexxResetStyles(VOID); UBYTE * RexxClearScreen(VOID); UBYTE * RexxSaveILBM(UBYTE *String); UBYTE * RexxHangUp(VOID); UBYTE * RexxGetString(UBYTE *String); UBYTE * RexxCommand(UBYTE *String,UBYTE *String2); UBYTE * RexxMessage(UBYTE *String,UBYTE *String2); UBYTE * RexxPutClip(UBYTE *String,UBYTE *String2); UBYTE * RexxGetClip(VOID); UBYTE * RexxDelay(UBYTE *String); UBYTE * RexxDial(UBYTE *String); UBYTE * RexxInput(UBYTE *String); UBYTE * RexxPrinter(UBYTE *String); UBYTE * RexxMacros(UBYTE *String); UBYTE * RexxSpeech(UBYTE *String); UBYTE * RexxConfig(UBYTE *String); UBYTE * RexxPhone(UBYTE *String); UBYTE * RexxCapture(UBYTE *String); UBYTE * RexxBuffer(UBYTE *String); UBYTE * RexxFirstDownload(VOID); UBYTE * RexxNextDownload(VOID); UBYTE * RexxLastDownload(VOID); UBYTE * RexxWaitString(UBYTE *String); UBYTE * RexxToneDial(UBYTE *String); UBYTE * RexxSimpleRequest(UBYTE *String); UBYTE * RexxTwoGadRequest(UBYTE *String); UBYTE * RexxFileRequest(UBYTE *String); UBYTE * RexxSpeak(UBYTE *String); VOID QuietExit(VOID); VOID Rexx2Front(VOID); VOID Term2Front(VOID); VOID Display2Front(VOID); VOID CloseDisplay(VOID); BYTE RexxASyncCommand(struct RexxMsg *RexxMsg,UBYTE *Arg1,UBYTE *Arg2); VOID RexxSyncCommand(struct RexxMsg *RexxMsg,UBYTE *Arg1,UBYTE *Arg2); VOID __saveds RexxServer(VOID); VOID HandleRexx(VOID); /* termScroll.c */ VOID __regargs ScrollLineRectFill(struct RastPort *RPort,WORD MinX,WORD MinY,WORD MaxX,WORD MaxY); VOID __regargs ScrollLineRaster(struct RastPort *RPort,WORD DeltaX,WORD DeltaY,WORD MinX,WORD MinY,WORD MaxX,WORD MaxY); VOID __regargs ScrollLineEraseScreen(BYTE Mode); VOID __regargs ScrollLineEraseLine(BYTE Mode); VOID __regargs ScrollLineEraseCharacters(WORD Chars); VOID __regargs ScrollLineShiftChar(WORD Size); VOID __regargs ScrollLinePutString(WORD Length); /* termSpeech. */ VOID DeleteSpeech(VOID); BYTE CreateSpeech(VOID); VOID Say(UBYTE *String,...); VOID SpeechSetup(VOID); /* termTransfer.c */ VOID SendTextFile(UBYTE *TheFile); VOID StartXprReceive(BYTE Type); BYTE StartXprSend(BYTE Type); BYTE ASCIISetup(VOID); VOID ASCIIShutdown(VOID); /* termXEM.c */ VOID CloseEmulator(VOID); BYTE OpenEmulator(UBYTE *Name); VOID SetupXEM_MacroKeys(struct MacroKeys *Keys); /* termXPR.c */ LONG __saveds __asm xpr_fopen(register __a0 UBYTE *FileName,register __a1 UBYTE *AccessMode); LONG __saveds __asm xpr_fclose(register __a0 struct Buffer *File); LONG __saveds __asm xpr_fread(register __a0 APTR Buffer,register __d0 LONG Size,register __d1 LONG Count,register __a1 struct Buffer *File); LONG __saveds __asm xpr_fwrite(register __a0 APTR Buffer,register __d0 LONG Size,register __d1 LONG Count,register __a1 struct Buffer *File); ULONG __saveds __asm xpr_sread(register __a0 UBYTE *Buffer,register __d0 ULONG Size,register __d1 LONG Timeout); LONG __saveds __asm xpr_swrite(register __a0 UBYTE *Buffer,register __d0 LONG Size); LONG __saveds xpr_sflush(VOID); LONG __saveds __asm xpr_update(register __a0 struct XPR_UPDATE *UpdateInfo); LONG __saveds xpr_chkabort(VOID); LONG __saveds __asm xpr_gets(register __a0 UBYTE *Prompt,register __a1 UBYTE *Buffer); LONG __saveds __asm xpr_setserial(register __d0 LONG Status); LONG __saveds __asm xpr_ffirst(register __a0 UBYTE *Buffer,register __a1 UBYTE *Pattern); LONG __saveds __asm xpr_fnext(register __d0 LONG OldState,register __a0 UBYTE *Buffer,register __a1 UBYTE *Pattern); LONG __saveds __asm xpr_finfo(register __a0 UBYTE *FileName,register __d0 LONG InfoType); LONG __saveds __asm xpr_fseek(register __a0 struct Buffer *File,register __d0 LONG Offset,register __d1 LONG Origin); ULONG __saveds __asm xpr_options(register __d0 LONG NumOpts,register __a0 struct xpr_option **Opts); LONG __saveds __asm xpr_unlink(register __a0 UBYTE *FileName); LONG __saveds xpr_squery(VOID); LONG __saveds __asm xpr_getptr(register __d0 LONG InfoType); LONG __saveds __asm xpr_stealopts(register __a0 UBYTE *Prompt,register __a1 UBYTE *Buffer); struct Gadget * CreateAllGetsGadgets(BYTE LoadGadget,UBYTE *String,UBYTE *Prompt,LONG *WindowWidth,struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge,struct Screen *Screen); BYTE ProtocolSetup(VOID); VOID SaveProtocolOpts(VOID); BYTE SelectProtocol(UBYTE *Name,struct Window *ParentWindow); /* ToneDial.c */ VOID DeleteTone(VOID); BYTE ToneDial(UBYTE *Number); /* TransferPanel.c */ VOID __stdargs TransferInfo(WORD X,WORD Y,BYTE *String,...); VOID __stdargs ShowString(struct Gadget *Gadget,UBYTE *String,...); VOID GhostStats(struct Gadget *Gadget); VOID ShowStats(struct Gadget *Gadget,LONG Value,LONG Max); VOID __stdargs AddTransferInfo(UBYTE *Message,...); VOID RefreshTransferWindow(VOID); BYTE TransferPanel(UBYTE *Title); VOID DeleteTransferPanel(VOID); /* RatePanel.c */ VOID RatePanel(struct List *PhoneList,struct PhoneEntry *Entry); /* UploadPanel.c */ BYTE UploadPanel(VOID); /* Format.asm */ VOID __stdargs SPrintf(APTR,UBYTE *,...); VOID __stdargs VSPrintf(APTR,UBYTE *,va_list); /* termData.c */ extern struct ExecBase *SysBase; extern struct DosLibrary *DOSBase; extern struct IntuitionBase *IntuitionBase; extern struct GfxBase *GfxBase; extern struct Library *GadToolsBase; extern struct Library *DiskfontBase; extern struct Library *UtilityBase; extern struct Device *TimerBase; extern struct Library *AslBase; extern struct RxsLib *RexxSysBase; extern struct Library *IFFParseBase; extern struct Library *CxBase; extern struct Library *LayersBase; extern struct Library *IconBase; extern struct Library *WorkbenchBase; extern struct Library *XEmulatorBase; extern struct timerequest *TimeRequest; extern struct MsgPort *TimePort; extern struct IOStdReq *ConsoleRequest; extern struct Device *ConsoleDevice; extern struct KeyMap *KeyMap; extern BPTR KeySegment; extern struct Screen *Screen; extern struct Window *Window; extern struct Window *StatusWindow; extern UWORD StatusOffset; extern APTR OldWindowPtr; extern struct BitMap *InterleavedBitMap; extern struct Requester *RequesterList; extern struct ViewPort *VPort; extern struct RastPort *RPort; extern struct TextFont *Topaz,*IBM,*GFX,*CurrentFont; extern APTR VisualInfo; extern UWORD ANSIPens[NUMDRIPENS + 1]; extern UWORD EGAPens[NUMDRIPENS + 1]; extern UWORD AtomicColours[16]; extern UWORD EGAColours[16]; extern UWORD ANSIColours[16]; extern UWORD DefaultColours[16]; extern UWORD BlinkColours[16]; extern UWORD StandardColours[16]; extern struct Process *ThisProcess; extern struct Process *RexxProcess; extern struct MsgPort *TermRexxPort; extern struct Process *StatusProcess; extern struct Process *BufferProcess; extern struct WBStartup *WBenchMsg; extern struct InputEvent *FakeInputEvent; extern struct IOExtSer *ReadRequest; extern struct IOExtSer *WriteRequest; extern struct MsgPort *ReadPort; extern APTR ReadBuffer, HostReadBuffer; extern UBYTE *SerialMessage; extern struct Hotkeys Hotkeys; extern struct NewBroker NewTermBroker; extern struct TextAttr DefaultFont; extern struct TextAttr IBMFont; extern struct TextAttr GFXFont; extern UBYTE AnyChannel[4]; extern UBYTE __chip SineWave[8]; extern struct IOAudio *AudioBlock; extern UWORD __chip Stopwatch[(2 + 16) * 2]; extern BYTE ValidTab[256]; extern UBYTE IBMConversion[256]; extern BYTE GfxTable[256]; extern struct SpecialKey SpecialKeys[11]; extern UBYTE SpecialMap[256]; extern UBYTE SharedBuffer[512]; extern struct NewMenu TermMenu[]; extern struct Menu *Menu; extern struct TermPort *TermPort; extern struct Configuration Config; extern struct Configuration PrivateConfig; extern struct SpeechConfig SpeechConfig; extern BYTE English; extern BYTE Status; extern BYTE Online; extern struct Configuration *BackupConfig; extern UWORD PublicModes; extern UBYTE LastConfig[256]; extern UBYTE DefaultPubScreen[MAXPUBSCREENNAME]; extern ULONG ModeID[16]; extern struct Buffer *FileCapture; extern BPTR PrinterCapture; extern UBYTE CaptureName[256]; extern BYTE StandardPrinterCapture, ControllerActive; extern UBYTE **BufferLines; extern LONG Lines; extern struct SignalSemaphore *BufferSemaphore; extern LONG MaxLines; extern LONG BufferSpace; extern BYTE BufferClosed; extern BYTE BufferFrozen; extern struct PhoneEntry **Phonebook; extern LONG PhoneSize; extern LONG NumPhoneEntries; extern UBYTE PhonePassword[256]; extern BYTE PhonePasswordUsed; extern UBYTE LastPhone[256]; extern UBYTE LastKeys[256]; extern UBYTE LastMacros[256]; extern UBYTE LastSpeech[256]; extern struct MacroKeys *MacroKeys; 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[1024]; extern BYTE CharMode[2]; extern BYTE ResetDisplay,Escape; extern UBYTE *AttentionBuffers[8],AttentionCount[8],FlowCount; extern BYTE BaudPending,FullCheck; extern UBYTE BaudBuffer[20],BaudCount; extern struct FlowInfo FlowInfo; extern LONG FileCount,FileCountMax; extern struct WBArg *FileArg; extern BYTE MultipleFiles,FileMatch,BinaryTransfer; extern struct AnchorPath *FileAnchor; extern LONG TransferBits; extern struct Window *TransferWindow; extern struct Menu *TransferMenu; extern struct Gadget *TransferGadgetArray[8]; extern struct List TransferInfoList; extern UBYTE *DownloadPath; extern BYTE Uploading; extern BYTE DidTransfer; extern struct Library *XProtocolBase; extern struct XPR_IO *XprIO; extern UBYTE ProtocolOptsBuffer[256]; extern BYTE NewLibrary,NewOptions; extern UBYTE LastXprLibrary[256]; extern UBYTE ConvNumber[30],ConvNumber10[30]; extern BYTE UsesZModem,SendAbort,TransferAborted; extern UBYTE ZModemCancel[20]; extern LONG CurrentPay; extern LONG PayPerUnit[2]; extern LONG SecPerUnit[2]; extern LONG TimeOfDay[2]; extern WORD PreferredTime; extern UBYTE Password[20]; extern UBYTE UserName[20]; extern struct PhoneEntry *ChosenEntry; extern BYTE ChosenInUse; extern UBYTE WindowName[256]; extern BYTE WeAreBlocking; extern struct List *DialList; extern BYTE SendStartup; extern BYTE ReleaseSerial; extern BYTE ResetSerial; extern BYTE BatchMode; extern BYTE SerialSet; extern UBYTE LastDownload[256]; extern UBYTE LastUpload[256]; extern struct Hook CommandHook; extern BYTE DontActivate; extern UBYTE CommandWorkBuffer[256]; extern struct StringExtend CommandExtend; extern struct Window *CommandWindow; extern struct Gadget *CommandGadget; extern struct Gadget *ActiveGadget; extern struct Process *ClipProcess; extern struct MsgPort *ClipPort; 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 WORD RasterWidth,RasterHeight; extern struct SignalSemaphore *DownloadSemaphore; extern struct List DownloadList; extern LONG DownloadLineCount; extern struct Node *DownloadNode; extern struct List SequenceList; extern LONG SequenceCount; extern ULONG VersionProps[2]; extern BYTE ExitQuietly; extern struct Window *RexxWindow; extern struct Window *TopWindow; extern struct Window *WindowStack[5]; extern WORD WindowStackPtr; extern LONG TermID; extern UBYTE TermIDString[]; extern struct List FastMacroList; extern LONG FastMacroCount; extern UBYTE LastFastMacros[256]; extern struct Window *FastWindow; extern struct Gadget *FastGadget; 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 EmulationName[40]; extern struct List EmptyList; extern UBYTE ScrollLineFirst,ScrollLineLast, ScrollLineCount; extern struct ScrollLineInfo *ScrollLines; extern struct MsgPort *ReviewPort; extern struct Window *ReviewWindow;