home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / BTMTSRC3.ZIP / BINK.H < prev    next >
C/C++ Source or Header  |  1990-07-08  |  26KB  |  691 lines

  1. /*--------------------------------------------------------------------------*/
  2. /*                                                                          */
  3. /*                                                                          */
  4. /*      ------------         Bit-Bucket Software, Co.                       */
  5. /*      \ 10001101 /         Writers and Distributors of                    */
  6. /*       \ 011110 /          Freely Available<tm> Software.                 */
  7. /*        \ 1011 /                                                          */
  8. /*         ------                                                           */
  9. /*                                                                          */
  10. /*  (C) Copyright 1987-90, Bit Bucket Software Co., a Delaware Corporation. */
  11. /*                                                                          */
  12. /*                                                                          */
  13. /*                 Major definitions used in BinkleyTerm                    */
  14. /*                                                                          */
  15. /*                                                                          */
  16. /*    For complete  details  of the licensing restrictions, please refer    */
  17. /*    to the License  agreement,  which  is published in its entirety in    */
  18. /*    the MAKEFILE and BT.C, and also contained in the file LICENSE.240.    */
  19. /*                                                                          */
  20. /*    USE  OF THIS FILE IS SUBJECT TO THE  RESTRICTIONS CONTAINED IN THE    */
  21. /*    BINKLEYTERM  LICENSING  AGREEMENT.  IF YOU DO NOT FIND THE TEXT OF    */
  22. /*    THIS  AGREEMENT IN ANY OF THE  AFOREMENTIONED FILES,  OR IF YOU DO    */
  23. /*    NOT HAVE THESE FILES,  YOU  SHOULD  IMMEDIATELY CONTACT BIT BUCKET    */
  24. /*    SOFTWARE CO.  AT ONE OF THE  ADDRESSES  LISTED BELOW.  IN NO EVENT    */
  25. /*    SHOULD YOU  PROCEED TO USE THIS FILE  WITHOUT HAVING  ACCEPTED THE    */
  26. /*    TERMS  OF  THE  BINKLEYTERM  LICENSING  AGREEMENT,  OR  SUCH OTHER    */
  27. /*    AGREEMENT AS YOU ARE ABLE TO REACH WITH BIT BUCKET SOFTWARE, CO.      */
  28. /*                                                                          */
  29. /*                                                                          */
  30. /* You can contact Bit Bucket Software Co. at any one of the following      */
  31. /* addresses:                                                               */
  32. /*                                                                          */
  33. /* Bit Bucket Software Co.        FidoNet  1:104/501, 1:132/491, 1:141/491  */
  34. /* P.O. Box 460398                AlterNet 7:491/0                          */
  35. /* Aurora, CO 80046               BBS-Net  86:2030/1                        */
  36. /*                                Internet f491.n132.z1.fidonet.org         */
  37. /*                                                                          */
  38. /* Please feel free to contact us at any time to share your comments about  */
  39. /* our software and/or licensing policies.                                  */
  40. /*                                                                          */
  41. /*--------------------------------------------------------------------------*/
  42.  
  43.  
  44. /*--------------------------------------------------------------------------*/
  45. /* LEGIBLE SECTION.  Definitions to make "C" look like a real language.     */
  46. /*--------------------------------------------------------------------------*/
  47.  
  48. #ifndef max
  49. #define max(a,b)     ((a)>(b)?(a):(b))
  50. #endif
  51.  
  52. #ifndef min
  53. #define min(a,b)     ((a)<=(b)?(a):(b))
  54. #endif
  55.  
  56. /*
  57.  * updcrc macro derived from article Copyright (C) 1986 Stephen Satchell. 
  58.  *  NOTE: First srgument must be in range 0 to 255.
  59.  *        Second argument is referenced twice.
  60.  * 
  61.  * Programmers may incorporate any or all code into their programs, 
  62.  * giving proper credit within the source. Publication of the 
  63.  * source routines is permitted so long as proper credit is given 
  64.  * to Stephen Satchell, Satchell Evaluations and Chuck Forsberg, 
  65.  * Omen Technology.
  66.  */
  67.  
  68. #define updcrc(cp, crc) ( crctab[((crc >> 8) & 255) ^ cp] ^ (crc << 8))
  69.  
  70. /* We need it the other way around for BinkleyTerm */
  71. #define xcrc(crc,cp) ( crctab[((crc >> 8) & 255) ^ cp] ^ (crc << 8))
  72.  
  73. typedef unsigned bit;
  74. typedef unsigned int word;
  75. typedef unsigned char byte;
  76.  
  77. #define fallthrough
  78.  
  79.  
  80. #define LOCAL        static
  81. #define empty_str    ""
  82.  
  83. struct FILEINFO
  84. {
  85.    char rsvd[21];
  86.    char attr;
  87.    long time;
  88.    long size;
  89.    char name[13];
  90.    char nill;
  91. };
  92.  
  93. typedef struct pnums
  94. {
  95.    char num[20];
  96.    char pre[20];
  97.    char suf[20];
  98.    int len;
  99.    struct pnums *next;
  100. } PN_TRNS;
  101.  
  102. typedef struct mnums
  103. {
  104.    byte mdm;
  105.    char pre[50];
  106.    char suf[50];
  107.    struct mnums *next;
  108. } MDM_TRNS;
  109.  
  110.  
  111. struct prototable
  112. {
  113.    char first_char;
  114.    int entry;
  115. };
  116.  
  117. typedef struct j_types
  118. {
  119.    char j_match[30];
  120.    struct j_types *next;
  121. } J_TYPES, *J_TYPESP;
  122.  
  123. /* mailtypes bit field definitions */
  124. #define MAIL_CRASH   0x0001
  125. #define MAIL_HOLD    0x0002
  126. #define MAIL_DIRECT  0x0004
  127. #define MAIL_NORMAL  0x0008
  128. #define MAIL_REQUEST 0x0010
  129. #define MAIL_WILLGO  0x0020
  130. #define MAIL_TRIED   0x0040
  131. #define MAIL_TOOBAD  0x0080
  132. #define MAIL_UNKNOWN 0x0100
  133. #define MAIL_RES0200 0x0200
  134. #define MAIL_RES0400 0x0400
  135. #define MAIL_RES0800 0x0800
  136. #define MAIL_RES1000 0x1000
  137. #define MAIL_RES2000 0x2000
  138. #define MAIL_RES4000 0x4000
  139. #define MAIL_RES8000 0x8000
  140.  
  141. typedef struct finfo
  142. {
  143.    int info_size;
  144.    char curr_fossil;
  145.    char curr_rev;
  146.    char far *id_string;
  147.    int ibufr;
  148.    int ifree;
  149.    int obufr;
  150.    int ofree;
  151.    byte swidth;
  152.    byte sheight;
  153.    char baud;
  154. } FOSINFO;
  155.  
  156. typedef int (*PFI3) (int, int, int, int);
  157.  
  158. typedef struct {
  159.    unsigned char background;
  160.    unsigned char settings;
  161.    unsigned char history;
  162.    unsigned char hold;
  163.    unsigned char call;
  164.    unsigned char file;
  165.    unsigned char calling;
  166.    unsigned char popup;
  167. } COLORS;
  168.  
  169. /*--------------------------------------------------------------------------*/
  170. /* Sealink and Telink header structure                                      */
  171. /*--------------------------------------------------------------------------*/
  172. #define HEADER_NAMESIZE  17
  173.  
  174. struct zero_block
  175. {
  176.    long size;                                    /* file length                    */
  177.    long time;                                    /* file date/time stamp           */
  178.    char name[HEADER_NAMESIZE];                   /* original file name             */
  179.    char moi[15];                                 /* sending program name           */
  180.    char noacks;                                  /* for SLO                        */
  181. };
  182.  
  183.  
  184. /*--------------------------------------------------------------------------*/
  185. /* NodeList.Sys                                                             */
  186. /*                                                                          */
  187. /*    NET > 0 and NODE > 0    Normal node                                   */
  188. /*                                                                          */
  189. /*    NET > 0 and NODE <= 0   Host node                                     */
  190. /*                               Net host........node== 0                   */
  191. /*                               Regional host...node==-1                   */
  192. /*                               Country host....node==-2                   */
  193. /*                                                                          */
  194. /*    NET == -1      Nodelist.Sys revision                                  */
  195. /*                                                                          */
  196. /*    NET == -2      Nodelist statement                                     */
  197. /*                                                                          */
  198. /*--------------------------------------------------------------------------*/
  199.  
  200.  
  201. /*--------------------------------------------------------------------------*/
  202. /* NODE                                                                     */
  203. /* Please note the NewStyle structure (below).  Time is running out for the */
  204. /* existing `_node' structure!  Opus currently uses the old style node      */
  205. /* structure, but not for long.                                             */
  206. /*--------------------------------------------------------------------------*/
  207. struct _node
  208. {
  209.    int number;                                   /* node number                                   */
  210.    int net;                                      /* net number                                    */
  211.    int cost;                                     /* cost of a message to this
  212.                                                   * node                */
  213.    int rate;                                     /* baud rate                                     */
  214.    char name[20];                                /* node name                                     */
  215.    char phone[40];                               /* phone number                                  */
  216.    char city[40];                                /* city and state                                */
  217. };
  218.  
  219.  
  220. /*--------------------------------------------------------------------------*/
  221. /* THE NEWSTYLE NODE LIST IS NOW BEING USED BY OPUS 1.10                    */
  222. /*--------------------------------------------------------------------------*/
  223. struct _newnode
  224. {
  225.    word NetNumber;
  226.    word NodeNumber;
  227.    word Cost;                                    /* cost to user for a
  228.                                                   * message */
  229.    byte SystemName[34];                          /* node name */
  230.    byte PhoneNumber[40];                         /* phone number */
  231.    byte MiscInfo[30];                            /* city and state */
  232.    byte Password[8];                             /* WARNING: not necessarily
  233.                                                   * null-terminated */
  234.    word RealCost;                                /* phone company's charge */
  235.    word HubNode;                                 /* node # of this node's hub
  236.                                                   * or 0 if none */
  237.    byte BaudRate;                                /* baud rate divided by 300 */
  238.    byte ModemType;                               /* RESERVED for modem type */
  239.    word NodeFlags;                               /* set of flags (see below) */
  240.    word NodeFiller;
  241. };
  242.  
  243.  
  244. /*------------------------------------------------------------------------*/
  245. /* Values for the `NodeFlags' field                                       */
  246. /*------------------------------------------------------------------------*/
  247. #define B_hub      0x0001
  248. #define B_host     0x0002
  249. #define B_region   0x0004
  250. #define B_zone     0x0008
  251. #define B_CM       0x0010
  252. #define B_ores1    0x0020
  253. #define B_ores2    0x0040
  254. #define B_ores3    0x0080
  255. #define B_ores4    0x0100
  256. #define B_ores5    0x0200
  257. #define B_res1     0x0400
  258. #define B_res2     0x0800
  259. #define B_res3     0x1000
  260. #define B_res4     0x2000
  261. #define B_res5     0x4000
  262. #define B_res6     0x8000
  263.  
  264.  
  265.  
  266. /*--------------------------------------------------------------------------*/
  267. /* Nodelist.Idx                                                             */
  268. /* (File is terminated by EOF)                                              */
  269. /*--------------------------------------------------------------------------*/
  270.  
  271. struct _ndi
  272. {
  273.    int node;                                     /* node number  */
  274.    int net;                                      /* net number   */
  275. };
  276.  
  277.  
  278. /*--------------------------------------------------------------------------*/
  279. /* QuickBBS 2.00 QNL_IDX.BBS                                                */
  280. /* (File is terminated by EOF)                                              */
  281. /*--------------------------------------------------------------------------*/
  282.  
  283. struct QuickNodeIdxRecord
  284. {
  285.    int QI_Zone;
  286.    int QI_Net;
  287.    int QI_Node;
  288.    byte QI_NodeType;
  289. };
  290.  
  291.  
  292. /*--------------------------------------------------------------------------*/
  293. /* QuickBBS 2.00 QNL_DAT.BBS                                                */
  294. /* (File is terminated by EOF)                                              */
  295. /*--------------------------------------------------------------------------*/
  296.  
  297. struct QuickNodeListRecord
  298. {
  299.    byte QL_NodeType;
  300.    int QL_Zone;
  301.    int QL_Net;
  302.    int QL_Node;
  303.    byte QL_Name[21];                             /* Pascal! 1 byte count, up
  304.                                                   * to 20 chars */
  305.    byte QL_City[41];                             /* 1 + 40 */
  306.    byte QL_Phone[41];                            /* 1 + 40 */
  307.    byte QL_Password[9];                          /* 1 + 8 */
  308.    word QL_Flags;                                /* Same as flags in new
  309.                                                   * nodelist structure */
  310.    int QL_BaudRate;
  311.    int QL_Cost;
  312. };
  313.  
  314.  
  315. /* SEAdog NETLIST.DOG format */
  316. struct netls
  317. {
  318.    int netnum;
  319.    char netname[14];
  320.    char netcity[40];
  321.    int havehost;
  322.    int nethost;
  323.    int havegate;
  324.    int netgate;
  325.    long nodeptr;
  326.    int numnodes;
  327. };
  328.  
  329. /* SEAdog NODELIST.DOG format */
  330. struct nodels
  331. {
  332.    int nodenum;
  333.    char nodename[14];
  334.    char nodecity[40];
  335.    char nodephone[40];
  336.    int havehub;
  337.    int nodehub;
  338.    int nodecost;
  339.    int nodebaud;
  340. };
  341.  
  342. /* Things most nodelists don't contain, but Binkley likes to have */
  343. struct extrastuff
  344. {
  345.    char password[8];
  346.    unsigned int flags1;
  347.    byte modem;
  348.    char extra[5];                                /* for future expansion */
  349. };
  350.  
  351. typedef struct
  352. {
  353.    unsigned char header;
  354.    unsigned char block_num;
  355.    unsigned char block_num_comp;
  356.    unsigned char data_bytes[128];
  357.    unsigned char data_check[2];
  358.    } XMDATA, *XMDATAP;
  359.  
  360. typedef struct
  361. {
  362.    unsigned char header;
  363.    unsigned char block_num;
  364.    unsigned char block_num_comp;
  365.    long filelength;
  366.    union
  367.    {
  368.    struct
  369.       {
  370.       unsigned time;
  371.       unsigned date;
  372.       } twowords;
  373.  
  374.    struct 
  375.       {
  376.       unsigned long timedate;
  377.       } oneword;
  378.    } filetime;
  379.    char filename[16];
  380.    char nullbyte;
  381.    char sendingprog[15];
  382.    char noacks;
  383.    unsigned char crcmode;
  384.    char fill[86];
  385.    unsigned char data_check[2];
  386.    } TLDATA, *TLDATAP;
  387.  
  388. typedef struct
  389. {
  390.    unsigned char header;
  391.    unsigned char block_num;
  392.    unsigned char block_num_comp;
  393.    long filelength;
  394.    unsigned long timedate;
  395.    char filename[17];
  396.    char sendingprog[15];
  397.    char SLO;
  398.    char Resync;
  399.    char MACFLOW;
  400.    char fill[85];
  401.    unsigned char data_check[2];
  402.    } SEADATA, *SEADATAP;
  403.  
  404. typedef struct {
  405.    unsigned int SEAlink:1; /* Can do SEAlink */
  406.    unsigned int SLO:1;     /* Can do SEAlink with Overdrive */
  407.    unsigned int Resync:1;  /* Can do SEAlink with Resync */
  408.    unsigned int MacFlow:1; /* Can do SEAlink with Macintosh flow control */
  409.    unsigned int do_CRC:1;  /* Should do CRC instead of checksum */
  410.    unsigned int TeLink:1;  /* We saw a TeLink header */
  411. } TRANS, *TRANSP;
  412.  
  413. typedef struct {
  414.    char *state_name;
  415.    int (*state_func) ();
  416. } STATES, *STATEP;
  417.  
  418. typedef struct {
  419.    TRANS options;    /* Transfer options */
  420.    int result;       /* Result from last operation */
  421.    int sub_results;  /* Extra result codes */
  422.    long T1;          /* General purpose timer */
  423.    long T2;          /* General purpose timer */
  424.    int Window;       /* SEAlink window size */
  425.    long SendBLK;     /* Current block to be sent */
  426.    long NextBLK;     /* Next block we will try to send */
  427.    long ACKBLK;      /* Block that was last ACK'd */
  428.    long LastBlk;     /* Last block in file */
  429.    long ARBLK;       /* Used in ACK Check calculations */
  430.    long WriteBLK;    /* Block number to write to file */
  431.    long filelen;     /* Length of file being sent */
  432.    long curr_byte;   /* Current byte offset of sending or receiving */
  433.    long prev_bytes;  /* Bytes that we are resyncing over */
  434.    long total_blocks;/* Total number of blocks in file to be received */
  435.    long resync_block;/* Block number we received to resync to */
  436.    int NumNAK;       /* Number of NAK's received this block */
  437.    int ACKsRcvd;     /* Number of ACK's received since file start */
  438.    int ACKST;        /* Current state of the ack/nak state variable */
  439.    int tries;        /* Number of tries thus far */
  440.    int goodfile;     /* 0 if file was bad, 1 if file was good */
  441.    int datalen;      /* Length of data in this block */
  442.    int recblock;     /* Block number received */
  443.    int sent_ACK;     /* Whether or not we sent an ACK already */
  444.    int tot_errs;     /* Total number of errors */
  445.    unsigned char ARBLK8;   /* 8 bit value of ARBLK */
  446.    unsigned char blocknum; /* 8 bit value of SendBLK */
  447.    unsigned char check;    /* checksum value */
  448.    unsigned char save_header; /* Received header from first block */
  449.    int CHR;                /* General purpose receive character */
  450.    union                   /* File date and time in Telink or SEAlink format */
  451.    {
  452.    struct
  453.       {
  454.       unsigned time;
  455.       unsigned date;
  456.       } twowords;
  457.  
  458.    struct 
  459.       {
  460.       unsigned long timedate;
  461.       } oneword;
  462.    } save_filetime;
  463.    char received_name[20]; /* Received filename from Telink or SEAlink */
  464.    char m7name[12];        /* Filename in Modem7 format */
  465.    char *filename;         /* The filename to be sent or received */
  466.    char *path;             /* Just the path to the file to be sent/received */
  467.    char *fptr;             /* Pointer into character fields */
  468.    char *temp_name;        /* Temporary name for receiving */
  469.    FILE *file_pointer;     /* The pointer for read/write/seek operations */
  470.    unsigned char header;
  471.    unsigned char block_num;
  472.    unsigned char block_num_comp;
  473.    unsigned char data[128];
  474.    unsigned char data_check[2];
  475. } XMARGS, *XMARGSP;
  476.  
  477. #define DID_RESYNC 1
  478.  
  479. typedef struct {
  480.    int tries;
  481.    int barklen;
  482.    int barkok;
  483.    long T1;
  484.    int nfiles;
  485.    char *inbound;
  486.    char *filename;
  487.    char barkpacket[128];
  488.    char *barkpw;
  489.    char *barktime;
  490. } BARKARGS, *BARKARGSP;
  491.  
  492. /*--------------------------------------------------------------------------*/
  493. /* FIDONET ADDRESS STRUCTURE                                                */
  494. /*--------------------------------------------------------------------------*/
  495. typedef struct _ADDRESS
  496. {
  497.    word  Zone;
  498.    word  Net;
  499.    word  Node;
  500.    word  Point;
  501.    char  *Domain;
  502. } ADDR;
  503.  
  504. typedef struct mail {
  505.    ADDR mail_addr;
  506.    unsigned int mailtypes;
  507.    struct mail *next;
  508.    struct mail *prev;
  509. } MAIL, *MAILP;
  510.  
  511. typedef int (*nfunc) (ADDR *, int);
  512.  
  513. #define  MAX_EXTERN         8
  514. #define  ALIAS_CNT         15
  515.  
  516. /*--------------------------------------------------------------------------*/
  517. /* Matrix mask                                                              */
  518. /* Undefined bits are reserved by Opus                                      */
  519. /*--------------------------------------------------------------------------*/
  520. #define NO_TRAFFIC 0x0001
  521. #define LOCAL_ONLY 0x0002
  522. #define OPUS_ONLY  0x0004
  523.  
  524. #define NO_EXITS   0x2000
  525. #define MAIL_ONLY  0x4000
  526. #define TAKE_REQ   0x8000
  527.  
  528.  
  529. /*--------------------------------------------------------------------------*/
  530. /* Message packet header                                                    */
  531. /*--------------------------------------------------------------------------*/
  532.  
  533. #define PKTVER       2
  534.  
  535.  /*--------------------------------------------*/
  536.  /* POSSIBLE VALUES FOR `product' (below)      */
  537.  /* */
  538.  /* NOTE: These product codes are assigned by  */
  539.  /* the FidoNet<tm> Technical Stardards Com-   */
  540.  /* mittee.  If you are writing a program that */
  541.  /* builds packets, you will need a product    */
  542.  /* code.  Please use ZERO until you get your  */
  543.  /* own.  For more information on codes, write */
  544.  /* to FTSC at 115/333.                        */
  545.  /* */
  546.  /*--------------------------------------------*/
  547. #define isFIDO       0
  548. #define isSPARK      1
  549. #define isSEA        2
  550. #define isSlick      4
  551. #define isOPUS       5
  552. #define isHENK       6
  553. #define isTABBIE     8
  554. #define isWOLF       10
  555. #define isQMM        11
  556. #define isFD         12
  557. #define isGSPOINT    19
  558. #define isBGMAIL     20
  559. #define isCROSSBOW   21
  560. #define isDBRIDGE    26
  561. #define isBITBRAIN   0x1b
  562. #define isDAISY      30
  563. #define isPOLAR      31
  564. #define isTHEBOX     32
  565. #define isWARLOCK    33
  566. #define isTCOMM      35
  567. #define isBANANNA    36
  568. #define isAPPLE      38
  569. #define isCHAMELEON  39
  570. #define isMAJIK      40
  571. #define isDOMAIN     47
  572. #define isLESROBOT   48
  573. #define isROSE       49
  574. #define isPARAGON    50
  575. #define isBINKST     51
  576. #define isSTARNET    52
  577. #define isQUICKBBS   54
  578. #define isPBBS       56
  579. #define isTRAPDOOR   57
  580. #define isWELMAT     58
  581. #define isTIMS       66
  582. #define isISIS       67
  583.  
  584.  
  585. struct _pkthdr
  586. {
  587.         int orig_node;          /* originating node               */
  588.         int dest_node;          /* destination node               */
  589.         int year;               /* 0..99  when packet was created */
  590.         int month;              /* 0..11  when packet was created */
  591.         int day;                /* 1..31  when packet was created */
  592.         int hour;               /* 0..23  when packet was created */
  593.         int minute;             /* 0..59  when packet was created */
  594.         int second;             /* 0..59  when packet was created */
  595.         int rate;               /* destination's baud rate        */
  596.         int ver;                /* packet version                 */
  597.         int orig_net;           /* originating network number     */
  598.         int dest_net;           /* destination network number     */
  599.         char product;           /* product type                   */
  600.         char serial;            /* serial number (some systems)   */
  601.  
  602.    /* ------------------------------ */
  603.    /* THE FOLLOWING SECTION IS NOT   */
  604.    /* THE SAME ACROSS SYSTEM LINES:  */
  605.    /* ------------------------------ */
  606.  
  607.         byte password[8];       /* session/pickup password        */
  608.         int  orig_zone;         /* originating zone               */
  609.         int  dest_zone;         /* Destination zone               */
  610.         byte B_fill2[16];
  611.         long B_fill3;
  612. };
  613.  
  614.  
  615.  
  616.  
  617. /*--------------------------------------------------------------------------*/
  618. /* WaZOO                                                                    */
  619. /*--------------------------------------------------------------------------*/
  620.  
  621. #ifdef WAZOO_SECTION
  622.  
  623. #ifndef ACK
  624. #define ACK    0x06
  625. #endif
  626.  
  627. #ifndef NAK
  628. #define NAK    0x15
  629. #endif
  630.  
  631. #ifndef ENQ
  632. #define ENQ    0x05
  633. #endif
  634.  
  635. #ifndef YOOHOO
  636. #define YOOHOO 0x00f1
  637. #endif
  638.  
  639. #ifndef  TSYNC
  640. #define  TSYNC 0x00ae
  641. #endif
  642.  
  643. struct _Hello
  644. {
  645.    word signal;                                  /* always 'o'     (0x6f)                   */
  646.    word hello_version;                           /* currently 1    (0x01)                   */
  647.    word product;                                 /* product code                            */
  648.    word product_maj;                             /* major revision of the
  649.                                                   * product           */
  650.    word product_min;                             /* minor revision of the
  651.                                                   * product           */
  652.    char my_name[60];                             /* Other end's name                        */
  653.    char sysop[20];                               /* sysop's name                            */
  654.    word my_zone;                                 /* 0== not supported                       */
  655.    word my_net;                                  /* out primary net number                  */
  656.    word my_node;                                 /* our primary node number                 */
  657.    word my_point;                                /* 0== not supported                       */
  658.    byte my_password[8];                          /* ONLY 6 CHARACTERS ARE
  659.                                                   * SIGNIFICANT !!!!! */
  660.    byte reserved2[8];                            /* reserved by Opus                        */
  661.    word capabilities;                            /* see below                               */
  662.    byte reserved3[12];                           /* available to non-Opus
  663.                                                   * systems by prior  */
  664.    /* "approval" of 124/108.                  */
  665. };                                               /* size 128 bytes */
  666.  
  667.  
  668. /*--------------------------------------------------------------------------*/
  669. /* YOOHOO<tm> CAPABILITY VALUES                                             */
  670. /*--------------------------------------------------------------------------*/
  671. #define Y_DIETIFNA 0x0001
  672. #define FTB_USER   0x0002
  673. #define ZED_ZIPPER 0x0004
  674. #define ZED_ZAPPER 0x0008
  675. #define DOES_IANUS 0x0010
  676. #define Bit_5      0x0020
  677. #define Bit_6      0x0040
  678. #define Bit_7      0x0080
  679. #define Bit_8      0x0100
  680. #define Bit_9      0x0200
  681. #define Bit_a      0x0400
  682. #define Bit_b      0x0800
  683. #define Bit_c      0x1000
  684. #define Bit_d      0x2000
  685. #define DO_DOMAIN  0x4000
  686. #define WZ_FREQ    0x8000
  687.  
  688. #endif
  689.  
  690. /* END OF FILE: bink.h */
  691.