home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / bos2_xr5.zip / doc / xe_user.doc < prev   
Text File  |  1997-06-09  |  149KB  |  4,246 lines

  1.  
  2.                    User documentation for Binkley 2.60 XE
  3.                   ========================================
  4.  
  5.  
  6. Binkley 2.60 original version is (c) Vince Perriello and available at
  7. 2:2474/400. Filenames: B???_260.ZIP (??? = DOS, OS2, W32 or SRC).
  8.  
  9. Modifications were done by (in alphabetical order) :
  10.   Mike Burgett,           1:215/705     (MB)
  11.   Paul Edwards,           3:711/934     (PE)
  12.   Carsten Ellermann,      2:2432/215    (CE)
  13.   Tobias Ernst,           2:2476/418    (TE)
  14.   Carlos Fernandez Sanz   2:341/70      (CFS)
  15.   Rudolf Heeb,            2:2464/44     (HR)
  16.   Robert Hoerner,         2:2476/7      (RH)
  17.   jan n. klug,            2:2448/610    (JNK)
  18.   Juergen Loh,            2:2448/823    (JL)
  19.   Steffen Motzer,         2:2471/1071.3 (SM)
  20.   Martin M. Pedersen,     2:238/45      (MMP)
  21.   Michael Reinsch,        2:2474/14     (MR)
  22.   Tom Schlangen,          2:2450/10     (TS)
  23.   Matthias Tichy,         2:2433/955    (MT)
  24.   Thomas J. Waldmann,     2:2474/400    (TJW)
  25.   Alex Woick,             2:244/1351    (AW)
  26.  
  27. This BT-XE version is named BT 2.60XE/Gamma-5.
  28.  
  29. Please refer to this version string if you speak of this modified version.
  30. To be short, we abbreviate this as BT-XE below...
  31.  
  32. Standard disclaimer: regard this as ALPHA/BETA/GAMMA software.
  33.  
  34. We can NOT guarantee that this software has no bugs (but we use it ourselves on
  35. our own risk). So if you use it, use it on YOUR own risk, too ...
  36.  
  37. If you have any problem with this BT-XE version, please contact us!
  38.  
  39. Also, if you are a programmer and doing BT source code modifications /
  40. enhancements / bugfixes, too, please also contact us and work together with us
  41. on this great project!
  42.  
  43. If you like, visit our homepage in the InterNet at http://www.cc86.org/~btxe/.
  44.  
  45.  
  46.  
  47. Please read this:
  48.  
  49. Traps & Pitfalls when switching from older / other Binkley versions
  50. ===================================================================
  51.  
  52. - Modem responses are parsed cAsE-sensitive now, so "Ring" in your Binkley.Cfg
  53.   will NOT match any longer a "RING" sent by the modem !!!
  54.   Make sure to have your ModemConnect (and all other Modem... response
  55.   settings) / NoFilter statements EXACTLY, case-sensitively matching your
  56.   modem's responses
  57.  
  58. - You have either to do a FULL domain setup (Domain, DomainKludge, Address
  59.   z:n/n.p@domain) OR do not use domains AT ALL (no Domain, no DomainKludge,
  60.   only Address z:n/n.p). If you don't REALLY need domains, I advise you NOT to
  61.   use domains at all (it will look nicer and you will have less trouble).
  62.  
  63. - Please delete your BINKLEY.S?? files (in Binkley or TaskDir directory) before
  64.   installing a new version of BT-XE. If necessary, please also delete
  65.   BINKLEY.A?? and BINKLEY.D??.
  66.   Further, please delete the shared outbound dump of older versions:
  67.   BTRESCAN.DMP
  68.  
  69. - If you have 'ModemIgnore RINGING' in your config file then please change it
  70.   to 'ModemRing RINGING'.
  71.  
  72. - If you have 'ModemFailure OK' in your config file then please change it to
  73.   'ModemIgnore OK'.
  74.  
  75. - If you want to have nodelist access to behave as ever, then please add
  76.   'SysopNDX' to your config file.
  77.  
  78. - You should run 80x50 video mode to get the most out of BT-XE - for terminal
  79.   mode and chatting this is almost a "must" ...
  80.  
  81. - You should NOT run different BT-XE versions at the same time because of the
  82.   data format of the (shared outbound) file BTRESCAN.DMP has changed.
  83.  
  84. - You must set the read only attribute for the DOS overlayed executables.
  85.  
  86. - You maybe will see quite some transmission errors (resending, trouble, ...)
  87.   in the log now. This is not because BT got worse, but because they ARE logged
  88.   now. With older versions, they only appeared on the screen and vanished
  89.   shortly afterwards, but they were NOT logged. So the logging of errors is a
  90.   feature, not a bug.
  91.  
  92.  
  93.  
  94.  
  95. Tip from Hauke Hagenhoff, 2:2453/470
  96. ====================================
  97.  
  98. COM.SYS:
  99.  
  100. When using the original serial-port-driver for OS/2, COM.SYS, you will need to
  101. configure the port using the MODE command for having BinkleyTerm work all
  102. right.
  103.  
  104. The following setting is recommended:
  105.  
  106. MODE COMx:yyyyy,N,8,1,,TO=ON,XON=OFF,IDSR=OFF,ODSR=OFF,OCTS=ON,
  107.      DTR=HS,RTS=HS,BUFFER=ON
  108.  
  109.  (you need to enter this as ONE line!)
  110.  
  111. Where x is the COMx:-port to set and yyyyy the desired port speed.
  112.  
  113. Most important are the IDSR and ODSR-settings, if they are wrong, BT won't work
  114. properly. BUFFER=ON is to switch the FIFO-buffer on.
  115.  
  116.  
  117.  
  118.  
  119. Tip from Steffen Motzer, 2:2471/1071.3
  120. =======================================
  121.  
  122. You can pass the com-port from Bink-XE/2 to a DOS-BBS without using SIO:
  123.  
  124.  - If your version uses the internal async module, then put 'shareport' in
  125.    binkley.cfg - otherwise use siocomm.dll or the patched maxcomm.dll .
  126.  
  127.  - Use a fossil-driver that opens the com-port in OPEN_SHARE_DENYNONE mode:
  128.  
  129.     - Virtual Fossil Driver (COM):
  130.         ftp://ftp.leo.org/pub/comp/os/os2/leo/drivers/com/vfd055b.zip
  131.  
  132.     - vcfos (ISDN):
  133.         ftp://ftp.cfos.com/pub/cfos/ 
  134.  
  135. The DOS-BBS will be able to share the com-port with Bink-XE/2
  136.  
  137. Recommended mode command for OS/2 version with internal async routines:
  138.  
  139.   MODE com%TASK%:38400,n,8,1,to=on,xon=off,octs=on,dtr=on,rts=hs,buffer=on
  140.  
  141. No 'siomode' in binkley.cfg.
  142.  
  143.  
  144.  
  145.  
  146. History
  147. =======
  148.  
  149. Attention: Please read this section completely and thoroughly or you will run
  150.            into problems!!!
  151.  
  152.  
  153.  
  154. BT 2.60XE/Gamma-XR1
  155. =-=-=-=-=-=-=-=-=-=
  156.  
  157. Bug fixes
  158. ---------
  159.  
  160. HR: No system crash at requests of PW-protected files without password.
  161.  
  162.  
  163. MMP: fixed: buffer for screen not flushed
  164.  
  165.   I don't think the distributed version of Binkley had this bug, as IBMC was
  166.   treated specially. But Watcom had the same problem as IBMC. The number of
  167.   minutes left is written to the screen through a file which is buffered. This
  168.   fucks up the display, if the buffer is not flushed because the other status
  169.   information was written directly to the display bypassing the buffer. Now the
  170.   buffer is flushed for both the IBMC and the Watcom versions.
  171.  
  172.  
  173. MMP: Fix for ISDN caller ID using ZyXEL 2864I
  174.  
  175.   When RING was seen and Binkley was about to send the answer string, it would
  176.   wait until the modem became silent for a fraction of a second. In this delay,
  177.   Binkley would read characters from the modem, and silently throw them away.
  178.   The caller ID on ISDN lines was lost in this way! This is fixed, and input
  179.   from modem in this period, is now logged as usual. Setting RingWait to 2,
  180.   would also have solved this particular problem, but there is no need to wait.
  181.  
  182.  
  183. MMP: Changed config file parser
  184.  
  185.   The parser used to identify keywords would recognize "CostLogThingy" as
  186.   "CostLog"; i.e. allowing the input word to be longer than the keyword. This
  187.   may sound okay, but it means that you cannot have two keywords where the
  188.   first is a prefix of the other. Also, you cannot define variables on the
  189.   command line where the name matches a keyword. This is changed now, and the
  190.   parser requires the words to be of equal length.
  191.  
  192.  
  193. MMP: Source code fixes important to Watcom C only
  194.  
  195.   1. Watcom C uses buffered output as IBMC does, and this caused problems with
  196.      display updates while transferring files in terminal mode. The real
  197.      problem is that buffered writes are mixed with unbuffered display output.
  198.      The work-around for the IBM compiler has been adopted for Watcom (flushing
  199.      buffers).
  200.  
  201.   2. The signal stuff used to handle Ctrl-C/Break didn't work with Watcom. This
  202.      seems to be a Watcom problem; signal(SIGBREAK,SIG_IGN) is broken. The
  203.      solution is to use signal(SIGBREAK,handler) instead, letting handler()
  204.      reinstall itself on SIGBREAK and do nothing else.
  205.  
  206.  
  207. TJW: Fixed Hydra buffer management bug
  208.  
  209.   This caused memory corruption in original BT 2.60 release. In OS/2 on my
  210.   system this bug showed as funny attributes on the upper "windows" of BT
  211.   screen. But the effects may have varied widely depending on compiler and
  212.   system ...
  213.  
  214.  
  215. TJW: Error message for "COM0?.SYS" changed to "COM.SYS"
  216.  
  217.  
  218. TJW: Wrong HPFS file timestamp used
  219.  
  220.   Fixed bug caused by using wrong HPFS file timestamp in SCD/EVT and file
  221.   update request handling. Now, the "last file modification" timestamp is used.
  222.   Before, "last file access" timestamp was used - which was definitely WRONG
  223.   for HPFS. This caused problems on HPFS only, because FAT file system does not
  224.   have multiple different file timestamps like HPFS (file creation, last file
  225.   access, last file modification).
  226.  
  227.  
  228. TJW: Zoomed outbound view "Age" bug fixed
  229.  
  230.   Weird ages of some thousand days were displayed - fixed!
  231.  
  232.  
  233. TJW: Fixed cosmetical problem with password failure msg
  234.  
  235.   "Trash" at end of PW: "His='', Ours='XXXXXXXX<trash>'
  236.  
  237.  
  238. TJW: FREQ response packet fixes:
  239.  
  240.   - time string had incorrect printf format
  241.   - time string had incorrect FTS format (should be 2 blanks in the mid!)
  242.   - put in session password into freq response packet as packet password (well,
  243.     this isn't correct in every case, but better than no password at all).
  244.   - put in destination NODE address, too. This was forgotten ...
  245.  
  246.  
  247.  
  248. New features
  249. ------------
  250.  
  251. CE: AKAs
  252.  
  253.   Maximum number of AKAs raised from original 25 to BT-XE value of 100 AKAs.
  254.  
  255.  
  256. CE: New function "ConditionalPoll"
  257.  
  258.   Multi-AKA and boolean operation support implemented by Thomas Waldmann.
  259.  
  260.   ConditionalPoll (also known as "FreePoll" from Arjen G. Lentz, who invented
  261.   this in his mailer XENIA) allows an Uplink (you) to reject a call from a
  262.   Downlink, if there is less mail for him than the configured minimum.
  263.  
  264.   The syntax for this keyword:
  265.  
  266.     ConditionalPoll { and | or } <aka> <minsize> <maxdeltatime> [<callerid>]
  267.  
  268.   This function will only work with ISDN or a modem that reports the caller ID.
  269.   You'll also need to configure ModemCID (to tell Binkley where to find the
  270.   caller ID) and CallerID for each AKA you specify (to tell Binkley the node's
  271.   caller ID) (see below). Alternativly you can also add the number as the last
  272.   parameter in ConditionalPoll. If you need more than one CallerID for one
  273.   node, DO NOT use multiple ConditionalPoll keywords but multiple CallerID
  274.   keywords.
  275.  
  276.   You can list as many ConditionalPoll entries as fit into memory.
  277.  
  278.   How it does work: the downlink will call you, Binkley gets the caller-ID (eg.
  279.   "57313340"), searches ALL ConditionalPoll entries for matching addresses and
  280.   checks if the condition (minimum outbound size for this AKA) says "reject
  281.   call" or "accept call" for each AKA.
  282.  
  283.   The exact condition is: if outbound size <= <minsize> * 1024 then reject.
  284.   <minsize> = 0 rejects a call only if there is really NOTHING (0 bytes) on
  285.   hold.
  286.  
  287.   Each result (accept=TRUE or accept=FALSE) is evaluated (together with the
  288.   result of previous calculation for this number) with the according boolean
  289.   operation "AND" or "OR" to calculate the total result.
  290.  
  291.   The boolean operation listed with the first configured ConditionalPoll entry
  292.   matching a specific number does not care, you can use "or" or "and" - it
  293.   makes no difference.
  294.  
  295.   If total result is TRUE, call will be accepted. If total result is FALSE,
  296.   call will be rejected.
  297.  
  298.   To reject a call Binkley sends the string configured with "Reject" to the
  299.   modem. To accept a call, Binkley sends the answer string (normal behaviour).
  300.  
  301.   For downlinks who want to make a file request or send an important crash mail
  302.   immediately, Binkley builds a zero byte size file in the outbound called
  303.   "*.TRX" for each user. If the downlink gets a "call reject", he/she can call
  304.   again within MaxDeltaT seconds and the call will be handled normally.
  305.  
  306.   To configure the function use:
  307.  
  308.   Accept call of 2:2474/405 if size for 2:2474/405>=100KB or 2nd call within 30
  309.   seconds:
  310.  
  311.                     Or/And AKA [3..5D]  MinSize[KB]  MaxDeltaT[s]
  312.   ConditionalPoll   Or     2:2474/405   100          30
  313.  
  314.   Accept call of 2:2474/405 if (size for 2:2474/403>=20KB or 2nd call within 30
  315.   seconds) *AND* (size for 21:492/4003 >= 10KB or 2nd call within 20s):
  316.  
  317.                     Or/And AKA [3..5D]  MinSize[KB]  MaxDeltaT[s]
  318.   ConditionalPoll   Or     2:2474/403    20          30
  319.   ConditionalPoll   And    21:492/4003   10          20
  320.  
  321.   Accept call of 2:2474/403 if (size for 2:2474/403>=100KB or 2nd call within
  322.   30 seconds) *OR* (size for 21:492/4003 >= 50KB or 2nd call within 20s):
  323.  
  324.                     Or/And AKA [3..5D]  MinSize[KB]  MaxDeltaT[s]
  325.   ConditionalPoll   Or     2:2474/403   100          30
  326.   ConditionalPoll   Or     21:492/4003   50          20
  327.  
  328.   To reject a call, define once:
  329.  
  330.         Reject <Modem command string|>
  331.  
  332.   For a ZyXEL Elite 2864I use:
  333.  
  334.         Reject ATH1|ATH0|
  335.  
  336.   For ELINK 310 use:
  337.  
  338.         Reject AT\\K|
  339.         ATS21.2=    (shows caller number after RING - tested with EPROM 1.36)
  340.  
  341.   For ELINK 301 use:
  342.  
  343.         Reject AT\\K|     (since EPROM version 2.20 of 11.5.94)
  344.         AT\O5            (show caller number after RING, since v2.12)
  345.  
  346.   Restriction for ELINKs: until a ROM is released which supports a "Call
  347.   rejected" response code, you will only be able to reject incoming calls, but
  348.   not to treat being rejected yourself (you will just receive "NO CARRIER" if
  349.   you are rejected). You may configure a very LOW MaxDeltaT value to handle
  350.   this (not nice, but possible) - see also binkley event file A= parameter. But
  351.   your links should be aware that they will flag you undialable if they dial
  352.   too often without getting a connection.
  353.  
  354.  
  355. CE: New keyword "ModemReject" to identify a rejection response from the modem.
  356. CE: New keyword "AfterCallOut" to send an AT???-command to get a cause value
  357.     from ISDN adapters like ZyXEL 2864I.
  358.  
  359.   There are two different ways to see if a call is rejected:
  360.    1) The ISDN adapter sends "Busy/Cause=34Be" in one line.
  361.    2) You send an AT??? command and get an answer like "Cause = Call reject".
  362.  
  363.   For 1) you need only "ModemReject <Rejectstring>", for 2) you need the
  364.   Rejectstring and "AfterCallOut <Lines> <AT command>".
  365.  
  366.   AfterCallOut needs a number of lines (of output caused by AT command) and an
  367.   AT command which leads to a report with the cause value.
  368.  
  369.   After a rejected outbound call, all mail to this AKA will change to NORMAL
  370.   flavour. Now you have an easy way to ping your Uplink, if he knows the
  371.   feature of Freepoll<tm>/ConditionalPoll.
  372.  
  373.   ModemReject will only work with automatic call not with manual calls!
  374.  
  375.   For ZyXEL 2864I i use "AfterCallOut 9 ATI3|" and "ModemReject Call reject".
  376.   For CFOS you need only "ModemReject /Cause=34Be". For ELINK, there is no such
  377.   possibility until now.
  378.  
  379.  
  380. MT: New config verb "ReInitTime"
  381.  
  382.   This lets you specify the time between modem initializations.
  383.  
  384.   ReInitTime 10 -> init the modem every 10 minutes. Valid range for this
  385.   setting is 1 .. 10 only.
  386.  
  387.   If you specify 0, you will get 1 minute. If you specify >10, you will get 10
  388.   minutes. This is due to a restriction in BT's timer routine and may be
  389.   removed in a later version of BT-XE.
  390.  
  391.  
  392. MT: New config verb "ReadHoldTime"
  393.  
  394.   This lets you specify the time between automatic outbound rescans.
  395.   ReadHoldTime 10 -> rescan outbound 10 minutes. Valid range is 1...
  396.  
  397.  
  398. MT: Support for external request processors (ERPs) with SRIF
  399.  
  400.   To use this, specify in Binkley.Cfg:
  401.  
  402.     SRIF e:\maxfrq\maxfreq $s
  403.  
  404.   The $s parameter will be replaced by the SRIF filename by BT-XE. The SRIF
  405.   file will be called "SRIF.Txx", xx=TaskNumber in Hex.
  406.  
  407.   Known limitations:
  408.  
  409.   The external SRIF erp is only invoked in an EMSI/WaZOO session. Also when
  410.   JANUS is used, the SRIF ERP is not invoked.
  411.  
  412.   The generated SRIF is compatible with the SRIF 1.02 Standard. But not all of
  413.   the optional statements are included.
  414.  
  415.  
  416. HR: New config verb "ShowAlive"
  417.  
  418.   Generates a file I_ALIVE.xx (xx=Tasknumber) in the "Flags" directory. If the
  419.   file exists, nothing is done except checking it for existance. If it does not
  420.   exist, it will be created by BT-XE.
  421.  
  422.   Check for existance is done each minute. So external programs can check if
  423.   BT-XE is alive by deleting this flag file and waiting if it is re-created in
  424.   a minute. If BT-XE terminates, it deletes the flag file itself.
  425.  
  426.  
  427. HR: Enhanced user dialogue with Alt-G (get file[s])
  428.  
  429.   BT-XE will show destination system name after you entered dest address.
  430.  
  431.  
  432. HR: Enhanced user dialogue with Alt-S (send file[s])
  433.  
  434.   BT-XE will show destination system name after you entered dest address. If
  435.   you enter a wildcard filename, it will use the first matching file. If no
  436.   (matching) file is found, Alt-S remains in filename input mode and you can
  437.   try again. No unrecognized typos any longer!
  438.  
  439.   With Win32 version of BT-XE, "\" works with german Windows NT, too.
  440.  
  441.  
  442. HR: Enhanced user dialogue with Alt-S/Alt-G
  443.  
  444.   After asking "More requests"/"More sends", the same address is used again if
  445.   you answer "y". To specify a new address, enter "o" for (o)ther node.
  446.  
  447.  
  448. HR: Enhanced user dialogue with Alt-S (send file[s])
  449.  
  450.   Support filename expansion like 4OS2/4DOS using TAB for expansion.
  451.  
  452.   Example: type on my machine: c:\d<TAB>\bi<TAB>\HR<TAB><TAB>
  453.             get on my machine: c:\dowork\binkley\HR0418021.DOC
  454.  
  455.  
  456. MMP: Implemented support for environment variables
  457.  
  458.   If a sequence of letters, digits, and underscores are enclosed between %'s,
  459.   it is no longer handled as a comment, but as an environment variable.
  460.  
  461.   Otherwise, % is still handled as a comment. Also, the configuration file
  462.   parser now allows configuration verbs to be indented. (TJW had implemented
  463.   support for environment variables, too).
  464.  
  465.  
  466. MMP: Conditional inclusion of lines based on the task number
  467.  
  468.   If a line begins with a decimal number, it is compared with the task number
  469.   as set by the TASK environment variable (e.g. TASK=n on command line). This
  470.   somehow offers the same functionality as [Common] and [Task n], but is
  471.   simpler to use for single line differences.
  472.  
  473.   Example: 1 Init  |AT&FZ|
  474.            3 Init  ATZ|~~ATH0S27=17|
  475.  
  476.  
  477. MMP: Added new keyword "PutEnv"
  478.  
  479.   If this is used, there string following it is put into the environment.
  480.   Variables set in this way will be visible to Binkley itself, and by programs
  481.   spawned by it; e.g. SPAWNBBS.CMD.
  482.  
  483.   Example: PutEnv          BBSHOME=f:\bbs
  484.            PutEnv          PATH=%BBSHOME%;%BBSHOME%\bin;%PATH%
  485.            StatusLog       %BBSHOME%\bt\bt%TASK%.log
  486.            CostLog         %BBSHOME%\bt\costlog%TASK%.log
  487.  
  488.  
  489. MMP: "SpawnInit" keyword
  490.  
  491.   This keyword specifies a command that should be executed as part of the
  492.   first-time initialization.
  493.  
  494.   Example: SpawnInit su %PORT% lock %BAUD%
  495.  
  496.   The command is executed only once, in the moment when the command is
  497.   encountered in the configuration file. Binkley does not even store the
  498.   command in memory. This keyword can save you for a batchfile, and can use
  499.   environment variables set in the configuration file.
  500.  
  501.   You may use multiple SpawnInit commands to start multiple commands.
  502.  
  503.   Attention: Do *NOT* use SpawnInit to directly run processes which stay
  504.              resident - this can cause file handle inheritance problems.
  505.              See also options of OS/2's "start" command.
  506.  
  507.  
  508. MMP: "MailFlag" keyword
  509.  
  510.   If this is specified in the configuration file (no arguments), and "Flags" is
  511.   also specified, Binkley will create a file called "BTMAIL.IN" in the flags
  512.   directory when mail has been received.
  513.  
  514.  
  515. MMP: "TimeSync" keyword
  516.  
  517.   Followed by an address and a MaxDeltaTSeconds value, it specifies that the
  518.   clock should be set to after an EMSI session (without password error) with
  519.   the node specified (using TRX) - if the time difference is not more than
  520.   MaxDeltaTSeconds seconds.
  521.  
  522.   Example: TimeSync 2:238/28 60
  523.  
  524.   So time will get synced to time of 2:238/28, but only if difference is within
  525.   60 seconds to our own time.
  526.  
  527.   Tip: setting MaxDeltaTSeconds to e.g. 3700 (more than 1 hour) lets you do
  528.        summer / winter time zone switching automatically.
  529.  
  530.  
  531. MMP: "LocalLog" keyword
  532.  
  533.   If this keyword is specified (no arguments), Binkley will write its log
  534.   information (both the normal log, and the cost log) to a log file in the same
  535.   directory as BINKLEY.Dxx etc. When Binkley exits, and at the end of a
  536.   session, Binkley will move the contents of the local file to the file
  537.   specified in the configuration file, but only if it is able to. The log file
  538.   specified in the configuration file will no longer be continiously opened by
  539.   Binkley, and can safely be accessed by other programs. If Binkley is not able
  540.   to write to the specified log file, the log entries just stays put in the
  541.   local file until Binkley is able to move it. The local log files are called
  542.   (xx is the task number):
  543.  
  544.          BINKLEY.Cxx     (Local Cost Log)
  545.          BINKLEY.Lxx     (Local Status Log)
  546.  
  547.  
  548. MMP: "Respawn" command line argument
  549.  
  550.   If this is specified, Binkley is automatically respawned in the unexpected
  551.   event that Binkley would trap (memory access violations etc). This wan't work
  552.   on DOS, but does under OS/2, and may work with other real operating systems
  553.   too.
  554.  
  555.   The way this is accomplished is quite simple: We now have two processes
  556.   running for each Binkley. The first Binkley process spawns the other, the
  557.   normal Binkley, and monitors if it exits regularly. If so, the first Binkley
  558.   terminates itself with the errorlevel of the second Binkley. If not, it just
  559.   respawns the second Binkley.
  560.  
  561.   The mechanism requires that the environment variable _BINKLEY_EXIT_ is _NOT_
  562.   set when Binkley is initially started. Binkley checks if this variable is
  563.   set, and if so, assumes it is the second (normal) Binkley. If it is not set,
  564.   Binkley will set it itself, and spawn the second Binkley. _BINKLEY_EXIT_ is
  565.   set to the filename BINKxxxx.XIT, where xxxx is the first Binkley's process
  566.   ID. The second Binkley creates this file on a normal exit, and the first
  567.   Binkley checks if it can delete it. If not, it didn't exist, and the normal
  568.   Binkley must have died irregularly.
  569.  
  570.  
  571. MMP: Environment variables on command line
  572.  
  573.   Implemented TW's idea of setting environment variables on the command line.
  574.   If an argument contains a '=', it is put into the environment.
  575.  
  576.   Example: bt32 TASK=3
  577.  
  578.   Remark of TW: The TASK=n argument on BT32.EXE command line is a MUST HAVE in
  579.                 this version of BT-XE ! Don't use TaskNumber in Binkley.Cfg!
  580.                 You MUST change your BAT / CMD files !!!
  581.  
  582.  
  583. MMP: Built the language file into the EXE file
  584.  
  585.   If there is no language file, Binkley now reads the language file from the
  586.   EXE itself. The language is simply appended to the EXE followed by the file
  587.   size (two bytes). BTLNG now can do this.
  588.  
  589.   Example: btlng32 patch bt32.exe binkley.lng
  590.  
  591.   Attention: You should NOT use an old *.LNG file nor an *.LNG file at all if
  592.              you want to have standard (english) messages - they are built-in
  593.              in the EXE now!
  594.  
  595.  
  596. MMP: "ShortCostLog" keyword
  597.  
  598.   Binkley's costlog contains a log of useful information that easier to monitor
  599.   than the status log. However, this log is ment for human reading, and not
  600.   very easily handled with utilities like grep, awk, (REXX?) etc. So i have
  601.   invented a ShortCostLog keyword. If it is used, the CostLog will be written
  602.   in another format. The argument to ShortCostLog is a format string specifying
  603.   this format. The format string can contain literal characters and macros. A
  604.   macro is prefixed with '$', followed by an optional length, and ended with a
  605.   character specifying what kind of information to write. If the optional
  606.   length begins with '0', the information is zero-padded; otherwise it is
  607.   space-padded. The following macros are defined:
  608.  
  609.          $#          TaskNumber
  610.          $$          The $ character
  611.          $<          Newline
  612.          $A          Node address
  613.          $B          Baud rate
  614.          $C          Size of biggest file sent or received
  615.          $D          Seconds used to transmit biggest file ($C)
  616.          $E          Total number of errors
  617.          $H          Hour
  618.          $I          Number of inbound files
  619.          $J          CPS of inbound files
  620.          $M          Minute
  621.          $O          Number of outbound files
  622.          $P          CPS of outbound files
  623.          $S          Second
  624.          $T          Total number of files
  625.          $U          Total CPS
  626.          $V          Size of biggest file received
  627.          $W          Seconds used to receive biggest file ($V)
  628.          $X          CPS of biggest file received ($V)
  629.          $Y          CPS of biggest file send or received ($C)
  630.          $b          Abbreviated month
  631.          $c          Cost
  632.          $d          Day of month
  633.          $f          Number of errors when receiving files
  634.          $g          Number of errors when transmitting files
  635.          $i          Size of inbound files
  636.          $j          Efficiency of inbound files
  637.          $m          Month
  638.          $o          Size of outbound files
  639.          $p          Efficiency of outbound files
  640.          $s          Seconds of session
  641.          $t          Total size of files
  642.          $u          Total efficiency
  643.          $v          Size of biggest file sent
  644.          $w          Seconds used to send biggest file ($v)
  645.          $x          CPS of biggest file sent ($v)
  646.          $y          Year without century
  647.  
  648.   The format string can be left out in which case it defaults to:
  649.  
  650.    $02y$02m$02d $02H$02M$02S $# $14A  $6B  $4s $4c $8i $8o $8C $4Y
  651.  
  652.   Which produces log entries like: (removed unnecasary spaces)
  653.  
  654.                                                             Biggest file
  655.    Date   Time   Task     Node Connect Sec Cost   In    Out   -size -cps
  656.    960328 132222 1     2:238/9  28800   29    0 6036   9903    9896 3298
  657.    960328 132539 1    2:238/54  28800  105    0    0 230517  223554 3287
  658.  
  659.   You can also use ShortCostLog to produce comma separated files which can be
  660.   imported directly into a spreadsheet or a database.
  661.  
  662.  
  663. TJW: OS/2 only: Activated priority control
  664.  
  665.   The originally released EXE didn't control priority, but worked EVER at
  666.   priority Normal/0. This is too low, if you have other "heavy" processes
  667.   running on your system. ISDN transfer rates dropped to below 5000 CPS in such
  668.   cases (normal: 7000..7800 CPS) on my system (P133,32MB).
  669.  
  670.   I set the appropriate compiler switch and re-activated the priority control.
  671.   Also, I enhanced priority control via environment variables.
  672.  
  673.   You may now influence priorities using these environment variables:
  674.  
  675.   This is the default:                 This is as without priority control:
  676.     SET REGULARPRIORITY=R31              SET REGULARPRIORITY=R0
  677.     SET MODEMPRIORITY=F15                SET MODEMPRIORITY=R0
  678.     SET JANUSPRIORITY=F31                SET JANUSPRIORITY=R0
  679.     SET HYDRAPRIORITY=F31                SET HYDRAPRIORITY=R0
  680.  
  681.   Syntax: ...PRIORITY=<class>[delta]
  682.  
  683.     class:  R = Regular (2)
  684.             F = Foregroundserver (4)
  685.             T = TimeCritical (3)
  686.  
  687.     delta:  0 = normal
  688.            ..
  689.            31 = high (default, if not specified)
  690.  
  691.   Do experiments with these values! The defaults needn't to be the best values
  692.   for YOUR system and high priority needn't be better than low priority.
  693.  
  694.  
  695. TJW: The BINKLEY.DAY and .SCD are renamed to BINKLEY.Dxx and .Sxx
  696.      (xx=TaskNumber).
  697.  
  698.  
  699. TJW: Multiline configuration via single Binkley.Cfg and Binkley.Evt files!
  700.  
  701.   [Common] and [Task x] in single Binkley.Cfg / .Evt make multiline operation
  702.   possible with one single Cfg and one single Evt file.
  703.  
  704.   You needn't use this nice feature if you don't want to. Operation should be
  705.   possible with the same config / event files as in orig. BT 2.60 release
  706.   without usage of these "sections", because the implicit default section at
  707.   top of each config file read (or included) is "[Common]".
  708.  
  709.   BUT: you MUST use TASK=n commandline argument in ANY case.
  710.  
  711.   [Common]
  712.   ; settings in this section are read by all tasks.
  713.   ; ...
  714.   [Task 1]
  715.   ; settings in this section are read by Task 1 only.
  716.   ; all other tasks ignore these settings like if they were "blind" ...
  717.   [Task 2]
  718.   ; settings in this section are read by Task 2 only.
  719.   ; all other tasks ignore these settings like if they were "blind" ...
  720.   [Common]
  721.   ; settings in this section are read by all tasks.
  722.   ; ...
  723.  
  724.   If you specify a setting first in [Common] and afterwards the same setting in
  725.   [Task x] (or vice versa), behaviour of BT-XE in Task x is the same as if you
  726.   specified these settings twice in this order using original BT 2.60.
  727.  
  728.   If you include another config file using "Include" statement, state (read
  729.   settings or not) is treated locally to each file and restored after return
  730.   from reading that file.
  731.  
  732.   E.g.:
  733.   [Common]
  734.   ; settings here are common for all tasks
  735.   Include Task1.Cfg         <- may have [Task x] and [Common] sections, too.
  736.   ; settings here are common for all tasks, regardless of Task1.Cfg contents.
  737.  
  738.  
  739. TJW: Using TaskNumber for BBS/EXT exits
  740.  
  741.   This is now handled like in Binkley 2.60 release (again). Review your CMD /
  742.   BAT files if you used former BT-XE versions !!!
  743.  
  744.   BBS exits:
  745.   %1      %2          %3        %4             %5
  746.   DTErate ConnectRate COMhandle Time2NextEvent Modem-String
  747.  
  748.   EXT exits:
  749.   %1      %2          %3        %4             %5 %6
  750.   DTErate ConnectRate COMhandle Time2NextEvent n  Modem-String
  751.  
  752.   This is NORMAL Binkley parameter layout again (no additional parameter as in
  753.   former betas of BT-XE). If you need the TaskNumber in this context, just get
  754.   it out of %TASK% environment variable (which is defined by BT-XE if you
  755.   invoke it with BT32.EXE TASK=n).
  756.  
  757.  
  758. TJW: "Hydra1st" config verb
  759.  
  760.   Behaviour without Hydra1st: Standard - like until now. If a caller says to be
  761.                               able to do Janus, he will get Janus protocol -
  762.                               even if he could also do Hydra.
  763.  
  764.   Behaviour with Hydra1st:    Hydra is preferred. If a caller says to be able
  765.                               to do Hydra, he will get Hydra protocol - even if
  766.                               he could also do Janus.
  767.  
  768.  
  769. TJW: Enhanced Screen Layout / Colours:
  770.  
  771.   - Extended colour settings (like BT-EE now! ;-) There are 2 more colours
  772.     (configured after the normal 2.60 colours) now for windows frame title text
  773.     and frame colour. See sample configs ...
  774.   - TaskNumber in top left corner
  775.   - Port and Baud switched position
  776.   - broader Recent Activity and Hold Window
  777.   - with mail "Age" display in Hold Window
  778.   - one screen row more than before (there are 25, not 24). Therefore one row
  779.     more in Recent Activity window.
  780.  
  781.  
  782. TJW: Implemented "MakeDir" config verb
  783.  
  784.   This creates outbound directories needed for BSY flags. Also, it removes
  785.   empty outbound directories.
  786.  
  787.  
  788. TJW: RecentyActivity-Buffer is saved to and restored from disk file
  789.      Binkley.Axx.
  790.  
  791.  
  792.  
  793.  
  794. BT 2.60XE/Gamma-XR2  (9606132330)
  795. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  796.  
  797. Bug fixes
  798. ---------
  799.  
  800. ???: Fixed cosmetical problem with Elapsed: xx:yy:zz
  801.  
  802.   A trailing blank overwrote the window frame
  803.  
  804.  
  805. ???: Fixed cosmetical problems with Zoomed Outbound view
  806.  
  807.   EE colours and headline
  808.  
  809.  
  810. ???: Fixed SRIF extension (wrong) .Txx to (correct) .xx (xx=TaskNo/Hex)
  811.  
  812.  
  813. ???: Fixed cursor position when shelling or entering terminal mode
  814.  
  815.  
  816. ???: Added Hydra key to "native_protocols".
  817.  
  818.   Until now, you were not able to select Hydra in terminal mode ...
  819.  
  820.  
  821. ???: Fixed "main outbound removal" bug when using "MakeDir".
  822.  
  823.   If there is an outbound without "." in its filename then just let it be -
  824.   even if it's empty.
  825.  
  826.  
  827. ???: Fixed ShortCostLog $m
  828.  
  829.  
  830. ???: Fixed cursor positioning to end of screen
  831.  
  832.  
  833. ???: Fixed saving of recent activity window
  834.  
  835.   It is now saved on all exits, not only on Alt-X exit
  836.  
  837.  
  838. TJW: fixed >2GB bug
  839.  
  840.   Changed free space limitation from 2GB to 128GB (please test this! ;-)
  841.  
  842.  
  843. TE/TJW: Fixed % character
  844.  
  845.   Usage of % character in modem commands is now possible (see below).
  846.  
  847.  
  848. ???: OS/2 only: Priorities
  849.  
  850.   Assured that answering and in/outbound sessions run at MODEMPRIORITY With
  851.   ZedZap, session were running at REGULARPRIORITY until yet. Now, session run
  852.   at least with MODEMPRIORITY (or with JANUS/HYDRAPRIORITY).
  853.  
  854.  
  855. ???: Bugfixes to SRIF
  856.  
  857.   SRIF now (finally!?) correctly states which system is listed and which is
  858.   protected.
  859.  
  860.  
  861. ???: Bugfixes to FreePoll
  862.  
  863.  
  864. ???: Fixes for dialtry's bug while using FreePoll
  865.  
  866.  
  867. TJW: Fixed *.REQ bug
  868.  
  869.   If a session was aborted, *.Rxx files kept lying around and the next caller
  870.   got all the stuff he did not want. Especially long distance links were quite
  871.   unhappy with that, if the requested stuff was large.
  872.  
  873.   Now BT-XE deletes the <inbound>\<address>.R<task> request files for ALL your
  874.   own addresses at the end of the session.
  875.  
  876.  
  877. ???: Removed additional newline in Binkley.Log after SPAWN and ext. protocols.
  878.  
  879.   Additional newline is only printed at start of BT. This was maybe only the
  880.   case in some internal betas ...
  881.  
  882.  
  883. ???: Fixed bug that TimeSync was not executed if mail was received.
  884.  
  885.   Moved call for TimeSync direct to end of session. Mail exits etc. will be
  886.   done *after* TimeSync now.
  887.  
  888.  
  889. ???: Fixed SRIF response file naming (correct e.g.: outbound.zzz\NNNNnnnn.QLO)
  890.  
  891.   Should work together with function request programs now.
  892.  
  893.  
  894. ???: Fixed SRIF session data in Yoohoo / FTSC sessions
  895.  
  896.   If you had a EMSI session and after that a Yoohoo session with a SRIF freq,
  897.   wrong data was put in the response packet (Sysop name, site, mailer).
  898.  
  899.  
  900. ???: Fixed some bugs in ShortCostLog output routine
  901.  
  902.  
  903. TJW: fixed "NoPickup" bug
  904.  
  905.   If you had NoPickup in your config and called a remote system using Bink 2.60
  906.   (XE or original, doesn't matter) to send some stuff, the remote Binkley
  907.   terminated the session immediately without even receiving your stuff.
  908.  
  909.  
  910.  
  911. New features
  912. ------------
  913.  
  914. ???: Enhanced CPS log entries (with lower .. upper CPS rate for each xfer)
  915.  
  916.  
  917. ???: Debug messages for creating / removing outbound directories
  918.  
  919.  
  920. ???: Added "Rescanning" status msg while outbound rescans
  921.  
  922.  
  923. ???: Source code: replaced all TABs by SPACEs for easier DIFF/RCS/CVS handling
  924.  
  925.  
  926. ???: Changed hydra crc table allocations from dynamic to STATIC
  927.  
  928.  
  929. ???: Wrong config verbs
  930.  
  931.   Added delay if wrong config verbs are read, also added filename and line
  932.   number to error message.
  933.  
  934.  
  935. ???: SRIF
  936.  
  937.   The SRIF file now also contains a "Password SECRET" (if SECRET is the actual
  938.   PW in protected sessions) line. This line is only present on PW protected
  939.   sessions.
  940.  
  941.  
  942. ???: Log files
  943.  
  944.   The logs are closed when spawning to allow other programs to include their
  945.   logs in the main log.
  946.  
  947.  
  948. TE: Support for a PROBOARD fileindex
  949.  
  950.   Rather than scanning your whole hard disk for each file request, information
  951.   can now be taken directly from your Proboard configuration, so that a) you
  952.   don't have to set up a huge OKFile and b) file request is accelerated
  953.   considerably, allowing for filerequest from CDROM. Perform the following
  954.   steps to set up Proboard support (this works much like the configuration of a
  955.   Maximus fileindex):
  956.  
  957.   Add the following lines to your Binkley.Cfg:
  958.  
  959.     PBAreas <Proboard Fileareaconfig>
  960.  
  961.       The Proboard Filearea configuration file is usually named "FILECFG.PRO"
  962.       and located in your Proboard system directory.
  963.  
  964.       Example: PBAreas e:\mailer\pb\filecfg.pro
  965.  
  966.     FileSec <level>
  967.     KnownSec <level>
  968.     ProtSec <level>
  969.  
  970.       In Proboard, you use "levels" (numbers from 1 to 255) to set up which
  971.       users are allowed to access which files. In BinkleyTerm, calling systems
  972.       area classified as unknown (->FileSec), listed in your Nodelists
  973.       (->Knownsec), and those with a session password (->ProtSec). Here you can
  974.       set up the correspondence between the two security mechanisms. If you,
  975.       e.g., enter KnownSec 30, then every system which is listed in your
  976.       nodelist may freq from file areas with a security level of 30 or below.
  977.       You should always have a FileSec statement, while the two others are
  978.       optional.
  979.  
  980.     OKFile <okfile>
  981.  
  982.       You normally already have this statement, where <okfile> is the path and
  983.       name of a text file containing your magics and filearea paths.
  984.  
  985.   Now edit your OK-File. Leave the magics there, but remove all normal
  986.   pathnames. Instead, enter the following line:
  987.  
  988.     *<Proboard Fileindex>
  989.  
  990.       The Proboard file index is usually named FILESIDX.PB and located in your
  991.       Proboard system directory.
  992.  
  993.     Example for a OK-File with PB-support:
  994.  
  995.       @FILES    e:\mailer\filebase\filelist\ALLFILES.ZIP
  996.       @UNISCHED e:\mailer\filebase\fidosoft\UNISWB05.LZH
  997.       @NODELIST e:\mailer\nodelist\nodelist.lzh
  998.       *e:\mailer\pb\filesidx.pb
  999.  
  1000.   Please note that you must not use MaxAreas and PBAreas at the same time! Only
  1001.   one of these keywords should occur in your Binkey.Cfg. - Also note that you
  1002.   should run PBUTIL FI at least once a day in order to keep your fileindex up
  1003.   to date.
  1004.  
  1005.   As the Proboard fileindex is not fully documented, this feature is
  1006.   experimental. I have tested this with PB 2.12 and PB 2.15. If you have
  1007.   problems with future Proboard releases, please contact me via netmail.
  1008.  
  1009.  
  1010. TJW: Loglevels
  1011.  
  1012.   Negative LogLevels do the same as positive ones, but only log to disk if
  1013.   Carrier detect is true.
  1014.  
  1015.  
  1016. TE/TJW: Changed config file parser (; and % character treatment)
  1017.  
  1018.   '%' has a VERY ambiguous semantics:
  1019.  
  1020.     - It can prefix a "rest of line"-comment (if it is at 1st non-white-space
  1021.       column position in the config line).
  1022.     - It can designate the start/end of an environment variable reference.
  1023.     - It can be used simply as "%" character.
  1024.  
  1025.     We resolve this the following way:
  1026.  
  1027.     1. If first non-white-space char, it is a comment.
  1028.        e.g.: "%comment" or "     %comment"
  1029.  
  1030.     2. If there are some characters between 2 percent signs try to evaluate an
  1031.        environment variable of this name.
  1032.        e.g.: "%TASK%" or "%task%" or "%What_Ever!%%What_Else?"
  1033.  
  1034.        If there are no characters between two "%" ( = "%%"), use it as a single
  1035.        "%" character.
  1036.        e.g.: "Init AT%%B%%C %%D" -> "Init AT%B%C %D"
  1037.  
  1038.        If the environment variable is not defined, just copy the name of it.
  1039.        e.g.: there is not variable "NOTDEF" defined. "%NOTDEF%" -> "NOTDEF"
  1040.  
  1041.     4. If there is only a single "%" in the whole line, also use it as a single
  1042.        "%" character.
  1043.        e.g.: "Init AT %B" (no other % in this line) -> "Init AT %B"
  1044.  
  1045.     BTW: %WHATEVER%%TASK% - this is valid and interpreted correctly
  1046.          1        2A    B               (two environment variables).
  1047.  
  1048.          This is no problem with the %% at pos 2 and pos A - because first
  1049.          %WHATEVER% is evaluated (and consumes both % at pos 1 and pos 2).
  1050.          Afterwards, %TASK% is evaluated ...
  1051.  
  1052.   ';' is a bit WEIRD, too:
  1053.  
  1054.     It can be a "rest-of-line"-comment or a literal character.
  1055.  
  1056.     We resolve this the following way:
  1057.  
  1058.     1. If first non-white-space char, it is a comment.
  1059.        e.g.: ";comment" or "    ;comment"
  1060.  
  1061.     2. If there is a sequence "<white space>;;", then don't begin a comment,
  1062.        but just read it as "<white space>;".
  1063.        e.g.: "AT ;;XY" -> "AT ;XY"
  1064.  
  1065.     3. If there is a sequence "<white space>;" (and no ";" following), it is a
  1066.        comment.
  1067.        e.g.: "Init ATZ|      ; init the modem"
  1068.  
  1069.     4. In any other case, just read it as ";" - no comment.
  1070.        e.g.: "AT;XY" -> "AT;XY"
  1071.  
  1072.  
  1073. TE: Workaround a problem when scrolling the Recent Activity window
  1074.  
  1075.   The appropriate keystroke combinations Ctrl+UpArrow, Ctrl+DownArrow are
  1076.   nonstandard and do not work in some DOS environments. You may now
  1077.   alternatively use Ctrl+RightArrow and Ctrl+LeftArrow (which should work
  1078.   everywhere).
  1079.  
  1080.   Note:  If Scrolling continues refusing to work, increase the size of the
  1081.   -----  backscroll buffer by using "RecentActivityLines 300". This should
  1082.          only be a problem in the DOS version.
  1083.  
  1084.  
  1085. TJW: OS/2 only: Priorities
  1086.  
  1087.   Lowered default JANUSPRIORITY and HYDRAPRIORITY values to F31 (was T31 yet)
  1088.   and default MODEMPRIORITY to F15 (was F31 yet). Added possibility to set Idle
  1089.   priority (be careful with setting prio to low).
  1090.  
  1091.   You may influence priorities using these environment variables:
  1092.  
  1093.   This is the default:                 This is as without priority control:
  1094.     SET REGULARPRIORITY=R31              SET REGULARPRIORITY=R0
  1095.     SET MODEMPRIORITY=F15                SET MODEMPRIORITY=R0
  1096.     SET JANUSPRIORITY=F31                SET JANUSPRIORITY=R0
  1097.     SET HYDRAPRIORITY=F31                SET HYDRAPRIORITY=R0
  1098.  
  1099.   Syntax: ...PRIORITY=<class>[delta]
  1100.     class:
  1101.       I = Idle (1)
  1102.       R = Regular (2)
  1103.       F = Foregroundserver (4)
  1104.       T = TimeCritical (3)
  1105.     delta:
  1106.       0 = normal
  1107.      ..
  1108.      31 = high (default, if not specified)
  1109.  
  1110.  
  1111. ???: Changed M_BYTE_SUMMARY to show KB size instead of Byte size
  1112.  
  1113.  
  1114. ???: Changed update_status()
  1115.  
  1116.   Changed janus/hydra update_status() to show min:sec instead of minutes for
  1117.   time remaining until completion of file transfer (ETA).
  1118.  
  1119.  
  1120. ???: Cleaned up STATIC variables and made some dynamic - saves DOS memory ...
  1121.  
  1122.  
  1123. CE: "ChangeMailTo <flavour>"
  1124.  
  1125.   This is used for changing mail flavour to CRASH, DIRECT, NORMAL or HOLD after
  1126.   an rejected outbound call. The default is the change to Normal flavour.
  1127.  
  1128.  
  1129. TJW: Implemented xHydra / RH1 hydra
  1130.  
  1131.   This modified Hydra (which identifies in EMSI with RH1 flag) does file
  1132.   requests ONLY in the 1st transfer "batch". Mail packets and all flow file
  1133.   attaches are sent in the 2nd batch - while you already get the requested
  1134.   files from the other system!
  1135.  
  1136.   Until now, this was only possible with Janus - now you can do this with
  1137.   Hydra, too! So just send your filelist along with your filerequests if the
  1138.   other system supports RH1 / xHydra, too.
  1139.  
  1140.   Until now I know of these xHydra mailers: BT-XE ;-), Xenia and Maindoor If
  1141.   xHydra is used, this is shown via "Session method: xHydra".
  1142.  
  1143.  
  1144. ???: Modified output of AKAs
  1145.  
  1146.   Until now there were 3 AKAs per line. Now the AKA: lines are "filled up" with
  1147.   AKAs as it fits on the screen (assuming 80 chars width).
  1148.  
  1149.  
  1150. ???: Added message
  1151.  
  1152.   Added message "Rejecting human caller" if BBS caller tries while a MO event.
  1153.  
  1154.  
  1155. ???: Added message for FreePoll / ConditionalPoll
  1156.  
  1157.   "Accepting <nodenr>. First call. ..." to avoid user confusion if a link calls
  1158.   the very first time using Freepoll (no TRX file present in outbound).
  1159.  
  1160.  
  1161. ???: Removed warnings from BTLNG
  1162.  
  1163.  
  1164. HR: Enhanced user dialogue with Alt-G (get file[s]).
  1165.  
  1166.   BT-XE will now show destination address and system name after you entered
  1167.   dest address. You can now enter up to 3 filenames password flavour before the
  1168.   question "More Yes/No/Other" is asked.
  1169.  
  1170.  
  1171. HR: Enhanced user dialogue with Alt-S (send file[s]).
  1172.  
  1173.   BT-XE will now show destination address and system name after you entered
  1174.   dest address.
  1175.  
  1176.  
  1177. HR: ShowAlive
  1178.  
  1179.   The file I_ALIVE.xx is now generated also at transfer via Hydra, XModem,
  1180.   ZModem, Janus and Fax-Receive.
  1181.  
  1182.  
  1183. ???: Changed freepoll volume compare to use "reject if size <= MinSize*1024"
  1184.  
  1185.   This means if you configure MinSize=0 only calls with really NOTHING on hold
  1186.   will be rejected. Until now, configuring 0 made no sense (size < 0 ?).
  1187.  
  1188.  
  1189.  
  1190.  
  1191. BT 2.60XE/Gamma-XR3  (9610090130)
  1192. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  1193.  
  1194. Bug fixes:
  1195. ----------
  1196.  
  1197. ???: File privilege levels for FREQ
  1198.  
  1199.   Changed file privilege levels from "(unsigned) word" to "(signed) short" for
  1200.   file requests. So the "level problems" of XR2 should be history now.
  1201.  
  1202.  
  1203. ???: Last Call Display
  1204.  
  1205.   If incoming call failed (connect and nothing more) and last call before was
  1206.   e.g. FAX, "last: FAX" was shown. This should be "Inc-Fail" now. This is also
  1207.   shown at begin of an incoming call as long as the session state is unknown.
  1208.  
  1209.  
  1210. ???: Fixed BTCTL/BTUTIL for use without PrivateNet (point fake net)
  1211.  
  1212.  
  1213. ???: BBSBATCH
  1214.  
  1215.   Bugfix for all lines creating BBSBATCH.* at the same place. BBSBATCH.* is now
  1216.   renamed to BBSBATxx.* (xx = Tasknumber in Hex)
  1217.  
  1218.  
  1219. ???: Fixed scheduler bug
  1220.  
  1221.   Scheduler was not working correct with events on a specifiy day of (any)
  1222.   month like with: Event All 00:00,0,1 00:00 F ...
  1223.  
  1224.   But there are yet bugs left...
  1225.  
  1226.  
  1227. ???: Fixed minor bug in async_os.c ("in" and "out" were swapped in OS call)
  1228.  
  1229.  
  1230. ???: Fixed wrong month in ShortCostLog output
  1231.  
  1232.  
  1233. ???: Fixed (?) file sharing for IBM C++
  1234.  
  1235.  
  1236. ???: Dynamic Events
  1237.  
  1238.   Fixed dynamic events - a forced rescan is now done before a dynamic event can
  1239.   end - to ensure that there is really no more mail to send.
  1240.  
  1241.  
  1242. ???: Fix for DOS SpawnInit
  1243.  
  1244.  
  1245. ???: EMSI bugfix
  1246.  
  1247.   If a system sent x:y/z.0 and x:y/z.p EMSI AKA dupe check did not work
  1248.   correctly (point addr was not compared and so a "false dupe" was removed from
  1249.   AKA list of remote system).
  1250.  
  1251.  
  1252. ???: Made internal FREQ processor OKFILE parsing more "robust"
  1253.  
  1254.   If you had multiple blanks between filespec and password in your OKFile, like
  1255.   in
  1256.         c:\*.*  !SECRET
  1257.  
  1258.   Binkley didn't process this as you intended it to do. Everybody could freq
  1259.   out of c.\*.* without using a password.
  1260.  
  1261.   This worked correctly:
  1262.  
  1263.         c:\*.* !SECRET
  1264.  
  1265.   Now Binkley doesn't care about AMOUNT of blanks between filespec and password
  1266.   any more.
  1267.  
  1268.   This parser part was completely rewritten - be careful and test this !
  1269.  
  1270.  
  1271. ???: Versions compiled for different CPUs show CPU type in announce string
  1272.  
  1273.  
  1274. ???: Misc. cosmetical fixes
  1275.  
  1276.  
  1277.  
  1278. New features
  1279. ------------
  1280.  
  1281. TJW: BE CAREFUL! Changed [section] statements. See [Expression].
  1282.  
  1283.  
  1284. TJW: [Expression]
  1285.  
  1286.   [%Task%==1]             use section if environment variable TASK equals 1
  1287.   [%ENVVAR1%==%ENVVAR2%]  ...         if env. var. ENVVAR1 equals ENVVAR2
  1288.   [%MODEM%==ZYXEL]        ...         if env. var. MODEM equals ZYXEL
  1289.   [%PORT%!=2]             ...         if env. var. PORT is not equal to 2
  1290.   [Common] or [True]      use section in any case
  1291.   [Ignore] or [False]     ignore section
  1292.  
  1293.   Obsolete style (not supported any longer): [Task 1]
  1294.  
  1295.  
  1296. TJW: New and powerful cost calculation scheme.
  1297.  
  1298.   See "CostCPS", "CostTimeCorrection" and "Cost Event" for details.
  1299.  
  1300.   Adapt your Binkley.Evt ("L" flag) and your nodelist compiler setup or you
  1301.   WILL run into problems !!!
  1302.  
  1303.  
  1304. TJW: New keyword "CostCPS"
  1305.  
  1306.   This sets the estimated CPS rate for cost calculations related to "L" event
  1307.   flag. Default is 1024 CPS.
  1308.  
  1309.     CostCPS 1500           ; could be used for lines connecting at 14400bps
  1310.     CostCPS 3000           ; could be used for lines connecting at 28800bps
  1311.     CostCPS 7000           ; could be used for ISDN X.75 lines with 64000bps
  1312.  
  1313.   Additionally, the connect and session overhead is added for cost calculation.
  1314.  
  1315.  
  1316. TJW: New keyword "CostTimeCorrection"
  1317.  
  1318.   With this you can configure the time in seconds that your modem / adaptor
  1319.   needs to connect and also session overhead for cost calculation.
  1320.  
  1321.   First value is the time in s (costing money) before you get a "CONNECT".
  1322.   Default is 5s. For ISDN you might want to configure a lower value. For very
  1323.   bad lines you might want to configure a higher value.
  1324.  
  1325.   Second value is the session handshake overhead in s used for calculations for
  1326.   "L" event flag (before dialing out). Default is 5s, too. If you connect to
  1327.   very fast or slow handshaking mailers, you might want to configure a
  1328.   different value.
  1329.  
  1330.   You should change the default values to typical ones for your system. The
  1331.   defaults are just "better than nothing", but too low for analogue modems and
  1332.   too high for ISDN adaptors.
  1333.  
  1334.   E.g.: CostTimeCorrection 13 4
  1335.  
  1336.         This gives a connect overhead of 13s and a session overhead of 4s
  1337.         (analoge connect with V.32bis on good line, BT-XE to BT-XE).
  1338.  
  1339.   E.g.: CostTimeCorrection 1 2
  1340.  
  1341.         This gives a connect overhead of 1s and a session overhead of 2s (ISDN
  1342.         connect with X.75, BT-XE to BT-XE).
  1343.  
  1344.  
  1345. TJW: "Cost Event" - a new Event type with flag "!="
  1346.  
  1347.   This new event type is used similar to normal "Event", but describes costs
  1348.   involved with your outbound calls at different daytime, weekdays etc.
  1349.  
  1350.   There can be ONLY such a cost definition in such an event, nothing else! Such
  1351.   a "cost event" does NOT interfere with other event definitions.
  1352.  
  1353.   The cost vector can include up to 16 comma separated entries, but there MUST
  1354.   NOT be any blanks between them. You need not specify all 16 entries, you need
  1355.   only to specify the ones you really use (c0,c1,c2 if you only use 3 cost
  1356.   indices).
  1357.  
  1358.   Event <days> <start time> [<end time>] !=<c1>,<c2>,..,<c16>
  1359.         ^------------------------------^   ^----------------^
  1360.          meaning as like in other events       cost vector
  1361.  
  1362.   The cost index used for a connection is reported after connection as
  1363.   "Seconds: ... Tariff: <cost index> ... System: ...".
  1364.  
  1365.   Example 1 for Germany (used with EuroCost and CostUnit 12):
  1366.  
  1367.     Event All 00:00,12,24 05:00 !=2400,0600,0360,0360,0600,0090,0090,0054
  1368.  
  1369.     This means that on December 24. from 00:00 until 05:00 the "cost vector" is
  1370.     2400, 600, ... (meaning that cost index 1 (city zone) has unit lengths of
  1371.     240 seconds, cost index 2 (50km zone) has unit lengths of 60s etc.). You
  1372.     have to compile the "cost index" into V7 nodelist index (cost field).
  1373.     Binkley then uses this "cost index" as index into the "cost vector" of the
  1374.     active CostEvent. "cost index" is 1-based (!), 0 means no/unknown cost!!!
  1375.  
  1376.     You have to define the cost vector in 1/10 seconds (unit length). CostUnit
  1377.     is the amount of money a unit costs (12 [Pf] in Germany).
  1378.  
  1379.     So if you call somebody on Dec. 24 at 03:00 who has cost index 3 compiled
  1380.     into the V7 cost field by your nodelist compiler, Binkley will calculate
  1381.     with unit lengths of 36 seconds (360 * 0.1s).
  1382.  
  1383.  
  1384.   Example 2 for US (NO "EuroCost" and NO "CostUnit"):
  1385.  
  1386.     Event All 00:00 24:00 !=10,20,40,80,160
  1387.  
  1388.     [Sorry, I don't have ANY information about US cost structure, so this is
  1389.     just an example with not realistic numbers]
  1390.  
  1391.     This means that on every day between 0:00 and 24:00 the "cost vector" is
  1392.     10,20,...,160 (meaning that a minute shortest distance costs 10 [cents or
  1393.     whatever] and a minute longest distance costs 160). You have to compile the
  1394.     "cost index" (1 is nearest, 5 is farest in this example, up to 16 is
  1395.     possible) into V7 nodelist index (cost field). Binkley then uses this "cost
  1396.     index" as index into the "cost vector" of the active CostEvent. "cost
  1397.     index" is 1-based (!), 0 means no/unknown cost!!!
  1398.  
  1399.     So if you call somebody (on any day, any time) who has cost index 3
  1400.     compiled into the V7 cost field by your nodelist compiler, Binkley will
  1401.     calculate with costs of 40 [cents, whatever] per minute.
  1402.  
  1403.   Here, for interested audience, the calculation method. If you aren't
  1404.   interested, you can skip to next feature ...
  1405.  
  1406.   Cost calculation algorithm for outbound calls (inbound: cost==0) :
  1407.  
  1408.   StartTime = StartTime - CostTimeCorr_Connect   (the modems need some worthy
  1409.                                                   time before CONNECT !)
  1410.  
  1411.   get CostIndex (1..16) from V7 nodelist RealCost field
  1412.   find CostEvent matching StartTime and get ActualCostVector
  1413.   set return value Cost = ActualCostVector[CostIndex] !!!
  1414.  
  1415.   EuroCost (unit based cost calculation) :
  1416.  
  1417.     Time = StartTime                             set Time to StartTime
  1418.     Ttimes10 = 0                                 set 1/10s timer to 0
  1419.     TotalCost = 0                                set TotalCost to 0
  1420.     while Time < EndTime                         do as long as connection was
  1421.        TotalCost = TotalCost + CostUnit           spend one CostUnit
  1422.        Ttimes10 = Ttimes10                        we get this time for
  1423.                   + ActualCostVector[CostIndex]   one CostUnit
  1424.        Time = StartTime + Ttimes10/10;            afterwards we have this time
  1425.        find CostEvent matching Time and           get tariff information for
  1426.        update ActualCostVector                    new Time
  1427.  
  1428.     return TotalCost as total cost               this is what we spent
  1429.  
  1430.   No EuroCost (minute based cost calculation) :
  1431.  
  1432.     Time = StartTime                             set time to StartTime
  1433.     TotalCost = 0                                set TotalCost to 0
  1434.     while Time < EndTime                         do as long as connection was
  1435.        TotalCost = TotalCost                       spend amount of money
  1436.                    + ActualCostVector[CostIndex]   one minute costs
  1437.        Time = Time + 60s                           we get 1 minute for it
  1438.        find CostEvent matching Time                get tariff information for
  1439.        and update ActualCostVector                 new Time
  1440.  
  1441.     return TotalCost as total cost                this is what we spent
  1442.  
  1443.   I hope this is the correct way to do it. If it is NOT correct like this,
  1444.   please let me know !!!
  1445.  
  1446.   Don't forget to adapt your "L" flags in Binkley.Evt !!!
  1447.  
  1448.   With L flag, Binkley will calculate costs before calling out: It will assume
  1449.   a 1KB/s transfer rate (default, you may modify this by specifying CostCPS,
  1450.   see above) to estimate session length. Then it calculates real cost (in your
  1451.   currency) for this session at this time and decides depending on L flag
  1452.   condition if it should dial out or not.
  1453.  
  1454.   You can use this to send short crash mails immediately and delay crash mails
  1455.   with file attaches to some later event with cheaper costs.
  1456.  
  1457.   For a cost saving setup in Germany you could use L<13 (meaning L<=12) on most
  1458.   of your events - except event at cheapest time 02:00-05:00, for this event
  1459.   you should NOT do cost restrictions or BT-XE will not dial out at all if
  1460.   costs are too high even at cheapest time. This will cause BT-XE to delay a
  1461.   crash mail until cost is <=12 ("Pfennige") or until event with no cost
  1462.   restriction or "H" flag.
  1463.  
  1464.  
  1465.   Added '$' as mail status char for mail not matching cost setup (L event flag)
  1466.  
  1467.  
  1468. MMP: New format char for ShortCostLog: $r
  1469.  
  1470.   $r gives "remote's costs" for inbound calls (like $c gives your own costs for
  1471.   outbound calls).
  1472.  
  1473.  
  1474. MMP: Changed default ShortCostLog format to include remote costs:
  1475.  
  1476.    $02y$02m$02d $02H$02M$02S $# $14A $6B $4s $4c $4r $8i $8o $8C $4Y
  1477.  
  1478.   This produces log entries like: (removed unnecasary spaces)
  1479.                                                                 Biggest file
  1480.    Date   Time   Task    Node Connect Sec Cost RCst   In    Out   -size -cps
  1481.    960328 132222 1    2:238/9  28800   29    0   24 6036   9903    9896 3298
  1482.    960328 132539 1   2:238/54  28800  105    0   96    0 230517  223554 3287
  1483.  
  1484.  
  1485. ???: Added optional size parameter to *.REQ entries
  1486.  
  1487.   old *.REQ format       new *.REQ format
  1488.  
  1489.   file1                  file1 $12345
  1490.   file2                  file2 $100000
  1491.   file3                  file3 $1000000
  1492.   ...                    ...
  1493.  
  1494.   The value after $ is the size of the file to request in bytes. This is used
  1495.   for cost calculation only, so an approx. value does the job, too. Size value
  1496.   is optional, if no size is given, 1 is assumed. In the REQ file transmitted
  1497.   to remote side, size information is filtered out, of course.
  1498.  
  1499.  
  1500. HR: Changed Alt-G (get files) dialogue to make input of $size possible
  1501.  
  1502.  
  1503. ???: Changed "Tariff:" to show cost index
  1504.  
  1505.  
  1506. ???: New ShortCostLog format character $z for Cost Index
  1507.  
  1508.     0 = no cost
  1509.   1.. = cost index into cost event's cost vector
  1510.  
  1511.  
  1512. TJW: Shared outbound
  1513.  
  1514.   Files related to that (all located in FlagDir):
  1515.  
  1516.   BTRESCAN.FLG
  1517.  
  1518.     This global flag for all lines works different from BTRESCAN.nn: Each line
  1519.     monitors this flag and if a line notices a change in the modification
  1520.     timestamp of this file, the line initiates an outbound rescan. If the file
  1521.     did not exist, but suddenly appears, a rescan is done, too. If there is no
  1522.     change or the file does not exist, nothing happens. For users of XenObm:
  1523.     This behaves very similar to XMRESCAN.FLG, so it should work pretty good
  1524.     now with XenObm regarding rescan flag!
  1525.  
  1526.   BTRESCAN.BSY
  1527.  
  1528.     This global flag is generated at start of an outbound rescan / reread of
  1529.     any line and deleted after the line finished rescanning / rereading
  1530.     outbound. While this flag is present, no other line will begin an outbound
  1531.     rescan/ reread, but a line attempting to begin an outbound rescan / reread
  1532.     while this flag is already present will "remember" to do the rescan later
  1533.     by creating BTRESCAN.## for itself. BTRESCAN.## will be deleted immediately
  1534.     after creation of BTRESCAN.BSY.
  1535.  
  1536.   This will lower system load (especially in networks and multiline systems) by
  1537.   avoiding multiple lines rescanning / rereading simultaneously.
  1538.  
  1539.   BTRESCAN.DMP
  1540.  
  1541.     The first binkley task who decides to do a new rescan writes rescanned data
  1542.     into BTRESCAN.DMP (saying "Rescanning"). If this file is not older than
  1543.     "ReadHoldTime" minutes, the other lines will just read this dump file
  1544.     (saying "Reading").
  1545.  
  1546.  
  1547. TJW: Language.Txt
  1548.  
  1549.   This is a mixed language file with English, Startrek and German language.
  1550.   Lines with English text are prefixed by "E", lines with Startrek text are
  1551.   prefixed by "S", German is prefixed by "G" and common lines are prefixed by
  1552.   "*".
  1553.  
  1554.  
  1555. TJW: BTUTIL
  1556.  
  1557.   Integrated BTCTL and BTLNG into one new single tool named BTUTIL. This saves
  1558.   about 53KB EXE size in total. Invoke BTUTIL without parameters to see usage.
  1559.  
  1560.  
  1561. TJW: BTUTIL
  1562.  
  1563.   Modified BTUTIL to accept mixed multiple-language language source files.
  1564.  
  1565.   BTUTIL LNG key E language.txt english.lng
  1566.   BTUTIL LNG key S language.txt startrek.lng
  1567.   BTUTIL LNG key G language.txt german.lng
  1568.  
  1569.   It is possible to use BTUTIL LNG without "key X" parameter to process old
  1570.   language files.
  1571.  
  1572.   Note: The language specifier is cAsE-sensitive!
  1573.  
  1574.  
  1575. TJW: Language file
  1576.  
  1577.   No support for external language file any more as this was a popular problem
  1578.   source. You MUST patch your LNG into the EXE using BTLNG patch, if you want
  1579.   to have something different as standard english language.
  1580.  
  1581.  
  1582. TJW: Merged in BTPE 4.00, 4.01 and 4.02 diff of Paul Edwards
  1583.  
  1584.   See btpe_402.txt for details.
  1585.  
  1586.  
  1587. TS/TJW: misc. source fixes and cleanups
  1588.  
  1589.  
  1590. ???: Date and Time
  1591.  
  1592.   Changed date / time display to 96/06/24 Mon 23:59 format. This is neither
  1593.   european nor US format, but simply logical ;-)
  1594.  
  1595.  
  1596. HR: made BT-XE compile for Win32 again using Visual C++
  1597.  
  1598.   No hydra support and no timesync support yet.
  1599.  
  1600.  
  1601. HR: First implementation of Lookup functions
  1602.  
  1603.   Works with ALT-S (Send File), ALT-G (Get File), ALT-P (Poll Node) and ALT-M
  1604.   (Manual Poll)
  1605.  
  1606.   If you enter a sysopname and the sysop has more than one line, you see a node
  1607.   entry select window now and you can choose the node to use for the selected
  1608.   function.
  1609.  
  1610.   Don't use wildcards as * and or ? - use only part of names - they are working
  1611.   as wildcards.
  1612.  
  1613.   So "R Heeb" will find "Rudolf Heeb or "Rudi Heeb".
  1614.  
  1615.   You can also use the last name only. Waldmann finds all Waldmann, not only
  1616.   Thomas. :-)
  1617.  
  1618.   If you enter both (firstname AND lastname) lastname is nor interpreted as
  1619.   wildcard. If you enter one name only, it is using it as wildcard for
  1620.   lastname.
  1621.  
  1622.   Examples: "R Heeb" finds Rudi Heeb, Rudolf Heeb, Renate Heeb.
  1623.             "R Heeb" does NOT find Rudi Hee, Rudolf Heebermann.
  1624.             "Hee" finds Rudi Heeb, Rudolf Heeb, Renate Heeb, Rudi Hee,
  1625.                   Rudolf Heebermann, Elke Heess ...
  1626.             "T Wald" does NOT find Thomas Waldmann
  1627.             "T Waldmann" finds Thomas Waldmann
  1628.  
  1629.   Be aware that if you use only one or two characters, there will be many
  1630.   entries to be found. Many entrys -> much time and much memory needed! Please
  1631.   try it, and report any errors and whishes to Rudolf Heeb.
  1632.  
  1633.  
  1634. HR: Enhanced Alt-S (Send) and Alt-G (Get) Dialogs
  1635.  
  1636.   Those dialoges now also take addresses not listed in nodelist. So you can put
  1637.   files on hold for or do file requests from unlisted nodes/points
  1638.   respectively.
  1639.  
  1640.  
  1641. TS: Visual progress metering bars
  1642.  
  1643.   Implemented visual progress metering bars for Janus/Hydra/Zmodem in
  1644.   Wazoo/Emsi sessions.
  1645.  
  1646.  
  1647. TS: Visual progress metering bars
  1648.  
  1649.   Moved progress meters to new window overlapping outbound window while in
  1650.   Wazoo/Emsi sessions.
  1651.  
  1652.  
  1653. ???: Added magic check for reading Binkley.Axx dump files.
  1654.  
  1655.   Should help avoiding crashes with trashed dump files.
  1656.  
  1657.  
  1658. ???: Recenty Activity Scrolling
  1659.  
  1660.   Maybe improved recenty activity scrolling performance a bit by aligning each
  1661.   line on a 4 byte boundary for video modes with a column count that is a
  1662.   multiple of 4, too (e.g. 80 or 132).
  1663.  
  1664.  
  1665. ???: Extended timesync to use EMSI addresses
  1666.  
  1667.  
  1668. TJW: Hydra chat
  1669.  
  1670.   If you have a hydra session, you might use chat mode now (if the other side
  1671.   is capable of chat mode, too - some mailers tell you this with a message
  1672.   displayed as "HCON: remote has chat capability (bell enabled/disabled)" or
  1673.   similar).
  1674.  
  1675.   To enter chat mode on your side, hit "Alt-C". Two windows "Local" and
  1676.   "Remote" will appear, shrinking "Recent Activity" - I strongly(!) recommend
  1677.   80*50 video mode for this (mode co80,50) - with 80*25 you will have only 2
  1678.   lines as chat window(s).
  1679.  
  1680.   At this moment, your side will transmit a string to the other side notifying
  1681.   that you entered chat mode (and also two bell characters to wake up the
  1682.   remote sysop).
  1683.  
  1684.   If remote sysop is not awake yet, you may send some more bell characters
  1685.   using Ctrl-G (the same is possible if remote sysops calls you for chatting
  1686.   if you have enabled the chat sound with the "Gong" keyword in Binkley.Cfg).
  1687.  
  1688.   To send text to remote side, simply type it in. All text entered on the
  1689.   remote side will appear in your "Remote" window.
  1690.  
  1691.   To leave chat mode hit Alt-C again. Chat mode will automatically be left at
  1692.   end of the session if one side leaves chat mode (or even did not enter chat
  1693.   mode). Also, there is an input timeout, so don't sleep while chatting.
  1694.  
  1695.   Please report any problems or incompatibilities with chat mode, especially to
  1696.   other mailers.
  1697.  
  1698.  
  1699. TJW: new keyword "NoHydraChat"
  1700.  
  1701.   You can disable Hydra Chat capabilities using this keyword.
  1702.  
  1703.  
  1704. JL: Added "Sorted Outbound"
  1705.  
  1706.   The 'Pending Outbound Mail' is sorted by Domain / Zone / Net / Node / Point.
  1707.   Sendable mail is still on the top. Outbound on HPFS drives was already sorted
  1708.   even without this feature - but FAT users [DOS] will now be happier, too.
  1709.  
  1710.  
  1711. TJW: "Hydra1st" keyword dropped
  1712.  
  1713.   This was dropped after XE2 release and is no longer a valid config verb. For
  1714.   explanation see "ProtocolPreference" keyword.
  1715.  
  1716.  
  1717. TJW: "ProtocolPreference" keyword
  1718.  
  1719.   This made "Hydra1st" keyword obsolete.
  1720.  
  1721.   Binkley 2.60, 2.60 XE1 and XE2 were NOT fully FSC-0056 (EMSI specification)
  1722.   conform yet (well, it worked, though ;-).
  1723.  
  1724.   Old / wrong behaviour:
  1725.  
  1726.    1. Caller system sends all protocols (HYD,JAN,ZAP,ZMO) it can do.
  1727.  
  1728.    2. Called system (BT) chooses a protocol with fixed preference order
  1729.       JAN,HYD,ZAP,ZMO (BT 2.60 orig) or HYD,JAN,ZAP,ZMO (XE and Hydra1st) - no
  1730.       matter in which sequence the protocols are transmitted (preferred) by
  1731.       caller.
  1732.  
  1733.   New and correct behaviour:
  1734.  
  1735.    1. Caller system sends all protocols it can do in order of preference: It
  1736.       sends e.g. HYD,JAN,ZAP,ZMO if it can do them all and prefers Hydra as 1st
  1737.       choice, then Janus as 2nd choice, ZedZap as 3rd choice etc.
  1738.  
  1739.    2. Called system chooses the FIRST protocol out of the transmitted protocol
  1740.       preference string which it is itself capable of.
  1741.  
  1742.       If ZAP,JAN,HYD,ZMO is received and it can do ZAP, it will choose ZAP,
  1743.       doing the 1st choice protocol.
  1744.  
  1745.       If JAN,HYD,ZAP,ZMO is received and it can't do JAN, but HYD, then HYD
  1746.       will be done, doing the 2nd choice protocol.
  1747.  
  1748.   With ProtocolPreference you can set what YOUR own Binkley will send in EMSI
  1749.   if you call out to another system.
  1750.  
  1751.   Default preference sequence (if you don't specify this keyword):
  1752.  
  1753.   HYD,JAN,ZAP,ZMO       (if Hydra is implemented in your Binkley version)
  1754.    or
  1755.   JAN,ZAP,ZMO           (if no Hydra is implemented in your Binkley version)
  1756.  
  1757.   With NoJanus, NoHydra, NoZedZap etc. the corresponding protocols will be left
  1758.   out of the default ProtocolPreference string, of course.
  1759.  
  1760.   If you specify "ProtocolPreference HYD,ZAP,ZMO" your Binkley will tell remote
  1761.   side on outgoing calls that it prefers HYDRA as 1st choice, then ZedZap as
  1762.   2nd choice and ZMO as last choice and that it can NOT do anything other.
  1763.  
  1764.   ATTENTION: Be aware that the user defined ProtocolPreference string is
  1765.   =========  nearly transmitted "as is", there are not many checks if it is
  1766.              valid or if it does comply with your other settings!
  1767.              So DON'T use this keyword if you don't know what you're doing.
  1768.  
  1769.   If you call out and the other side does not answer with the first available
  1770.   protocol in YOUR ProtocolPreference although remote side is capable of doing
  1771.   it and also has not disabled it, the remote side is NOT fully FSC-0056
  1772.   compliant and you should notice the software author of that.
  1773.  
  1774.   This behaviour is overridden by the new statement "SmartBiDi" (see below).
  1775.  
  1776.  
  1777. TS: DOS only: announcement of the fossil in use.
  1778.  
  1779.  
  1780. TJW: new keyword "ReadLog"
  1781.  
  1782.   If you spawn other programs from Binkley which generate a binkley style log,
  1783.   you can read this log into Binkley's screen (and log). The log specified with
  1784.   "ReadLog" is DELETED after it is read and incorporated into Binkley's log.
  1785.  
  1786.   e.g.: ReadLog  c:\bt\1\bink_add.log
  1787.                  ^ redirect all other bink style logs you want to include to
  1788.                    that location
  1789.  
  1790.  
  1791. MMP: "MaxBusyAge" keyword.
  1792.  
  1793.   Followed by a number of minutes, it specifies that Binkley should ignore .BSY
  1794.   files older than that. This can be used to automatically make a node dialable
  1795.   even if he has an old .BSY file laying around. This can happen if Binkley for
  1796.   some reason didn't clean up after a session; i.e. the system is rebooted. It
  1797.   will also handle the situation where Binkley (god forbid) traps, and is
  1798.   respawned using the "Respawn" command line argument.
  1799.  
  1800.   Example: MaxBusyAge      240
  1801.  
  1802.  
  1803. MMP: "SpawnNoOK" keyword
  1804.  
  1805.   Followed by a command, it specified that the command should be executed if
  1806.   the modem does not respond OK to the initialization string in unattended mode
  1807.   within half a second. If your modem is too slow to respond OK, you can add a
  1808.   number of tildes to the initialization string. This feature is useful for
  1809.   detecting if a modem has hung itself, and notify the sysop, or with the right
  1810.   software and hardware turn the modem off and on again.
  1811.  
  1812.  
  1813. MMP: "Quick" modifier for "AfterMail" keyword
  1814.  
  1815.   Using "AfterMail Quick <command>", Binkley does not spend unneccesary time on
  1816.   modem initialization. This is useful if the AfterMail command is very
  1817.   quickly. On my system i can run the aftermail in about the same time, as it
  1818.   take Binkley to initialize the modem. Also, without "Quick" a caller can be
  1819.   so unlucky, that the modem is reinitialized when he calls in.
  1820.  
  1821.  
  1822. MMP: "CacheHold" keyword
  1823.  
  1824.   This enables caching of the outbound, and speeds up rescanning. The usage is:
  1825.   CacheHold <level> [Stat]. <level> specifies the amount of caching, and can
  1826.   take the following values:
  1827.  
  1828.     0  No caching and Binkley scans as usual.
  1829.  
  1830.     1  Directories are cached. Using this, Binkley only need to read the
  1831.        directories once when scanning the outbound.
  1832.  
  1833.     2  Flow files are kept in memory. Using this, Binkley does not need to
  1834.        reread flow files that has not been changed.
  1835.  
  1836.   On my system CacheHold reduces the average rescan time from approximately
  1837.   2.70 seconds to 1.30 using 29 KB cache. However, the memory requirements and
  1838.   improvement in speed will differ from system to system.
  1839.  
  1840.   Add "Stat" to the line, and it will be logged how the rescanning performs.
  1841.   Use "CacheHold 0 Stat" to log the performance without caching.
  1842.  
  1843.  
  1844. MMP: Added the ability to freeze Binkley.
  1845.  
  1846.   When Binkley sees BTFREEZE.xx (xx is the hexadecimal task number) in the
  1847.   flags directory, it deletes the file, and creates BTFROZEN.xx instead. Then
  1848.   it lowers the DTR signal, and waits for BTFROZEN.xx to disappear. When it
  1849.   disappears, the modem is reinitialized. This feature is useful for freezing
  1850.   Binkley when compiling nodelists in the background.
  1851.  
  1852.  
  1853. ???: New keyword "EMSIbanner" for debugging purposes
  1854.  
  1855.   If you put this in your Binkley.Cfg, Binkley will send a banner string (+
  1856.   Address ... using ...) *before* sending **EMSI_INQ - this helps with some
  1857.   remote COM I/O systems which fail within the first few received bytes.
  1858.  
  1859.  
  1860. ???: New commandline verb "Debug"
  1861.  
  1862.   Does the same as "Debug" in config.
  1863.  
  1864.  
  1865. ???: Added mailstatus character to zoomed outbound view (-*x>$...).
  1866.  
  1867.  
  1868. TJW: new keyword "IPC"
  1869.  
  1870.   With this, you define the directory which Binkley will use to write Max 2.x
  1871.   compatible IPCxx.BBS (xx = tasknumber in Hex) files into.
  1872.  
  1873.   E.g: IPC h:\Max\IPC\
  1874.  
  1875.   The IPC files will contain "BinkleyTerm 2.60XE" as user name and some
  1876.   information about Binkley's state, e.g. "Waiting for Call or Event".
  1877.  
  1878.   If you do not use IPC keyword, Binkley will NOT write IPC files.
  1879.  
  1880.  
  1881. MB: Maximus 3.x MCP support (OS/2 version only).
  1882.  
  1883.   (Thanks to Mike Burgett for writing and Bob Juge for sending, merged in by
  1884.    TJW)
  1885.  
  1886.   Just define the same path with MCPpipe statement of Binkley as in MCP
  1887.   statement of Maximus, e.g.: MCPpipe \pipe\maximus\mcp If you do NOT want to
  1888.   use MCP just do NOT define "MCPpipe" in your config!
  1889.  
  1890.   Then use SM (session monitor of Max 3.x) to view line status.
  1891.  
  1892.   MCP.EXE *MUST* be running on startup of BT-XE to use this feature. You must
  1893.   also have MCP32.DLL in LIBPATH to run this version of BT-XE (even if you
  1894.   don't use MCP).
  1895.  
  1896.   Both is part of Maximus 3.xx package (but can also be used without having
  1897.   Maximus installed).
  1898.  
  1899.   Remark of TJW: Due to file handle inheritance problems, automatic start code
  1900.                  for MCP.EXE was removed. So you have to start MCP.EXE before
  1901.                  BT-XE or MCP will not work.
  1902.  
  1903.   You must *NOT* start MCP using SpawnInit - this would cause problems.
  1904.  
  1905.   Use this a SINGLE time in your CMD file (startup.cmd e.g.) before you invoke
  1906.   any BT-XE task using MCP:
  1907.  
  1908.                  MCP.EXE . <pipename> <number of tasks> server
  1909.  
  1910.   e.g.:   detach MCP.EXE . \pipe\maximus\mcp 16 server
  1911.  
  1912.   Be sure that you have set MAXIMUS environment variable before this command.
  1913.  
  1914.   Directly after starting MCP it's a good idea to start SM.EXE to *use* MCP. Do
  1915.   NOT start SM.EXE with SpawnInit.
  1916.  
  1917.  
  1918. ???: Changed janus.c to create JANUSREQ.R%02x in flagdir
  1919.  
  1920.  
  1921. TJW: new keyword "TaskPath"
  1922.  
  1923.   You can specify a separate directory for BINKLEY.?xx files with this to keep
  1924.   your Binkley directory clean. Defaults to Binkley directory.
  1925.  
  1926.   e.g.:  TaskPath c:\bt\task\
  1927.  
  1928.  
  1929. TJW: Changed order of config file reading
  1930.  
  1931.   old: binkley.scd -> binkley.evt -> binkley.cfg
  1932.   new: binkley.cfg -> binkley.scd -> binkley.evt
  1933.  
  1934.   This was necessary for TaskPath to be known before searching binkley.scd/sxx.
  1935.  
  1936.  
  1937. ???: Today at a glance
  1938.  
  1939.   Changed "Today at a glance" to show Mail/BBS/Fax calls ("M/B/F") - also
  1940.   changed alignment and moved it to language.txt
  1941.  
  1942.  
  1943. ???: Messages
  1944.  
  1945.   changed message "File requests declined" to "Remote doesn't allow file
  1946.   requests now"
  1947.  
  1948.  
  1949. ???: Fossil Annoncement
  1950.  
  1951.   DOS only: makes fossil announcements configurable by using the language file.
  1952.   this is way better than hardcoding them into the executable.
  1953.  
  1954.   The language file is readily prepared to detect and announce the following
  1955.   fossils:
  1956.  
  1957.     ADF (AnDan), BNU, cFos, DrComm, FCI, Opus!Comm, VX00, X00
  1958.  
  1959.   To add a new/other fossil, do the following:
  1960.  
  1961.   Look in the language file (LANGUAGE.TXT) for a line which reads like this:
  1962.  
  1963.     *LVX00:VX00,X00:X00,BNU:BNU,CFOS:cFos,OPUS:Opus!Comm[,...]
  1964.  
  1965.   This line is composed of pairs of strings. each pair contains a search string
  1966.   and an answer string separated by a colon, e.g.:
  1967.  
  1968.     OPUS:Opus!Comm
  1969.  
  1970.   Where `OPUS' is the string to look for in the internal fossil signature id
  1971.   string, and `Opus!Comm' is the string that will be output to the screen and
  1972.   logfiles.
  1973.  
  1974.   You simply add the new/other fossil search/answer string pair at the end of
  1975.   the line (preceeded by a `,'), but please mind that:
  1976.  
  1977.    - The search string has to be in upper case, while the answer string may be
  1978.      in upper/lower/mixed case.
  1979.  
  1980.    - Search- and answer strings must not contain any of the characters: ` '
  1981.      (blank/space), `,' and `:'.
  1982.  
  1983.    - You have to use a search string which definitely designates a fossil you
  1984.      look for. therefore the search string `VX00' has to come before search
  1985.      string `X00', because the other way round (`X00' first, that is) the
  1986.      answer string for `X00' would be output for both `X00' _and_ `VX00' ...
  1987.  
  1988.  
  1989. ???: Include keyword
  1990.  
  1991.   Reduced stack space needed for "include", so you can do more "nested"
  1992.   includes now.
  1993.  
  1994.  
  1995. ???: Worked HydraCom 1.09d changes into hydra / hydra chat source
  1996.  
  1997.   Alt-C is now used for entering (and exiting) Hydra chat mode. Clearing "Today
  1998.   at a glance" is done with Alt-D now.
  1999.  
  2000.   Hydra protocol now also works with long fnames correctly (OS/2 only). Long
  2001.   filenames are NOT supported in BT yet except in hydra protocol.
  2002.  
  2003.  
  2004. TJW: Modem command character translation "." -> "," removed
  2005.  
  2006.   So you can specify commands likw AT+FCLASS=2.0 now without having to "escape"
  2007.   the dot. You MAY, of course, continue using AT+FCLASS=2\.0 ...
  2008.  
  2009.   The only translations happening now are:
  2010.  
  2011.     "|"  -> output CR character
  2012.     "v^" -> lower/raise DTR
  2013.     "~"  -> pause 1s
  2014.     "`"  -> pause 0.1s
  2015.     "-"  -> don't output anything
  2016.  
  2017.   If you don't want them, prefix them by an "escape" character which is: "\".
  2018.  
  2019.  
  2020. HR: ShowAlive
  2021.  
  2022.   The file I_ALIVE.xx is now generated also in terminal mode while waiting for
  2023.   key strokes and while transfering with XModem and ZModem (UPload/DOWNload).
  2024.   Also, I_ALIVE.xx is generated while the user does an input (nodenumber,
  2025.   systemname, filename and so on). Yes, there are people needing more than 1
  2026.   minute to enter a nodenumber. :-)
  2027.  
  2028.  
  2029. TJW: OS/2 only: Window Titles
  2030.  
  2031.   BT-XE can set the window title of its own window to "BT-XE #<TaskNumber>:
  2032.   <Action>" (default). "Action" is the same as in Maximus' session monitor (if
  2033.   you use MCP).
  2034.  
  2035.  
  2036. TJW: New keyword "WindowTitleFmt".
  2037.  
  2038.   This is used for setting the format string of window titles.
  2039.  
  2040.   Default is (if you specify WindowTitleFmt without parameters):
  2041.  
  2042.     WindowTitleFmt BT-XE #%%d: %%s    (you have to specify %% to get the single
  2043.                                        % as result or BT will crash)
  2044.   
  2045.   Further, you HAVE TO use first %%d AND second %%s !
  2046.  
  2047.  
  2048. ???: IPC:
  2049.  
  2050.   "Snoop"   defines the Snoop pipe - NOT the MCP pipe  (OS/2 only)
  2051.   "MCPpipe" defines the Maximus MCP pipe               (OS/2 only)
  2052.   "IPC"     defines the directory for IPCxx.BBS        (all platforms)
  2053.  
  2054.   You can use ALL now, if you want.
  2055.  
  2056.  
  2057.  
  2058.  
  2059. BT 2.60XE/Gamma-XR4  (9612240000)
  2060. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  2061.  
  2062.  
  2063. Bugfixes
  2064. --------
  2065.  
  2066. TJW: Language file
  2067.  
  2068.   Binkley never used language file strings M_PRESS_ESCAPE and M_NO_BBS (but
  2069.   hardcoded english text "Press escape to enter BBS" and "Doing mail only ..."
  2070.   if you did not specify it in your Binkley.Cfg). Fixed.
  2071.  
  2072.  
  2073. TJW: Removed $xxxxx size information on janus outbound requests
  2074.  
  2075.  
  2076. TJW: Made BTRESCAN.BSY semaphore file more safe
  2077.  
  2078.   This fixed sharing problems under DOS
  2079.  
  2080.  
  2081. TJW: Rescan
  2082.  
  2083.   Initial rescan with BTRESCAN.FLG touched before starting BT-XE should work
  2084.   now.
  2085.  
  2086.  
  2087. TJW: BTRESCAN.DMP
  2088.  
  2089.   Further, btrescan.dmp's timestamp is set to the BEGIN time of the rescan.
  2090.  
  2091.  
  2092. TJW: Added missing "/" into EMSI mailer / version / compiler info
  2093.  
  2094.  
  2095. TJW: Bugfix for deleting old bsy files
  2096.  
  2097.   There was a problem with networked PCs having slightly different times,
  2098.   giving "negative" ages.
  2099.  
  2100.  
  2101. TJW: Fixed dynamical events
  2102.  
  2103.   A real rescan will be forced before a dynamic event can be terminated (and
  2104.   now it will wait for it to *really* happen, even if outbound is temporarily
  2105.   "locked" by btrescan.bsy).
  2106.  
  2107.  
  2108. TS: (TS110409) fossil detection fixes / enhancements
  2109.  
  2110.  
  2111. TJW: Bad Calls
  2112.  
  2113.   Binkley stored an "int" into "bad call" files (2 bytes for DOS and 4 bytes
  2114.   for OS/2) what may have lead to problems when mixing DOS and OS/2 versions
  2115.   using the same outbound. Now 4 byte "long" values are used for both versions.
  2116.  
  2117.  
  2118. TJW: Fixed cosmetical bug with missing blank in IPC file
  2119.  
  2120.  
  2121. TJW: Fixed "powerdialing of a node"
  2122.  
  2123.   BT-XE should honour now your A=xx event setting
  2124.  
  2125.  
  2126. TJW: Fixed cost restriction bug with sized requests
  2127.  
  2128.  
  2129. TS: 2 diffs with display stuff
  2130.  
  2131.  
  2132. CFS: OS/2 only: Replaced DTR raise/lower code.
  2133.  
  2134.   It now works with CFOS's -kx switch.
  2135.  
  2136.  
  2137. TJW: Fixed bug in Send_WaZoo routine
  2138.  
  2139.   That lead to problems with file request at FD/IM systems (or maybe also with
  2140.   other ZedZap mailers) if the file request *.REQ file was sent without other
  2141.   mails or files.
  2142.  
  2143.  
  2144. TJW: Fixed EMSI capability bug
  2145.  
  2146.   If there was no bidirectional session or no BiDi* or Janus* stuff in config,
  2147.   Binkley said that it is able to do Hydra/Janus although it was NOT. Result:
  2148.   "No common session protocol- fallback to FTS-1" on BT's side, Hydra or Janus
  2149.   on other side.
  2150.  
  2151.  
  2152. TS: DOS version only bugs fixed:
  2153.  
  2154.   - if used without vfossil, Binkley/BT-XE always used only 25 screen rows,
  2155.     regardless of the real number of screen rows available. now BT-XE is
  2156.     able to determine and use the real number of available screen rows
  2157.     without a vfossil being loaded.
  2158.  
  2159.   - if used without a vfossil, the cursor could be seen even if the screen
  2160.     was `blanked'. now the cursor is disabled/enabled exactly as a loaded
  2161.     vfossil would do.
  2162.  
  2163.   - if used without vfossil, only 23 rows where used under certain
  2164.     conditions. hopefully ;-) fixed
  2165.  
  2166.  
  2167. unknown / SIJO / TJW:
  2168.  
  2169.   - there was a problem (access violation because of NULL pointer) if Hydra
  2170.     received [and discarded] a too long packet. Should be fixed.
  2171.  
  2172.  
  2173.  
  2174. New features
  2175. ------------
  2176.  
  2177. CFS: MODEMCID string
  2178.  
  2179.   string=last data coming from the modem before caller-id. If used, caller-id
  2180.   is logged.
  2181.  
  2182.   e.g.:                          MODEMCID ID=
  2183.   for a connect string such as:  CONNECT 64000/ARQ/ID=3782005/EAZ0
  2184.   BT-XE would log:               Got CID: 3782005
  2185.  
  2186.   This keyword is required for the next one.
  2187.  
  2188.  
  2189. CFS: BANNERCID phone banners
  2190.  
  2191.   Sets a custom banner for caller-id calls. * is allowed as wildcard. First
  2192.   match wins:
  2193.  
  2194.   BANNERCID 07492226912951 Hi, Hauke!
  2195.   BANNERCID 0749* Woa! A call from Germany...
  2196.  
  2197.   If no match, the banner specified using BANNER (Tracing your call...) is
  2198.   used.
  2199.  
  2200.  
  2201. CFS: STRINGREP string replacement
  2202.  
  2203.   Replaces a string for any other. Replacement only takes places at screen and
  2204.   log writes. I've written this to change the cryptic cause numbers from CFOS
  2205.   for more appropiate text.
  2206.  
  2207.   e.g.: STRINGREP /CAUSE=34B9 /Out of order
  2208.   so  : NO CARRIER/CAUSE=34B9 becomes NO CARRIER/Out of order
  2209.  
  2210.  
  2211. CFS: New keyword NOHUNDREDTHS per request in the BINKLEY support echo.
  2212.  
  2213.   If used, 1/100s of seconds won't be logged any more.
  2214.  
  2215.  
  2216. TS: C replacement for DOS ASM stuff
  2217.  
  2218.  
  2219. TJW: New, optional event "name" field:
  2220.  
  2221.   You can now specify: Event "Event name up to 32 chars" All 20:00 ...
  2222.   instead of:          Event All 20:00 ...
  2223.  
  2224.   The string will be used in "next event" display and at start of event.
  2225.  
  2226.  
  2227. TJW: Cost vector now may have 32 entries (thanks to german Telekom)
  2228.  
  2229.  
  2230. TJW: Window Titles
  2231.  
  2232.   Changed function for setting OS/2 window title to the more simple and maybe
  2233.   also "more official" function Win16SetTitle
  2234.  
  2235.  
  2236. MR: If a config file could not be found you will get an error message.
  2237.  
  2238.  
  2239. MR: New makefile for Watcom C 10.x for the OS/2 and DOS versions.
  2240.  
  2241.  
  2242. MR: Made some minor changes to be able to compile and use the Watcom exes.
  2243.  
  2244.  
  2245. MR: Increased BINKLEY.BAN buffer to 2K for OS/2
  2246.  
  2247.  
  2248. MR: new xe_user.doc layout
  2249.  
  2250.  
  2251. TS: DOS only: new config statement `NoANSITrash'
  2252.  
  2253.   Using this statement makes only sense with dos versions under certain
  2254.   conditions (see below) and will be simply ignored by the os/2 version.
  2255.  
  2256.   If you use the BT-XE dos version without a vfossil loaded AND without an
  2257.   ansi-driver loaded AND do not intend to redirect screen output to
  2258.   another com-port (e.g to drive an external ansi terminal additionally
  2259.   hooked to your main machine) then you can use the `NoANSITrash' config
  2260.   statement to suppress some some ansi escape sequences which typically
  2261.   will show up on the last screen row and when exiting the mailer.
  2262.  
  2263.   There is no reason to use this config statement if:
  2264.    - you use OS/2
  2265.    - you have either an ansi driver or a vfossil or both installed
  2266.    - you intend to redirect screen output to an ansi terminal hooked to another
  2267.      comport of your machine
  2268.  
  2269.  
  2270. CFS: OS/2 only: new keyword "SIOmode"
  2271.  
  2272.   Uses an alternate DTR raise/lower code that works with CFOS's -kx switch
  2273.   (SIO emulation).
  2274.  
  2275.   SIOmode    | Method to raise / drop DTR
  2276.   -----------+-----------------------------------------------------
  2277.   used       | DosDevIOCtl / ASYNC_SETMODEMCTRL / DTR_ON | DTR_OFF
  2278.   not used   | MaxComm.DLL / ComSetDCB / MODE_DTR_CONTROL
  2279.  
  2280.  
  2281. TS: updated FTSCPROD list in language.txt
  2282.  
  2283.  
  2284.  
  2285.  
  2286. BT 2.60XE/Gamma-XR5 
  2287. =-=-=-=-=-=-=-=-=-=
  2288.  
  2289.  
  2290. Bugfixes
  2291. --------
  2292.  
  2293. SM: fixed: while manually polling node, Binkley did not update 'Current
  2294.     Settings' and WindowTitle (IPC_SetStatus).
  2295.  
  2296.  
  2297. RH: fixed changing colour after "connected with <sysopname>"
  2298.  
  2299.  
  2300. RH: fixed mistake in handling of (COM) device names.
  2301.  
  2302.   Now values >9 are possible. Added code to async_os.c to allow use of "Port
  2303.   COMx" statement.
  2304.  
  2305.  
  2306. RH: fixed bug in language code (msgs.h).
  2307.  
  2308.   Now the newsreader and the shells are displayed in unattended help window.
  2309.  
  2310.  
  2311. RH: fixed a serious bug in my "Override" code.
  2312.  
  2313.   The fields after "Nodenumber" are by definition not required and the
  2314.   pointer(s) in my structure is (are) NULL if the field(s) in question is (are)
  2315.   not defined.
  2316.  
  2317.   I forgot to check for NULL in "GetAlt...()" in misc.c and had some exceptions
  2318.   because of that.
  2319.  
  2320.  
  2321. RH: Squish error (could not display pending netmails if squish base) fixed.
  2322.  
  2323.  
  2324. RH: XR4 traps if no "binkley.evt" exists. Fixed.
  2325.  
  2326.  
  2327. RH: hydra chat
  2328.  
  2329.   If "noHydraChat" defined and ALT-C is pressed in hydra and other side has
  2330.   hydra chat available, XR4 traps. Fixed.
  2331.  
  2332.  
  2333. RH: EMSI
  2334.  
  2335.   While implementing smart_bidi, I found and removed a bug in emsi.c that could
  2336.   (and did) lead to that the called side told the caller "agree to zmodem", but
  2337.   in fact switched to hydra. The error was that neither my_capabilities nor
  2338.   remote_capabilities were not masked by the actual protocol but all
  2339.   protocol-bits remained to be set.
  2340.  
  2341.  
  2342. RH: fixed cosmetical bug with binkpipe
  2343.  
  2344.   "Last:" field was wrong.
  2345.  
  2346.  
  2347. RH: fixed cosmetical bug in pending outbound
  2348.  
  2349.   Scroll down scrolled one line too much.
  2350.  
  2351.  
  2352. RH: OS/2 only: moved all functions that need OS/2 PM to a separate DLL.
  2353.  
  2354.   The new code is located in ..\os2_pm. I've made makefiles for VAC and WATCOM,
  2355.   compiled with both and both versions run fine.
  2356.  
  2357.   If you don't have OS/2 PM installed, don't install bink_pm.dll.
  2358.   If you have OS/2 PM installed (standard), put bink_pm.dll in the same
  2359.   directory as BT32.EXE.
  2360.   
  2361.   
  2362. TJW: corrected range check for V7 cost field (solves potential 16Bit problem
  2363.      with cost = -1 / 65535)
  2364.  
  2365.  
  2366. TJW: removed blinking cursor after unfreeze
  2367.  
  2368.  
  2369. TJW: fixed bug in Alt-S (if you gave no path/drive, first letter was
  2370.      duplicated)
  2371.  
  2372.  
  2373. TJW: "Resending ..." corrupted Transfer Status window
  2374.  
  2375.   Omitted displaying this message and changed status log entry from > to !
  2376.  
  2377.  
  2378. TJW: fixed bug in receive_exit
  2379.  
  2380.   Any stuff to do IN binkley has to be done, before any errorlevel exit may
  2381.   happen (mail flag, aftermail etc.).
  2382.  
  2383.  
  2384. TJW: fixed misc. "cosmetical" bugs in Zmodem display routines
  2385.  
  2386.  
  2387. TJW: fixed wrong blanks (instead of leading '0's) in cost.log
  2388.  
  2389.  
  2390. SM: fixed "Are you sure ?"-bug in terminal (answer was case-sensitive)
  2391.  
  2392.  
  2393. SM: fixed 'outbound reading bug' in mailovly.c
  2394.  
  2395.  
  2396. SM: bink_pm.dll caused exception in _crt_term() when more than one instance of
  2397.     binkleyterm was loaded and exited in the same order they were started.
  2398.  
  2399.  
  2400. TS: misc fixes only of concearn for the emx compiler
  2401.  
  2402.  
  2403. TJW: Made "ReadLog" feature more safe.
  2404.  
  2405.   Shouldn't crash any more if input log format is invalid (e.g. if Maximus
  2406.   crashed)
  2407.  
  2408.  
  2409. TJW: sized requests were broken
  2410.  
  2411.   fixed by removing mailovly.c::netsize() and adapting cache.c::netsize for
  2412.   cached/uncached operation.
  2413.  
  2414.  
  2415. TJW: fixed RC* <-> RC$ confusion
  2416.  
  2417.  
  2418. TJW: if there is mail for a "Hold"-listed node, Binkley showed strange
  2419.      behaviour ("NO DIALTONE ..."). Temporary fix.
  2420.  
  2421.  
  2422. TJW: fixed EMSI.C::EncodeEmsiHeader (removed superfluous strtok call) this bug
  2423.      caused outgoing calls NOT to do ZedZap (e.g.)
  2424.  
  2425.  
  2426. MR: Bugfix: allocated memory for chat windows will now be freed
  2427.  
  2428.  
  2429. TJW: hopefully fixed "freezing bug" of animation in top left corner
  2430.  
  2431.  
  2432. TS: fixed `ErrLevelShell' bug present in DOS versions
  2433.  
  2434.  
  2435. MR: fixed CacheHold bug
  2436.  
  2437.   
  2438. TJW: fixed bug with dupe pkt names
  2439.  
  2440.   This happened if multiple pkts are sent within the same second (happened
  2441.   rarely, but happened ;-)
  2442.  
  2443.  
  2444. TJW: fixed bug in EMSI.
  2445.  
  2446.   As a consequence of this fix, password failure msgs are logged earlier in
  2447.   EMSI processing (before System:, Aka:, Uses: etc. is logged).
  2448.  
  2449.   Thanks to Stephan Jaensch and Philip Richter for discovering this bug.
  2450.  
  2451.  
  2452. MR: Made answering more save.
  2453.  
  2454.  
  2455. MR: Readdressing to same address could end in an endless loop, fixed.
  2456.  
  2457.  
  2458.  
  2459. New features
  2460. ------------
  2461.  
  2462. RH: "EMSILog <filename>"
  2463.  
  2464.   Lets you log your sent and received EMSI string in a file. This is extremely
  2465.   useful in case you have problems with EMSI. Assume you get a password
  2466.   error: do you really KNOW wich password you ACTUALLY have sent? Log it, and
  2467.   you'll see it. Assume you don't get a hydra connect: are you absolutely
  2468.   sure that you told the other system about your capability and are you
  2469.   absolutely sure, that the other system told you about to use hydra? Log it,
  2470.   and you'll see it.
  2471.  
  2472.  
  2473. RH: "RedialTime <seconds>"
  2474.  
  2475.   Time between redial attempts when you are polling (only then!). This will
  2476.   give you a better chance to get a connect without increasing "polltries" to
  2477.   infinity. Works on BUSY, ERROR and timeouts ("NO CARRIER"). Does not work on
  2478.   NO DIALTONE.
  2479.  
  2480.  
  2481. RH: "AssumeBaud <bpsrate>"
  2482.  
  2483.   In case the modem reports "CONNECT" or "CONNECT 300" binkley will use the
  2484.   rate defined with assumebaud. Important for calculations of connect/frequest
  2485.   times.
  2486.  
  2487.  
  2488. RH: "BitType"
  2489.  
  2490.   Default in binkley is "TypeExact".
  2491.  
  2492.   This means, that a nodelist line with both analog and ISDN capability can be
  2493.   separated only with acrobatic efforts. If you include "BitType" in your
  2494.   binkley.cfg Binkley will scan each modemflag separately and will use the
  2495.   first matching predial string. If you don't configure a "ModemTrans" predial
  2496.   string, then the string after "Predial" (if any) is used (and this may lead
  2497.   to dial attempts even if not wanted as of ISDN<-->modems.
  2498.  
  2499.   Just look at my example:
  2500.  
  2501.   [fastlst.cfg]
  2502.   TypeDef HST      1
  2503.   TypeDef PEP      2
  2504.   TypeDef V32      4
  2505.   TypeDef V32B     8
  2506.   TypeDef VFC     16
  2507.   TypeDef X75     32
  2508.   TypeDef V110L   64
  2509.   TypeDef V110H  128
  2510.   TypeDef UX75    32
  2511.   TypeDef UV110L  64
  2512.   TypeDef UV110H 128
  2513.  
  2514.   Now let's look at binkley.cfg. Please note the sequence of the entries!
  2515.  
  2516.   [binkley.cfg]
  2517.   BitType
  2518.   ModemType 32      /  /X75
  2519.   ModemType 64      /  /V110L
  2520.   ModemType 128     /  /V110H
  2521.   Modemtype 31   ATD/  /MODEM
  2522.  
  2523.   RESULT: Your line will NOT call any ISDN node, even if (s)he has any modem
  2524.           flag set!
  2525.  
  2526.   [binkley.cfg]
  2527.   BitType
  2528.   ModemType 32   ATD/   /X75
  2529.   ModemType 64   ATD/   /V110L
  2530.   ModemType 128  ATD/   /V110H
  2531.   Modemtype 31      /   /MODEM
  2532.  
  2533.   RESULT: Your line will ONLY call ISDN nodes, even if they have a modem flag
  2534.           set. It will never call a "modem only" node
  2535.  
  2536.   [binkley.cfg]
  2537.   BitType
  2538.   ModemType 32   ATD/     /X75
  2539.   ModemType 64   ATD/     /V110L
  2540.   ModemType 128  ATD/     /V110H
  2541.   Modemtype 31   ATK99D/  /MODEM
  2542.  
  2543.   RESULT: Your line will call both ISDN and modem nodes, with different dial
  2544.           strings. Preferred is "ISDN", but "modem" is possible
  2545.  
  2546.  
  2547. RH: "ModemTrans"
  2548.  
  2549.   Old style: "ModemTrans <flag> <prefix>/<suffix>"
  2550.   New style: "ModemTrans <flag> <prefix>/<suffix> /<name of flag>"
  2551.  
  2552.   There are no changes for your current config, but if you like to see the
  2553.   nodelist info in the zoomed outbound window (ALT-I), you would like to see
  2554.   the modem flags of the node in "ascii".
  2555.  
  2556.   A line "ModemTrans 32 ATD/ /X75" would allow to display a modem of type 32 as
  2557.   "X75". The display is "BitType" aware.
  2558.  
  2559.  
  2560. RH: "NoErrDelay"
  2561.  
  2562.   Binkley XE has the feature to wait 5 seconds after each error found in any
  2563.   config file. With this keyword you can switch this off.
  2564.  
  2565.  
  2566. RH: "BinkDir"
  2567.  
  2568.   If a directory needed for binkley to run is not found: create it. This works
  2569.   for all directories that are given in binkley.cfg. It works for the logfile's
  2570.   directory, too.
  2571.  
  2572.  
  2573. RH: "ShowDomains"
  2574.  
  2575.   Binkley 2.60 and all XEs did NOT show the domains of outbound mail in their
  2576.   outbound window. If you like it or if you need displaying of domains: include
  2577.   this keyword in your config.
  2578.  
  2579.   Default is: no domains in "Pending Outbound"
  2580.  
  2581.   Note about domains:
  2582.  
  2583.   Binkley is fully capable to handle 5D addresses, but you have to know how it
  2584.   is done ;)
  2585.  
  2586.   Assume there is mail for a node 256:256/256 (MXBBSNet). Where is his
  2587.   outbound mail searched for?
  2588.  
  2589.   Binkley 2.60 searches this mail in \MXBBSNet.100.
  2590.  
  2591.   If you are using a 5D setup (this is: you are using domains) then your setup
  2592.   has to be like this:
  2593.  
  2594.   ;domain       domainname   abbreviation  name_of_nodelist
  2595.   Domain        MXBBsNet     MXBBsNet      nodex
  2596.  
  2597.   ;domainkludge zone         outbound_directory_PRE(!!)_name
  2598.   DomainKludge  256          MXBBsNet
  2599.  
  2600.   With these lines you determined, that "MXBBSNet.100" is the outbound
  2601.   directory for all nodes in zone 256 (256 is hex 100, this is where this
  2602.   ".100" comes from).
  2603.  
  2604.  
  2605. RH: "BiDiOK", "JanusOK"
  2606.  
  2607.   If either of them is set, binkley will allow janus/hydra connects even in
  2608.   case the modem doesn't tell a "reliable" string. This only happens, however,
  2609.   if the actual "baudrate" is equal or less then "BiDiBaud" resp. "JanusBaud".
  2610.  
  2611.   Difference:
  2612.  
  2613.   formerly: BiDiOk   /ARQ
  2614.             BiDiBaud 9600
  2615.  
  2616.   -> Only if modem reports "CONNECT <rate<9600>/ARQ" hydra/janus will be
  2617.   enabled.
  2618.  
  2619.   now:      BiDiOk
  2620.             BiDiBaud 9600
  2621.  
  2622.   -> If modem reports "CONNECT <rate<9600>/<anything>" hydra/janus will be
  2623.   enabled, don't care about "<anything>"
  2624.  
  2625.  
  2626. RH: "Port <name>"
  2627.  
  2628.   Normally this would be "Port <number of comport>", as in "Port 2". From now
  2629.   on you can write "Port COM1" as well as "Port 1", meaning that you can give
  2630.   the device name of the port to use. This has, at the moment, no effect beyond
  2631.   the fact that you can play with it. It will, however, be extended to use any
  2632.   device that can handle serial communication.
  2633.  
  2634.  
  2635. RH: "PasswordFile <path+filename>"
  2636.  
  2637.   Instead of recompiling your nodelist again and again if you have password
  2638.   problems or a new password protected link, you can from now on tell binkley
  2639.   where it can search for YOUR passwords directly.
  2640.  
  2641.   The file has to have the same format as a "fastlist" (tm) password file, i.e.
  2642.   a line has to look like:
  2643.  
  2644.   "PASSWORD zone:net/node.point@domain password"
  2645.  
  2646.   Example:
  2647.  
  2648.      Password 2:2476/7 passed ;comment        valid, password is "passed"
  2649.      Password 2:2476/* passed                 invalid, no wildcards allowed
  2650.      Password 2:2476/7@fidonet passed         valid, defines password "passed"
  2651.                                               only for a node "2:2476/7" with
  2652.                                               the CORRECT domain ("fidonet"). A
  2653.                                               node 2:2476/7@anynet would get a
  2654.                                               password failure.
  2655.  
  2656.   This is an extension of password protection, 'cause with passwords only in
  2657.   compiled nodelists binkley can normally not distinguish between a password
  2658.   for "2:2476/7@anynet" and "2:2476/7@fidonet".
  2659.  
  2660.   Note:  The password directly read from this file overrides any password
  2661.   -----  in your compiled nodelist(s)! This feature IS intented to change
  2662.          passwords on-the-fly without recompiling. The file is always read
  2663.          at runtime when a password has to be verified. You don't need to
  2664.          restart Binkley to be aware of any updates to that file.
  2665.  
  2666.  
  2667. RH: "NoFancyStrings"
  2668.  
  2669.   I really don't like that binkley changes strings. Sometimes it's ok, but most
  2670.   times it is not, imho.
  2671.  
  2672.   Don't use this keyword and nothing will change.
  2673.  
  2674.  
  2675. RH: "ForcedRescan"
  2676.  
  2677.   I've had the situation that one of my 2 lines crashed and left a BTRESCAN.BSY
  2678.   file in the flags directory. When it started again it produced really a lot
  2679.   of zero byte files in my \deleted\ directory (with OS/2 you can redirect all
  2680.   deleted files to a directory of your wish).
  2681.  
  2682.   Therefore i included this keyword: If you include it, too, then Binkley will
  2683.   not create nor care about BTRESCAN.BSY and BTRESCAN.DMP but perform a real
  2684.   rescan when it is scheduled.
  2685.  
  2686.  
  2687. RH: "HoldAfterBadConnect <1...65535>"
  2688.  
  2689.   Have you ever had this problem:
  2690.  
  2691.   You have a session password with someone. This person has included it, you
  2692.   have. But no session will be established because your friend uses some brand
  2693.   new beta mailer with some little bugs?? I've had this situation. I will never
  2694.   have it, cause this is very expensive: Binkley calls, all is technically ok,
  2695.   the other side hangs up. No mail has been transferred, that's why binkley
  2696.   calls again. And again. And again.
  2697.  
  2698.   After <number> calls HoldAfterBadConnect will flag this nodes outgoing mail
  2699.   as "has already made 65535 attempts to send".
  2700.  
  2701.   This is something harder then "HOLD", cause other programs (Squish f.e.)
  2702.   would probably set the status of "HOLD" mail back to "NORMAL". No program
  2703.   except binkley itself will, however, decrease the count of 65535 or delete
  2704.   the respectice counter file.
  2705.  
  2706.  
  2707. RH: "ShowPassword"
  2708.  
  2709.   Allows displaying of the password in the information window. Maybe you don't
  2710.   like others to be allowed to press "alt-i" and view your session-pws. If you
  2711.   don't care: include this keyword.
  2712.  
  2713.  
  2714. RH: "NoEMSI"
  2715.     "NoWaZOO"
  2716.     "NoHydra"
  2717.     "NoJanus"
  2718.     "FTS-0001"
  2719.     "NoRequests"
  2720.     "NoDietIFNA"
  2721.     "NoZedZap"
  2722.     "NoSeaLink"
  2723.     "ReqOnUs"
  2724.     "NoPickup"
  2725.     "NoWildcards"    this is a new statement
  2726.  
  2727.   Now works either as known (this means: it is a global setting) or on a
  2728.   per-node base. If you put nothing behind this verb, it works "globally", else
  2729.   it works "on this node only". If you mix both, let's say "NoEMSI" and "NoEMSI
  2730.   1:1/0", then it works globally, too, of course.
  2731.  
  2732.   New Syntax:
  2733.  
  2734.   FTS-0001    <nodenumber>: is the same as NoEMSI plus NoWaZoo plus NoSeaLink.
  2735.                             and results in XModem connects.
  2736.   NoEMSI      <nodenumber>: no EMSI on calls to "nodenumber".
  2737.   NoWazoo     <nodenumber>: no WaZoo on calls to/from "nodenumber".
  2738.   NoHydra     <nodenumber>: no Hydra on calls to/from "nodenumber".
  2739.   NoJanus     <nodenumber>: no Janus on calls to/from "nodenumber"
  2740.   NoZedZap    <nodenumber>: no ZedZap on calls to/from "nodenumber"
  2741.   NoSeaLink   <nodenumber>: no Sealink on calls to/from "nodenumber"
  2742.   NoDietIFNA  <nodenumber>: no FTS-1 sessions on calls to "nodenumber"
  2743.   NoPickup    <nodenumber>: No Pickup FROM "nodenumber"
  2744.   NoReqests   <nodenumber>: No Requests FROM "nodenumber"
  2745.   ReqOnUs     <nodenumber>: Allow "nodenumber" to frequest even if YOU called.
  2746.   NoHydraChat <nodenumber>: no hydrachats on calls to/from "nodenumber"
  2747.   NoWildcards <nodenumber>: Reject requests containing wildcards (* and ?).
  2748.  
  2749.   Default:   As in earlier times. If you don't change your config, you have no
  2750.   --------   changes in binkley's behaviour.
  2751.  
  2752.   Exception: As in earlier times: if no common protocol exists, FTS-0001 will
  2753.   ---------- be choosen for INCOMING calls. You can, however, deny FTS-0001
  2754.              sessions on OUTGOING calls with "NoDietIFNA".
  2755.  
  2756.   Without "nodenumber" the changed behaviour works on both in- and outgoing
  2757.   calls. With "nodenumber" it depends on *when* the nodenumber in fact is
  2758.   known.
  2759.  
  2760.   On outgoing calls it is always known, but on incoming calls you first have to
  2761.   do (f.e.) EMSI, and after EMSI has been successful you will know that the
  2762.   nodenumber is a "NoEmsi" number.
  2763.  
  2764.   ALT-E in zoomed outbound lets you toggle the flags at runtime.
  2765.  
  2766.               That state will be forgotten if binkley terminates!
  2767.  
  2768.  
  2769. RH: "NoFilter"
  2770.  
  2771.   Binkley in the past required a "filter string" (fe. "NoFilter /ARQ"). This
  2772.   has been changed to not filter AT ALL if no string is present. "NoFilter"
  2773.   means: no filtering.
  2774.  
  2775.  
  2776. RH: Changed "current settings" window
  2777.  
  2778.   It now doesn't show "M'Task" but the current DTE rate ("modem baudrate")
  2779.   instead. With ISDN and 115200 bps there has been not enough space behind "COM
  2780.   1". The "Status"-line now *shows* the status: "Waiting", "Init" but also
  2781.   "Hydra", "Janus", "FTSC" and so on.
  2782.  
  2783.  
  2784. RH: Changed size and position of the three windows "status", "recent", and
  2785.     "outbound". The outbound window now is 2 columns more in size.
  2786.  
  2787.  
  2788. RH: "AfterMail" with OS/2
  2789.  
  2790.   Old Style: "AfterMail <any string>"
  2791.   New Style: "AfterMail [#]<any string>"
  2792.  
  2793.   I changed this to start a detached session of "aftermail" program. The
  2794.   session is in VIO-mode, independent and gets the starting binkleys
  2795.   environment. It will be started minimized and invisible. Don't forget to put
  2796.   an EXIT statement at the end if CMD-files!
  2797.  
  2798.   To enable detached sessions you have
  2799.  
  2800.    1) to add the "#" char (this signals your intentions)
  2801.  
  2802.    2) to change the command this way:
  2803.  
  2804.         AfterMail #<os2-path>\CMD.EXE /C <script-path>\Toss.cmd
  2805.  
  2806.       because CMD.EXE must be started to execute "toss.cmd".
  2807.  
  2808.   Example: AfterMail #c:\os2\cmd.exe /c f:\binkley\toss.cmd
  2809.  
  2810.   If you don't change your config, nothing changes. The char "# has is removed
  2811.   if you don't run OS/2.
  2812.  
  2813.  
  2814. RH: Changed behaviour so that a nodes mail is handled as if it were mail of an
  2815.     "unlisted system" if that nodes modem is undialable.
  2816.  
  2817.  
  2818. RH: Removed the limitation of number of allowed AKAs ("Address" keyword).
  2819.  
  2820.   The limitation of recognizing the remotes AKAs is still left, though.
  2821.  
  2822.  
  2823. RH: Added code to allow an EMSI string up to 64kB (EMSI limit).
  2824.  
  2825.   In normal systems this code will have no function, but in systems with many
  2826.   many AKAs (>100) it will work.
  2827.  
  2828.  
  2829. RH: ALT-L in unattended mode
  2830.  
  2831.   Toggles between loglevel 6 (debug mode) and configured loglevel.
  2832.  
  2833.  
  2834. RH: Node Information
  2835.  
  2836.   ALT-I in zoomed outbound and the "Send" and "Get" window, also in nodelist
  2837.   lookup brings information about the currently tagged node. This led to an
  2838.   extension of the keyword Modemtrans.
  2839.  
  2840.  
  2841. RH: Loglevels
  2842.  
  2843.   I extended it to up to 7 (formerly: 6).
  2844.  
  2845.   Up to now LogLevel 7 is necessary to log the states of the statemachine to
  2846.   binkley.log. The corresponding char is '&'. See StateTbl.c and Misc.c. If you
  2847.   are really debugging the state machine: set your loglevel to 7.
  2848.  
  2849.   Allowed Loglevel 0. Loglevel 0 means, that only strings staring with a '!'
  2850.   will be logged to the logfile.
  2851.  
  2852.  
  2853. RH: "Override <address> <phone> <modemflag[,modemflag]> <fidoflag[,fidoflag]>"
  2854.  
  2855.   Allows to override any nodelist entry. Everything after a ";" or "%" is cut!
  2856.  
  2857.   You can add nodes and points, that are not in the nodelist and change the
  2858.   settings for listed nodes and points.
  2859.  
  2860.   The <address> must be at least 3D (Zone:Net/Node). If you don't fill in the
  2861.   address completely, the line is skipped.
  2862.  
  2863.   The <phone> field must contain a "dialable" number, this is: the pure number
  2864.   you have to dial. No prefixes for local calls, f.e.
  2865.  
  2866.   The <modemflag> field
  2867.    * requires configuration of "ModemTrans" statements
  2868.    * "Override" must be included *after* "ModemTrans".
  2869.  
  2870.   You are completely free in the names of the modemflags, but they must be the
  2871.   same as in the third (new) field of "ModemTrans".
  2872.  
  2873.   You can insert more then 1 string by putting a comma after each string.
  2874.  
  2875.   The <fidoflag> field allows the following strings:
  2876.    CM : this means CM (continious mail) as defined in FTS-5
  2877.    HUB: this node is a hub
  2878.    RC : this node is a region coordinator
  2879.  
  2880.   The flags for "Host", "Point" and "ZC" are set by binkley internally.
  2881.  
  2882.   You can insert more then 1 string by putting a comma after each string.
  2883.  
  2884.   Instead of filling in the fields "phone" and/or "modemflag" you can insert a
  2885.   dash ("-") as a placeholder if another field follows. Then Binkley will
  2886.   ignore the "dashed" fields and will use the data from the nodelist.
  2887.  
  2888.   Empty fields are allowed only from behind to the front.
  2889.  
  2890.   Examples:
  2891.  
  2892.     ModemTrans  31    / /Modem    ; links type 31 with string "Modem"
  2893.     ModemTrans  32 ATD/ /X75      ; links type 32 with string "X75"
  2894.     ModemTrans  64 ATD/ /V110L    ; links type 64 with string "V110L"
  2895.     ModemTrans 128 ATD/ /V110H    ; links type 128 with .. you know it!
  2896.  
  2897.     Override 1:-1/-1.0@fidonet   110 ; don't copy this line! #(
  2898.     Override 1:901/499.0@fidonet 0054-1-8765432 X75,V32B
  2899.     Override 1:901/499.0@fidonet 0054-1-8765432 X75,V32B CM
  2900.     Override 1:901/400.0@fidonet 0054-1-8765432 - CM,HUB
  2901.     Override 1:901/499.0@fidonet - X75
  2902.     Override 1:901/499.7@fidonet - - CM,POINT
  2903.                                 ^^^^^^^^^^^^^^^^^^^^ note the dashes!
  2904.  
  2905.  
  2906. RH: "PipeTo <remote computer name>"
  2907.  
  2908.   Binkley OS/2 writes to a pipe named "\PIPE\BINKPIPE.???" with "???" being the
  2909.   decimal tasknumber. This is NOT intended to serve a "Snoop" program, but to
  2910.   transmit the complete screen to the pipe server "binkpipe.exe" (see below).
  2911.  
  2912.   If you insert this keyword, be sure only to give the name of the remote
  2913.   computer. Do NOT give the pipe's name, 'cause this is pre-defined and must
  2914.   not be given!
  2915.  
  2916.   Example:
  2917.  
  2918.   [%Task%==1]
  2919.   PipeTo \\pentium
  2920.  
  2921.   [%Task%==2]
  2922.   PipeTo \\notebook
  2923.  
  2924.   [%Task%==3]
  2925.   ;no "PipeTo" statement
  2926.  
  2927.   Binkley (task 1), will write "\\pentium\pipe\binkpipe.001", and
  2928.   Binkley (task 2), will write "\\notebook\pipe\binkpipe.002".
  2929.   Binkley (task 3), will write "\pipe\binkpipe.003" if and only if binkpipe.exe
  2930.   is running on the same computer as binkley/task 3 is running.
  2931.  
  2932.   Note:  If you make use of this statement, then be aware that if the
  2933.   -----  remote computer is switched off, binkley may slow down hardly!
  2934.  
  2935.  
  2936. RH: "binkpipe.exe" (OS/2 only, Freeware under the binkley license agreement)
  2937.  
  2938.   This is the serverside of said pipe.
  2939.  
  2940.   It runs under OS/2 PM and displays binkley's screen. It must be called with
  2941.   "tasknumber" at the commandline.
  2942.  
  2943.   Example:
  2944.  
  2945.   binkpipe         installs binkpipe watching for binkley/task 1
  2946.   binkpipe 1       installs binkpipe watching for binkley/task 1
  2947.   binkpipe 2       installs binkpipe watching for binkley/task 2
  2948.  
  2949.   If you start binkpipe.exe after binkley, you will only see the screen
  2950.   updates, not the complete screen. This is because it only prints what binkley
  2951.   actually writes.
  2952.  
  2953.   Note:  Due to many changes to the screen layout of BT-XE after this program
  2954.   -----  was introduced (and nobody changed binkpipe, too), this is not up to
  2955.          date and can't be used any more (the results are unpredictable...).
  2956.  
  2957.  
  2958. RH: "DelBadCall"
  2959.  
  2960.   Binkley remembers bad connects in his "netnode.$$?" files. If too many bad
  2961.   connects are remembered, binkley will never call this system again. You, as
  2962.   the sysop, have to delete this file manually. If you insert "DelBadCall" in
  2963.   binkley.cfg then binkley will act as follows:
  2964.  
  2965.   On outbound calls nothing changes: after x tries the remote system will be
  2966.   remembered as "undialable" and will not be called again.
  2967.  
  2968.   On inbound sessions, however, it will always check if there exists a
  2969.   "netnode.$$?" file for the called system and delete it.
  2970.  
  2971.   Where is the beef?
  2972.  
  2973.   Without this feature, your binkley would not have called the remote system
  2974.   even if the system becomes "living" again (proofed by his call to your
  2975.   system). With this feature it will assume that the problem on the remote side
  2976.   has been solved and will try again to connect.
  2977.  
  2978.   If your leave the "DelBadCall" statement away, nothing will change.
  2979.  
  2980.  
  2981. RH: BBSwelcome
  2982.  
  2983.   Changed it from static data to a pointer to char. The needed memory will be
  2984.   requestet and BBSwelcome set at runtime.
  2985.  
  2986.  
  2987. RH: binkley.evt
  2988.  
  2989.   Old behaviour: request 32KB and load up to 255 events there.
  2990.  
  2991.   New behaviour:
  2992.     request 32KB.
  2993.     check for binkley.S??
  2994.     if it exists:
  2995.        request as much memory you need to load binkley.s??
  2996.        success: free the old 32KB.
  2997.                 load binkley.s??
  2998.                 done.
  2999.        failure: recompile binkley.evt to binkley.s??
  3000.     else
  3001.        continue with old code.
  3002.  
  3003.  
  3004. RH: "EventFile <drive:\path\filename>"
  3005.  
  3006.   If you omit this, binkley will read its events from "binkley.evt", this is
  3007.   the normal behaviour. This normal behaviour means: it is not depending on
  3008.   TASK variables, all tasks read the same file "binkley.evt", and that file has
  3009.   to exist in binkleys start directory. This new statement allows (but doesn't
  3010.   require) a path, however. If you ommit the path, the eventfile will be
  3011.   searched in binkleys directory.
  3012.  
  3013.   I've included in my binkley-configuration:
  3014.  
  3015.   eventfile c:\binkley\cfg\binkley.event.0%task%
  3016.  
  3017.   So task 1 reads "binkley.event.01" from path c:\binkley\cfg\ whereas task 2
  3018.   reads "binkley.event.02".
  3019.  
  3020.   Since task 2 is my modem line, that should always "do nothing but wait +
  3021.   check if task 1 is living", I've a very small eventfile for task 2, but a
  3022.   normal one for task 1.
  3023.  
  3024.  
  3025. RH: "Event"
  3026.  
  3027.   Added "Y" and "P"
  3028.  
  3029.   Event All 00:00 00:01 Y   ; "no sound" between 00:00 and 00:01
  3030.   Event All 00:00 00:01 P   ; "no pickup" between 00:00 and 00:01
  3031.  
  3032.   Y and P can be mixed with every other flag, of course. NoPickup <nodenumber>
  3033.   and the "no pickup event" work as "Do not pickup if either NoPickup is set or
  3034.   this event does not allow pickups".
  3035.  
  3036.  
  3037. RH: Modem-Init
  3038.  
  3039.   After end of session binkley needed up to 10 seconds on my side before it
  3040.   reinitialized the modem (and hung up).
  3041.  
  3042.   I changed it to send a modem-init immediately after a session is in fact
  3043.   finished, this means: no more mail to send and/or to receive. After this is
  3044.   done binkley may do whatever it likes to: write a costlog, etc, but i don't
  3045.   wanna charge for this time.
  3046.  
  3047.  
  3048. RH: Borland C 3.1 for DOS
  3049.  
  3050.   Made it compilable and running with BC 3.1 (not so much work)
  3051.  
  3052.  
  3053. RH: Event A=x
  3054.  
  3055.   The possible value for "A=x" has been documented as 0..1800. This maximum of
  3056.   1800 would result in 180,000 1/100 secs (30 minutes). A value of 180,000
  3057.   doesn't fit in a 16 bit integer, however. Therefore I changed binkley to
  3058.   accept only values between 0 and 655.
  3059.  
  3060.  
  3061. SM: "async_os.c"
  3062.  
  3063.   32 bit comm routines are now included with some bugfixes. comTXBlockTimeout()
  3064.   is now multithreaded and com_getbuf() now uses the receive-buffer much
  3065.   better.
  3066.  
  3067.  
  3068. SM: snserver.dll is not necessary anymore
  3069.  
  3070.   The sourcecode is now in "pipe.c". The pipe is now only created at startup,
  3071.   snoop_close is called by the system on exit (atexit(snoop_close) in "bt.c")
  3072.  
  3073.  
  3074. SM: AfterCall
  3075.  
  3076.   If 'AfterCall <n> <string>' is being used and n>0, Binkley sends <string>
  3077.   between 'PreInit' and 'Init'.
  3078.  
  3079.  
  3080. SM: new config statement 'SharePort'
  3081.  
  3082.   If 'SharePort' is specified and the (internal) 32 bit com-routines are used,
  3083.   binkley opens the com-port as OPEN_SHARE_DENYNONE. This enables binkley to
  3084.   share the com-port with a MDOS - BBS (via vfd.sys or vcfos.sys).
  3085.  
  3086.  
  3087. SM: new config statement 'ModemRing RINGING' replaces 'ModemIgnore RINGING'.
  3088.  
  3089.  
  3090. RH: status field of outbound window
  3091.  
  3092.   Added '?' for status field of outbound window, meaning "undialable system".
  3093.   The message "don't know.." is now displayed only in debug mode. New mail flag
  3094.   "MAIL_CANTDIAL".
  3095.  
  3096.  
  3097. RH: share_fopen()
  3098.  
  3099.   If a share_fopen() can't be done, binkley will display a perror() status_line
  3100.   message if in debug mode (except if called from freepoll.c/netsize()).
  3101.  
  3102.  
  3103. RH: changed use of CACHE.C
  3104.  
  3105.   If you do not #define CACHE, then the old BT 2.60 code is re-enabled. Reduces
  3106.   EXE size by about 6KB.
  3107.  
  3108.  
  3109. RH: freepoll.c
  3110.  
  3111.   Removed netsize() from freepoll.c and changed both netsize() functions in
  3112.   cache.c and mailovly.c to fit the convention needed in freepoll.c. Reduces
  3113.   EXE size by 800 byte.
  3114.  
  3115.  
  3116. RH: Removed "EventSub()" from bink.h, misc.c and timers.c - it was not coded.
  3117.  
  3118.  
  3119. RH: Added set_prior(2) in b_spawn.c before do_exec, and set_prior(Regular)
  3120.     after spawning.
  3121.  
  3122.  
  3123. RH: changed respond_to_file_requests to update fsent.
  3124.  
  3125.   Made fsent global, and changed janus.c to update fsent, too. moved
  3126.   "invoke_SRIF()" calls to respond_to_file_requests().
  3127.  
  3128.  
  3129. RH: mailovly.c:
  3130.  
  3131.   Moved the (large) recursive search through all outbounds to a separate
  3132.   routine "do_for_all_domains".
  3133.  
  3134.  
  3135. RH: changed version_timestamp:
  3136.  
  3137.   It's built from the __DATE__ and __TIME__ macros and reflects the date, hour
  3138.   and minute of the compilation. Since __DATE__ and __TIME__ are defined by
  3139.   ANSI committee there should be no problems with compiler dependence.
  3140.  
  3141.  
  3142. RH: SendBuffer()
  3143.  
  3144.   Changed SendBuffer() to abort if not forced to send all and if received byte
  3145.   looks like a '*' (EMSI). Increased speed for session startup by 3 seconds
  3146.   (from formerly 10 to now 7).
  3147.  
  3148.  
  3149. RH: MCP_SetStatus()
  3150.  
  3151.   Rearranged MCP_SetStatus() in some files and debugged it (send MCP string to
  3152.   status_line). It seems to be all "ok" now.
  3153.  
  3154.  
  3155. RH: async_os.c
  3156.  
  3157.   Removed tBuf[] array of async_os.c and replaced tBuf by a pointer to
  3158.   hydra._txbuf. This saved 8KB static memory, increased speed (no "memcpy") and
  3159.   it *works*.
  3160.  
  3161.  
  3162. RH: enabled debug to file (formerly "btpe_debug") in async_os.c.
  3163.  
  3164.   If you set the environment variable "BINKDBG=<path+filename>" you'll get a
  3165.   logfile of your com-transmission.
  3166.  
  3167.  
  3168. RH: changed ALL protocols to return the same resultcodes to their application
  3169.     layer. They codes are #defined in xfer.h! (hope i didn't forget one.).
  3170.  
  3171.  
  3172. RH: Removed "NoMNPFilter".
  3173.  
  3174.   See note above about "NoFilter".
  3175.  
  3176.  
  3177. RH: Removed j_message and z_message.
  3178.  
  3179.   Created a new transfer_message() in zmisc.c similar to j_message. This is
  3180.   called by ZModem, Janus and Hydra. Fixed bug in not showing the complete
  3181.   filesize during the transfer (both ?_messages showed only the transferred
  3182.   size).
  3183.  
  3184.  
  3185. RH: changed the computation of the remaining time for file transfers to use 1
  3186.     common routine (in misc.c: "long remaining(long bytes, long efficicency)".
  3187.  
  3188.   Added a function "estimate_time()" (similar to elapse_time() ) that displays
  3189.   that time at POS_ESTIMATED in filewin.
  3190.  
  3191.   Changed ALL protocols to display both elapsed and estimated time in the
  3192.   format hh:mm:ss, and changed them so, that they display that values at the
  3193.   same position on the screen (if ever possible).
  3194.  
  3195.  
  3196. RH: missing in the 2.60 doc:
  3197.  
  3198.   Function Requests are possible if you add a line of that format
  3199.  
  3200.    $<freq-magic> [!<password>] <params,...> %04x %04x %04x
  3201.  
  3202.   To your "Okfiles"-list. This is a very useful and powerful feature, that i
  3203.   lately re-enabled ;)
  3204.  
  3205.   The format of the last three (and required!) params can be choosen at will,
  3206.   but they should exist if you don't like the risk of a hang. They represent
  3207.   the callers addess' "Node", "Net" and "Point".
  3208.  
  3209.   The following line in OKFILES.TXT:
  3210.  
  3211.   $GET_BT32 C:\OS2\CMD.EXE /C c:\zip.cmd  bt32    %04x    %04x    %04x
  3212.   -magic--- ----------command----------- -para1- -para2- -para3- -para4-
  3213.  
  3214.   will invoke this OS/2-Script if a caller frequests "GET_BT32":
  3215.  
  3216.   +----------------------------------------------+----------------------
  3217.   |@SETLOCAL                                     |set some local params
  3218.   |SET BINKLEY=C:\BINKLEY\                       |
  3219.   |SET  SOURCE=C:\BINKLEY\BIN                    |ZIP should be in the PATH
  3220.   |SET     OUT=C:\BINKLEY\OUTBOUND               |
  3221.   |                                              +----------------------
  3222.   |ZIP %OUT%\%1.ZIP %SOURCE%\%1.EXE              |perform ZIP
  3223.   |                                              +----------------------
  3224.   |IF ".%4"==".0000" GOTO NODE                   |if point is 0000, then
  3225.   |                                              |the caller is a node else
  3226.   |MD   %OUT\%2%3.PNT                            |make point directory and
  3227.   |ECHO %OUT%\%1.ZIP>%OUT%\%2%3.PNT\0000%4.QLO   |create a QLO-file with the
  3228.   |ECHO           .>>%OUT%\%2%3.PNT\0000%4.QLO   |zipped filename
  3229.   |EXIT                                          +----------------------
  3230.   |                                              |
  3231.   |:NODE                                         |if it is a node, then do
  3232.   |ECHO %OUT%\%1.ZIP>%OUT%\%2%3.QLO              |do the same for the node
  3233.   |ECHO           .>>%OUT%\%2%3.QLO              |this line makes a
  3234.   |EXIT                                          |"newline" only.
  3235.   +----------------------------------------------+----------------------
  3236.  
  3237.  
  3238. RH: "Processing node ...."
  3239.  
  3240.   Removed that bothering "Processing node ...." from unattended modes status
  3241.   lines. Instead i changed it so, that the dial message looks like:
  3242.  
  3243.    :12:34:45 BINK Dialing 0721821350  (2:2476/7@fidonet -- systemname)
  3244.  
  3245.   That way binkley is completely quiet (if not in debug mode) if the other
  3246.   nodes modem is "undialable".
  3247.  
  3248.  
  3249. RH: xmit_set()
  3250.  
  3251.   Rearranged xmit_set() and added the possiblity of a 'M H' event definition.
  3252.   'M H' will lead to C-mail (CUT and CLO) to non-CM nodes been sent without
  3253.   regarding the costs. Other non-CM mail (DUT and OUT) will be sent only if the
  3254.   costs allow it.
  3255.  
  3256.  
  3257. RH: event flag L
  3258.  
  3259.   Added code to not send mail in case you defined an event with "L=xx", but the
  3260.   assumed cost to transfer the stuff is not EQUAL xx. Formerly you could define
  3261.   L=999 or L<1000, it was exactly the same: all mail was sent if the cost has
  3262.   been assumed to be "less then 1000". But if i configure an event with exact
  3263.   costs, i expect binkley to do that exactly as i configured it: if "L=999" is
  3264.   defined, it shall not dial if cost is 998 or 1000 or even 0. In these cases i
  3265.   would have written "L<1000".
  3266.  
  3267.  
  3268. RH: "HoldAreaNameMunge"
  3269.  
  3270.   Changed "HoldAreaNameMunge" to return a directory name parallel to our "Hold"
  3271.   directory if the remote address contains domains we have not defined (where
  3272.   we have no "abbreviations" for).
  3273.  
  3274.   Formerly all *.BSY flags were created in the parent directory of our "Hold"
  3275.   directory. If the "hold" directory was "\binkley\outbound", then all unknown
  3276.   domains led to \binkley\*.BSY flags.
  3277.  
  3278.   Now they lead to \binkley\outbound.???\*.BSY, where ??? is the zone number
  3279.   (if not "nozones" defined in binkley.cfg).
  3280.  
  3281.   OLD:
  3282.  
  3283.    Setting flag_file for 2:2476/8@fidonet
  3284.    MakeDir: Attempting to create \Binkley\Outbound
  3285.    Erzeuge Flagfile \Binkley\Outbound\09ac0008.BSY.
  3286.  
  3287.    Setting flag_file for 999:4711/0.815@lachdoch.net
  3288.    MakeDir: Attempting to create \Binkley
  3289.    MakeDir: Attempting to create \Binkley\12670000.PNT
  3290.    Erzeuge Flagfile \Binkley\12670000.PNT\0000032f.BSY.
  3291.  
  3292.   NEW:
  3293.  
  3294.    Setting flag_file for 2:2476/8@fidonet
  3295.    MakeDir: Attempting to create \Binkley\Outbound
  3296.    Erzeuge Flagfile \Binkley\Outbound\09ac0008.BSY.
  3297.  
  3298.    Setting flag_file for 999:4711/0.815@lachdoch.net
  3299.    MakeDir: Attempting to create \Binkley\Outbound.3e7
  3300.    MakeDir: Attempting to create \Binkley\Outbound.3e7\12670000.PNT
  3301.    Erzeuge Flagfile \Binkley\Outbound.3e7\12670000.PNT\0000032f.BSY.
  3302.  
  3303.  
  3304. RH: Since that "junk character from keyboard" message is removed, one can't
  3305.     check whether BT lives or sleeps or is dead. I changed the "[" and "]"
  3306.     around the task display to pulse. I hope this doesn't bother someone.
  3307.  
  3308.  
  3309. RH: Removed "parse_list" structure and changed all occurences.
  3310.  
  3311.   Instead of defining a statement the like { 9,"statement"} you can now define
  3312.   if like {"statement"}. This saves really a lot! of static data space!
  3313.  
  3314.  
  3315. RH: Removed "char blanks[264]" from static data.
  3316.  
  3317.   The data will be requested on the heap, depending on the actual needed size
  3318.   (SB_COLS).
  3319.  
  3320.  
  3321. RH: "Clock [<colour>] [<char>]"
  3322.  
  3323.   The screen saver now displays a 7-segment digital clock if you put that
  3324.   statement to binkley.cfg.
  3325.  
  3326.   You can add a colour value for the clock to be displayed.
  3327.  
  3328.   You can also add, after the colour value if any, a char that should be used to
  3329.   display.
  3330.  
  3331.   If you omit both parameters, then a "1" is drawn with '1' chars, a "2" is
  3332.   drawn with '2' chars and so on.
  3333.  
  3334.   Clock      ; displays the clock with default values
  3335.   Clock 31   ; displays a clock white on blue with default chars
  3336.   Clock ░    ; displays a clock grey on black using '░' to draw it.
  3337.   Clock 31 ░ ; displays a clock... ok?
  3338.  
  3339.   Clock ░ 31 ; is *wrong* and will not work as you expected!
  3340.  
  3341.  
  3342. RH: "Unread Netmails Pending"
  3343.  
  3344.   "Unread Netmails Pending" now shows the amount of *received* and not
  3345.   "intransit" unread netmails.
  3346.  
  3347.  
  3348. RH: moved "Prometer" stuff to the z_message routine, where possible. Did the
  3349.     same with janus' "update_status".
  3350.  
  3351.  
  3352. RH: "cFosCost"
  3353.  
  3354.   Add "cFosCost" to your binkley.cfg to get the real costs of an outbound call.
  3355.   You need an ISDN line and cFos must be the actual "modem". You must configure
  3356.   cFos to get the charge information, though!
  3357.  
  3358.   If "cFosCost" is read before "AfterCall" then it will override and disable
  3359.   any following "AfterCall" statements. Instead it will work as if "AfterCall 3
  3360.   ATi1|" has been defined.
  3361.  
  3362.   If "cFosCost" is read after "AfterCall", then your "AfterCall" string will be
  3363.   used to get the costs.
  3364.  
  3365.   "cFosCost" overrides any event-based cost definitions and cost calculations.
  3366.   You should define a correct "CostUnit".
  3367.  
  3368.  
  3369. RH: reversed all changes with hydra timers.
  3370.  
  3371.   They now are time() based as before.
  3372.  
  3373.  
  3374. RH: changed code when to display "chat available" in the caption field of the
  3375.     "recent activity" window.
  3376.  
  3377.   Obviously not everybody that has HOPT_DEVICE also has chat available. I've
  3378.   seen that with BT EE, that has HOPT_DEVICE but no chat. With the current mode
  3379.   of displaying this information it should be correct in that way, that binkley
  3380.   will not show "chat available" if the other side does not explicitly transmit
  3381.   the string "Remote has chat facility available".
  3382.  
  3383.  
  3384. RH: It will help you that I included code to dump exception information to a
  3385.     trapfile ;)
  3386.  
  3387.   This code is able to tell the source code line where an exception occured,
  3388.   but it needs a SYM file in the start directory. Thats a miss, because WATCOMS
  3389.   SYM files are not decipherable from that code. At least it will even with
  3390.   WATCOM (and EMX, i hope so) tell the exact reason for the exception.
  3391.  
  3392.   This code can (and maybe should) be removed in a public version. You need to
  3393.   define EXCEPTIONS to include it. See my makefile for how to create a SYM
  3394.   file.
  3395.  
  3396.   You will have to recompile bt.c in case of #define EXCEPTIONS
  3397.  
  3398.  
  3399. RH: changed ZSEND.C to show another behavior in case of ZMODEM_END.
  3400.  
  3401.   This is *only* a test at this time, it *may be* that this is wrong! See
  3402.   ..\doc\fsent.doc for the reason.
  3403.  
  3404.  
  3405. RH: Created makefiles for WATCOM to make binkpipe.exe and bink_pm.dll.
  3406.  
  3407.   Change to ..\os2_pm and call watcom10.cmd.
  3408.  
  3409.  
  3410. RH: changed zmodem.h to contain the comments from original zmodem.h again.
  3411.  
  3412.  
  3413. RH: os2_pm.c
  3414.  
  3415.   Changed OS2_PM.C to load all external DLLs with DosLoadModule and provide an
  3416.   interface to binkley. This way binkley can be compiled "completely" and no
  3417.   functions are missing, if the runtime environement allows it. removed all
  3418.   #definitions for MAX_MCP, OS2SETWINDOWTITLE and LOAD_PM_DLLS. Binkley doesn't
  3419.   need to care about any more.
  3420.  
  3421.  
  3422. RH: Removed support for SNSERVER.DLL completely.
  3423.  
  3424.   Binkley uses its internal pipe code by Steffen Motzer. This code uses an own
  3425.   thread and works perfectly. The config statement "Snoop" and the environment
  3426.   variable "SNOOPPIPE" remain valid and are used for the same purpose.
  3427.  
  3428.   Removed #define Snoop and all recerences. To include this code is now default
  3429.   behaviour in OS/2, because it requires no further action of the user (he
  3430.   doesn't need a special 3thd party DLL as SNSERVER.DLL was).
  3431.  
  3432.  
  3433. RH: Changed the way the names of "Snoop" and "MCPpipe" are evaluated to this:
  3434.  
  3435.   If binkley.cfg contains the statement without a pipe name, then the
  3436.   environment is searched for "SNOOPPIPE" or "MCPPIPE" respectively, else the
  3437.   environment name is ignored.
  3438.  
  3439.   This way you can, but must not, override the environment name. Old behaviour
  3440.   was: if an environment name existed, this one was taken and the name in
  3441.   binkley.cfg was ignored.
  3442.  
  3443.  
  3444. RH: Re-installed support for name search for dialing in non fullscreen session.
  3445.  
  3446.  
  3447. RH: The "blinking" flag around the task number should now work in X, Y and
  3448.     ZModem sessions, too.
  3449.  
  3450.  
  3451. RH: Removed UUE and ASC capabilities of hydra protocol.
  3452.  
  3453.   You can easily enabled them again by #defining HYDRA_UUE in your makefile.
  3454.   This #define HYDRA_UUE does both enabling UUE and ASC and increasing hydras
  3455.   buffers to the then necessary (large!) size.
  3456.  
  3457.  
  3458. RH: "SmartBiDi [Outgoing]"
  3459.  
  3460.   SmartBidi enables SmartBidi behaviour - without this keyword, BT-XE will
  3461.   behave as before.
  3462.  
  3463.   With SmartBidi, BT will disable Hydra and Janus in case of we have no local
  3464.   mail on hold for the remote system if:
  3465.  
  3466.   - it is an inbound call (so all AKAs of remote are known to us [EMSI])
  3467.   or:
  3468.   - we have "NoPickUp" active
  3469.   or:
  3470.   - "SmartBidi Outgoing" has been configured and we do an outbound call.
  3471.     This will check only the amount for the CALLED AKA (no other AKA is known
  3472.     at this moment).
  3473.  
  3474.   Then zmodem will be the fastest method (100 percent eff, whilst hydra and
  3475.   janus have only 95 percent eff.) and is choosen. Since calling a system means
  3476.   that EMSI knows nothing but the called address, and since the called system
  3477.   might have other AKAs, too, for which we might have mail on hold, the
  3478.   statement "SmartBiDi Outgoing" is used to force this behaviour in case we
  3479.   are calling.
  3480.  
  3481.   Be aware that SmartBidi may confuse your links because they are used to get
  3482.   (x)Hydra and now get ZedZap.
  3483.   Also, you won't be able to chat with ZedZap ...
  3484.   Also, sending a file along with a file request to your system (expecting
  3485.   xHydra) won't be nice with SmartBidi enabled, because you will get ZedZap.
  3486.  
  3487. Comment of TJW: shall we really keep this keyword ? As it seems to me, it has
  3488.                 more disadvantages than advantages...
  3489.  
  3490.  
  3491. RH: Changed Alex Woicks code to set the Netware Server time to make it
  3492.     work with VAC, too.
  3493.  
  3494.  
  3495. RH: Changed btconfig.c to use less code for error messages.
  3496.  
  3497.  
  3498. TJW: Removed superfluous "Application" keyword
  3499.  
  3500.  
  3501. TJW: Removed obsolete "Zone", "Aka", "Point" keywords
  3502.  
  3503.  
  3504. TJW: Removed obsolete "NoZones" keyword
  3505.  
  3506.  
  3507. TJW: added MCP / tasklist messages for outbound rescan / read
  3508.  
  3509.  
  3510. CFS: New keyword: CallBack <node> [<callerid>]
  3511.  
  3512.   If a call from node comes, it is rejected and all mail for 'node' is changed
  3513.   to crash. If there is no mail, a .CLO is created. You'll also need ModemCID
  3514.   and CallerID (to tell Binkley the node's CallerID). Alternativly you can also
  3515.   add the number as the last parameter in CallBack. If you need more than one
  3516.   CallerID for one node, DO NOT use multiple CallBack keywords but multiple
  3517.   CallerID keyword.
  3518.  
  3519.   Example:
  3520.  
  3521.     CallBack 2:341/79 003413782005
  3522.  
  3523.   If 003413782005 (that's me) calls, it is rejected and called back. Be aware
  3524.   that cost and event configuration applies. If calling the node is too
  3525.   expensive or the event is set to receive-only (or the nodelist flags don't
  3526.   allow calling), BT-XE will *not* call, but still reject the call.
  3527.  
  3528.   Remember to define ModemCID or callback will not work. Finally, remember that
  3529.   callerID is used only to identify the call, but the number used to call back
  3530.   is the nodelisted one.
  3531.  
  3532.  
  3533. CFS: Added ModemCostReset.
  3534.  
  3535.   If used, the cost timer will not start after connecting but after the last
  3536.   string specified in ModemCostReset is received from the modem (or after
  3537.   dialing if none is received). If the modem is able to return RINGING, it is a
  3538.   good idea to use these keywords, as it will result in BT-XE knowing exactly
  3539.   the true start of the charges.
  3540.  
  3541.   Be aware that costtimecorrection still applies, so you may want to set it
  3542.   to 0 if ModemCostReset is used.
  3543.  
  3544.   Example:
  3545.  
  3546.       ModemCostReset RINGING
  3547.       ;ModemIgnore   RINGING
  3548.       ;ModemRing     RINGING
  3549.  
  3550.  
  3551. CFS: Added StatsToMsg.
  3552.  
  3553.   BT-XE now has the ability of logging a stat sheet at the end of the day.
  3554.  
  3555.   Syntax: StatsToMsg OurAKA DestAKA <PKT password>
  3556.       or: StatsToMsg OriginAKA Echotag <PKT password>
  3557.  
  3558.   BT-XE now has the ability of logging a stat sheet at the end of the day.
  3559.  
  3560.   Examples:
  3561.  
  3562.     StatsToMsg 2:341/70 BINKLEY.STATS would post the message in the echo
  3563.                                       BINKLEY.STATS.
  3564.  
  3565.   StatsToMsg writes a .PKT in the protected inbound directory, so one can store
  3566.   the message in any messagebase supported by his/her tosser.
  3567.  
  3568.   For echomail, the address is the 'from' address of the PKT. The destination
  3569.   address is always the main address of the system.
  3570.  
  3571.  
  3572. TS: DOS only:
  3573.  
  3574.   Removed config statements (not recognized any more):
  3575.    - MultiLink
  3576.    - TaskView
  3577.    - TopView
  3578.    - Rev3
  3579.  
  3580.   Removed code for the following obsolete multitaskers:
  3581.    - DoubleDOS
  3582.    - MOS386
  3583.    - MultiLink
  3584.    - TaskView
  3585.    - TopView
  3586.  
  3587.   Removed code for obsolete revision 3 type fossils
  3588.  
  3589.  
  3590. TS: all versions
  3591.  
  3592.   Removed config statement `NoFullScreen' (not recognized any more) and the
  3593.   ability to run in line-oriented output mode.
  3594.  
  3595.  
  3596. MT: New Keyword HydraMsgSend <text>
  3597.  
  3598.   Sends a message to the remote system at the end of each hydra-block
  3599.  
  3600.  
  3601. TS: updates MSC700/800 stuff;
  3602.  
  3603.   Now able to produce an overlayed i386 16bit dos exe with MSC800
  3604.  
  3605.  
  3606. MR: Changed config file search "logic"
  3607.  
  3608.   If the environment variable BINKLEY is set then this is binkley's home
  3609.   directory. Otherwise it's the current directory. The config and the event
  3610.   file as well as binkley.ban are taken from binkley's home directory.
  3611.  
  3612.  
  3613. MR: Include keyword
  3614.  
  3615.   Binkley now checks if the given file name already has a complete path
  3616.   (drive:\path\filename) and does no longer simply always add his home
  3617.   directory.
  3618.  
  3619.  
  3620. RH: fixed xmit_setflags() bug
  3621.  
  3622.   "HOLD" and "REQ" files are not to be handled in xmit_setflags() (thanks to
  3623.   Alex Woick who pointed this out).
  3624.  
  3625.  
  3626. RH: fixed some errors in latest XE*.DIF
  3627.  
  3628.   removed the partially included NetWare-Stuff (awaiting Alex' new DIF)
  3629.  
  3630.  
  3631. RH: Updated exceptio.c
  3632.  
  3633.   now it *does* print line numbers
  3634.  
  3635.  
  3636. RH: janus and hydra
  3637.  
  3638.   Removed throughput() calls from janus and hydra. It can't be done this way.
  3639.  
  3640.  
  3641. RH: shells
  3642.  
  3643.   Had the problem that pressing ALT-F2 lead to start a shell (SQUISH SQUASH)
  3644.   and on return binkley could not re-open the COM port. Changed mailer.c to
  3645.   avoid that problem.
  3646.  
  3647.  
  3648. MR: new keyword: "UseCompletePaths"
  3649.  
  3650.   If this keyword was found in the config file, Binkley adds its home
  3651.   directory, when creating BAT or CMD files for BBS Exit/Batch and Extern
  3652.   Exit/Batch. Also, the files created contain Binkley's home directory.
  3653.  
  3654.    Example: home directory: c:\binkley
  3655.             BBSBAT## is always created in c:\binkley
  3656.             BBSBAT## calles c:\binkley\spawnbbs ...
  3657.  
  3658.   Binkley also adds it's home directory to commands called when using BBS Spawn
  3659.   and Extern Spawn.
  3660.  
  3661.    Example: home directory: c:\binkley
  3662.             binkley calls : c:\binkley\spawnbbs ...
  3663.                             c:\binkley\extmail  ...
  3664.  
  3665.  
  3666. MR: Little internal change
  3667.  
  3668.   BBSopt and EXTopt no longer keep the string (e.g. "spawn") but only a flag
  3669.   what to do. This saves about 8 bytes of memory! ;)
  3670.  
  3671.  
  3672. MR: "BBS Batch" now always exits with errorlevel 101.
  3673.  
  3674.   So you can simply use "if errorlevel 101 %binkley%\bbsbat%task%" to call your
  3675.   BBS. But you should check your config to be sure, that you don't use this
  3676.   errorlevel somewhere else...
  3677.  
  3678.  
  3679. MR: ErrorLevelShell now works for the funktion keys, too.
  3680.  
  3681.  
  3682. MR: "ErrorLevelShell <errlvl> none"
  3683.  
  3684.   Nothing will be done for errorlevel <errlvl>. So you can disable unused
  3685.   function keys if you like.
  3686.  
  3687.  
  3688. MR: I_ALIVE.xx will now (hopefully) be deleted upon all exits.
  3689.  
  3690.  
  3691. MR: language.txt
  3692.  
  3693.   Changed language.txt for use with editors that strip trailing blanks. Please
  3694.   use "\b" instead of them!
  3695.  
  3696.  
  3697. MR: BINK_PM.DLL is now searched in binkley's home directory
  3698.  
  3699.  
  3700. MR: added missing \n to error message used by share_fopen
  3701.  
  3702.  
  3703. TJW: SmartBidi keyword/behaviour
  3704.  
  3705.   Changed SmartBidi keyword/behaviour so that it is disabled if unused, see
  3706.   above.
  3707.  
  3708.  
  3709. CFS: Added colour support for the activity window.
  3710.  
  3711.   Rather than providing it for the programmer, I have added it for the user.
  3712.   This means that one can change the colours by editing the language file.
  3713.  
  3714.   Colours are selected by inserting `new_colour` in the string, for example:
  3715.  
  3716.     `cyan`Password `white`error
  3717.  
  3718.   String replacements take effect before processing the colours, so you may add
  3719.   colours (or remove them) if you wish, i.e.
  3720.  
  3721.     StringRep CONNECT `red`CONNECT`white`
  3722.  
  3723.   would result in something such as
  3724.  
  3725.     CONNECT 64000/ID=003413782005
  3726.  
  3727.   with CONNECT in red and the rest of the line in white.
  3728.  
  3729.   Available colours are:
  3730.  
  3731.     "black", "blue", "green", "cyan", "red", "magenta", "brown", "white",
  3732.     "gray", "brightblue", "brightgreen", "brightcyan", "brightred",
  3733.     "brightmagenta", "yellow" and "brightwhite".
  3734.  
  3735.   Note:  If you use colours in the language file, you have to pay attention:
  3736.   -----
  3737.           1. Do not use colours in front of a log level indicator:
  3738.  
  3739.                WRONG:   E#032L`brightred`*Lost Carrier.
  3740.                CORRECT: E#032L*`brightred`Lost Carrier.
  3741.  
  3742.           2. The whole line INCLUDING the colour tags must be shorter than
  3743.              the screen width. Longer lines will be cut off.
  3744.  
  3745.  
  3746. JNK: "ErrorLevelShell <errlvl> poll <node1> <node2>..."
  3747.  
  3748.   Creates poll-file for all nodes <nodex>. Checks if node is listed.
  3749.  
  3750.  
  3751. SM: "ErrorLevelShell <errlvl> post \sem32\<name>"
  3752.  
  3753.   Binkley will post the specified Event Semaphore (usefull to start tosser).
  3754.  
  3755.  
  3756. TJW: added some brightred colour to severe error messages (PW error e.g.)
  3757.  
  3758.  
  3759. TJW: caution: new L event flags (only "L" is not valid any more):
  3760.  
  3761.   Li : compares with cost index (V7 "RealCost" value)
  3762.   Lc : compares with cost[cost index] * 1 minute
  3763.   Lt : compares with cost[cost index] * (estimated transfer time)
  3764.  
  3765.   Also made L handling in BT source a bit more "explicit".
  3766.  
  3767.  
  3768. TJW: changed layout of event display in "Transfer Status" window
  3769.  
  3770.  
  3771. MR: New command line keyword: TERM
  3772.  
  3773.   Starts binkley in terminal mode.
  3774.  
  3775.  
  3776. MR: Added Modem Window, new keyword: ShowModemWin
  3777.  
  3778.   Can be switched off and on with Alt+V. If ShowModemWin is found in config,
  3779.   modem window will be switched on upon startup.
  3780.  
  3781.  
  3782. MR: Watcom DOS overlayed version
  3783.  
  3784.   Moved some object files from overlay to root.
  3785.  
  3786.  
  3787. MR: Cosmetical fix: window title
  3788.  
  3789.   Title of recent activity window shouldn't be removed any more when switching
  3790.   on/off chat windows.
  3791.  
  3792.  
  3793. TJW: CSS (current session statistic) window implementation.
  3794.  
  3795.  
  3796. TJW: did some changes in EMSI.C to speed up EMSI handshaking retries
  3797.  
  3798.   (TJW 970309: EMSI data loss checker, EMSI_DAT resend, EMSI_INQ resend)
  3799.      
  3800.   Be careful with this. It worked here, but who knows ...
  3801.      
  3802.  
  3803. CFS: Added a event behaviour setup screen, just press alt-n and see.
  3804.  
  3805.  
  3806. TJW: changed FORCEXIT.%u to FORCEXIT.%02X (same naming convention as other
  3807.      flags)
  3808.      
  3809.  
  3810. TJW: removed single task "support" (TaskNumber==0)
  3811.  
  3812.           
  3813. JNK: "NoTranx"
  3814.  
  3815.   Do not send Tranx info in EMSI-handshake.
  3816.  
  3817.  
  3818. CFS: OS/2 only: Added CID detection directly from CAPI.
  3819.  
  3820.   The scenario where this is useful is the following: An ISDN card (usually
  3821.   used with a mailer task) is connected to an ISDN bus. A modem is connected to
  3822.   the same bus, either via an A/B switch in the NT, or via an A/B switch in the
  3823.   card. In any case, when an analog call comes to be answered by the modem, the
  3824.   modem misses the caller-id.
  3825.  
  3826.   This scenario is the one I have at home, and I think it is common. Since the
  3827.   ISDN card gets the caller-id (I used Jörg-Stefan Sell's Caller-id to see it),
  3828.   it is possible to use it to get the caller-id. The usage is the following:
  3829.  
  3830.    CAPICID EAZs Services Modem_string1 [Modem_string2] ... [Modem_stringN]
  3831.  
  3832.   When a call comes for any of the specified EAZs (of course, only the same
  3833.   used by the modem should be indicated) and for the specified services (list
  3834.   of services is listed below), BT-XE adds /ID=number to all the strings coming
  3835.   from the modem that starts with modem_string.
  3836.  
  3837.   For example:
  3838.  
  3839.     CAPICID 0 T RING CONNECT
  3840.  
  3841.   In my old 14400 it produces the following effect:
  3842.  
  3843.     RING/ID=3780127
  3844.     CONNECT 14400/ARQ/V32/LAPM/V42BIS/ID=3780127
  3845.  
  3846.   The ID addition is performed right at the modem reception part. So it can be
  3847.   used for freepoll, pass it to the BBS and everything that can be done with
  3848.   "real" CIDs from modems.
  3849.  
  3850.   Notes: While it seems to work great here, it is still a bit untested.
  3851.  
  3852.   When this feature is used, BT-XE starts a new thread to answer the CAPI
  3853.   messages, and if one of them is a phone number, BT-XE records it for "future"
  3854.   usage. When a qualified modem string comes, BT-XE just adds the phone number.
  3855.   Thus if a RING is detected by the modem before the CAPI message arrives (this
  3856.   doesn't happen at home, but it's conceivable) it is possible that the RING
  3857.   isn't followed by a ID, or could even be followed by a wrong ID! Be aware of
  3858.   these potential problems and test to see how it works for you. (if it
  3859.   doesn't, let me know :-)). Also note that the stored CID is reset after each
  3860.   call, to avoid getting a RING with the phone number from the previous call.
  3861.  
  3862.   The fake CID change is blocked (i.e. if a new CID comes it is ignored) in a
  3863.   two cases: When we have dialed (the stored CID is changed to the dialed
  3864.   number, so a valid ID is added to the CONNECT), and when we have answered.
  3865.  
  3866.   The valid services to monitor are (you may indicate as many as you wish, even
  3867.   if it is probably nonsense):
  3868.  
  3869.      V -> Videophone       T -> Telephony    A -> A/B services
  3870.      2 -> X.21             4 -> Fax (gr. 4)  I -> Videotext
  3871.      D -> Data transmis.   5 -> X.25         L -> Teletex
  3872.      M -> Mixed mode       R -> Remote ctl.  G -> Graphic telephone service
  3873.      X -> Videotext (new standard).
  3874.  
  3875.  
  3876. MR: "Colors" keyword:
  3877.  
  3878.   Added two new colours (add at the end of "Colors" in Cfg) for modem activity
  3879.   window: sent and received stuff. Please note, that you cannot change the
  3880.   background colour.
  3881.  
  3882.  
  3883. MR: Waiting for modem answers:
  3884.  
  3885.   Binkley checked for key strokes while initializing the modem and getting
  3886.   modem information after sessions. Now this is only done while answering and
  3887.   dialing.
  3888.  
  3889.  
  3890. MR: Init and TermInit
  3891.  
  3892.   Binkley now accepts multiple init strings for mailer and terminal. At the
  3893.   moment up to 5 for each.
  3894.  
  3895.  
  3896. MR: Binkley now always checks for OK when initializing the modem.
  3897.  
  3898.   If no OK was received, the init string will be retransmitted. After three
  3899.   tries, SpawnNoOK will be called if specified.
  3900.  
  3901.  
  3902. MR: New keyword: PreAnswer <string>.
  3903.  
  3904.   Lets you setup the modem before answering a call. Binkley will check for OK.
  3905.  
  3906.  
  3907. MR: New keyword: CallerID <nodenumber> <callerid>.
  3908.  
  3909.   Lets you setup callerids for a node. Used for ConditionalPoll and CallBack.
  3910.   If you need more than one CallerID for one node, simply use mutiple CallerID
  3911.   keywords with the same node number.
  3912.  
  3913.   Note:  Remember to set CallerID for EVERY nodenumber you use with
  3914.   -----  ConditionalPoll (you can still set the callerid with the last
  3915.          parameter of ConditionalPoll) and CallBack!
  3916.  
  3917.  
  3918. MR: CallerID, CallBack and ConditionalPoll
  3919.  
  3920.   ConditionalPoll and CallBack now optionally take a CallerID. You only need to
  3921.   set a CallerID once for each AKA, either with CallerID or ConditionalPoll and
  3922.   CallBack respectivly. Binkley will display an error message if you specify a
  3923.   CallerID twice for an AKA.
  3924.  
  3925.   Note:  YOU MUST USE "ModemCID <string>" to use THESE THREE FEATURES!
  3926.  
  3927.  
  3928. MR: Changed WindowTitleFmt
  3929.  
  3930.   Do NOT use this keyword if you don't want to use this feature. DO use it
  3931.   WITHOUT parameter to use default title format. Use it WITH parameter to use
  3932.   your own title format.
  3933.  
  3934.  
  3935. TJW: changed progress meter optics (after an idea of Timo Maier)
  3936.  
  3937.  
  3938. TJW: IMPORTANT!!! Change your configs:
  3939.  
  3940.   Keywords About, KnownAbout, ProtAbout, Avail, KnownAvail, ProtAvail have been
  3941.   removed!
  3942.   
  3943.   Just add @FILES and @ABOUT to your OKfile / KnownReqList / ProtReqList - as
  3944.   you do it with other magics, too (hint: add FILES and ABOUT magic at the
  3945.   TOP[!] of the OKfile).
  3946.  
  3947.  
  3948. CFS: (OS/2 only) Added CFOS support.
  3949.  
  3950.   If 'CFOSLine' is used the last line will show a status line with data from
  3951.   CFOS: Current ISDN time (based on the last info received from the telco),
  3952.   whether the call is incoming or outgoing, phone number, b-channels being
  3953.   used, control flow support, error correction support, CPS, B1 bps rate (for
  3954.   example 64000), and cost info. I don't have cost info so this is untested.
  3955.  
  3956.   There are three keys available on connections:
  3957.  
  3958.     Alt-R    -> Reset ISDN hardware (terminates all connections)
  3959.     Key Up   -> Add a b-channel
  3960.     Key Down -> Remove a b-channel
  3961.  
  3962.   Note:  CFOS/2 build 1214 or later is required.
  3963.  
  3964.  
  3965. CFS: It is now possible to skip files in Hydra and Zmodem
  3966.  
  3967.   Alt-S -> Skip file but keep all bytes received so far
  3968.   Alt-K -> Skip file and kill it
  3969.  
  3970.  
  3971. CFS: Added StringRepModem.
  3972.  
  3973.   Works as StringRep but only operates on strings coming from the modem.
  3974.  
  3975.  
  3976. TJW: removed "MakeDir" keyword
  3977.  
  3978.   This is default behaviour now!
  3979.  
  3980.  
  3981. TJW: changed efficiency / remaining time calculations
  3982.  
  3983.   Changed efficiency / remaining time calculations to calculate with 8
  3984.   bits/byte (assuming sync transfers) instead of 10 bits/byte (as needed with
  3985.   async transfers, 8n1). This will give lower efficiencies (<100%), but they
  3986.   are more useable than the old ones ...
  3987.  
  3988.  
  3989. MR: CSS progress bars
  3990.  
  3991.   Moved chars for progress bars to language.txt.
  3992.  
  3993.  
  3994. MR: CallerIDs
  3995.  
  3996.   The given CallerIDs now only need to be a substring of the CallerID
  3997.   presented by a caller and do not need to be exactly the same.
  3998.   You can now also define multiple CallerIDs for one node.
  3999.  
  4000.  
  4001. CFS: Added a history window, press alt-h to enter.
  4002.  
  4003.   Colours have the following meaning:
  4004.     Yellow -> Incoming mailer call
  4005.     Red    -> Outgoing mailer call
  4006.     Cyan   -> Fax call
  4007.     Green  -> BBS call
  4008.  
  4009.  
  4010. MR: removed keyword "DTRHigh"
  4011.  
  4012.   If you want the DTR to stay high on exits, use the Keyword "Busy" and don't
  4013.   add a 'v' (see modem command character translation) to drop the DTR.
  4014.  
  4015.   On the other hand if you wish to drop the DTR on exits, you now HAVE to add
  4016.   a 'v' to drop the DTR if you use the keyword "Busy".
  4017.  
  4018.   New default for Busy: v
  4019.  
  4020.  
  4021. MR: REQ files are now only deleted after a successfull session
  4022.  
  4023.  
  4024. MR: new keyword: "HangUp"
  4025.  
  4026.   Use this keyword to define the string to be sent to the modem to hang up. It
  4027.   shouldn't do anything else than sending a CR, drop DTR and raise DTR again
  4028.   with some pause between those actions.
  4029.  
  4030.   Default: |`v~~^`````|
  4031.  
  4032.  
  4033. TJW: added V7+ support - changed Version7 keyword
  4034.  
  4035.   You may activate V7+ support by using: Version7 Plus
  4036.  
  4037.   So just add the "Plus" specifier after the normal Version7 keyword. To use
  4038.   V7+ you additionally need a nodelist compiler generating a V7+ compatible
  4039.   nodex.dtp/*.dtp file.
  4040.  
  4041.   V7+ support will enable BT-XE to access complete raw nodelist data, e.g. for
  4042.   supporting ,U,Txy flags and similar stuff. We just began implementing this,
  4043.   so there isn't much USE of V7+ yet - but this will come later!
  4044.  
  4045.   Concerning your other tools using V7: V7+ is highly compatible with V7 - so
  4046.   there should be NO problems if programs that don't know V7+ (but only V7)
  4047.   access a V7+ nodelist.
  4048.  
  4049.   If you only specify "Version7" (without "Plus"), Binkley will use standard
  4050.   V7 nodelist - as ever (but see also SysopNDX keyword !!!) ...
  4051.  
  4052.  
  4053. MR: multiple PreAnswer keywords
  4054.  
  4055.   Up to 5 PreAnswer strings are allowed now.
  4056.  
  4057.  
  4058. CFS: Added some (more or less) complete stats screens.
  4059.  
  4060.   Press Ctrl-T and then 1-7 to select stat page. The stats screens are based on
  4061.   the data from the history file therefore the more time you have been using a
  4062.   BT-XE with it the better the stats will be.
  4063.  
  4064.   Note:  Stats are system-based, not call-based. For example the 'top mailers'
  4065.   -----  will tell you the mailers that are used by most different systems, not
  4066.          by most different callers, so if someone calls 100 times it is only
  4067.          counted once. So what BT-XE does is build a list of different systems
  4068.          and sort it for each stat. For the mailer stats, the speed stats, etc,
  4069.          which may vary for a given system between different calls, only the
  4070.          *last* entry in the history window counts. So if a guy switch to a
  4071.          different mailer, only the new one is accounted.
  4072.  
  4073.  
  4074. CFS: Added new keyword AutoChatOpen.
  4075.  
  4076.   If used, the chat window will open as soon as the remote types something (so
  4077.   no HCON: lines are logged). autochatopen also disables computer-generated
  4078.   beeps in chat (for chat timeout or close or whatever). 
  4079.  
  4080.  
  4081. CFS: Added ChatLogDir directory
  4082.  
  4083.   To indicate the directory where chat sessions are to be stored.
  4084.  
  4085.  
  4086. CFS: Started work on a chat-based command interpreter.
  4087.  
  4088.   It will allow both the local and the remote sysops to do real-time requests,
  4089.   such as attaching or freqing files on the fly.
  4090.  
  4091.   As of now, you may only do
  4092.   
  4093.     /btloc log filename
  4094.      
  4095.   to record the chat session. ChatLogDir must be used in order for this to
  4096.   work.
  4097.  
  4098.   I plan to add some more (useful) commands as soon as possible (I need to do
  4099.   some other things that can't wait because I'm about to install BT-XE in a
  4100.   special enviroment).
  4101.  
  4102.  
  4103. CFS: Added NodeExtraDir directory
  4104.  
  4105.   Allows to "link" a node with a directory. When the node connects, BT-XE will
  4106.   send and delete everything in that directory before the usual .?LO and .?UT
  4107.   stuff.
  4108.  
  4109.    Example: NodeExtraDir 2:2453/470 e:\hauke\
  4110.  
  4111.   Most of the people will have no use for this, however it is very useful if
  4112.   you wish to share the files to send to a node between BT-XE and a FTP server,
  4113.   for example. Just set the home directory in the daemon and the NodeExtraDir
  4114.   in BT-XE to the same path. The user may now get its stuff with the most
  4115.   convenient method each time. No need to choose... Of course, a utility to
  4116.   move .?LO and ?UT files to the remote's directory is a handy tool if you plan
  4117.   to use this :-) I'll provide a good (=one that does more than just moving
  4118.   files) one in the near future.
  4119.  
  4120.   Note:  You should make sure that files are not marked read only, otherwise
  4121.   -----  BT-XE will not be able to delete them and will try to send them each
  4122.          time the node connects.
  4123.  
  4124.   Also, if you are running the DOS or Windows versions, be aware that I don't
  4125.   know what happens if the directory has subdirectories (this means that you
  4126.   should try it and notify - don't expect someone else to do so). The OS/2
  4127.   version will just ignore them so you can build a tree for your FTP server or
  4128.   whatever you need.
  4129.  
  4130.   Note:  These NodeExtraDirs are not visible in the outbound window, nor
  4131.   -----  do they influence anything else like calling or conditional poll.
  4132.          Only their content is sent if a session was estabished with the
  4133.          corresponding node. Not more, not less.
  4134.  
  4135.  
  4136. MR: multiple TimeSync keywords.
  4137.  
  4138.   You now can use multiple TimeSync keywords to define as many sync addresses
  4139.   as you like.
  4140.  
  4141.   Note:  MaxDeltaTSeconds is a global value, you can't define different
  4142.   -----  values for different nodes. The last value is used for all nodes.
  4143.  
  4144.  
  4145. MR: default address for node dialogs
  4146.  
  4147.   Nearly all node dialogs now present a default address. This default address
  4148.   is either the address under your cursor (zoomed pending outbound mail window)
  4149.   or the top address (small pending outbound mail window).
  4150.  
  4151.   If you want to edit the default address, simply use backspace or left arrow.
  4152.   All other keys delete the default address. So if you want to enter a
  4153.   completely different address simply type it in and do not use backspace.
  4154.  
  4155.  
  4156. TS: added free stack / mem space display (DOS-versions only)
  4157.  
  4158.  
  4159. TJW: fixed CPU-hogging of Janus, made Janus (hopefully) SRIF-capable
  4160.  
  4161.  
  4162. TJW: "SysopNDX" keyword
  4163.  
  4164.   If you want Binkley to use the old style "SYSOP.NDX", then you MUST use
  4165.   this keyword. Version7 normally needs this keyword.
  4166.   
  4167.   If this keyword isn't used, Binkley will use <NODEX>.SDX for sysop name
  4168.   lookups. If you use only V7+ software, this should work.
  4169.  
  4170.  
  4171. TS: fixed "CursorRow" bug
  4172.  
  4173.  
  4174. AW: History importer for Maximus 3.0x
  4175.  
  4176.   The program getmax3 imports the last called user from Maximus CBCS 3.0x into
  4177.   the XE history. It must be called after a user logged off and Maximus exited
  4178.   with errorlevel 3 or above (2 and below means: no user was logged on).
  4179.   Help for getmax3 with "getmax3 -?".
  4180.  
  4181.   Example spawnbbs.cmd:
  4182.  
  4183.     maxp max -s%1 -b%2 -p%3 -n%TASK% -t%4 -y%5%6 -e0 -ll:\log\line%TASK%ad.log
  4184.     if errorlevel 3 goto lastuser
  4185.     goto end
  4186.   :lastuser
  4187.     getmax3 /h:%bt%\task\callhist.all
  4188.   :end
  4189.  
  4190.  
  4191. AW: added history importer for the internal fax receiver
  4192.  
  4193.  
  4194.  
  4195.  
  4196. ==============================================================================
  4197. ==============================================================================
  4198. ====   --------------------   ================================================
  4199. =====-> Things Still To Do <-=================================================
  4200. ====   --------------------   ================================================
  4201. ==============================================================================
  4202. ==============================================================================
  4203.  
  4204.  
  4205. Known Bugs / Limitations
  4206. ------------------------
  4207.  
  4208. - LocalLog is buggy? Reason unknown yet. DO NOT USE EXCEPT FOR DEBUGGING.
  4209.  
  4210. - Hydra (not xHydra) has problems if you chat when it wants to end hydra
  4211.   batch (e.g. to invoke FREQ processor and continue sending in 2nd batch)
  4212.  
  4213. - If you start from directory .\ but have BT32.EXE and BINK_PM.DLL in
  4214.   directory .\bin it does not work correctly.
  4215.  
  4216. - NoZedZap lets ZedZip enabled - how do I disable ZedZip ???
  4217.  
  4218. - SameRing is NOT implemented correctly !?
  4219.  
  4220. - PipeTo <remoteserver> has problems:
  4221.   - slow BT startup if remote is not there
  4222.   - hang on BT exit if remote is not there
  4223.  
  4224. - sized requests are sometimes not counted for outbound size
  4225.  
  4226. - rewriting of terminal stuff from line-oriented output to fullscreen
  4227.   sbuf'd windowed input/output. This is currently a real mess, sorry -
  4228.   please use an external terminal program if you want to call a BBS.
  4229.  
  4230. - internal terminal crashes when you enter Alt-D + phonenumber
  4231.  
  4232.  
  4233. Features
  4234. --------
  4235.  
  4236. - "PrivateNet" / Boss* necessary ?
  4237.  
  4238. - Event behaviour screen (Alt-N) : move strings to language.txt & clarify.
  4239.  
  4240. - Write importers from popular BBS packages into history.
  4241.  
  4242. - more V7+ usage / features
  4243.  
  4244.  
  4245. [EOF]
  4246.