home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / BOUT / BT2404SC.ZIP / BINK.H next >
C/C++ Source or Header  |  1990-07-28  |  26KB  |  701 lines

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