home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d8xx / d832 / term.lha / Term / term-3.1-Source.lha / termGlobal.h < prev    next >
C/C++ Source or Header  |  1993-02-11  |  39KB  |  1,476 lines

  1. /*
  2. **    termGlobal.h
  3. **
  4. **    Global data and symbol definitions
  5. **
  6. **    Copyright © 1990-1993 by Olaf `Olsen' Barthel & MXM
  7. **        All Rights Reserved
  8. */
  9.  
  10. #ifdef DEBUG
  11. #include "termDebug.h"
  12. #endif    /* DEBUG */
  13.  
  14.     /* Jump table entry. */
  15.  
  16. typedef BYTE (* __regargs JUMP)(UBYTE Char);
  17.  
  18.     /* Pointer to function returning nothing. */
  19.  
  20. typedef VOID (* VPTR)();
  21.  
  22.     /* Menu item codes. */
  23.  
  24. enum    {    MEN_SAVE_AS_PICTURE=1,MEN_SAVE_AS_TEXT,MEN_PRINT_SCREEN,MEN_PRINT_CLIP,MEN_CAPTURE_TO_FILE,
  25.         MEN_CAPTURE_TO_PRINTER,MEN_ICONIFY,MEN_ABOUT,MEN_QUIT,
  26.  
  27.         MEN_COPY,MEN_PASTE,MEN_CLEAR,
  28.  
  29.         MEN_EXECUTE_DOS_COMMAND,MEN_EXECUTE_REXX_COMMAND,
  30.  
  31.         MEN_PHONEBOOK,MEN_REDIAL,MEN_DIAL_NUMBER,MEN_SEND_BREAK,
  32.         MEN_HANG_UP,MEN_WAIT,MEN_FLUSH_BUFFER,MEN_RELEASE_DEVICE,
  33.  
  34.         MEN_UPLOAD_ASCII,MEN_DOWNLOAD_ASCII,MEN_UPLOAD_TEXT,MEN_DOWNLOAD_TEXT,MEN_EDIT_AND_UPLOAD_TEXT,
  35.         MEN_UPLOAD_BINARY,MEN_DOWNLOAD_BINARY,
  36.  
  37.         MEN_CLEAR_BUFFER,MEN_DISPLAY_BUFFER,MEN_CLOSE_BUFFER,MEN_FREEZE_BUFFER,MEN_OPEN_BUFFER,
  38.         MEN_SAVE_BUFFER_AS,
  39.  
  40.         MEN_CLEAR_SCREEN,MEN_RESET_FONT,MEN_RESET_STYLES,MEN_RESET_TERMINAL,
  41.  
  42.         MEN_SERIAL,MEN_MODEM,MEN_SCREEN,MEN_TERMINAL,MEN_SET_EMULATION,MEN_CLIPBOARD,MEN_CAPTURE,MEN_COMMANDS,
  43.         MEN_MISC,MEN_PATH,MEN_TRANSFER_PROTOCOL,MEN_TRANSFER,MEN_TRANSLATION,MEN_MACROS,
  44.         MEN_CURSORKEYS,MEN_FAST_MACROS,MEN_HOTKEYS,MEN_SPEECH,MEN_SET_CONSOLE,MEN_OPEN_SETTINGS,MEN_SAVE_SETTINGS,
  45.         MEN_SAVE_SETTINGS_AS,
  46.  
  47.         MEN_STATUS_WINDOW,MEN_REVIEW_WINDOW,MEN_PACKET_WINDOW,MEN_FAST_MACROS_WINDOW };
  48.  
  49.     /* Undefine the following symbols, the preferences header file
  50.      * will use the same names and the same values.
  51.      */
  52.  
  53. #undef PARITY_NONE
  54. #undef PARITY_EVEN
  55. #undef PARITY_ODD
  56. #undef PARITY_MARK
  57. #undef PARITY_SPACE
  58.  
  59.     /* Serial settings. */
  60.  
  61. enum    {    PARITY_NONE,PARITY_EVEN,PARITY_ODD,PARITY_MARK,PARITY_SPACE };
  62.  
  63. enum    {    HANDSHAKING_NONE,HANDSHAKING_RTSCTS,HANDSHAKING_RTSCTS_DSR };
  64. enum    {    DUPLEX_FULL,DUPLEX_HALF };
  65. enum    {    FLOW_NONE,FLOW_XON_XOFF };
  66.  
  67.     /* Terminal settings. */
  68.  
  69. enum    {    CR_IGNORE,CR_ASCR,CR_ASCRLF };
  70. enum    {    LF_IGNORE,LF_ASLF,LF_ASLFCR };
  71. enum    {    EMULATION_ANSIVT100,EMULATION_ATOMIC,EMULATION_TTY,EMULATION_EXTERNAL };
  72. enum    {    COLOUR_AMIGA,COLOUR_EIGHT,COLOUR_SIXTEEN,COLOUR_MONO };
  73.  
  74.     /* Protocol types. */
  75.  
  76. enum    {    PROTOCOL_XMODEM,PROTOCOL_XMODEMCRC,PROTOCOL_YMODEM,PROTOCOL_ZMODEM };
  77.  
  78.     /* Font types. */
  79.  
  80. enum    {    FONT_STANDARD,FONT_IBM,FONT_IBM_RAW };
  81.  
  82.     /* Bell modes. */
  83.  
  84. enum    {    BELL_NONE, BELL_VISIBLE, BELL_AUDIBLE, BELL_BOTH, BELL_SYSTEM };
  85.  
  86.     /* Data flow scanner indices. */
  87.  
  88. enum    {    SCAN_NOCARRIER, SCAN_ZMODEM, SCAN_CONNECT, SCAN_VOICE, SCAN_RING, SCAN_BUSY, SCAN_NODIALTONE, SCAN_COUNT };
  89.  
  90.     /* Status types. */
  91.  
  92. enum    {    STATUS_READY,STATUS_HOLDING,STATUS_DIALING,STATUS_UPLOAD,
  93.         STATUS_DOWNLOAD,STATUS_BREAKING,STATUS_HANGUP };
  94.  
  95.     /* Settings types. */
  96.  
  97. enum    {    PREF_ALL,PREF_SERIAL,PREF_MODEM,PREF_COMMAND,PREF_SCREEN,
  98.         PREF_TERMINAL,PREF_PATH,PREF_MISC,PREF_CLIP,PREF_CAPTURE,
  99.         PREF_FILE,PREF_EMULATION };
  100.  
  101.     /* Status line modes. */
  102.  
  103. enum    {    STATUSLINE_DISABLED,STATUSLINE_STANDARD,STATUSLINE_COMPRESSED };
  104.  
  105.     /* Capture filter modes. */
  106.  
  107. enum    {    FILTER_NONE,FILTER_ESCAPE,FILTER_CONTROL,FILTER_BOTH };
  108.  
  109.     /* Scrolling modes. */
  110.  
  111. enum    {    SCROLL_JUMP,SCROLL_SMOOTH };
  112.  
  113.     /* Cursor and numeric keypad modes. */
  114.  
  115. enum    {    KEYMODE_STANDARD,KEYMODE_APPLICATION };
  116.  
  117.     /* Font scales. */
  118.  
  119. enum    {    SCALE_NORMAL,SCALE_HALF };
  120. enum    {    SCALE_ATTR_NORMAL,SCALE_ATTR_TOP2X,SCALE_ATTR_BOT2X,SCALE_ATTR_2X };
  121.  
  122.     /* Character tables. */
  123.  
  124. enum    {    TABLE_ASCII,TABLE_GFX };
  125.  
  126.     /* Transfer types. */
  127.  
  128. enum    {    TRANSFER_BINARY,TRANSFER_TEXT,TRANSFER_ASCII };
  129.  
  130.     /* Translation table entry types. */
  131.  
  132. enum    {    TRANSLATE_SINGLE,TRANSLATE_STRING };
  133.  
  134.     /* Upload panel actions. */
  135.  
  136. enum    {    UPLOAD_TEXT=1,UPLOAD_BINARY,UPLOAD_IGNORE,UPLOAD_ABORT };
  137.  
  138.     /* Alert types. */
  139.  
  140. enum    {    ALERT_NONE,ALERT_BEEP,ALERT_SCREEN,ALERT_BEEP_SCREEN };
  141.  
  142.     /* Clipboard read errors. */
  143.  
  144. enum    {    CLIPERR_NONE,CLIPERR_NOTEXT,CLIPERR_IFF,CLIPERR_OPEN,CLIPERR_MEM };
  145.  
  146.     /* What to print. */
  147.  
  148. enum    {    PRINT_SCREEN,PRINT_CLIP };
  149.  
  150.     /* Dial command types. */
  151.  
  152. enum    {    DIAL_IGNORE,DIAL_LIST,DIAL_REDIAL };
  153.  
  154.     /* Errors returned by ReconfigureSerial(). */
  155.  
  156. enum    {    RECONFIGURE_FAILURE,RECONFIGURE_NOCHANGE,RECONFIGURE_SUCCESS };
  157.  
  158.     /* Operation codes for SetItem(). */
  159.  
  160. enum    {    SETITEM_SETCHECK,SETITEM_CLRCHECK,SETITEM_ON,SETITEM_OFF };
  161.  
  162.     /* File identification actions. */
  163.  
  164. enum    {    IDENTIFY_IGNORE,IDENTIFY_FILETYPE,IDENTIFY_SOURCE };
  165.  
  166.     /* Generic list types. */
  167.  
  168. enum    {    GLIST_UPLOAD,GLIST_DOWNLOAD,GLIST_DIAL,GLIST_WAIT,GLIST_COUNT };
  169.  
  170.     /* Generic list add operations. */
  171.  
  172. enum    {    ADD_GLIST_BOTTOM,ADD_GLIST_TOP,ADD_GLIST_BEHIND,ADD_GLIST_BEFORE };
  173.  
  174.     /* Transfer window boxes and gadgets. */
  175.  
  176. enum    {    BOX_TRANSFER_1,BOX_TRANSFER_2,
  177.         BOX_TRANSFER_LEFT1,BOX_TRANSFER_RIGHT1,
  178.         BOX_TRANSFER_LEFT2,BOX_TRANSFER_RIGHT2 };
  179.  
  180. enum    {    GAD_TRANSFER_INFORMATION_LIST,
  181.         GAD_TRANSFER_PERCENT,GAD_TRANSFER_TIME,
  182.         GAD_TRANSFER_ABORT,GAD_TRANSFER_SKIP };
  183.  
  184.     /* XPR options setting. */
  185.  
  186. enum    {    GAD_XPROPTIONS_USE=42,GAD_XPROPTIONS_CANCEL };
  187.  
  188.     /* AmigaGuide help context. */
  189.  
  190. enum    {    CONTEXT_MAIN,CONTEXT_SERIAL,CONTEXT_MODEM,CONTEXT_SCREEN,
  191.         CONTEXT_TERMINAL,CONTEXT_CLIP,CONTEXT_CAPTURE,CONTEXT_COMMAND,
  192.         CONTEXT_MISC,CONTEXT_PATHS,CONTEXT_TRANSLATION,CONTEXT_MACROS,
  193.         CONTEXT_CURSOR,CONTEXT_FASTMACROS,CONTEXT_HOTKEYS,CONTEXT_SPEECH,
  194.         CONTEXT_EMULATION,CONTEXT_TRANSFER,CONTEXT_PHONEBOOK,CONTEXT_DATE,
  195.         CONTEXT_DAY,CONTEXT_IMPORT,CONTEXT_RATES,CONTEXT_TIME,
  196.         CONTEXT_COPY,CONTEXT_PASSWORDUSER,CONTEXT_DIAL,CONTEXT_PRINT,
  197.         CONTEXT_TEXTBUFFER,CONTEXT_PACKETWINDOW };
  198.  
  199.     /* Review window positioning codes. */
  200.  
  201. enum    {    REVIEW_MOVE_TOP,REVIEW_MOVE_BOTTOM,REVIEW_MOVE_UP,REVIEW_MOVE_DOWN };
  202.  
  203.     /* Some raw key codes. */
  204.  
  205. #define HELP_CODE        95
  206. #define RAMIGA_CODE        103
  207.  
  208. #define CURSOR_UP_CODE        76
  209. #define CURSOR_DOWN_CODE    77
  210. #define CURSOR_RIGHT_CODE    78
  211. #define CURSOR_LEFT_CODE    79
  212.  
  213. #define F01_CODE        80
  214. #define F02_CODE        81
  215. #define F03_CODE        82
  216. #define F04_CODE        83
  217. #define F05_CODE        84
  218. #define F06_CODE        85
  219. #define F07_CODE        86
  220. #define F08_CODE        87
  221. #define F09_CODE        88
  222. #define F10_CODE        89
  223.  
  224.     /* Printer control bits. */
  225.  
  226. #define PRINT_SERIAL    (1 << 0)
  227. #define PRINT_MODEM    (1 << 1)
  228. #define PRINT_SCREEN    (1 << 2)
  229. #define PRINT_TERMINAL    (1 << 3)
  230. #define PRINT_USERNAME    (1 << 4)
  231. #define PRINT_COMMENT    (1 << 5)
  232. #define PRINT_SIZE    (1 << 6)
  233. #define PRINT_DATE    (1 << 7)
  234. #define PRINT_BITS    (1 << 8)
  235.  
  236.     /* Day of week flags. */
  237.  
  238. #define DAY_MONDAY    (1 << 0)
  239. #define DAY_TUESDAY    (1 << 1)
  240. #define DAY_WEDNESDAY    (1 << 2)
  241. #define DAY_THURSDAY    (1 << 3)
  242. #define DAY_FRIDAY    (1 << 4)
  243. #define DAY_SATURDAY    (1 << 5)
  244. #define DAY_SUNDAY    (1 << 6)
  245.  
  246.     /* These signal masks will make life a bit easier. */
  247.  
  248. #define SIG_WINDOW    (1 << Window -> UserPort -> mp_SigBit)
  249. #define SIG_SERIAL    (1 << ReadPort -> mp_SigBit)
  250. #define SIG_PACKET    (1 << PacketWindow -> UserPort -> mp_SigBit)
  251. #define SIG_TIMER    (1 << TimePort -> mp_SigBit)
  252. #define SIG_AUDIO    (1 << AudioBlock -> ioa_Request . io_Message . mn_ReplyPort -> mp_SigBit)
  253. #define SIG_REVIEW    ((1 << ReviewPort -> mp_SigBit) | (1 << ReviewWindow -> UserPort -> mp_SigBit))
  254. #define SIG_CLIP    (1 << ClipBit)
  255. #define SIG_CHECK    (1 << CheckBit)
  256. #define SIG_WORKBENCH    (1 << WorkbenchPort -> mp_SigBit)
  257.  
  258. #ifdef USE_AREXX
  259. #define SIG_REXX    (1 << TermRexxPort -> mp_SigBit)
  260. #else
  261. #define SIG_REXX    NULL
  262. #endif    /* USE_AREXX */
  263.  
  264.     /* Task termination and handshake signal. Note: don't try this at
  265.      * home kids, we are all trained professionals here!
  266.      */
  267.  
  268. #define SIG_KILL    SIGBREAKF_CTRL_C
  269. #define SIG_HANDSHAKE    SIGF_SINGLE
  270.  
  271.     /* Double-buffered file server command. */
  272.  
  273. #define    SIG_COMMAND    SIGBREAKF_CTRL_D
  274.  
  275.     /* ARexx break signal. */
  276.  
  277. #define SIG_BREAK    SIGBREAKF_CTRL_D
  278.  
  279.     /* Hotkey reset command. */
  280.  
  281. #define SIG_RESET    SIGBREAKF_CTRL_D
  282.  
  283.     /* Skip dial entry. */
  284.  
  285. #define SIG_SKIP    SIGBREAKF_CTRL_D
  286.  
  287.     /* Status bell command. */
  288.  
  289. #define SIG_BELL    SIGBREAKF_CTRL_D
  290.  
  291.     /* Buffer special signals. */
  292.  
  293. #define SIG_TOFRONT    SIGBREAKF_CTRL_D
  294. #define SIG_UPDATE    SIGBREAKF_CTRL_E
  295. #define SIG_MOVEUP    SIGBREAKF_CTRL_F
  296.  
  297.     /* A port signal mask. */
  298.  
  299. #define PORTMASK(P)    (1 << (((struct MsgPort *)(P)) -> mp_SigBit))
  300.  
  301.     /* Replacements for CheckItem() and OnMenu()/OffMenu(). */
  302.  
  303. #define CheckItem(ID,Mode)    SetItem(ID,Mode ? SETITEM_SETCHECK : SETITEM_CLRCHECK)
  304. #define OnItem(ID)        SetItem(ID,SETITEM_ON)
  305. #define OffItem(ID)        SetItem(ID,SETITEM_OFF)
  306.  
  307.     /* Definitions to access the line signal setting functions supported by
  308.      * some IO serial boards (namely the ASDG board).
  309.      */
  310.  
  311. #define SIOCMD_SETCTRLLINES    (CMD_NONSTD + 7)
  312. #define SIOB_RTSB        0
  313. #define SIOB_DTRB        1
  314. #define SIOB_RTSF        (1 << SIOB_RTSB)
  315. #define SIOB_DTRF        (1 << SIOB_DTRB)
  316.  
  317.     /* Turn time of day into `compressed' format. */
  318.  
  319. #define DT_GET_TIME(Hour,Minute) ((Minute) / 10 + (Hour) * 6)
  320.  
  321.     /* Vector offsets for the TimeDate structure. */
  322.  
  323. enum    { DT_FIRST_UNIT,DT_NEXT_UNIT };
  324.  
  325.     /* Multiply lines and columns with the current font size. */
  326.  
  327. #define MUL_X(x)        OffsetXTable[x]
  328. #define MUL_Y(y)        OffsetYTable[y]
  329.  
  330.     /* A handy and short alias. */
  331.  
  332. #define TICK            (CHECKIT | MENUTOGGLE)
  333.  
  334.     /* For now the maximum length of a path/file name. */
  335.  
  336. #define MAX_FILENAME_LENGTH    256
  337.  
  338.     /* The maximum width of a line to be stored in the text buffer. */
  339.  
  340. #define BUFFER_LINE_WIDTH    80
  341.  
  342.     /* User interface definitions. */
  343.  
  344. #define SZLV_Display    1        /* Listview includes display */
  345. #define SZLV_String    2        /* Listview includes string */
  346.  
  347. #define FOLDER_KIND    42        /* Folder selection button. */
  348. #define FILE_KIND    43        /* File selection button. */
  349. #define PASSWORD_KIND    44        /* Password entry string gadget. */
  350.  
  351. #define SZ_Adjust    TAG_USER+1    /* Adjust object */
  352. #define SZ_AutoWidth    TAG_USER+2    /* Use default width? */
  353. #define SZ_AlignExtra    TAG_USER+3    /* Add extra space to top edge */
  354. #define SZ_NewColumn    TAG_USER+4    /* Start new column */
  355. #define SZ_Lines    TAG_USER+5    /* Number of lines in object */
  356. #define SZ_Chars    TAG_USER+6    /* Number of chars (width) in object */
  357. #define SZ_AlignLeft    TAG_USER+7    /* Align to left border */
  358. #define SZ_AlignRight    TAG_USER+8    /* Align to right border */
  359. #define SZ_AlignCentre    TAG_USER+9    /* Centre it */
  360. #define SZ_AlignBottom    TAG_USER+10    /* Align to window bottom */
  361. #define SZ_GroupCount    TAG_USER+11    /* Create a group with N objects */
  362. #define SZ_GroupNext    TAG_USER+12    /* Skip to next position */
  363. #define SZ_SaveX    TAG_USER+13    /* Don't touch the left edge position. */
  364. #define SZ_SaveY    TAG_USER+14    /* Don't touch the top edge position. */
  365. #define SZ_UseLeft    TAG_USER+15    /* Use this coordinate as left edge. */
  366. #define SZ_UseTop    TAG_USER+16    /* Use this coordinate as top edge. */
  367. #define SZ_UseWidth    TAG_USER+17    /* Use this gadget width. */
  368. #define SZ_UseHeight    TAG_USER+18    /* Use this gadget height. */
  369. #define SZ_FullWidth    TAG_USER+19    /* Use full window width for gadget. */
  370. #define SZ_FullHeight    TAG_USER+20    /* Use full window height for gadget. */
  371. #define SZ_SmallSpace    TAG_USER+21    /* Provide small alignment space. */
  372. #define SZ_LeaveFolder    TAG_USER+22    /* Leave space for folder icon. */
  373. #define SZ_PlaceLeft    TAG_USER+23    /* Place left to current object, don't modify next object position. */
  374. #define SZ_PlaceBelow    TAG_USER+24    /* Place below current object, don't modify next object position. */
  375. #define SZ_InterHeight    TAG_USER+25    /* Use this inter-object space. */
  376.  
  377.     /* Status gadget properties. */
  378.  
  379. #define SGA_FullWidth    (TAG_USER+42)
  380. #define SGA_Mode    (TAG_USER+43)
  381.  
  382.     /* Sizing gadget sizes. */
  383.  
  384. #define SIZE_GADGET_WIDTH_HIGH    18
  385. #define SIZE_GADGET_WIDTH_LOW    13
  386.  
  387.     /* Box information types. */
  388.  
  389. enum    {    BOX_LEFT,BOX_TOP,BOX_WIDTH,BOX_HEIGHT };
  390.  
  391.     /* Special character treatment. */
  392.  
  393. struct SpecialKey
  394. {
  395.     UBYTE    Key;
  396.     BYTE    (* __regargs Routine)(VOID);
  397. };
  398.  
  399.     /* Cursor backup data. */
  400.  
  401. struct CursorData
  402. {
  403.     struct TextFont        *CurrentFont;
  404.     WORD             CursorX,
  405.                  CursorY;
  406.     BYTE             Charset;
  407.     BYTE             CharMode[2];
  408.     BYTE             Attributes;
  409.     BYTE             FgPen,
  410.                  BgPen;
  411.     UBYTE             Style;
  412. };
  413.  
  414.     /* File transfer information. */
  415.  
  416. struct FileTransferNode
  417. {
  418.     struct MinNode         Node;
  419.     ULONG             Size;
  420.     STRPTR             Name;
  421. };
  422.  
  423. struct FileTransferInfo
  424. {
  425.     struct MinList         FileList;
  426.     ULONG             TotalSize;
  427.     LONG             TotalFiles;
  428.  
  429.     ULONG             DoneSize;
  430.     LONG             DoneFiles;
  431.  
  432.     struct FileTransferNode    *CurrentFile;
  433.     ULONG             CurrentSize;
  434. };
  435.  
  436.     /* Global data link. */
  437.  
  438. struct TermPort
  439. {
  440.     struct MsgPort         ExecNode;
  441.  
  442.     struct Window        *TopWindow;
  443.  
  444.     struct SignalSemaphore     OpenSemaphore;
  445.  
  446.     LONG             ID,OpenCount,HoldIt;
  447.     LONG             Reserved[5];
  448. };
  449.  
  450.     /* Buffer search support. */
  451.  
  452. struct SearchInfo
  453. {
  454.     UBYTE    Distance[256],
  455.         Pattern[256];
  456.     LONG    FoundX,
  457.         FoundY;
  458.     WORD    PatternWidth;
  459.     WORD    Index;
  460. };
  461.  
  462.     /* Support for optimized scrolling routines. */
  463.  
  464. struct ScrollLineInfo
  465. {
  466.     UWORD             Left,Right,Width,
  467.                  ColourMask;
  468. };
  469.  
  470.     /* A dial list entry. */
  471.  
  472. struct PhoneNode
  473. {
  474.     struct Node         VanillaNode;
  475.  
  476.     UBYTE             LocalName[50];
  477.  
  478.     struct PhoneEntry    *Entry;
  479. };
  480.  
  481.     /* A Fast! macro list entry. */
  482.  
  483. struct MacroNode
  484. {
  485.     struct MacroNode    *mn_Succ;    /* Modeled after the default Node. */
  486.     struct MacroNode    *mn_Pred;
  487.  
  488.     WORD             mn_Pad;    /* Included only for Node compatibility. */
  489.  
  490.     UBYTE            *mn_Macro;    /* = ln_Name, title */
  491.     UBYTE            *mn_Code;    /* The execution code. */
  492. };
  493.  
  494.     /* Speech preferences. */
  495.  
  496. struct SpeechConfig
  497. {
  498.     WORD            Rate,
  499.                 Pitch;
  500.     LONG            Frequency;
  501.     BYTE            Sex,
  502.                 Volume,
  503.                 Enabled,
  504.                 Pad;
  505. };
  506.  
  507.     /* Macro Preferences. */
  508.  
  509. struct MacroKeys
  510. {
  511.     UBYTE            Keys[4][10][256];
  512. };
  513.  
  514.     /* Cursor key preferences. */
  515.  
  516. struct CursorKeys
  517. {
  518.     UBYTE            Keys[4][4][256];
  519. };
  520.  
  521.     /* Translation table entry. */
  522.  
  523. struct TranslationEntry
  524. {
  525.     STRPTR            String;        /* Corresponding code string. */
  526.     UBYTE            Type;        /* Table entry type. */
  527.     UBYTE            Len;        /* String length if any. */
  528.     UBYTE            Extra;        /* Saves space, don't need to allocate memory for this one. */
  529.     UBYTE            Null;        /* Terminating null. */
  530. };
  531.  
  532. struct TranslationHeader
  533. {
  534.     UBYTE            Type;        /* Table entry type. */
  535.     UBYTE            Code;        /* Table offset. */
  536.     UBYTE            Len;        /* Entry length. */
  537.     UBYTE            Pad;
  538. };
  539.  
  540.     /* Buffer translation handle. */
  541.  
  542. struct TranslationHandle
  543. {
  544.     STRPTR            LocalBuffer;
  545.     LONG            LocalLen;
  546.  
  547.     STRPTR            SourceBuffer;
  548.     LONG            SourceLen;
  549.  
  550.     STRPTR            DestinationBuffer;
  551.     LONG            DestinationLen;
  552.  
  553.     struct TranslationEntry    **Table;
  554. };
  555.  
  556.     /* term hotkey configuration. */
  557.  
  558. struct HotkeysOld
  559. {
  560.     UBYTE            termScreenToFront[256];
  561.     UBYTE            BufferScreenToFront[256];
  562.     UBYTE            SkipDialEntry[256];
  563.     BYTE            CommodityPriority;
  564.     BYTE            HotkeysEnabled;
  565.  
  566.     ULONG            Reserved[25];
  567. };
  568.  
  569. struct Hotkeys
  570. {
  571.     UBYTE            termScreenToFront[256];
  572.     UBYTE            BufferScreenToFront[256];
  573.     UBYTE            SkipDialEntry[256];
  574.     BYTE            CommodityPriority;
  575.     BYTE            HotkeysEnabled;
  576.  
  577.     ULONG            Reserved[25];
  578.  
  579.     UBYTE            AbortARexx[256];
  580. };
  581.  
  582.     /* Time/date structure. */
  583.  
  584. struct TimeDate
  585. {
  586.     LONG             Count;        /* Table size. */
  587.     WORD             PayPerUnit[2],    /* Pay for each unit. */
  588.                  SecPerUnit[2];    /* Number of seconds each unit lasts. */
  589.     UBYTE             Time,        /* The time associated with this entry. */
  590.                  Pad;
  591. };
  592.  
  593.     /* Time date header information. */
  594.  
  595. struct TimeDateHeader
  596. {
  597.     UBYTE             Comment[22];    /* Comment for this entry. */
  598.  
  599.     BYTE             Month,        /* Month of year or -1 -> Day = bitmapped days of week. */
  600.                  Day;        /* Day of month or -1 -> standard settings. */
  601. };
  602.  
  603. struct TimeDateNode
  604. {
  605.     struct Node         VanillaNode;    /* Default node entry. */
  606.     UBYTE             Buffer[30];    /* Name buffer. */
  607.  
  608.     struct TimeDate        *Table;        /* Table of time/date entries. */
  609.  
  610.     struct TimeDateHeader     Header;    /* Header information. */
  611. };
  612.  
  613. struct TimeNode
  614. {
  615.     struct Node         VanillaNode;    /* Default node entry. */
  616.     UBYTE             Name[6];    /* Name string. */
  617.     UBYTE             Time;        /* The time for this entry. */
  618. };
  619.  
  620.     /* Serial settings. */
  621.  
  622. struct SerialSettings
  623. {
  624.     ULONG    BaudRate;        /* Baud rate. */
  625.     ULONG    BreakLength;        /* Length of break signal in microseconds. */
  626.     ULONG    SerialBufferSize;    /* Size of serial read/write buffer. */
  627.  
  628.     UBYTE    SerialDevice[MAX_FILENAME_LENGTH];
  629.                     /* Serial device name. */
  630.     LONG    UnitNumber;        /* Serial device unit number. */
  631.  
  632.     BYTE    BitsPerChar;        /* Bits per character. */
  633.     BYTE    Parity;            /* Parity check mode. */
  634.     BYTE    StopBits;        /* Number of stop bits. */
  635.     BYTE    HandshakingProtocol;    /* Handshaking protocol (RTS/CTS, etc.). */
  636.     BYTE    Duplex;            /* Full- or half-duplex? */
  637.  
  638.     BYTE    xONxOFF;        /* xON/xOFF handshaking enabled? */
  639.     BYTE    HighSpeed;        /* Radboogie? */
  640.     BYTE    Shared;            /* Shared device access? */
  641.     BYTE    StripBit8;        /* Strip high-order bit? */
  642.     BYTE    CheckCarrier;        /* Track the carrier signal? */
  643.     BYTE    PassThrough;        /* Pass xON/xOFF characters through to modem? */
  644. };
  645.  
  646.     /* Modem settings. */
  647.  
  648. struct ModemSettings
  649. {
  650.     UBYTE    ModemInit[80];        /* Modem init string. */
  651.     UBYTE     ModemExit[80];        /* Modem exit string. */
  652.     UBYTE     ModemHangup[80];    /* Modem hangup string. */
  653.     UBYTE    DialPrefix[80];        /* Dial command prefix. */
  654.     UBYTE    DialSuffix[80];        /* Dial command suffix. */
  655.  
  656.     UBYTE    NoCarrier[16];        /* `No carrier' string. */
  657.     UBYTE    NoDialTone[16];        /* `No dialtone' string. */
  658.     UBYTE    Connect[16];        /* `Connect' string. */
  659.     UBYTE    Voice[16];        /* `Voice' string. */
  660.     UBYTE    Ring[16];        /* `Ring' string. */
  661.     UBYTE    Busy[16];        /* `Busy' string. */
  662.  
  663.     LONG    RedialDelay;        /* Length of redial delay. */
  664.     LONG    DialRetries;        /* Number of dial retries. */
  665.     LONG    DialTimeout;        /* Length of dial timeout. */
  666.     BYTE    ConnectAutoBaud;    /* Use baud rate returned by modem? */
  667.     BYTE    DropDTR;        /* Drop the DTR signal on hangup? */
  668.     BYTE    RedialAfterHangup;    /* Redial list after hangup? */
  669. };
  670.  
  671.     /* Command settings. */
  672.  
  673. struct CommandSettings
  674. {
  675.     UBYTE    StartupMacro[256];    /* Startup macro. */
  676.     UBYTE    LogoffMacro[256];    /* Macro executed after carrier has dropped or hung up. */
  677.     UBYTE    UploadMacro[256];    /* Macro to execute after a successful upload. */
  678.     UBYTE    DownloadMacro[256];    /* Macro to execute after a successful download. */
  679. };
  680.  
  681.     /* Screen settings. */
  682.  
  683. struct ScreenSettings
  684. {
  685.     ULONG    DisplayMode;            /* Screen display mode. */
  686.     WORD    ColourMode;            /* The terminal colour mode. */
  687.     UWORD    Colours[16];            /* Colour palette. */
  688.     UBYTE    FontName[MAX_FILENAME_LENGTH];    /* Default user interface font. */
  689.     WORD    FontHeight;            /* Default user interface font height. */
  690.  
  691.     BYTE    MakeScreenPublic;        /* Are we to make our screen public? */
  692.     BYTE    ShanghaiWindows;        /* Are we to `shanghai' windows? */
  693.  
  694.     BYTE    Blinking;            /* Screen blinking enabled? */
  695.     BYTE    FasterLayout;            /* Faster screen layout? */
  696.     BYTE    TitleBar;            /* Is the screen title bar enabled? */
  697.     BYTE    StatusLine;            /* Which mode is the status line in? */
  698.  
  699.     BYTE    UseWorkbench;            /* Use the Workbench screen for the terminal window? */
  700.  
  701.     UBYTE    PubScreenName[MAXPUBSCREENNAME + 1];    /* Name of public screen to open window upon. */
  702. };
  703.  
  704.     /* Terminal settings. */
  705.  
  706. struct TerminalSettings
  707. {
  708.     BYTE    BellMode;                /* The bell mode. */
  709.     BYTE    AlertMode;                /* The user alert mode. */
  710.     BYTE    EmulationMode;                /* The terminal emulation mode. */
  711.     BYTE    FontMode;                /* The font mode. */
  712.  
  713.     BYTE    SendCR;                    /* Standard translations. */
  714.     BYTE    SendLF;
  715.     BYTE    ReceiveCR;
  716.     BYTE    ReceiveLF;
  717.  
  718.     UWORD    NumColumns,                /* Size of the terminal window. */
  719.         NumLines;
  720.  
  721.     UBYTE    KeyMapFileName[MAX_FILENAME_LENGTH];    /* Name of custom keymap file. */
  722.     UBYTE    EmulationFileName[MAX_FILENAME_LENGTH];    /* External emulation file name. */
  723.     UBYTE    BeepFileName[MAX_FILENAME_LENGTH];    /* Name of the custom beep sound file. */
  724.  
  725.     UBYTE    TextFontName[MAX_FILENAME_LENGTH];    /* Terminal text font name. */
  726.     WORD    TextFontHeight;                /* Terminal text font height. */
  727. };
  728.  
  729.     /* Path settings. */
  730.  
  731. struct PathSettings
  732. {
  733.     UBYTE    ASCIIUploadPath[MAX_FILENAME_LENGTH];        /* Default ASCII upload file path. */
  734.     UBYTE    ASCIIDownloadPath[MAX_FILENAME_LENGTH];        /* Default ASCII download file path. */
  735.  
  736.     UBYTE    TextUploadPath[MAX_FILENAME_LENGTH];        /* Default text upload file path. */
  737.     UBYTE    TextDownloadPath[MAX_FILENAME_LENGTH];        /* Default text download file path. */
  738.  
  739.     UBYTE    BinaryUploadPath[MAX_FILENAME_LENGTH];        /* Default binary data upload file path. */
  740.     UBYTE    BinaryDownloadPath[MAX_FILENAME_LENGTH];    /* Default binary data download file path. */
  741.  
  742.     UBYTE    DefaultStorage[MAX_FILENAME_LENGTH];        /* Default configuration storage path. */
  743.  
  744.     UBYTE    Editor[MAX_FILENAME_LENGTH];            /* Text file editor to use. */
  745.  
  746.     UBYTE    HelpFile[MAX_FILENAME_LENGTH];            /* Help text file. */
  747. };
  748.  
  749.     /* Miscellaneous settings. */
  750.  
  751. struct MiscSettings
  752. {
  753.     BYTE    Priority;        /* Program priority. */
  754.     BYTE    BackupConfig;        /* Save the configuration between calls? */
  755.  
  756.     BYTE    OpenFastMacroPanel;    /* Open the fast! macro panel? */
  757.     BYTE    ReleaseDevice;        /* Release serial device when iconified? */
  758.  
  759.     BYTE    TransferServer;        /* Enable data transfer server? */
  760.     BYTE    EmulationServer;    /* Enable terminal emulation server? */
  761.  
  762.     BYTE    OverridePath;        /* Override the protocol transfer path? */
  763.     BYTE    AutoUpload;        /* Enable the auto-upload panel? */
  764.     BYTE    SetArchivedBit;        /* Set the archived bit for files sent? */
  765.     BYTE    IdentifyFiles;        /* Try to identify files after download? */
  766.  
  767.     BYTE    TransferIcons;        /* Transfer files along with their icons? */
  768. };
  769.  
  770.     /* Clipboard settings. */
  771.  
  772. struct ClipSettings
  773. {
  774.     WORD    ClipboardUnit;        /* Clipboard unit to use. */
  775.  
  776.     WORD    LineDelay,        /* Insert line delay. */
  777.         CharDelay;        /* Insert character delay. */
  778.  
  779.     UBYTE    InsertPrefix[80];    /* Line insertion prefix. */
  780.     UBYTE    InsertSuffix[80];    /* Line insertion suffix. */
  781. };
  782.  
  783.     /* Capture and logfile settings. */
  784.  
  785. struct CaptureSettings
  786. {
  787.     BYTE    LogActions;                /* Create logfile? */
  788.     BYTE    LogCall;                /* Create callinfo-compatible logfile? */
  789.     UBYTE    LogFileName[MAX_FILENAME_LENGTH];    /* Default logfile name. */
  790.  
  791.     LONG    MaxBufferSize;                /* Maximum text buffer size. */
  792.     BYTE    BufferEnabled;                /* Is the text buffer enabled? */
  793.  
  794.     BYTE    ConnectAutoCapture;            /* Open capture file on logon? */
  795.     BYTE    CaptureFilterMode;            /* The capture filter mode. */
  796.     UBYTE    CapturePath[MAX_FILENAME_LENGTH];    /* The default path for capture files. */
  797.  
  798.     UBYTE    CallLogFileName[MAX_FILENAME_LENGTH];    /* Name of the call log file. */
  799.     UBYTE    BufferPath[MAX_FILENAME_LENGTH];    /* Text buffer save path. */
  800. };
  801.  
  802.     /* File settings. */
  803.  
  804. struct FileSettings
  805. {
  806.     UBYTE    ProtocolFileName[MAX_FILENAME_LENGTH];        /* Transfer protocol file name. */
  807.     UBYTE    TranslationFileName[MAX_FILENAME_LENGTH];    /* Character translation file name. */
  808.     UBYTE    MacroFileName[MAX_FILENAME_LENGTH];        /* Keyboard macro file name. */
  809.     UBYTE    CursorFileName[MAX_FILENAME_LENGTH];        /* Cursor key file name. */
  810.     UBYTE    FastMacroFileName[MAX_FILENAME_LENGTH];        /* Fast macro file name. */
  811. };
  812.  
  813.     /* Emulation settings. */
  814.  
  815. struct EmulationSettings
  816. {
  817.     BYTE    CursorMode;        /* Are the cursor keys switched to application mode? */
  818.     BYTE    NumericMode;        /* Is the numeric keypad switched to application mode? */
  819.  
  820.     BYTE    CursorWrap;        /* Is cursor position wrapping enabled? */
  821.     BYTE    LineWrap;        /* Is character line wrapping enabled? */
  822.  
  823.     BYTE    InsertMode;        /* Is the character insertion mode enabled? */
  824.     BYTE    NewLineMode;        /* Is the newline mode enabled? */
  825.  
  826.     BYTE    FontScale;        /* Which font scale is enabled? */
  827.     BYTE    ScrollMode;        /* Is smooth scrolling enabled? */
  828.     BYTE    DestructiveBackspace;    /* Backspace erases characters? */
  829.     BYTE    SwapBSDelete;        /* DEL and BS keys are swapped? */
  830.     BYTE    PrinterEnabled;        /* Printer commands enabled? */
  831.     BYTE    Pad;            /* Padding byte. */
  832.  
  833.     UBYTE    AnswerBack[80];        /* Answer-back message. */
  834. };
  835.  
  836.     /* The new configuration settings. */
  837.  
  838. struct Configuration
  839. {
  840.     struct SerialSettings        *SerialConfig;
  841.     struct ModemSettings        *ModemConfig;
  842.     struct ScreenSettings        *ScreenConfig;
  843.     struct TerminalSettings        *TerminalConfig;
  844.     struct EmulationSettings    *EmulationConfig;
  845.     struct ClipSettings        *ClipConfig;
  846.     struct CaptureSettings        *CaptureConfig;
  847.     struct CommandSettings        *CommandConfig;
  848.     struct MiscSettings        *MiscConfig;
  849.     struct PathSettings        *PathConfig;
  850.     struct FileSettings        *FileConfig;
  851. };
  852.  
  853.     /* Phonebook entry header. */
  854.  
  855. struct PhoneHeader
  856. {
  857.     UBYTE    Name[40],        /* BBS name. */
  858.         Number[100],        /* Phone number. */
  859.         Comment[100];        /* Comment. */
  860.  
  861.     UBYTE    UserName[100],        /* User name for this BSS. */
  862.         Password[100];        /* Password for user name. */
  863. };
  864.  
  865.     /* A phonebook entry. */
  866.  
  867. struct PhoneEntry
  868. {
  869.     struct PhoneNode    *Node;
  870.  
  871.     struct MinList         TimeDateList;
  872.  
  873.     LONG             Count;
  874.  
  875.     struct PhoneHeader    *Header;
  876.     struct Configuration    *Config;
  877. };
  878.  
  879.     /* A text box for several lines of text. */
  880.  
  881. struct TextBox
  882. {
  883.     struct TextBox        *NextBox;        /* Next box in chain. */
  884.  
  885.     LONG             Left,Top,        /* Position and size. */
  886.                  Width,Height;
  887.  
  888.     LONG             LineWidth,        /* Line width in pixels. */
  889.                  LineHeight;        /* Line height in pixels. */
  890.  
  891.     LONG             NumChars,        /* Number of chars per line. */
  892.                  NumLines;        /* Number of lines. */
  893.  
  894.     STRPTR            *Title,            /* Line titles. */
  895.                 *Text;            /* Line texts. */
  896. };
  897.  
  898.     /* Block marker structure. */
  899.  
  900. struct BlockMarker
  901. {
  902.         /* The object to manipulate. */
  903.  
  904.     APTR            Object;
  905.  
  906.         /* Selection and unselection routines. */
  907.  
  908.     VOID         (* Select)(struct BlockMarker *Marker,LONG Left,LONG Top,LONG Width,LONG Height);
  909.     VOID         (* Unselect)(struct BlockMarker *Marker,LONG Left,LONG Top,LONG Width,LONG Height);
  910.  
  911.         /* Origin anchor point. */
  912.  
  913.     LONG            OriginX,
  914.                 OriginY;
  915.  
  916.         /* First and last selected line. */
  917.  
  918.     LONG            FirstLine,
  919.                 LastLine;
  920.  
  921.         /* First and last selected column. */
  922.  
  923.     LONG            FirstColumn,
  924.                 LastColumn;
  925.  
  926.         /* Top of display window, lines in the buffer and size of
  927.          * the display window.
  928.          */
  929.  
  930.     LONG            Top,
  931.                 Lines,
  932.                 Width,
  933.                 Height;
  934.  
  935.         /* Canvas left and top edge. */
  936.  
  937.     LONG            LeftEdge,
  938.                 TopEdge;
  939.  
  940.         /* Last mouse position. */
  941.  
  942.     LONG            LastX,
  943.                 LastY;
  944.  
  945.         /* Single character dimensions. */
  946.  
  947.     LONG            TextFontWidth,
  948.                 TextFontHeight;
  949.  
  950.         /* Plane write mask. */
  951.  
  952.     UBYTE            WriteMask;
  953. };
  954.  
  955.     /* Global data flow <-> term interface. */
  956.  
  957. struct FlowInfo
  958. {
  959.     BYTE            Changed;
  960.  
  961.     BYTE            NoCarrier;
  962.     BYTE            ZModemUpload;
  963.  
  964.     BYTE            Connect;
  965.     BYTE            Voice;
  966.     BYTE            Ring;
  967.     BYTE            Busy;
  968.  
  969.     BYTE            NoDialTone;
  970. };
  971.  
  972.     /* A scan sequence, somewhat similar to the FlowInfo structure. */
  973.  
  974. struct WaitNode
  975. {
  976.     struct Node    Node;
  977.     LONG        Count;        /* Number of characters matched. */
  978. };
  979.  
  980. struct DialNode
  981. {
  982.     struct Node         Node;
  983.     struct PhoneEntry    *Entry;
  984. };
  985.  
  986.     /* A list as employed by the ARexx interface. */
  987.  
  988. struct GenericList
  989. {
  990.     struct MinList         ListHeader;
  991.     struct Node        *ListNode;
  992.     LONG             ListCount;
  993.     struct SignalSemaphore     ListSemaphore;
  994. };
  995.  
  996.     /* Number of buffers to be used for buffered I/O. */
  997.  
  998. #define BUFFER_NUMBER        2
  999.  
  1000.     /* Auxiliary structure for buffered file I/O. */
  1001.  
  1002. struct Buffer
  1003. {
  1004.     struct Message             Message;            /* Vanilla message header. */
  1005.  
  1006.     BYTE                 Read;                /* Last access has read data. */
  1007.     BYTE                 Written;            /* Last access has written data. */
  1008.  
  1009.     LONG                 Action;            /* Action to perform. */
  1010.     LONG                 ActionData[2];            /* Seek and the like. */
  1011.     LONG                 Result;            /* Return value. */
  1012.  
  1013.     BPTR                 FileHandle;            /* Dos filehandle. */
  1014.  
  1015.     UBYTE                *Data;                /* Data buffer. */
  1016.     LONG                 BufLength;            /* Length of data buffer. */
  1017.  
  1018.     LONG                 BufPosition;            /* Read/write pointer into buffer. */
  1019.  
  1020.     LONG                 ReadBufFull;            /* How many bytes are still to be read from the buffer? */
  1021.     LONG                 WriteBufFull;            /* How many bytes are still to be written to the buffer?*/
  1022.  
  1023.     LONG                 RealPosition;            /* Real position in file. */
  1024.     LONG                 Cached;            /* How many bytes in pre-load cache. */
  1025.  
  1026.     UBYTE                *DataBuffer[BUFFER_NUMBER];    /* The data buffers. */
  1027.     LONG                 DataLength[BUFFER_NUMBER];    /* The lengths of the data buffers. */
  1028.     WORD                 DataCount;            /* Which buffer to use. */
  1029.     BYTE                 WriteAccess;            /* TRUE if a write file handle. */
  1030.     BYTE                 LastActionFailed;        /* TRUE if last action failed -> abort actions. */
  1031.  
  1032.     struct Process            *Child;
  1033.     struct Process            *Caller;            /* Synchronization. */
  1034.  
  1035.     BPTR                 DirLock;
  1036.     struct InfoData __aligned     InfoData;
  1037.  
  1038.     BYTE                 Fresh;                /* TRUE if no read/write access has taken place yet. */
  1039.     BYTE                 Used;                /* Did any access take place at all? */
  1040.  
  1041.     struct DateStamp         OpenDate;            /* Date and time when file was opened. */
  1042. };
  1043.  
  1044.     /* Small sound information. */
  1045.  
  1046. struct SoundInfo
  1047. {
  1048.     APTR    Data;        /* Data pointer. */
  1049.  
  1050.     LONG    Length;        /* Real length. */
  1051.     ULONG    Rate;        /* Recording rate. */
  1052.     WORD    Volume;        /* Sound volume. */
  1053. };
  1054.  
  1055.     /* xpr serial bits. */
  1056.  
  1057. #define ST_PARTYON    (1 << 0)
  1058. #define ST_PARTYODD    (1 << 1)
  1059. #define ST_7WIRE    (1 << 2)
  1060. #define ST_QBREAK    (1 << 3)
  1061. #define ST_RADBOOGIE    (1 << 4)
  1062. #define ST_SHARED    (1 << 5)
  1063. #define ST_EOFMODE    (1 << 6)
  1064. #define ST_XDISABLED    (1 << 7)
  1065. #define ST_PARTYMARKON    (1 << 8)
  1066. #define ST_PARTYMARK    (1 << 9)
  1067. #define ST_2BITS    (1 << 10)
  1068. #define ST_READ7    (1 << 11)
  1069. #define ST_WRITE7    (1 << 12)
  1070.  
  1071.     /* Miscellaneous definitions. */
  1072.  
  1073. #define MILLION        1000000
  1074.  
  1075.     /* Raster text line attributes. */
  1076.  
  1077. #define    ATTR_UNDERLINE    1
  1078. #define    ATTR_HIGHLIGHT    2
  1079. #define ATTR_BLINK    4
  1080. #define    ATTR_INVERSE    8
  1081.  
  1082.     /* Audio channels. */
  1083.  
  1084. #define LEFT0F  1
  1085. #define RIGHT0F  2
  1086. #define RIGHT1F  4
  1087. #define LEFT1F  8
  1088.  
  1089.     /* Program revision and the approriate info structure. */
  1090.  
  1091. struct TermInfo
  1092. {
  1093.     UWORD    Version;
  1094.     UWORD    Revision;
  1095. };
  1096.  
  1097.     /* termTag.asm */
  1098.  
  1099. extern LONG            TermVersion,
  1100.                 TermRevision;
  1101.  
  1102. extern UBYTE            TermName[],
  1103.                 TermDate[];
  1104.  
  1105.     /* termData.c */
  1106.  
  1107. extern struct ExecBase        *SysBase;
  1108. extern struct DosLibrary    *DOSBase;
  1109.  
  1110. extern struct IntuitionBase    *IntuitionBase;
  1111. extern struct GfxBase        *GfxBase;
  1112. extern struct RxsLib        *RexxSysBase;
  1113. extern struct LocaleBase    *LocaleBase;
  1114. extern struct Library        *GadToolsBase,
  1115.                 *DiskfontBase,
  1116.                 *ConsoleDevice,
  1117.                 *TimerBase,
  1118.                 *UtilityBase,
  1119.                 *AslBase,
  1120.                 *IFFParseBase,
  1121.                 *CxBase,
  1122.                 *IconBase,
  1123.                 *TranslatorBase,
  1124.                 *WorkbenchBase,
  1125.                 *AmigaGuideBase,
  1126.                 *XEmulatorBase;
  1127.  
  1128. extern struct timerequest    *TimeRequest;
  1129. extern struct MsgPort        *TimePort;
  1130.  
  1131. extern struct IOStdReq        *ConsoleRequest;
  1132. extern struct KeyMap        *KeyMap;
  1133. extern BPTR             KeySegment;
  1134.  
  1135. extern struct Screen        *Screen,
  1136.                 *DefaultPubScreen;
  1137. extern struct Window        *Window;
  1138. extern LONG             WindowWidth,
  1139.                  WindowHeight,
  1140.                  WindowLeft,
  1141.                  WindowTop;
  1142. extern struct Window        *StatusWindow;
  1143. extern struct Gadget        *StatusGadget;
  1144. extern UWORD             StatusOffset;
  1145. extern APTR             OldWindowPtr;
  1146. extern struct BitMap        *InterleavedBitMap;
  1147. extern struct Requester        *RequesterList;
  1148. extern UBYTE             ScreenTitle[80];
  1149. extern UBYTE             DepthMask;
  1150. extern LONG             RenderPens[4],
  1151.                  MappedPens[2][16],
  1152.                  SafeTextPen;
  1153. extern struct DrawInfo        *DrawInfo;
  1154. extern LONG             ScreenWidth,
  1155.                  ScreenHeight;
  1156. extern BYTE             UseMasking;
  1157.  
  1158. extern struct BlockMarker    *WindowMarker;
  1159. extern ULONG             ClickSecs,ClickMicros;
  1160. extern BYTE             FirstClick,HoldClick;
  1161. extern LONG             ClickX,ClickY;
  1162.  
  1163. extern struct AppWindow        *WorkbenchWindow;
  1164. extern struct MsgPort        *WorkbenchPort;
  1165.  
  1166. extern struct ViewPort        *VPort;
  1167. extern struct RastPort        *RPort;
  1168. extern struct TextFont        *GFX,*CurrentFont,*UserTextFont;
  1169. extern WORD             UserFontHeight,UserFontWidth,UserFontBase;
  1170. extern struct TextAttr         UserFont;
  1171. extern struct TextFont        *TextFont;
  1172. extern WORD             TextFontHeight,TextFontWidth,TextFontBase;
  1173. extern struct TextAttr         TextAttr;
  1174. extern UBYTE             TextFontName[40],UserFontName[40];
  1175. extern APTR             VisualInfo;
  1176.  
  1177. extern ULONG            (* __regargs ReadAPen)(struct RastPort *RPort);
  1178. extern ULONG            (* __regargs ReadBPen)(struct RastPort *RPort);
  1179. extern ULONG            (* __regargs ReadDrMd)(struct RastPort *RPort);
  1180. extern ULONG            (* __regargs SetWrMsk)(struct RastPort *RPort,ULONG Mask);
  1181.  
  1182. extern UWORD             StandardPens[];
  1183. extern UWORD             ANSIPens[];
  1184. extern UWORD             EGAPens[];
  1185. extern UWORD             AtomicColours[16];
  1186. extern UWORD             EGAColours[16];
  1187. extern UWORD             ANSIColours[16];
  1188. extern UWORD             DefaultColours[16];
  1189. extern UWORD             BlinkColours[16];
  1190. extern UWORD             StandardColours[16];
  1191.  
  1192. extern LONG            *OffsetXTable,
  1193.                 *OffsetYTable;
  1194.  
  1195. extern struct Process        *ThisProcess;
  1196. extern struct Process        *RexxProcess,
  1197.                 *RexxBackgroundProcess;
  1198. extern struct MsgPort        *TermRexxPort;
  1199. extern struct Process        *StatusProcess;
  1200. extern struct Process        *BufferProcess;
  1201. extern struct WBStartup        *WBenchMsg;
  1202. extern BPTR             WBenchLock;
  1203. extern BYTE             ClipBit,
  1204.                  CheckBit;
  1205. extern BYTE             InRexx;
  1206.  
  1207. extern struct InputEvent    *FakeInputEvent;
  1208.  
  1209. extern struct IOExtSer        *ReadRequest;
  1210. extern struct IOExtSer        *WriteRequest;
  1211. extern struct MsgPort        *ReadPort;
  1212. extern APTR             ReadBuffer,
  1213.                  HostReadBuffer;
  1214. extern UBYTE            *SerialMessage;
  1215. extern ULONG             DTERate;
  1216.  
  1217. extern LONG             BaudRates[],
  1218.                  NumBaudRates;
  1219.  
  1220. extern UBYTE             NewDevice[MAX_FILENAME_LENGTH];
  1221. extern LONG             NewUnit;
  1222. extern BYTE             UseNewDevice,
  1223.                  UseNewUnit;
  1224.  
  1225. extern struct Catalog        *Catalog;
  1226. extern struct Locale        *Locale;
  1227.  
  1228. extern struct Hotkeys         Hotkeys;
  1229. extern struct NewBroker         NewTermBroker;
  1230.  
  1231. extern struct TextAttr         DefaultFont;
  1232. extern struct TextAttr         GFXFont;
  1233.  
  1234. extern UBYTE             AnyChannel[4];
  1235.  
  1236. extern UBYTE __chip         SineWave[8];
  1237.  
  1238. extern struct IOAudio        *AudioBlock;
  1239.  
  1240. extern UWORD __chip         Stopwatch[(1 + 16 + 1) * 2];
  1241.  
  1242. extern ULONG __chip         Crosshatch;
  1243.  
  1244. extern BYTE             IsPrintable[256];
  1245. extern UBYTE             IBMConversion[256];
  1246. extern BYTE             GfxTable[256];
  1247.  
  1248. extern struct SpecialKey     SpecialKeys[13];
  1249. extern JUMP            *SpecialTable;
  1250.  
  1251. extern BYTE             AbortMap[256];
  1252. extern JUMP            *AbortTable;
  1253.  
  1254. extern VOID            (* __regargs ConDump)(STRPTR,LONG);
  1255. extern VOID            (* __regargs ConOutput)(STRPTR,LONG);
  1256. extern VOID            (* __regargs ConProcessData)(register STRPTR,register LONG);
  1257.  
  1258. extern UBYTE             SharedBuffer[512];
  1259.  
  1260. extern struct NewMenu         TermMenu[];
  1261. extern struct Menu        *Menu;
  1262.  
  1263. extern struct TermPort        *TermPort;
  1264.  
  1265. extern struct Configuration    *Config,
  1266.                 *PrivateConfig,
  1267.                 *BackupConfig;
  1268. extern struct SpeechConfig     SpeechConfig;
  1269. extern BYTE             English;
  1270. extern BYTE             Status;
  1271. extern BYTE             Online,WasOnline;
  1272. extern ULONG             OnlineMinutes;
  1273. extern UWORD             PublicModes;
  1274.  
  1275. extern UBYTE             LastConfig[MAX_FILENAME_LENGTH];
  1276. extern UBYTE             DefaultPubScreenName[MAXPUBSCREENNAME + 1],
  1277.                  SomePubScreenName[MAXPUBSCREENNAME + 1];
  1278.  
  1279. extern struct Buffer        *FileCapture;
  1280. extern BPTR             PrinterCapture;
  1281. extern UBYTE             CaptureName[MAX_FILENAME_LENGTH];
  1282. extern BYTE             StandardPrinterCapture,
  1283.                  ControllerActive;
  1284.  
  1285. extern UBYTE            **BufferLines;
  1286. extern LONG             Lines;
  1287. extern struct SignalSemaphore    *BufferSemaphore;
  1288. extern LONG             MaxLines;
  1289. extern LONG             BufferSpace;
  1290. extern BYTE             BufferClosed;
  1291. extern BYTE             BufferFrozen;
  1292.  
  1293. extern struct PhoneEntry    **Phonebook;
  1294. extern LONG             PhoneSize;
  1295. extern LONG             NumPhoneEntries;
  1296. extern UBYTE             PhonePassword[256];
  1297. extern BYTE             PhonePasswordUsed;
  1298. extern UBYTE             Password[100];
  1299. extern UBYTE             UserName[100];
  1300. extern UBYTE             GlobalPassword[256];
  1301.  
  1302. extern UBYTE             CurrentBBSName[40],
  1303.                  CurrentBBSNumber[100],
  1304.                  CurrentBBSComment[100];
  1305.  
  1306. extern UBYTE             LastPhone[MAX_FILENAME_LENGTH];
  1307. extern UBYTE             LastKeys[MAX_FILENAME_LENGTH];
  1308. extern UBYTE             LastMacros[MAX_FILENAME_LENGTH];
  1309. extern UBYTE             LastTranslation[MAX_FILENAME_LENGTH];
  1310. extern UBYTE             LastCursorKeys[MAX_FILENAME_LENGTH];
  1311. extern UBYTE             LastSpeech[MAX_FILENAME_LENGTH];
  1312.  
  1313. extern struct MacroKeys        *MacroKeys;
  1314. extern struct CursorKeys    *CursorKeys;
  1315.  
  1316. extern UBYTE            *StripBuffer;
  1317.  
  1318. extern UWORD             LastLine,LastColumn,LastPixel;
  1319. extern BYTE             Charset,Attributes,FgPen,BgPen;
  1320. extern WORD             CursorX,CursorY,Top,Bottom;
  1321. extern BYTE             UseRegion,RegionSet,InSequence,Quiet,Blocking;
  1322. extern BYTE            *TabStops;
  1323. extern UWORD             TabStopMax;
  1324. extern BYTE             CharMode[2];
  1325.  
  1326. extern BYTE             ResetDisplay,DisplayReopened,FixPubScreenMode,FixScreenSize;
  1327.  
  1328. extern STRPTR             AttentionBuffers[SCAN_COUNT];
  1329. extern BYTE             BaudPending,FullCheck,UseFlow;
  1330. extern UBYTE             BaudBuffer[80],BaudCount;
  1331.  
  1332. extern struct FlowInfo         FlowInfo;
  1333.  
  1334. extern BYTE             BinaryTransfer;
  1335. extern LONG             TransferBits;
  1336. extern VOID            (* __regargs ConTransfer)(STRPTR,LONG);
  1337.  
  1338. extern struct Window        *TransferWindow;
  1339. extern struct Menu        *TransferMenu;
  1340. extern struct Gadget        *TransferGadgetArray[GAD_TRANSFER_SKIP + 1];
  1341. extern struct List         TransferInfoList;
  1342. extern struct TextBox        *TransferBoxArray[BOX_TRANSFER_RIGHT2 + 1],
  1343.                 *TransferBoxList;
  1344.  
  1345. extern struct FileTransferInfo    *FileTransferInfo;
  1346.  
  1347. extern UBYTE            *DownloadPath;
  1348. extern BYTE             Uploading;
  1349. extern BYTE             DidTransfer;
  1350.  
  1351. extern struct Library        *XProtocolBase;
  1352. extern struct XPR_IO        *XprIO;
  1353.  
  1354. extern UBYTE             ProtocolOptsBuffer[256];
  1355. extern BYTE             NewLibrary,NewOptions;
  1356. extern UBYTE             LastXprLibrary[MAX_FILENAME_LENGTH];
  1357. extern UBYTE             ConvNumber[30],ConvNumber10[30];
  1358. extern BYTE             UsesZModem,SendAbort,TransferAborted,TransferFailed;
  1359.  
  1360. extern UBYTE             ZModemCancel[20];
  1361.  
  1362. extern LONG             CurrentPay;
  1363. extern LONG             PayPerUnit[2];
  1364. extern LONG             SecPerUnit[2];
  1365. extern LONG             WhichUnit;
  1366. extern struct PhoneEntry    *ChosenEntry;
  1367. extern BYTE             ChosenInUse;
  1368.  
  1369. extern UBYTE             WindowName[256];
  1370.  
  1371. extern BYTE             WeAreBlocking;
  1372.  
  1373. extern struct List        *DialList;
  1374.  
  1375. extern BYTE             SendStartup;
  1376.  
  1377. extern BYTE             ReleaseSerial;
  1378. extern BYTE             ResetSerial;
  1379. extern BYTE             BatchMode;
  1380. extern BYTE             MainTerminated,
  1381.                  IconTerminated,
  1382.                  DoIconify,
  1383.                  DoDial;
  1384. extern BYTE             ConfigChanged,PhonebookChanged,TranslationChanged,
  1385.                  MacroChanged,CursorKeysChanged,FastMacrosChanged,
  1386.                  HotkeysChanged,SpeechChanged,BufferChanged;
  1387.  
  1388. extern UBYTE             LastDownload[MAX_FILENAME_LENGTH];
  1389. extern UBYTE             LastUpload[MAX_FILENAME_LENGTH];
  1390.  
  1391. extern struct Hook         CommandHook,
  1392.                  PasswordHook;
  1393. extern BYTE             DontActivate;
  1394.  
  1395. extern struct Window        *CommandWindow;
  1396. extern struct Gadget        *CommandGadget;
  1397. extern struct Gadget        *ActiveGadget;
  1398.  
  1399. extern struct Process        *ClipProcess;
  1400. extern struct MsgPort        *ClipPort;
  1401. extern BYTE             ClipInput,
  1402.                  ClipXerox,
  1403.                  ClipPrefix;
  1404.  
  1405. extern struct Window        *PacketWindow;
  1406. extern struct Gadget        *PacketGadgetArray[2];
  1407. extern struct Menu        *PacketMenu;
  1408. extern struct Gadget        *PacketGadgetList;
  1409. extern struct List         PacketHistoryList;
  1410.  
  1411. extern struct NewMenu         GetsMenu[];
  1412.  
  1413. extern BYTE             Initializing,LoadColours;
  1414.  
  1415. extern UBYTE            *Raster,*RasterAttr;
  1416. extern LONG             RasterWidth,RasterHeight;
  1417. extern BYTE             Marking;
  1418. extern struct SignalSemaphore    *RasterSemaphore;
  1419. extern BYTE             RasterEnabled;
  1420.  
  1421. extern struct GenericList    *GenericListTable[GLIST_COUNT];
  1422.  
  1423. extern ULONG             VersionProps[2];
  1424.  
  1425. extern struct Window        *TopWindow;
  1426. extern struct Window        *WindowStack[5];
  1427. extern WORD             WindowStackPtr;
  1428.  
  1429. extern LONG             TermID;
  1430. extern UBYTE             TermIDString[];
  1431. extern UBYTE             RexxPortName[256];
  1432.  
  1433. extern struct List         FastMacroList;
  1434. extern LONG             FastMacroCount;
  1435. extern UBYTE             LastFastMacros[MAX_FILENAME_LENGTH];
  1436. extern struct Window        *FastWindow;
  1437. extern struct Gadget        *FastGadget;
  1438.  
  1439. extern struct List         DoubleBufferList;
  1440. extern struct SignalSemaphore     DoubleBufferSemaphore;
  1441.  
  1442. extern struct XEM_IO        *XEM_IO;
  1443. extern ULONG             XEM_Signal;
  1444. extern struct XEmulatorHostData     XEM_HostData;
  1445. extern UBYTE            *OptionTitle;
  1446. extern struct List         XEM_MacroList;
  1447. extern struct XEmulatorMacroKey    *XEM_MacroKeys;
  1448. extern UBYTE             EmulationName[40];
  1449.  
  1450. extern struct List         EmptyList;
  1451.  
  1452. extern UWORD             ScrollLineFirst,ScrollLineLast,
  1453.                  ScrollLineCount;
  1454. extern struct ScrollLineInfo    *ScrollLines;
  1455.  
  1456. extern struct MsgPort        *ReviewPort;
  1457. extern struct Window        *ReviewWindow;
  1458.  
  1459. extern ULONG             BytesIn,
  1460.                  BytesOut;
  1461. extern struct DateStamp         SessionStart;
  1462. extern struct Window        *InfoWindow;
  1463.  
  1464. extern LONG             InterWidth,
  1465.                  InterHeight;
  1466.  
  1467. extern struct SoundInfo         SoundInfo;
  1468. extern BYTE             HasSound,SoundPlayed;
  1469.  
  1470. extern struct TranslationEntry    **SendTable,
  1471.                 **ReceiveTable;
  1472.  
  1473.     /* And now for something completely different... */
  1474.  
  1475. #include "termProtos.h"
  1476.