home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 April / PCO_04_97.ISO / filesbbs / os2 / bos2_xr4.arj / XE_USER.DOC < prev   
Encoding:
Text File  |  1996-12-24  |  79.8 KB  |  2,272 lines

  1.  
  2.                      User documentation for Binkley 2.60 XE
  3.                     ========================================
  4.  
  5. Binkley 2.60 original version is (c) Vince Perriello and available at
  6. 2:2474/400. Filenames: B???_260.ZIP (??? = DOS, OS2, W32 or SRC).
  7.  
  8. Modifications were done by (in alphabetical order) :
  9.   Mike Burgett,           1:215/705    (MB)
  10.   Paul Edwards,           3:711/934    (PE)
  11.   Carsten Ellermann,      2:2432/215   (CE)
  12.   Tobias Ernst,           2:2476/418   (TE)
  13.   Carlos Fernandez Sanz   2:341/70     (CFS)
  14.   Rudolf Heeb,            2:2464/44    (RH)
  15.   Juergen Loh,            2:2448/823   (JL)
  16.   Martin M. Pedersen,     2:238/45     (MMP)
  17.   Michael Reinsch,        2:2474/14    (MR)
  18.   Tom Schlangen,          2:2450/10    (TS)
  19.   Matthias Tichy,         2:2433/955   (MT)
  20.   Thomas J. Waldmann,     2:2474/400   (TJW)
  21.  
  22. This BT-XE version is named BT 2.60XE9612240000
  23. This is date and time of creation    ^----^^--^  of this compiled version.
  24.  
  25. Please refer to this version string if you speak of this modified version.
  26. To be short, we abbreviate this as BT-XE below...
  27.  
  28. Standard disclaimer: regard this as BETA/GAMMA software.
  29.  
  30. We can NOT guarantee that this software has no bugs (but we use it ourselves on
  31. our own risk). So if you use it, use it on YOUR own risk, too ...
  32.  
  33. If you have any problem with this BT-XE version, please contact us!
  34.  
  35. Also, if you are a programmer and doing BT source code modifications /
  36. enhancements / bugfixes, too, please also contact us and work together with us
  37. on this great project!
  38.  
  39.  
  40.  
  41.  
  42. Please read this:
  43.  
  44. Traps & Pitfalls when switching from older / other Binkley versions
  45. ===================================================================
  46.  
  47. - Modem responses are parsed cAsE-sensitive now, so "Ring" in your Binkley.Cfg
  48.   will NOT match any longer a "RING" sent by the modem !!!
  49.  
  50.   Make sure to have your ModemConnect (and all other Modem... response
  51.   settings) / NoFilter statements EXACTLY, case-sensitively matching your
  52.   modem's responses
  53.  
  54.  
  55. - You have either to do a FULL domain setup (Domain, DomainKludge, Address
  56.   z:n/n.p@domain) OR do not use domains AT ALL (no Domain, no DomainKludge,
  57.   only Address z:n/n.p). If you don't REALLY need domains, I advise you NOT to
  58.   use domains at all (it will look nicer and you will have less trouble).
  59.  
  60.  
  61. - Please delete your BINKLEY.S?? files (in Binkley or TaskDir directory) before
  62.   installing a new version of BT-XE. If necessary, please also delete
  63.   BINKLEY.A?? and BINKLEY.D??.
  64.   
  65.  
  66.     
  67.  
  68. Tip from Hauke Hagenhoff, 2:2453/1030
  69. =====================================
  70.  
  71. COM.SYS:
  72.  
  73. When using the original serial-port-driver for OS/2, COM.SYS, you will need to
  74. configure the port using the MODE command for having BinkleyTerm work all
  75. right.
  76.  
  77. The following setting is recommended:
  78.  
  79. MODE COMx:yyyyy,N,8,1,,TO=ON,XON=OFF,IDSR=OFF,ODSR=OFF,OCTS=ON,
  80.      DTR=HS,RTS=HS,BUFFER=ON
  81.  
  82.  (you need to enter this as ONE line!)
  83.  
  84. Where x is the COMx:-port to set and yyyyy the desired port speed.
  85.  
  86. Most important are the IDSR and ODSR-settings, if they are wrong, BT won't work
  87. properly. BUFFER=ON is to switch the FIFO-buffer on.
  88.  
  89.  
  90.  
  91.  
  92. History
  93. =======
  94.  
  95. Attention: Please read this section completely and thoroughly or you will run
  96.            into problems!!!
  97.  
  98.  
  99. BTXE  XR1
  100. =-=-=-=-=
  101.  
  102. Bug fixes
  103. ---------
  104.  
  105. RH: No system crash at requests of PW-protected files without password.
  106.  
  107.  
  108. MMP: fixed: buffer for screen not flushed
  109.  
  110.   I don't think the distributed version of Binkley had this bug, as IBMC was
  111.   treated specially. But Watcom had the same problem as IBMC. The number of
  112.   minutes left is written to the screen through a file which is buffered. This
  113.   fucks up the display, if the buffer is not flushed because the other status
  114.   information was written directly to the display bypassing the buffer. Now the
  115.   buffer is flushed for both the IBMC and the Watcom versions.
  116.  
  117.  
  118. MMP: Fix for ISDN caller ID using ZyXEL 2864I
  119.  
  120.   When RING was seen and Binkley was about to send the answer string, it would
  121.   wait until the modem became silent for a fraction of a second. In this delay,
  122.   Binkley would read characters from the modem, and silently throw them away.
  123.   The caller ID on ISDN lines was lost in this way! This is fixed, and input
  124.   from modem in this period, is now logged as usual. Setting RingWait to 2,
  125.   would also have solved this particular problem, but there is no need to wait.
  126.  
  127.  
  128. MMP: Changed config file parser
  129.  
  130.   The parser used to identify keywords would recognize "CostLogThingy" as
  131.   "CostLog"; i.e. allowing the input word to be longer than the keyword. This
  132.   may sound okay, but it means that you cannot have two keywords where the
  133.   first is a prefix of the other. Also, you cannot define variables on the
  134.   command line where the name matches a keyword. This is changed now, and the
  135.   parser requires the words to be of equal length.
  136.  
  137.  
  138. MMP: Source code fixes important to Watcom C only
  139.  
  140.   1. Watcom C uses buffered output as IBMC does, and this caused problems with
  141.      display updates while transferring files in terminal mode. The real
  142.      problem is that buffered writes are mixed with unbuffered display output.
  143.      The work-around for the IBM compiler has been adopted for Watcom (flushing
  144.      buffers).
  145.  
  146.   2. The signal stuff used to handle Ctrl-C/Break didn't work with Watcom. This
  147.      seems to be a Watcom problem; signal(SIGBREAK,SIG_IGN) is broken. The
  148.      solution is to use signal(SIGBREAK,handler) instead, letting handler()
  149.      reinstall itself on SIGBREAK and do nothing else.
  150.  
  151.  
  152. TJW: Fixed Hydra buffer management bug
  153.  
  154.   This caused memory corruption in original BT 2.60 release. In OS/2 on my
  155.   system this bug showed as funny attributes on the upper "windows" of BT
  156.   screen. But the effects may have varied widely depending on compiler and
  157.   system ...
  158.  
  159.  
  160. TJW: Error message for "COM0?.SYS" changed to "COM.SYS"
  161.  
  162.  
  163. TJW: Wrong HPFS file timestamp used
  164.  
  165.   Fixed bug caused by using wrong HPFS file timestamp in SCD/EVT and file
  166.   update request handling. Now, the "last file modification" timestamp is used.
  167.   Before, "last file access" timestamp was used - which was definitely WRONG
  168.   for HPFS. This caused problems on HPFS only, because FAT file system does not
  169.   have multiple different file timestamps like HPFS (file creation, last file
  170.   access, last file modification).
  171.  
  172.  
  173. TJW: Zoomed outbound view "Age" bug fixed
  174.  
  175.   Weird ages of some thousand days were displayed - fixed!
  176.  
  177.  
  178. TJW: Fixed cosmetical problem with password failure msg
  179.  
  180.   "Trash" at end of PW: "His='', Ours='XXXXXXXX<trash>'
  181.  
  182.  
  183. TJW: FREQ response packet fixes:
  184.  
  185.   - time string had incorrect printf format
  186.   - time string had incorrect FTS format (should be 2 blanks in the mid!)
  187.   - put in session password into freq response packet as packet password (well,
  188.     this isn't correct in every case, but better than no password at all).
  189.   - put in destination NODE address, too. This was forgotten ...
  190.  
  191.  
  192.  
  193. New features
  194. ------------
  195.  
  196. CE: AKAs
  197.  
  198.   Maximum number of AKAs raised from original 25 to BT-XE value of 100 AKAs.
  199.  
  200.  
  201. CE: New function "ConditionalPoll"
  202.  
  203.   Multi-AKA and boolean operation support implemented by Thomas Waldmann.
  204.  
  205.   ConditionalPoll (also known as "FreePoll" from Arjen G. Lentz, who invented
  206.   this in his mailer XENIA) allows an Uplink (you) to reject a call from a
  207.   Downlink, if there is less mail for him than the configured minimum. This
  208.   function will only work with ISDN or a modem that reports the caller ID in
  209.   the "Ring" string.
  210.  
  211.   It's possible to list up to 100 ConditionalPoll entries.
  212.  
  213.   How it does work: the downlink will call you, Binkley gets the caller-ID (eg.
  214.   "RING 57313340"), searches ALL ConditionalPoll entries for matching addresses
  215.   and checks if the condition (minimum outbound size for this AKA) says "reject
  216.   call" or "accept call" for each AKA.
  217.  
  218.   The exact condition is: if outbound size <= MinSize * 1024 then reject.
  219.   MinSize = 0 rejects a call only if there is really NOTHING (0 bytes) on hold.
  220.  
  221.   Each result (accept=TRUE or accept=FALSE) is evaluated (together with the
  222.   result of previous calculation for this number) with the according boolean
  223.   operation "AND" or "OR" to calculate the total result.
  224.  
  225.   The boolean operation listed with the first configured ConditionalPoll entry
  226.   matching a specific number does not care, you can use "Or" or "And" - it
  227.   makes no difference.
  228.  
  229.   If total result is TRUE, call will be accepted. If total result is FALSE,
  230.   call will be rejected.
  231.  
  232.   To reject a call Binkley sends the string configured with "Reject" to the
  233.   modem. To accept a call, Binkley sends the answer string (normal behaviour).
  234.  
  235.   For downlinks who want to make a file request or send an important crash mail
  236.   immediately, Binkley builds a zero byte size file in the outbound called
  237.   "*.TRX" for each user. If the downlink gets a "call reject", he/she can call
  238.   again within MaxDeltaT seconds and the call will be handled normally.
  239.  
  240.   To configure the function use:
  241.  
  242.   Accept call of 07142980031 if size for 2:2474/405>=100KB or 2nd call within
  243.   30 seconds:
  244.  
  245.                     Or/And AKA [3..5D]  MinSize[KB]  MaxDeltaT[s] Phone
  246.   ConditionalPoll   Or     2:2474/405   100          30           07142980031
  247.  
  248.   Accept call of 07142980032 if (size for 2:2474/403>=20KB or 2nd call within
  249.   30 seconds) *AND* (size for 21:492/4003 >= 10KB or 2nd call within 20s):
  250.  
  251.                     Or/And AKA [3..5D]  MinSize[KB]  MaxDeltaT[s] Phone
  252.   ConditionalPoll   Or     2:2474/403    20          30           07142980032
  253.   ConditionalPoll   And    21:492/4003   10          20           07142980032
  254.  
  255.   Accept call of 07142980032 if (size for 2:2474/403>=100KB or 2nd call within
  256.   30 seconds) *OR* (size for 21:492/4003 >= 50KB or 2nd call within 20s):
  257.  
  258.                     Or/And AKA [3..5D]  MinSize[KB]  MaxDeltaT[s] Phone
  259.   ConditionalPoll   Or     2:2474/403   100          30           07142980032
  260.   ConditionalPoll   Or     21:492/4003   50          20           07142980032
  261.  
  262.   You may configure up to 100 such ConditionalPoll lines. Dependant on your
  263.   ISDN adaptor and configuration, you maybe should leave out the leading "0"
  264.   (national calls) or "00" (intl calls).
  265.  
  266.   To reject a call, define once:
  267.  
  268.         Reject <Modem command string|>
  269.  
  270.   For a ZyXEL Elite 2864I use:
  271.  
  272.         Reject ATH1|ATH0|
  273.  
  274.   For ELINK 310 use:
  275.  
  276.         Reject AT\\K|
  277.         ATS21.2=    (shows caller number after RING - tested with EPROM 1.36)
  278.  
  279.   For ELINK 301 use:
  280.  
  281.         Reject AT\\K|     (since EPROM version 2.20 of 11.5.94)
  282.         AT\O5            (show caller number after RING, since v2.12)
  283.  
  284.   Restriction for ELINKs: until a ROM is released which supports a "Call
  285.   rejected" response code, you will only be able to reject incoming calls, but
  286.   not to treat being rejected yourself (you will just receive "NO CARRIER" if
  287.   you are rejected). You may configure a very LOW MaxDeltaT value to handle
  288.   this (not nice, but possible) - see also binkley event file A= parameter. But
  289.   your links should be aware that they will flag you undialable if they dial
  290.   too often without getting a connection.
  291.  
  292.  
  293. CE: New keyword "ModemReject" to identify a rejection response from the modem.
  294. CE: New keyword "AfterCallOut" to send an AT???-command to get a cause value
  295.     from ISDN adapters like ZyXEL 2864I.
  296.  
  297.   There are two different ways to see if a call is rejected:
  298.    1) The ISDN adapter sends "Busy/Cause=34Be" in one line.
  299.    2) You send an AT??? command and get an answer like "Cause = Call reject".
  300.  
  301.   For 1) you need only "ModemReject <Rejectstring>", for 2) you need the
  302.   Rejectstring and "AfterCallOut <Lines> <AT command>".
  303.  
  304.   AfterCallOut needs a number of lines (of output caused by AT command) and an
  305.   AT command which leads to a report with the cause value.
  306.  
  307.   After a rejected outbound call, all mail to this AKA will change to NORMAL
  308.   flavour. Now you have an easy way to ping your Uplink, if he knows the
  309.   feature of Freepoll<tm>/ConditionalPoll.
  310.  
  311.   ModemReject will only work with automatic call not with manual calls!
  312.  
  313.   For ZyXEL 2864I i use "AfterCallOut 9 ATI3|" and "ModemReject Call reject".
  314.   For CFOS you need only "ModemReject /Cause=34Be". For ELINK, there is no such
  315.   possibility until now.
  316.  
  317.  
  318. MT: New config verb "ReInitTime"
  319.  
  320.   This lets you specify the time between modem initializations.
  321.  
  322.   ReInitTime 10 -> init the modem every 10 minutes. Valid range for this
  323.   setting is 1 .. 10 only.
  324.  
  325.   If you specify 0, you will get 1 minute. If you specify >10, you will get 10
  326.   minutes. This is due to a restriction in BT's timer routine and may be
  327.   removed in a later version of BT-XE.
  328.  
  329.  
  330. MT: New config verb "ReadHoldTime"
  331.  
  332.   This lets you specify the time between automatic outbound rescans.
  333.   ReadHoldTime 10 -> rescan outbound 10 minutes. Valid range is 1...
  334.  
  335.  
  336. MT: Support for external request processors (ERPs) with SRIF
  337.  
  338.   To use this, specify in Binkley.Cfg:
  339.  
  340.     SRIF e:\maxfrq\maxfreq $s
  341.  
  342.   The $s parameter will be replaced by the SRIF filename by BT-XE. The SRIF
  343.   file will be called "SRIF.Txx", xx=TaskNumber in Hex.
  344.  
  345.   Known limitations:
  346.  
  347.   The external SRIF erp is only invoked in an EMSI/WaZOO session. Also when
  348.   JANUS is used, the SRIF ERP is not invoked. This may be changed in the near
  349.   future.
  350.  
  351.   The generated SRIF is compatible with the SRIF 1.01 Standard. But not all of
  352.   the optional statements are included.
  353.  
  354.   I tried it also with MaxFreq 1.00 wb2 ERP only, so i cannot guarantee that
  355.   also other ERPs work with Binkley.
  356.  
  357.   MaxFreq needs in his config a Mailer statement. Since it is not (yet) allowed
  358.   to specify Binkley, i use Cantaloup };->=>
  359.  
  360.   Have much fun, and please test carefully.
  361.  
  362.  
  363. RH: New config verb "ShowAlive"
  364.  
  365.   Generates a file I_ALIVE.xx (xx=Tasknumber) in the "Flags" directory. If the
  366.   file exists, nothing is done except checking it for existance. If it does not
  367.   exist, it will be created by BT-XE.
  368.  
  369.   Check for existance is done each minute. So external programs can check if
  370.   BT-XE is alive by deleting this flag file and waiting if it is re-created in
  371.   a minute. If BT-XE terminates, it deletes the flag file itself.
  372.  
  373.  
  374. RH: Enhanced user dialogue with Alt-G (get file[s])
  375.  
  376.   BT-XE will show destination system name after you entered dest address.
  377.  
  378.  
  379. RH: Enhanced user dialogue with Alt-S (send file[s])
  380.  
  381.   BT-XE will show destination system name after you entered dest address. If
  382.   you enter a wildcard filename, it will use the first matching file. If no
  383.   (matching) file is found, Alt-S remains in filename input mode and you can
  384.   try again. No unrecognized typos any longer!
  385.  
  386.   With Win32 version of BT-XE, "\" works with german Windows NT, too.
  387.  
  388.  
  389. RH: Enhanced user dialogue with Alt-S/Alt-G
  390.  
  391.   After asking "More requests"/"More sends", the same address is used again if
  392.   you answer "y". To specify a new address, enter "o" for (o)ther node.
  393.  
  394.  
  395. RH: Enhanced user dialogue with Alt-S (send file[s])
  396.  
  397.   Support filename expansion like 4OS2/4DOS using TAB for expansion.
  398.  
  399.   Example: type on my machine: c:\d<TAB>\bi<TAB>\HR<TAB><TAB>
  400.             get on my machine: c:\dowork\binkley\HR0418021.DOC
  401.  
  402.  
  403. MMP: Implemented support for environment variables
  404.  
  405.   If a sequence of letters, digits, and underscores are enclosed between %'s,
  406.   it is no longer handled as a comment, but as an environment variable.
  407.  
  408.   Otherwise, % is still handled as a comment. Also, the configuration file
  409.   parser now allows configuration verbs to be indented. (TJW had implemented
  410.   support for environment variables, too).
  411.  
  412.  
  413. MMP: Conditional inclusion of lines based on the task number
  414.  
  415.   If a line begins with a decimal number, it is compared with the task number
  416.   as set by the TASK environment variable (e.g. TASK=n on command line). This
  417.   somehow offers the same functionality as [Common] and [Task n], but is
  418.   simpler to use for single line differences.
  419.  
  420.   Example: 1 Init  |AT&FZ|
  421.            3 Init  ATZ|~~ATH0S27=17|
  422.  
  423.  
  424. MMP: Added new keyword "PutEnv"
  425.  
  426.   If this is used, there string following it is put into the environment.
  427.   Variables set in this way will be visible to Binkley itself, and by programs
  428.   spawned by it; e.g. SPAWNBBS.CMD.
  429.  
  430.   Example: PutEnv          BBSHOME=f:\bbs
  431.            PutEnv          PATH=%BBSHOME%;%BBSHOME%\bin;%PATH%
  432.            StatusLog       %BBSHOME%\bt\bt%TASK%.log
  433.            CostLog         %BBSHOME%\bt\costlog%TASK%.log
  434.  
  435.  
  436. MMP: "SpawnInit" keyword
  437.  
  438.   This keyword specifies a command that should be executed as part of the
  439.   first-time initialization.
  440.  
  441.   Example: SpawnInit su %PORT% lock %BAUD%
  442.  
  443.   The command is executed only once, in the moment when the command is
  444.   encountered in the configuration file. Binkley does not even store the
  445.   command in memory. This keyword can save you for a batchfile, and can use
  446.   environment variables set in the configuration file.
  447.  
  448.   You may use multiple SpawnInit commands to start multiple commands.
  449.  
  450.   Attention: Do *NOT* use SpawnInit to directly run processes which stay
  451.              resident - this can cause file handle inheritance problems.
  452.              See also options of OS/2's "start" command.
  453.  
  454.  
  455. MMP: "MailFlag" keyword
  456.  
  457.   If this is specified in the configuration file (no arguments), and "Flags" is
  458.   also specified, Binkley will create a file called "BTMAIL.IN" in the flags
  459.   directory when mail has been received.
  460.  
  461.  
  462. MMP: "TimeSync" keyword
  463.  
  464.   Followed by an address and a MaxDeltaTSeconds value, it specifies that the
  465.   clock should be set to after an EMSI session (without password error) with
  466.   the node specified (using TRX) - if the time difference is not more than
  467.   MaxDeltaTSeconds seconds.
  468.  
  469.   Example: TimeSync        2:238/28  60
  470.  
  471.   So time will get synced to time of 2:238/28, but only if difference is within
  472.   60 seconds to our own time.
  473.  
  474.   Tip: setting MaxDeltaTSeconds to e.g. 3700 (more than 1 hour) lets you do
  475.        summer / winter time zone switching automatically.
  476.  
  477.  
  478. MMP: "LocalLog" keyword
  479.  
  480.   If this keyword is specified (no arguments), Binkley will write its log
  481.   information (both the normal log, and the cost log) to a log file in the same
  482.   directory as BINKLEY.Dxx etc. When Binkley exits, and at the end of a
  483.   session, Binkley will move the contents of the local file to the file
  484.   specified in the configuration file, but only if it is able to. The log file
  485.   specified in the configuration file will no longer be continiously opened by
  486.   Binkley, and can safely be accessed by other programs. If Binkley is not able
  487.   to write to the specified log file, the log entries just stays put in the
  488.   local file until Binkley is able to move it. The local log files are called
  489.   (xx is the task number):
  490.  
  491.          BINKLEY.Cxx     (Local Cost Log)
  492.          BINKLEY.Lxx     (Local Status Log)
  493.  
  494.  
  495. MMP: "Respawn" command line argument
  496.  
  497.   If this is specified, Binkley is automatically respawned in the unexpected
  498.   event that Binkley would trap (memory access violations etc). This wan't work
  499.   on DOS, but does under OS/2, and may work with other real operating systems
  500.   too.
  501.  
  502.   The way this is accomplished is quite simple: We now have two processes
  503.   running for each Binkley. The first Binkley process spawns the other, the
  504.   normal Binkley, and monitors if it exits regularly. If so, the first Binkley
  505.   terminates itself with the errorlevel of the second Binkley. If not, it just
  506.   respawns the second Binkley.
  507.  
  508.   The mechanism requires that the environment variable _BINKLEY_EXIT_ is _NOT_
  509.   set when Binkley is initially started. Binkley checks if this variable is
  510.   set, and if so, assumes it is the second (normal) Binkley. If it is not set,
  511.   Binkley will set it itself, and spawn the second Binkley. _BINKLEY_EXIT_ is
  512.   set to the filename BINKxxxx.XIT, where xxxx is the first Binkley's process
  513.   ID. The second Binkley creates this file on a normal exit, and the first
  514.   Binkley checks if it can delete it. If not, it didn't exist, and the normal
  515.   Binkley must have died irregularly.
  516.  
  517.  
  518. MMP: Environment variables on command line
  519.  
  520.   Implemented TW's idea of setting environment variables on the command line.
  521.   If an argument contains a '=', it is put into the environment.
  522.  
  523.   Example: bt32 TASK=3
  524.  
  525.   Remark of TW: The TASK=n argument on BT32.EXE command line is a MUST HAVE in
  526.                 this version of BT-XE ! Don't use TaskNumber in Binkley.Cfg!
  527.                 You MUST change your BAT / CMD files !!!
  528.  
  529.  
  530. MMP: Built the language file into the EXE file
  531.  
  532.   If there is no language file, Binkley now reads the language file from the
  533.   EXE itself. The language is simply appended to the EXE followed by the file
  534.   size (two bytes). BTLNG now can do this.
  535.  
  536.   Example: btlng32 patch bt32.exe binkley.lng
  537.  
  538.   Attention: You should NOT use an old *.LNG file nor an *.LNG file at all if
  539.              you want to have standard (english) messages - they are built-in
  540.              in the EXE now!
  541.  
  542.  
  543. MMP: "ShortCostLog" keyword
  544.  
  545.   Binkley's costlog contains a log of useful information that easier to monitor
  546.   than the status log. However, this log is ment for human reading, and not
  547.   very easily handled with utilities like grep, awk, (REXX?) etc. So i have
  548.   invented a ShortCostLog keyword. If it is used, the CostLog will be written
  549.   in another format. The argument to ShortCostLog is a format string specifying
  550.   this format. The format string can contain literal characters and macros. A
  551.   macro is prefixed with '$', followed by an optional length, and ended with a
  552.   character specifying what kind of information to write. If the optional
  553.   length begins with '0', the information is zero-padded; otherwise it is
  554.   space-padded. The following macros are defined:
  555.  
  556.          $#          TaskNumber
  557.          $$          The $ character
  558.          $<          Newline
  559.          $A          Node address
  560.          $B          Baud rate
  561.          $C          Size of biggest file sent or received
  562.          $D          Seconds used to transmit biggest file ($C)
  563.          $E          Total number of errors
  564.          $H          Hour
  565.          $I          Number of inbound files
  566.          $J          CPS of inbound files
  567.          $M          Minute
  568.          $O          Number of outbound files
  569.          $P          CPS of outbound files
  570.          $S          Second
  571.          $T          Total number of files
  572.          $U          Total CPS
  573.          $V          Size of biggest file received
  574.          $W          Seconds used to receive biggest file ($V)
  575.          $X          CPS of biggest file received ($V)
  576.          $Y          CPS of biggest file send or received ($C)
  577.          $b          Abbreviated month
  578.          $c          Cost
  579.          $d          Day of month
  580.          $f          Number of errors when receiving files
  581.          $g          Number of errors when transmitting files
  582.          $i          Size of inbound files
  583.          $j          Efficiency of inbound files
  584.          $m          Month
  585.          $o          Size of outbound files
  586.          $p          Efficiency of outbound files
  587.          $s          Seconds of session
  588.          $t          Total size of files
  589.          $u          Total efficiency
  590.          $v          Size of biggest file sent
  591.          $w          Seconds used to send biggest file ($v)
  592.          $x          CPS of biggest file sent ($v)
  593.          $y          Year without century
  594.  
  595.   The format string can be left out in which case it defaults to:
  596.  
  597.    $02y$02m$02d $02H$02M$02S $# $14A  $6B  $4s $4c $8i $8o $8C $4Y
  598.  
  599.   Which produces log entries like: (removed unnecasary spaces)
  600.  
  601.                                                             Biggest file
  602.    Date   Time   Task     Node Connect Sec Cost   In    Out   -size -cps
  603.    960328 132222 1     2:238/9  28800   29    0 6036   9903    9896 3298
  604.    960328 132539 1    2:238/54  28800  105    0    0 230517  223554 3287
  605.  
  606.   You can also use ShortCostLog to produce comma separated files which can be
  607.   imported directly into a spreadsheet or a database.
  608.  
  609.  
  610. TJW: Activated priority control
  611.  
  612.   The originally released EXE didn't control priority, but worked EVER at
  613.   priority Normal/0. This is too low, if you have other "heavy" processes
  614.   running on your system. ISDN transfer rates dropped to below 5000 CPS in such
  615.   cases (normal: 7000..7800 CPS) on my system (P133,32MB).
  616.  
  617.   I set the appropriate compiler switch and re-activated the priority control.
  618.   Also, I enhanced priority control via environment variables.
  619.  
  620.   You may now influence priorities using these environment variables:
  621.  
  622.   This is the default:                 This is as without priority control:
  623.     SET REGULARPRIORITY=R31              SET REGULARPRIORITY=R0
  624.     SET MODEMPRIORITY=F31                SET MODEMPRIORITY=R0
  625.     SET JANUSPRIORITY=T31                SET JANUSPRIORITY=R0
  626.     SET HYDRAPRIORITY=T31                SET HYDRAPRIORITY=R0
  627.  
  628.   Syntax: ...PRIORITY=<class>[delta]
  629.  
  630.     class:  R = Regular (2)
  631.             F = Foregroundserver (4)
  632.             T = TimeCritical (3)
  633.  
  634.     delta:  0 = normal
  635.            ..
  636.            31 = high (default, if not specified)
  637.  
  638.   Do experiments with these values! The defaults needn't to be the best values
  639.   for YOUR system and high priority needn't be better than low priority.
  640.  
  641.  
  642. TJW: The BINKLEY.DAY and .SCD are renamed to BINKLEY.Dxx and .Sxx
  643.      (xx=TaskNumber).
  644.  
  645.  
  646. TJW: Multiline configuration via single Binkley.Cfg and Binkley.Evt files!
  647.  
  648.   [Common] and [Task x] in single Binkley.Cfg / .Evt make multiline operation
  649.   possible with one single Cfg and one single Evt file.
  650.  
  651.   You needn't use this nice feature if you don't want to. Operation should be
  652.   possible with the same config / event files as in orig. BT 2.60 release
  653.   without usage of these "sections", because the implicit default section at
  654.   top of each config file read (or included) is "[Common]".
  655.  
  656.   BUT: you MUST use TASK=n commandline argument in ANY case.
  657.  
  658.   [Common]
  659.   ; settings in this section are read by all tasks.
  660.   ; ...
  661.   [Task 1]
  662.   ; settings in this section are read by Task 1 only.
  663.   ; all other tasks ignore these settings like if they were "blind" ...
  664.   [Task 2]
  665.   ; settings in this section are read by Task 2 only.
  666.   ; all other tasks ignore these settings like if they were "blind" ...
  667.   [Common]
  668.   ; settings in this section are read by all tasks.
  669.   ; ...
  670.  
  671.   If you specify a setting first in [Common] and afterwards the same setting in
  672.   [Task x] (or vice versa), behaviour of BT-XE in Task x is the same as if you
  673.   specified these settings twice in this order using original BT 2.60.
  674.  
  675.   If you include another config file using "Include" statement, state (read
  676.   settings or not) is treated locally to each file and restored after return
  677.   from reading that file.
  678.  
  679.   E.g.:
  680.   [Common]
  681.   ; settings here are common for all tasks
  682.   Include Task1.Cfg         <- may have [Task x] and [Common] sections, too.
  683.   ; settings here are common for all tasks, regardless of Task1.Cfg contents.
  684.  
  685.  
  686. TJW: Using TaskNumber for BBS/EXT exits
  687.  
  688.   This is now handled like in Binkley 2.60 release (again). Review your CMD /
  689.   BAT files if you used former BT-XE versions !!!
  690.  
  691.   BBS exits:
  692.   %1      %2          %3        %4             %5
  693.   DTErate ConnectRate COMhandle Time2NextEvent Modem-String
  694.  
  695.   EXT exits:
  696.   %1      %2          %3        %4             %5 %6
  697.   DTErate ConnectRate COMhandle Time2NextEvent n  Modem-String
  698.  
  699.   This is NORMAL Binkley parameter layout again (no additional parameter as in
  700.   former betas of BT-XE). If you need the TaskNumber in this context, just get
  701.   it out of %TASK% environment variable (which is defined by BT-XE if you
  702.   invoke it with BT32.EXE TASK=n).
  703.  
  704.  
  705. TJW: "Hydra1st" config verb
  706.  
  707.   Behaviour without Hydra1st: Standard - like until now. If a caller says to be
  708.                               able to do Janus, he will get Janus protocol -
  709.                               even if he could also do Hydra.
  710.  
  711.   Behaviour with Hydra1st:    Hydra is preferred. If a caller says to be able
  712.                               to do Hydra, he will get Hydra protocol - even if
  713.                               he could also do Janus.
  714.  
  715.  
  716. TJW: Enhanced Screen Layout / Colors:
  717.  
  718.   - Extended color settings (like BT-EE now! ;-) There are 2 more colors
  719.     (configured after the normal 2.60 colors) now for windows frame title text
  720.     and frame color. See sample configs ...
  721.   - TaskNumber in top left corner
  722.   - Port and Baud switched position
  723.   - broader Recent Activity and Hold Window
  724.   - with mail "Age" display in Hold Window
  725.   - one screen row more than before (there are 25, not 24). Therefore one row
  726.     more in Recent Activity window.
  727.  
  728.  
  729. TJW: Implemented "MakeDir" config verb
  730.  
  731.   This creates outbound directories needed for BSY flags. Also, it removes
  732.   empty outbound directories.
  733.  
  734.  
  735. TJW: RecentyActivity-Buffer is saved to and restored from disk file
  736.      Binkley.Axx.
  737.  
  738.  
  739.  
  740.  
  741. BTXE 9606132330  (XR2 bugfix release)
  742. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  743.  
  744. Bug fixes
  745. ---------
  746.  
  747. Fixed cosmetical problem with Elapsed: xx:yy:zz
  748.  
  749.   A trailing blank overwrote the window frame
  750.  
  751.  
  752. Fixed cosmetical problems with Zoomed Outbound view: EE colors and headline
  753.  
  754.  
  755. Fixed SRIF extension (wrong) .Txx to (correct) .xx (xx=TaskNo/Hex)
  756.  
  757.  
  758. Fixed cursor position when shelling or entering terminal mode
  759.  
  760.  
  761. Added Hydra key to "native_protocols".
  762.  
  763.   Until now, you were not able to select Hydra in terminal mode ...
  764.  
  765.  
  766. Fixed "main outbound removal" bug when using "MakeDir".
  767.  
  768.   If there is an outbound without "." in its filename then just let it be -
  769.   even if it's empty.
  770.  
  771.  
  772. Fixed ShortCostLog $m
  773.  
  774.  
  775. Fixed cursor positioning to end of screen
  776.  
  777.  
  778. Fixed saving of recent activity window
  779.  
  780.   It is now saved on all exits, not only on Alt-X exit
  781.  
  782.  
  783. TJW: fixed >2GB bug
  784.  
  785.   Changed free space limitation from 2GB to 128GB (please test this! ;-)
  786.  
  787.  
  788. TE/TJW: Fixed % character
  789.  
  790.   Usage of % character in modem commands is now possible (see below).
  791.  
  792.  
  793. Priorities
  794.  
  795.   Assured that answering and in/outbound sessions run at MODEMPRIORITY With
  796.   ZedZap, session were running at REGULARPRIORITY until yet. Now, session run
  797.   at least with MODEMPRIORITY (or with JANUS/HYDRAPRIORITY).
  798.  
  799.  
  800. Bugfixes to SRIF
  801.  
  802.   SRIF now (finally!?) correctly states which system is listed and which is
  803.   protected.
  804.  
  805.  
  806. Bugfixes to FreePoll
  807.  
  808.  
  809. Fixes for dialtry's bug while using FreePoll
  810.  
  811.  
  812. TJW: Fixed *.REQ bug
  813.  
  814.   If a session was aborted, *.Rxx files kept lying around and the next caller
  815.   got all the stuff he did not want. Especially long distance links were quite
  816.   unhappy with that, if the requested stuff was large.
  817.  
  818.   Now BT-XE deletes the <inbound>\<address>.R<task> request files for ALL your
  819.   own addresses at the end of the session.
  820.  
  821.  
  822. Removed additional "newline" in Binkley.Log after SPAWN and ext. protocols.
  823.  
  824.   Additional newline is only printed at start of BT. This was maybe only the
  825.   case in some internal betas ...
  826.  
  827.  
  828. Fixed bug that TimeSync was not executed if mail was received.
  829.  
  830.   Moved call for TimeSync direct to end of session. Mail exits etc. will be
  831.   done *after* TimeSync now.
  832.  
  833.  
  834. Fixed SRIF response file naming (correct e.g.: outbound.zzz\NNNNnnnn.QLO)
  835.  
  836.   Should work together with function request programs now.
  837.  
  838.  
  839. Fixed SRIF session data in Yoohoo / FTSC sessions
  840.  
  841.   If you had a EMSI session and after that a Yoohoo session with a SRIF freq,
  842.   wrong data was put in the response packet (Sysop name, site, mailer).
  843.  
  844.  
  845. Fixed some bugs in ShortCostLog output routine
  846.  
  847.  
  848. TJW: fixed "NoPickup" bug
  849.  
  850.   If you had NoPickup in your config and called a remote system using Bink 2.60
  851.   (XE or original, doesn't matter) to send some stuff, the remote Binkley
  852.   terminated the session immediately without even receiving your stuff.
  853.  
  854.  
  855.  
  856. New features
  857. ------------
  858.  
  859. Enhanced CPS log entries (with lower .. upper CPS rate for each xfer)
  860.  
  861.  
  862. Debug messages for creating / removing outbound directories
  863.  
  864.  
  865. Added "Rescanning" status msg while outbound rescans
  866.  
  867.  
  868. Source code: replaced all TABs by SPACEs for easier DIFF/RCS/CVS handling
  869.  
  870.  
  871. Changed hydra crc table allocations from dynamic to STATIC
  872.  
  873.  
  874. Wrong config verbs
  875.  
  876.   Added delay if wrong config verbs are read, also added filename and line
  877.   number to error message.
  878.  
  879.  
  880. SRIF
  881.  
  882.   The SRIF file now also contains a "Password SECRET" (if SECRET is the actual
  883.   PW in protected sessions) line. This line is only present on PW protected
  884.   sessions.
  885.  
  886.  
  887. Log files
  888.  
  889.   The logs are closed when spawning to allow other programs to include their
  890.   logs in the main log.
  891.  
  892.  
  893. TE: Support for a PROBOARD fileindex
  894.  
  895.   Rather than scanning your whole hard disk for each file request, information
  896.   can now be taken directly from your Proboard configuration, so that a) you
  897.   don't have to set up a huge OKFile and b) file request is accelerated
  898.   considerably, allowing for filerequest from CDROM. Perform the following
  899.   steps to set up Proboard support (this works much like the configuration of a
  900.   Maximus fileindex):
  901.  
  902.   Add the following lines to your Binkley.Cfg:
  903.  
  904.     PBAreas <Proboard Fileareaconfig>
  905.  
  906.       The Proboard Filearea configuration file is usually named "FILECFG.PRO"
  907.       and located in your Proboard system directory.
  908.  
  909.       Example: PBAreas e:\mailer\pb\filecfg.pro
  910.  
  911.     FileSec <level>
  912.     KnownSec <level>
  913.     ProtSec <level>
  914.  
  915.       In Proboard, you use "levels" (numbers from 1 to 255) to set up which
  916.       users are allowed to access which files. In BinkleyTerm, calling systems
  917.       area classified as unknown (->FileSec), listed in your Nodelists
  918.       (->Knownsec), and those with a session password (->ProtSec). Here you can
  919.       set up the correspondence between the two security mechanisms. If you,
  920.       e.g., enter KnownSec 30, then every system which is listed in your
  921.       nodelist may freq from file areas with a security level of 30 or below.
  922.       You should always have a FileSec statement, while the two others are
  923.       optional.
  924.  
  925.     OKFile <okfile>
  926.  
  927.       You normally already have this statement, where <okfile> is the path and
  928.       name of a text file containing your magics and filearea paths.
  929.  
  930.   Now edit your OK-File. Leave the magics there, but remove all normal
  931.   pathnames. Instead, enter the following line:
  932.  
  933.     *<Proboard Fileindex>
  934.  
  935.       The Proboard file index is usually named FILESIDX.PB and located in your
  936.       Proboard system directory.
  937.  
  938.     Example for a OK-File with PB-support:
  939.  
  940.       @FILES    e:\mailer\filebase\filelist\ALLFILES.ZIP
  941.       @UNISCHED e:\mailer\filebase\fidosoft\UNISWB05.LZH
  942.       @NODELIST e:\mailer\nodelist\nodelist.lzh
  943.       *e:\mailer\pb\filesidx.pb
  944.  
  945.   Please note that you must not use MaxAreas and PBAreas at the same time! Only
  946.   one of these keywords should occur in your Binkey.Cfg. - Also note that you
  947.   should run PBUTIL FI at least once a day in order to keep your fileindex up
  948.   to date.
  949.  
  950.   As the Proboard fileindex is not fully documented, this feature is
  951.   experimental. I have tested this with PB 2.12 and PB 2.15. If you have
  952.   problems with future Proboard releases, please contact me via netmail.
  953.  
  954.  
  955. TJW: Loglevels
  956.  
  957.   Negative LogLevels do the same as positive ones, but only log to disk if
  958.   Carrier detect is true.
  959.  
  960.  
  961. TE/TJW: Changed config file parser (; and % character treatment)
  962.  
  963.   '%' has a VERY ambiguous semantics:
  964.  
  965.     - It can prefix a "rest of line"-comment (if it is at 1st non-white-space
  966.       column position in the config line).
  967.     - It can designate the start/end of an environment variable reference.
  968.     - It can be used simply as "%" character.
  969.  
  970.     We resolve this the following way:
  971.  
  972.     1. If first non-white-space char, it is a comment.
  973.        e.g.: "%comment" or "     %comment"
  974.  
  975.     2. If there are some characters between 2 percent signs try to evaluate an
  976.        environment variable of this name.
  977.        e.g.: "%TASK%" or "%task%" or "%What_Ever!%%What_Else?"
  978.  
  979.        If there are no characters between two "%" ( = "%%"), use it as a single
  980.        "%" character.
  981.        e.g.: "Init AT%%B%%C %%D" -> "Init AT%B%C %D"
  982.  
  983.        If the environment variable is not defined, just copy the name of it.
  984.        e.g.: there is not variable "NOTDEF" defined. "%NOTDEF%" -> "NOTDEF"
  985.  
  986.     4. If there is only a single "%" in the whole line, also use it as a single
  987.        "%" character.
  988.        e.g.: "Init AT %B" (no other % in this line) -> "Init AT %B"
  989.  
  990.     BTW: %WHATEVER%%TASK% - this is valid and interpreted correctly
  991.          1        2A    B               (two environment variables).
  992.  
  993.          This is no problem with the %% at pos 2 and pos A - because first
  994.          %WHATEVER% is evaluated (and consumes both % at pos 1 and pos 2).
  995.          Afterwards, %TASK% is evaluated ...
  996.  
  997.   ';' is a bit WEIRD, too:
  998.  
  999.     It can be a "rest-of-line"-comment or a literal character.
  1000.  
  1001.     We resolve this the following way:
  1002.  
  1003.     1. If first non-white-space char, it is a comment.
  1004.        e.g.: ";comment" or "    ;comment"
  1005.  
  1006.     2. If there is a sequence "<white space>;;", then don't begin a comment,
  1007.        but just read it as "<white space>;".
  1008.        e.g.: "AT ;;XY" -> "AT ;XY"
  1009.  
  1010.     3. If there is a sequence "<white space>;" (and no ";" following), it is a
  1011.        comment.
  1012.        e.g.: "Init ATZ|      ; init the modem"
  1013.  
  1014.     4. In any other case, just read it as ";" - no comment.
  1015.        e.g.: "AT;XY" -> "AT;XY"
  1016.  
  1017.  
  1018. TE: Workaround a problem when scrolling the Recent Activity window
  1019.  
  1020.   The appropriate keystroke combinations Ctrl+UpArrow, Ctrl+DownArrow are
  1021.   nonstandard and do not work in some DOS environments. You may now
  1022.   alternatively use Ctrl+RightArrow and Ctrl+LeftArrow (which should work
  1023.   everywhere).
  1024.  
  1025.   Note: If Scrolling continues refusing to work, increase the size of the
  1026.         backscroll buffer by using "RecentActivityLines 300". This should only
  1027.         be a problem in the DOS version.
  1028.  
  1029.  
  1030. TJW: Priorities
  1031.  
  1032.   Lowered default JANUSPRIORITY and HYDRAPRIORITY values to F31 (was T31 yet)
  1033.   and default MODEMPRIORITY to F15 (was F31 yet). Added possibility to set Idle
  1034.   priority (be careful with setting prio to low).
  1035.  
  1036.   You may influence priorities using these environment variables:
  1037.  
  1038.   This is the default:                 This is as without priority control:
  1039.     SET REGULARPRIORITY=R31              SET REGULARPRIORITY=R0
  1040.     SET MODEMPRIORITY=F15                SET MODEMPRIORITY=R0
  1041.     SET JANUSPRIORITY=F31                SET JANUSPRIORITY=R0
  1042.     SET HYDRAPRIORITY=F31                SET HYDRAPRIORITY=R0
  1043.  
  1044.   Syntax: ...PRIORITY=<class>[delta]
  1045.     class:
  1046.       I = Idle (1)
  1047.       R = Regular (2)
  1048.       F = Foregroundserver (4)
  1049.       T = TimeCritical (3)
  1050.     delta:
  1051.       0 = normal
  1052.      ..
  1053.      31 = high (default, if not specified)
  1054.  
  1055.  
  1056. Changed M_BYTE_SUMMARY to show KB size instead of Byte size
  1057.  
  1058.  
  1059. Changed update_status()
  1060.  
  1061.   Changed janus/hydra update_status() to show min:sec instead of minutes for
  1062.   time remaining until completion of file transfer (ETA).
  1063.  
  1064.  
  1065. Cleaned up STATIC variables and made some dynamic - saves DOS memory ...
  1066.  
  1067.  
  1068. CE: "ChangeMailTo <flavor>"
  1069.  
  1070.   This is used for changing mail flavor to CRASH, DIRECT, NORMAL or HOLD after
  1071.   an rejected outbound call. The default is the change to Normal flavor.
  1072.  
  1073.  
  1074. TJW: Implemented xHydra / RH1 hydra
  1075.  
  1076.   This modified Hydra (which identifies in EMSI with RH1 flag) does file
  1077.   requests ONLY in the 1st transfer "batch". Mail packets and all flow file
  1078.   attaches are sent in the 2nd batch - while you already get the requested
  1079.   files from the other system!
  1080.  
  1081.   Until now, this was only possible with Janus - now you can do this with
  1082.   Hydra, too! So just send your filelist along with your filerequests if the
  1083.   other system supports RH1 / xHydra, too.
  1084.  
  1085.   Until now I know of these xHydra mailers: BT-XE ;-), Xenia and Maindoor If
  1086.   xHydra is used, this is shown via "Session method: xHydra".
  1087.  
  1088.  
  1089. Modified output of AKAs
  1090.  
  1091.   Until now there were 3 AKAs per line. Now the AKA: lines are "filled up" with
  1092.   AKAs as it fits on the screen (assuming 80 chars width).
  1093.  
  1094.  
  1095. Added message "Rejecting human caller" if BBS caller tries while a MO event
  1096.  
  1097.  
  1098. Added message for FreePoll / ConditionalPoll
  1099.  
  1100.   "Accepting <nodenr>. First call. ..." to avoid user confusion if a link calls
  1101.   the very first time using Freepoll (no TRX file present in outbound).
  1102.  
  1103.  
  1104. Removed warnings from BTLNG
  1105.  
  1106.  
  1107. RH: Enhanced user dialogue with Alt-G (get file[s]).
  1108.  
  1109.   BT-XE will now show destination address and system name after you entered
  1110.   dest address. You can now enter up to 3 filenames password flavor before the
  1111.   question "More Yes/No/Other" border you.
  1112.  
  1113.  
  1114. RH: Enhanced user dialogue with Alt-S (send file[s]).
  1115.  
  1116.   BT-XE will now show destination address and system name after you entered
  1117.   dest address.
  1118.  
  1119.  
  1120. RH: ShowAlive
  1121.  
  1122.   The file I_ALIVE.xx is now generated also at transfer via Hydra, XModem,
  1123.   ZModem, Janus and Fax-Receive.
  1124.  
  1125.  
  1126. Changed freepoll volume compare to use "reject if size <= MinSize*1024"
  1127.  
  1128.   This means if you configure MinSize=0 only calls with really NOTHING on hold
  1129.   will be rejected. Until now, configuring 0 made no sense (size < 0 ?).
  1130.  
  1131.  
  1132.  
  1133.  
  1134. BTXE 9610090130 (XR3 gamma release)
  1135. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  1136.  
  1137. Bug fixes:
  1138. ----------
  1139.  
  1140. File privilege levels for FREQ
  1141.  
  1142.   Changed file privilege levels from "(unsigned) word" to "(signed) short" for
  1143.   file requests. So the "level problems" of XR2 should be history now.
  1144.  
  1145.  
  1146. Last Call Display
  1147.  
  1148.   If incoming call failed (connect and nothing more) and last call before was
  1149.   e.g. FAX, "last: FAX" was shown. This should be "Inc-Fail" now. This is also
  1150.   shown at begin of an incoming call as long as the session state is unknown.
  1151.  
  1152.  
  1153. Fixed BTCTL/BTUTIL for use without PrivateNet (point fake net)
  1154.  
  1155.  
  1156. BBSBATCH
  1157.  
  1158.   Bugfix for all lines creating BBSBATCH.* at the same place. BBSBATCH.* is now
  1159.   renamed to BBSBATxx.* (xx = Tasknumber in Hex)
  1160.  
  1161.  
  1162. Fixed scheduler bug
  1163.  
  1164.   Scheduler was not working correct with events on a specifiy day of (any)
  1165.   month like with: Event All 00:00,0,1 00:00 F ...
  1166.  
  1167.   but there are yet bugs left...
  1168.  
  1169.  
  1170. Fixed minor bug in async_os.c ("in" and "out" were swapped in OS call)
  1171.  
  1172.  
  1173. Fixed wrong month in ShortCostLog output
  1174.  
  1175.  
  1176. Fixed (?) file sharing for IBM C++
  1177.  
  1178.  
  1179. Dynamic Events
  1180.  
  1181.   Fixed dynamic events - a forced rescan is now done before a dynamic event can
  1182.   end - to ensure that there is really no more mail to send.
  1183.  
  1184.  
  1185. Fix for DOS SpawnInit
  1186.  
  1187.  
  1188. EMSI bugfix
  1189.  
  1190.   If a system sent x:y/z.0 and x:y/z.p EMSI AKA dupe check did not work
  1191.   correctly (point addr was not compared and so a "false dupe" was removed from
  1192.   AKA list of remote system).
  1193.  
  1194.  
  1195. Made internal FREQ processor OKFILE parsing more "robust"
  1196.  
  1197.   If you had multiple blanks between filespec and password in your OKFile, like
  1198.   in
  1199.  
  1200.         c:\*.*  !SECRET
  1201.  
  1202.   Binkley didn't process this as you intended it to do. Everybody could freq
  1203.   out of c.\*.* without using a password.
  1204.  
  1205.   This worked correctly:
  1206.  
  1207.         c:\*.* !SECRET
  1208.  
  1209.   Now Binkley doesn't care about AMOUNT of blanks between filespec and password
  1210.   any more.
  1211.  
  1212.   This parser part was completely rewritten - be careful and test this !
  1213.  
  1214.  
  1215. Versions compiled for different CPUs show CPU type in announce string
  1216.  
  1217.  
  1218. Misc. cosmetical fixes
  1219.  
  1220.  
  1221.  
  1222. New features
  1223. ------------
  1224.  
  1225. TJW: BE CAREFUL! Changed [section] statements. See [Expression].
  1226.  
  1227.  
  1228. TJW: [Expression]
  1229.  
  1230.   [%Task%==1]             use section if environment variable TASK equals 1
  1231.   [%ENVVAR1%==%ENVVAR2%]  ...         if env. var. ENVVAR1 equals ENVVAR2
  1232.   [%MODEM%==ZYXEL]        ...         if env. var. MODEM equals ZYXEL
  1233.   [%PORT%!=2]             ...         if env. var. PORT is not equal to 2
  1234.   [Common] or [True]      use section in any case
  1235.   [Ignore] or [False]     ignore section
  1236.  
  1237.   Obsolete style (not supported any longer): [Task 1]
  1238.  
  1239.  
  1240. TJW: New and powerful cost calculation scheme.
  1241.  
  1242.   See "CostCPS", "CostTimeCorrection" and "Cost Event" for details.
  1243.  
  1244.   Adapt your Binkley.Evt ("L" flag) and your nodelist compiler setup or you
  1245.   WILL run into problems !!!
  1246.  
  1247.  
  1248. TJW: New keyword "CostCPS"
  1249.  
  1250.   This sets the estimated CPS rate for cost calculations related to "L" event
  1251.   flag. Default is 1024 CPS.
  1252.  
  1253.     CostCPS 1500           ; could be used for lines connecting at 14400bps
  1254.     CostCPS 3000           ; could be used for lines connecting at 28800bps
  1255.     CostCPS 7000           ; could be used for ISDN X.75 lines with 64000bps
  1256.  
  1257.   Additionally, the connect and session overhead is added for cost calculation.
  1258.  
  1259.  
  1260. TJW: New keyword "CostTimeCorrection"
  1261.  
  1262.   With this you can configure the time in seconds that your modem / adaptor
  1263.   needs to connect and also session overhead for cost calculation.
  1264.  
  1265.   First value is the time in s (costing money) before you get a "CONNECT".
  1266.   Default is 5s. For ISDN you might want to configure a lower value. For very
  1267.   bad lines you might want to configure a higher value.
  1268.  
  1269.   Second value is the session handshake overhead in s used for calculations for
  1270.   "L" event flag (before dialing out). Default is 5s, too. If you connect to
  1271.   very fast or slow handshaking mailers, you might want to configure a
  1272.   different value.
  1273.  
  1274.   You should change the default values to typical ones for your system. The
  1275.   defaults are just "better than nothing", but too low for analogue modems and
  1276.   too high for ISDN adaptors.
  1277.  
  1278.   E.g.: CostTimeCorrection 13 4
  1279.  
  1280.         This gives a connect overhead of 13s and a session overhead of 4s
  1281.         (analoge connect with V.32bis on good line, BT-XE to BT-XE).
  1282.  
  1283.   E.g.: CostTimeCorrection 1 2
  1284.  
  1285.         This gives a connect overhead of 1s and a session overhead of 2s (ISDN
  1286.         connect with X.75, BT-XE to BT-XE).
  1287.  
  1288.  
  1289. TJW: "Cost Event" - a new Event type with flag "!="
  1290.  
  1291.   This new event type is used similar to normal "Event", but describes costs
  1292.   involved with your outbound calls at different daytime, weekdays etc.
  1293.  
  1294.   There can be ONLY such a cost definition in such an event, nothing else! Such
  1295.   a "cost event" does NOT interfere with other event definitions.
  1296.  
  1297.   The cost vector can include up to 16 comma separated entries, but there MUST
  1298.   NOT be any blanks between them. You need not specify all 16 entries, you need
  1299.   only to specify the ones you really use (c0,c1,c2 if you only use 3 cost
  1300.   indices).
  1301.  
  1302.   Event <days> <start time> [<end time>] !=<c1>,<c2>,..,<c16>
  1303.         ^------------------------------^   ^----------------^
  1304.          meaning as like in other events       cost vector
  1305.  
  1306.   The cost index used for a connection is reported after connection as
  1307.   "Seconds: ... Tariff: <cost index> ... System: ...".
  1308.  
  1309.   Example 1 for Germany (used with EuroCost and CostUnit 12):
  1310.  
  1311.     Event All 00:00,12,24 05:00 !=2400,0600,0360,0360,0600,0090,0090,0054
  1312.  
  1313.     This means that on December 24. from 00:00 until 05:00 the "cost vector" is
  1314.     2400, 600, ... (meaning that cost index 1 (city zone) has unit lengths of
  1315.     240 seconds, cost index 2 (50km zone) has unit lengths of 60s etc.). You
  1316.     have to compile the "cost index" into V7 nodelist index (cost field).
  1317.     Binkley then uses this "cost index" as index into the "cost vector" of the
  1318.     active CostEvent. "cost index" is 1-based (!), 0 means no/unknown cost!!!
  1319.  
  1320.     You have to define the cost vector in 1/10 seconds (unit length). CostUnit
  1321.     is the amount of money a unit costs (12 [Pf] in Germany).
  1322.  
  1323.     So if you call somebody on Dec. 24 at 03:00 who has cost index 3 compiled
  1324.     into the V7 cost field by your nodelist compiler, Binkley will calculate
  1325.     with unit lengths of 36 seconds (360 * 0.1s).
  1326.  
  1327.  
  1328.   Example 2 for US (NO "EuroCost" and NO "CostUnit"):
  1329.  
  1330.     Event All 00:00 24:00 !=10,20,40,80,160
  1331.  
  1332.     [Sorry, I don't have ANY information about US cost structure, so this is
  1333.     just an example with not realistic numbers]
  1334.  
  1335.     This means that on every day between 0:00 and 24:00 the "cost vector" is
  1336.     10,20,...,160 (meaning that a minute shortest distance costs 10 [cents or
  1337.     whatever] and a minute longest distance costs 160). You have to compile the
  1338.     "cost index" (1 is nearest, 5 is farest in this example, up to 16 is
  1339.     possible) into V7 nodelist index (cost field). Binkley then uses this "cost
  1340.     index" as index into the "cost vector" of the active CostEvent. "cost
  1341.     index" is 1-based (!), 0 means no/unknown cost!!!
  1342.  
  1343.     So if you call somebody (on any day, any time) who has cost index 3
  1344.     compiled into the V7 cost field by your nodelist compiler, Binkley will
  1345.     calculate with costs of 40 [cents, whatever] per minute.
  1346.  
  1347.   Here, for interested audience, the calculation method. If you aren't
  1348.   interested, you can skip to next feature ...
  1349.  
  1350.   Cost calculation algorithm for outbound calls (inbound: cost==0) :
  1351.  
  1352.   StartTime = StartTime - CostTimeCorr_Connect   (the modems need some worthy
  1353.                                                   time before CONNECT !)
  1354.  
  1355.   get CostIndex (1..16) from V7 nodelist RealCost field
  1356.   find CostEvent matching StartTime and get ActualCostVector
  1357.   set return value Cost = ActualCostVector[CostIndex] !!!
  1358.  
  1359.   EuroCost (unit based cost calculation) :
  1360.  
  1361.     Time = StartTime                             set Time to StartTime
  1362.     Ttimes10 = 0                                 set 1/10s timer to 0
  1363.     TotalCost = 0                                set TotalCost to 0
  1364.     while Time < EndTime                         do as long as connection was
  1365.        TotalCost = TotalCost + CostUnit           spend one CostUnit
  1366.        Ttimes10 = Ttimes10                        we get this time for
  1367.                   + ActualCostVector[CostIndex]   one CostUnit
  1368.        Time = StartTime + Ttimes10/10;            afterwards we have this time
  1369.        find CostEvent matching Time and           get tariff information for
  1370.        update ActualCostVector                    new Time
  1371.  
  1372.     return TotalCost as total cost               this is what we spent
  1373.  
  1374.   No EuroCost (minute based cost calculation) :
  1375.  
  1376.     Time = StartTime                             set time to StartTime
  1377.     TotalCost = 0                                set TotalCost to 0
  1378.     while Time < EndTime                         do as long as connection was
  1379.        TotalCost = TotalCost                       spend amount of money
  1380.                    + ActualCostVector[CostIndex]   one minute costs
  1381.        Time = Time + 60s                           we get 1 minute for it
  1382.        find CostEvent matching Time                get tariff information for
  1383.        and update ActualCostVector                 new Time
  1384.  
  1385.     return TotalCost as total cost                this is what we spent
  1386.  
  1387.   I hope this is the correct way to do it. If it is NOT correct like this,
  1388.   please let me know !!!
  1389.  
  1390.   Don't forget to adapt your "L" flags in Binkley.Evt !!!
  1391.  
  1392.   With L flag, Binkley will calculate costs before calling out: It will assume
  1393.   a 1KB/s transfer rate (default, you may modify this by specifying CostCPS,
  1394.   see above) to estimate session length. Then it calculates real cost (in your
  1395.   currency) for this session at this time and decides depending on L flag
  1396.   condition if it should dial out or not.
  1397.  
  1398.   You can use this to send short crash mails immediately and delay crash mails
  1399.   with file attaches to some later event with cheaper costs.
  1400.  
  1401.   For a cost saving setup in Germany you could use L=12 (meaning L<=12) on most
  1402.   of your events - except event at cheapest time 02:00-05:00, for this event
  1403.   you should NOT do cost restrictions or BT-XE will not dial out at all if
  1404.   costs are too high even at cheapest time. This will cause BT-XE to delay a
  1405.   crash mail until cost is <=12 ("Pfennige") or until event with no cost
  1406.   restriction or "H" flag.
  1407.  
  1408.  
  1409. Added '$' as mail status char for mail not matching cost setup (L event flag)
  1410.  
  1411.  
  1412. MMP: New format char for ShortCostLog: $r
  1413.  
  1414.   $r gives "remote's costs" for inbound calls (like $c gives your own costs for
  1415.   outbound calls).
  1416.  
  1417.  
  1418. MMP: Changed default ShortCostLog format to include remote costs:
  1419.  
  1420.       $02y$02m$02d $02H$02M$02S $# $14A $6B $4s $4c $4r $8i $8o $8C $4Y
  1421.  
  1422.      This produces log entries like: (removed unnecasary spaces)
  1423.                                                                    Biggest file
  1424.       Date   Time   Task    Node Connect Sec Cost RCst   In    Out   -size -cps
  1425.       960328 132222 1    2:238/9  28800   29    0   24 6036   9903    9896 3298
  1426.       960328 132539 1   2:238/54  28800  105    0   96    0 230517  223554 3287
  1427.  
  1428.  
  1429. Added optional size parameter to *.REQ entries
  1430.  
  1431.   old *.REQ format       new *.REQ format
  1432.  
  1433.   file1                  file1 $12345
  1434.   file2                  file2 $100000
  1435.   file3                  file3 $1000000
  1436.   ...                    ...
  1437.  
  1438.   The value after $ is the size of the file to request in bytes. This is used
  1439.   for cost calculation only, so an approx. value does the job, too. Size value
  1440.   is optional, if no size is given, 1 is assumed. In the REQ file transmitted
  1441.   to remote side, size information is filtered out, of course.
  1442.  
  1443.  
  1444. RH: Changed Alt-G (get files) dialogue to make input of $size possible
  1445.  
  1446.  
  1447. Changed "Tariff:" to show cost index
  1448.  
  1449.  
  1450. New ShortCostLog format character $z for Cost Index
  1451.  
  1452.     0 = no cost
  1453.   1.. = cost index into cost event's cost vector
  1454.  
  1455.  
  1456. TJW: Shared outbound
  1457.  
  1458.   Files related to that (all located in FlagDir):
  1459.  
  1460.   BTRESCAN.FLG
  1461.  
  1462.     This global flag for all lines works different from BTRESCAN.nn: Each line
  1463.     monitors this flag and if a line notices a change in the modification
  1464.     timestamp of this file, the line initiates an outbound rescan. If the file
  1465.     did not exist, but suddenly appears, a rescan is done, too. If there is no
  1466.     change or the file does not exist, nothing happens. For users of XenObm:
  1467.     This behaves very similar to XMRESCAN.FLG, so it should work pretty good
  1468.     now with XenObm regarding rescan flag!
  1469.  
  1470.   BTRESCAN.BSY
  1471.  
  1472.     This global flag is generated at start of an outbound rescan / reread of
  1473.     any line and deleted after the line finished rescanning / rereading
  1474.     outbound. While this flag is present, no other line will begin an outbound
  1475.     rescan/ reread, but a line attempting to begin an outbound rescan / reread
  1476.     while this flag is already present will "remember" to do the rescan later
  1477.     by creating BTRESCAN.## for itself. BTRESCAN.## will be deleted immediately
  1478.     after creation of BTRESCAN.BSY.
  1479.  
  1480.   This will lower system load (especially in networks and multiline systems) by
  1481.   avoiding multiple lines rescanning / rereading simultaneously.
  1482.  
  1483.   BTRESCAN.DMP
  1484.  
  1485.     The first binkley task who decides to do a new rescan writes rescanned data
  1486.     into BTRESCAN.DMP (saying "Rescanning"). If this file is not older than
  1487.     "ReadHoldTime" minutes, the other lines will just read this dump file
  1488.     (saying "Reading").
  1489.  
  1490.  
  1491. TJW: Language.Txt
  1492.  
  1493.   This is a mixed language file with English, Startrek and German language.
  1494.   Lines with English text are prefixed by "E", lines with Startrek text are
  1495.   prefixed by "S", German is prefixed by "G" and common lines are prefixed by
  1496.   "*".
  1497.  
  1498.  
  1499. TJW: BTUTIL
  1500.  
  1501.   Integrated BTCTL and BTLNG into one new single tool named BTUTIL. This saves
  1502.   about 53KB EXE size in total. Invoke BTUTIL without parameters to see usage.
  1503.  
  1504.  
  1505. TJW: BTUTIL
  1506.  
  1507.   Modified BTUTIL to accept mixed multiple-language language source files.
  1508.  
  1509.   BTUTIL LNG key E language.txt english.lng
  1510.   BTUTIL LNG key S language.txt startrek.lng
  1511.   BTUTIL LNG key G language.txt german.lng
  1512.  
  1513.   It is possible to use BTUTIL LNG without "key X" parameter to process old
  1514.   language files.
  1515.  
  1516.  
  1517. TJW: Language file
  1518.  
  1519.   No support for external language file any more as this was a popular problem
  1520.   source. You MUST patch your LNG into the EXE using BTLNG patch, if you want
  1521.   to have something different as standard english language.
  1522.  
  1523.  
  1524. Merged in BTPE 4.00, 4.01 and 4.02 diff of Paul Edwards
  1525.  
  1526.   See btpe_402.txt for details.
  1527.  
  1528.  
  1529. TS/TJW: misc. source fixes and cleanups
  1530.  
  1531.  
  1532. Date and Time
  1533.  
  1534.   Changed date / time display to 96/06/24 Mon 23:59 format. This is neither
  1535.   european nor US format, but simply logical ;-)
  1536.  
  1537.  
  1538. RH: made BT-XE compile for Win32 again using Visual C++
  1539.  
  1540.   No hydra support and no timesync support yet.
  1541.  
  1542.  
  1543. RH: First implementation of Lookup functions
  1544.  
  1545.   Works with ALT-S (Send File), ALT-G (Get File), ALT-P (Poll Node) and ALT-M
  1546.   (Manual Poll)
  1547.  
  1548.   If you enter a sysopname and the sysop has more than one line, you see a node
  1549.   entry select window now and you can choose the node to use for the selected
  1550.   function.
  1551.  
  1552.   Don't use wildcards as * and or ? - use only part of names - they are working
  1553.   as wildcards.
  1554.  
  1555.   So "R Heeb" will find "Rudolf Heeb or "Rudi Heeb".
  1556.  
  1557.   You can also use the last name only. Waldmann finds all Waldmann, not only
  1558.   Thomas. :-)
  1559.  
  1560.   If you enter both (firstname AND lastname) lastname is nor interpreted as
  1561.   wildcard. If you enter one name only, it is using it as wildcard for
  1562.   lastname.
  1563.  
  1564.   Examples: "R Heeb" finds Rudi Heeb, Rudolf Heeb, Renate Heeb.
  1565.             "R Heeb" does NOT find Rudi Hee, Rudolf Heebermann.
  1566.             "Hee" finds Rudi Heeb, Rudolf Heeb, Renate Heeb, Rudi Hee,
  1567.                   Rudolf Heebermann, Elke Heess ...
  1568.             "T Wald" does NOT find Thomas Waldmann
  1569.             "T Waldmann" finds Thomas Waldmann
  1570.  
  1571.   Be aware that if you use only one or two characters, there will be many
  1572.   entries to be found. Many entrys -> much time and much memory needed! Please
  1573.   try it, and report any errors and whishes to Rudolf Heeb.
  1574.  
  1575.  
  1576. RH: Enhanced Alt-S (Send) and Alt-G (Get) Dialogs
  1577.  
  1578.   Those dialoges now also take addresses not listed in nodelist. So you can put
  1579.   files on hold for or do file requests from unlisted nodes/points
  1580.   respectively.
  1581.  
  1582.  
  1583. TS: Visual progress metering bars
  1584.  
  1585.   Implemented visual progress metering bars for Janus/Hydra/Zmodem in
  1586.   Wazoo/Emsi sessions.
  1587.  
  1588.  
  1589. TS: Visual progress metering bars
  1590.  
  1591.   Moved progress meters to new window overlapping outbound window while in
  1592.   Wazoo/Emsi sessions.
  1593.  
  1594.  
  1595. Added magic check for reading Binkley.Axx dump files.
  1596.  
  1597.   Should help avoiding crashes with trashed dump files.
  1598.  
  1599.  
  1600. Recenty Activity Scrolling
  1601.  
  1602.   Maybe improved recenty activity scrolling performance a bit by aligning each
  1603.   line on a 4 byte boundary for video modes with a column count that is a
  1604.   multiple of 4, too (e.g. 80 or 132).
  1605.  
  1606.  
  1607. Extended timesync to use EMSI addresses
  1608.  
  1609.  
  1610. TJW: Hydra chat
  1611.  
  1612.   If you have a hydra session, you might use chat mode now (if the other side
  1613.   is capable of chat mode, too - some mailers tell you this with a message
  1614.   displayed as "HCON: remote has chat capability (bell enabled/disabled)" or
  1615.   similar).
  1616.  
  1617.   To enter chat mode on your side, hit "Alt-C". Two windows "Local" and
  1618.   "Remote" will appear, shrinking "Recent Activity" - I strongly(!) recommend
  1619.   80*50 video mode for this (mode co80,50) - with 80*25 you will have only 2
  1620.   lines as chat window(s).
  1621.  
  1622.   At this moment, your side will transmit a string to the other side notifying
  1623.   that you entered chat mode (and also two bell characters to wake up the
  1624.   remote sysop).
  1625.  
  1626.   If remote sysop is not awake yet, you may send some more bell characters
  1627.   using Ctrl-G (the same is possible if remote sysops calls you for chatting
  1628.   if you have enabled the chat sound with the "Gong" keyword in Binkley.Cfg).
  1629.  
  1630.   To send text to remote side, simply type it in. All text entered on the
  1631.   remote side will appear in your "Remote" window.
  1632.  
  1633.   To leave chat mode hit Alt-C again. Chat mode will automatically be left at
  1634.   end of the session if one side leaves chat mode (or even did not enter chat
  1635.   mode). Also, there is an input timeout, so don't sleep while chatting.
  1636.  
  1637.   Please report any problems or incompatibilities with chat mode, especially to
  1638.   other mailers.
  1639.  
  1640.  
  1641. TJW: new keyword "NoHydraChat"
  1642.  
  1643.   You can disable Hydra Chat capabilities using this keyword.
  1644.  
  1645.  
  1646. JL: Added "Sorted Outbound"
  1647.  
  1648.   The 'Pending Outbound Mail' is sorted by Domain / Zone / Net / Node / Point.
  1649.   Sendable mail is still on the top. Outbound on HPFS drives was already sorted
  1650.   even without this feature - but FAT users [DOS] will now be happier, too.
  1651.  
  1652.  
  1653. TJW: "Hydra1st" keyword dropped
  1654.  
  1655.   This was dropped after XE2 release and is no longer a valid config verb. For
  1656.   explanation see "ProtocolPreference" keyword.
  1657.  
  1658.  
  1659. TJW: "ProtocolPreference" keyword
  1660.  
  1661.   This made "Hydra1st" keyword obsolete.
  1662.  
  1663.   Binkley 2.60, 2.60 XE1 and XE2 were NOT fully FSC-0056 (EMSI specification)
  1664.   conform yet (well, it worked, though ;-).
  1665.  
  1666.   Old / wrong behaviour:
  1667.  
  1668.    1. Caller system sends all protocols (HYD,JAN,ZAP,ZMO) it can do.
  1669.  
  1670.    2. Called system (BT) chooses a protocol with fixed preference order
  1671.       JAN,HYD,ZAP,ZMO (BT 2.60 orig) or HYD,JAN,ZAP,ZMO (XE and Hydra1st) - no
  1672.       matter in which sequence the protocols are transmitted (preferred) by
  1673.       caller.
  1674.  
  1675.   New and correct behaviour:
  1676.  
  1677.    1. Caller system sends all protocols it can do in order of preference: It
  1678.       sends e.g. HYD,JAN,ZAP,ZMO if it can do them all and prefers Hydra as 1st
  1679.       choice, then Janus as 2nd choice, ZedZap as 3rd choice etc.
  1680.  
  1681.    2. Called system chooses the FIRST protocol out of the transmitted protocol
  1682.       preference string which it is itself capable of.
  1683.  
  1684.       If ZAP,JAN,HYD,ZMO is received and it can do ZAP, it will choose ZAP,
  1685.       doing the 1st choice protocol.
  1686.  
  1687.       If JAN,HYD,ZAP,ZMO is received and it can't do JAN, but HYD, then HYD
  1688.       will be done, doing the 2nd choice protocol.
  1689.  
  1690.   With ProtocolPreference you can set what YOUR own Binkley will send in EMSI
  1691.   if you call out to another system.
  1692.  
  1693.   Default preference sequence (if you don't specify this keyword):
  1694.  
  1695.   HYD,JAN,ZAP,ZMO       (if Hydra is implemented in your Binkley version)
  1696.    or
  1697.   JAN,ZAP,ZMO           (if no Hydra is implemented in your Binkley version)
  1698.  
  1699.   With NoJanus, NoHydra, NoZedZap etc. the corresponding protocols will be left
  1700.   out of the default ProtocolPreference string, of course.
  1701.  
  1702.   If you specify "ProtocolPreference HYD,ZAP,ZMO" your Binkley will tell remote
  1703.   side on outgoing calls that it prefers HYDRA as 1st choice, then ZedZap as
  1704.   2nd choice and ZMO as last choice and that it can NOT do anything other.
  1705.  
  1706.   ATTENTION: Be aware that the user defined ProtocolPreference string is
  1707.   =========  transmitted "as is", there are no checks if it is valid or if it
  1708.              does comply with your other settings! So DON'T use this keyword if
  1709.              you don't know what you're doing.
  1710.  
  1711.   If you call out and the other side does not answer with the first available
  1712.   protocol in YOUR ProtocolPreference although remote side is capable of doing
  1713.   it and also has not disabled it, the remote side is NOT fully FSC-0056
  1714.   compliant and you should notice the software author of that.
  1715.  
  1716.  
  1717. TS: DOS only: announcement of the fossil in use.
  1718.  
  1719.  
  1720. TJW: new keyword "ReadLog"
  1721.  
  1722.   If you spawn other programs from Binkley which generate a binkley style log,
  1723.   you can read this log into Binkley's screen (and log). The log specified with
  1724.   "ReadLog" is DELETED after it is read and incorporated into Binkley's log.
  1725.  
  1726.   e.g.: ReadLog  c:\bt\1\bink_add.log
  1727.                  ^ redirect all other bink style logs you want to include to
  1728.                    that location
  1729.  
  1730.  
  1731. MMP: "MaxBusyAge" keyword.
  1732.  
  1733.   Followed by a number of minutes, it specifies that Binkley should ignore .BSY
  1734.   files older than that. This can be used to automatically make a node dialable
  1735.   even if he has an old .BSY file laying around. This can happen if Binkley for
  1736.   some reason didn't clean up after a session; i.e. the system is rebooted. It
  1737.   will also handle the situation where Binkley (god forbid) traps, and is
  1738.   respawned using the "Respawn" command line argument.
  1739.  
  1740.   Example: MaxBusyAge      240
  1741.  
  1742.  
  1743. MMP: "SpawnNoOK" keyword
  1744.  
  1745.   Followed by a command, it specified that the command should be executed if
  1746.   the modem does not respond OK to the initialization string in unattended mode
  1747.   within half a second. If your modem is too slow to respond OK, you can add a
  1748.   number of tildes to the initialization string. This feature is useful for
  1749.   detecting if a modem has hung itself, and notify the sysop, or with the right
  1750.   software and hardware turn the modem off and on again.
  1751.  
  1752.  
  1753. MMP: "Quick" modifier for "AfterMail" keyword
  1754.  
  1755.   Using "AfterMail Quick <command>", Binkley does not spend unneccesary time on
  1756.   modem initialization. This is useful if the AfterMail command is very
  1757.   quickly. On my system i can run the aftermail in about the same time, as it
  1758.   take Binkley to initialize the modem. Also, without "Quick" a caller can be
  1759.   so unlucky, that the modem is reinitialized when he calls in.
  1760.  
  1761.  
  1762. MMP: "CacheHold" keyword
  1763.  
  1764.   This enables caching of the outbound, and speeds up rescanning. The usage is:
  1765.   CacheHold <level> [Stat]. <level> specifies the amount of caching, and can
  1766.   take the following values:
  1767.  
  1768.     0  No caching and Binkley scans as usual.
  1769.  
  1770.     1  Directories are cached. Using this, Binkley only need to read the
  1771.        directories once when scanning the outbound.
  1772.  
  1773.     2  Flow files are kept in memory. Using this, Binkley does not need to
  1774.        reread flow files that has not been changed.
  1775.  
  1776.   On my system CacheHold reduces the average rescan time from approximately
  1777.   2.70 seconds to 1.30 using 29 KB cache. However, the memory requirements and
  1778.   improvement in speed will differ from system to system.
  1779.  
  1780.   Add "Stat" to the line, and it will be logged how the rescanning performs.
  1781.   Use "CacheHold 0 Stat" to log the performance without caching.
  1782.  
  1783.  
  1784. MMP: Added the ability to freeze Binkley.
  1785.  
  1786.   When Binkley sees BTFREEZE.xx (xx is the hexadecimal task number) in the
  1787.   flags directory, it deletes the file, and creates BTFROZEN.xx instead. Then
  1788.   it lowers the DTR signal, and waits for BTFROZEN.xx to disappear. When it
  1789.   disappears, the modem is reinitialized. This feature is useful for freezing
  1790.   Binkley when compiling nodelists in the background.
  1791.  
  1792.  
  1793. New keyword "EMSIbanner" for debugging purposes
  1794.  
  1795.   If you put this in your Binkley.Cfg, Binkley will send a banner string (+
  1796.   Address ... using ...) *before* sending **EMSI_INQ - this helps with some
  1797.   remote COM I/O systems which fail within the first few received bytes.
  1798.  
  1799.  
  1800. New commandline verb "Debug"
  1801.  
  1802.   Does the same as "Debug" in config.
  1803.  
  1804.  
  1805. Added mailstatus character to zoomed outbound view (-*x>$...).
  1806.  
  1807.  
  1808. TJW: new keyword "IPC"
  1809.  
  1810.   With this, you define the directory which Binkley will use to write Max 2.x
  1811.   compatible IPCxx.BBS (xx = tasknumber in Hex) files into.
  1812.  
  1813.   E.g: IPC h:\Max\IPC\
  1814.  
  1815.   The IPC files will contain "BinkleyTerm 2.60XE" as user name and some
  1816.   information about Binkley's state, e.g. "Waiting for Call or Event".
  1817.  
  1818.   If you do not use IPC keyword, Binkley will NOT write IPC files.
  1819.  
  1820.  
  1821. MB: Maximus 3.x MCP support (OS/2 version only).
  1822.  
  1823.   (Thanks to Mike Burgett for writing and Bob Juge for sending, merged in by
  1824.    TJW)
  1825.  
  1826.   Just define the same path with MCPpipe statement of Binkley as in MCP
  1827.   statement of Maximus, e.g.: MCPpipe \pipe\maximus\mcp If you do NOT want to
  1828.   use MCP just do NOT define "MCPpipe" in your config!
  1829.  
  1830.   Then use SM (session monitor of Max 3.x) to view line status.
  1831.  
  1832.   MCP.EXE *MUST* be running on startup of BT-XE to use this feature. You must
  1833.   also have MCP32.DLL in LIBPATH to run this version of BT-XE (even if you
  1834.   don't use MCP).
  1835.  
  1836.   Both is part of Maximus 3.xx package (but can also be used without having
  1837.   Maximus installed).
  1838.  
  1839.   Remark of TJW: Due to file handle inheritance problems, automatic start code
  1840.                  for MCP.EXE was removed. So you have to start MCP.EXE before
  1841.                  BT-XE or MCP will not work.
  1842.  
  1843.   You must *NOT* start MCP using SpawnInit - this would cause problems.
  1844.  
  1845.   Use this a SINGLE time in your CMD file (startup.cmd e.g.) before you invoke
  1846.   any BT-XE task using MCP:
  1847.  
  1848.                  MCP.EXE . <pipename> <number of tasks> server
  1849.  
  1850.   e.g.:   detach MCP.EXE . \pipe\maximus\mcp 16 server
  1851.  
  1852.   Be sure that you have set MAXIMUS environment variable before this command.
  1853.  
  1854.   Directly after starting MCP it's a good idea to start SM.EXE to *use* MCP. Do
  1855.   NOT start SM.EXE with SpawnInit.
  1856.  
  1857.  
  1858. Changed janus.c to create JANUSREQ.R%02x in flagdir
  1859.  
  1860.  
  1861. TJW: new keyword "TaskPath"
  1862.  
  1863.   You can specify a separate directory for BINKLEY.?xx files with this to keep
  1864.   your Binkley directory clean. Defaults to Binkley directory.
  1865.  
  1866.   e.g.:  TaskPath c:\bt\task\
  1867.  
  1868.  
  1869. TJW: Changed order of config file reading
  1870.  
  1871.   old: binkley.scd -> binkley.evt -> binkley.cfg
  1872.   new: binkley.cfg -> binkley.scd -> binkley.evt
  1873.  
  1874.   This was necessary for TaskPath to be known before searching binkley.scd/sxx.
  1875.  
  1876.  
  1877. Today at a glance
  1878.  
  1879.   Changed "Today at a glance" to show Mail/BBS/Fax calls ("M/B/F") - also
  1880.   changed alignment and moved it to language.txt
  1881.  
  1882.  
  1883. Messages
  1884.  
  1885.   changed message "File requests declined" to "Remote doesn't allow file
  1886.   requests now"
  1887.  
  1888.  
  1889. Fossil Annoncement
  1890.  
  1891.   DOS only: makes fossil announcements configurable by using the language file.
  1892.   this is way better than hardcoding them into the executable.
  1893.  
  1894.   The language file is readily prepared to detect and announce the following
  1895.   fossils:
  1896.  
  1897.     ADF (AnDan), BNU, cFos, DrComm, FCI, Opus!Comm, VX00, X00
  1898.  
  1899.   To add a new/other fossil, do the following:
  1900.  
  1901.   Look in the language file (LANGUAGE.TXT) for a line which reads like this:
  1902.  
  1903.     *LVX00:VX00,X00:X00,BNU:BNU,CFOS:cFos,OPUS:Opus!Comm[,...]
  1904.  
  1905.   This line is composed of pairs of strings. each pair contains a search string
  1906.   and an answer string separated by a colon, e.g.:
  1907.  
  1908.     OPUS:Opus!Comm
  1909.  
  1910.   Where `OPUS' is the string to look for in the internal fossil signature id
  1911.   string, and `Opus!Comm' is the string that will be output to the screen and
  1912.   logfiles.
  1913.  
  1914.   You simply add the new/other fossil search/answer string pair at the end of
  1915.   the line (preceeded by a `,'), but please mind that:
  1916.  
  1917.    - The search string has to be in upper case, while the answer string may be
  1918.      in upper/lower/mixed case.
  1919.  
  1920.    - Search- and answer strings must not contain any of the characters: ` '
  1921.      (blank/space), `,' and `:'.
  1922.  
  1923.    - You have to use a search string which definitely designates a fossil you
  1924.      look for. therefore the search string `VX00' has to come before search
  1925.      string `X00', because the other way round (`X00' first, that is) the
  1926.      answer string for `X00' would be output for both `X00' _and_ `VX00' ...
  1927.  
  1928.  
  1929. Include keyword
  1930.  
  1931.   Reduced stack space needed for "include", so you can do more "nested"
  1932.   includes now.
  1933.  
  1934.  
  1935. Worked HydraCom 1.09d changes into hydra / hydra chat source
  1936.  
  1937.   Alt-C is now used for entering (and exiting) Hydra chat mode. Clearing "Today
  1938.   at a glance" is done with Alt-D now.
  1939.  
  1940.   Hydra protocol now also works with long fnames correctly (OS/2 only). Long
  1941.   filenames are NOT supported in BT yet except in hydra protocol.
  1942.  
  1943.  
  1944. Modem command character translation "." -> "," removed
  1945.  
  1946.    So you can specify commands likw AT+FCLASS=2.0 now without having to
  1947.    "escape" the dot. You MAY, of course, continue using AT+FCLASS=2\.0 ...
  1948.  
  1949.    The only translations happening now are:
  1950.  
  1951.      "|"  -> output CR character
  1952.      "v^" -> lower/raise DTR
  1953.      ","  -> pause 1s
  1954.      "`"  -> pause 0.1s
  1955.      "-"  -> don't output anything
  1956.  
  1957.    If you don't want them, prefix them by an "escape" character which is: "\".
  1958.  
  1959.  
  1960. RH: ShowAlive
  1961.  
  1962.   The file I_ALIVE.xx is now generated also in terminal mode while waiting for
  1963.   key strokes and while transfering with XModem and ZModem (UPload/DOWNload).
  1964.   Also, I_ALIVE.xx is generated while the user does an input (nodenumber,
  1965.   systemname, filename and so on). Yes, there are people needing more than 1
  1966.   minute to enter a nodenumber. :-)
  1967.  
  1968.  
  1969. TJW: OS/2 only: Window Titles
  1970.  
  1971.    BT-XE uses an undocumented OS/2 call to set the window title of its own
  1972.    window to "BT-XE #<TaskNumber>: <Action>" (default). "Action" is the same as
  1973.    in Maximus' session monitor (if you use MCP).
  1974.  
  1975.  
  1976. TJW: New keyword "WindowTitleFmt".
  1977.  
  1978.    This is used for setting the format string of window titles.
  1979.  
  1980.    Default is:
  1981.  
  1982.      WindowTitleFmt BT-XE #%%d: %%s    (you have to specify %% to get the
  1983.                                         single % as result or BT will crash)
  1984.  
  1985.    You can use this to set different format, like:
  1986.  
  1987.      WindowTitleFmt BT-XE #%%d USR V.34: %%s
  1988.  
  1989.    But don't make the title format too long or it maybe won't function
  1990.    correctly if it doesn't fit into title area of window.
  1991.    
  1992.    Further, you HAVE TO use first %%d AND second %%s !
  1993.  
  1994.    You can also use WindowTitleFmt with NO format string specified to DISABLE
  1995.    "set window title" calls:
  1996.  
  1997.      WindowTitleFmt
  1998.  
  1999.  
  2000. IPC:
  2001.  
  2002.    "Snoop"   defines the Snoop pipe - NOT the MCP pipe  (OS/2 only)
  2003.    "MCPpipe" defines the Maximus MCP pipe               (OS/2 only)
  2004.    "IPC"     defines the directory for IPCxx.BBS        (all platforms)
  2005.  
  2006.    You can use ALL now, if you want.
  2007.  
  2008.  
  2009.  
  2010. BTXE 9612240000 (XR4 gamma release)
  2011. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  2012.  
  2013.  
  2014. Bugfixes
  2015. --------
  2016.  
  2017. TJW: Language file
  2018.  
  2019.   Binkley never used language file strings M_PRESS_ESCAPE and M_NO_BBS (but
  2020.   hardcoded english text "Press escape to enter BBS" and "Doing mail only ..."
  2021.   if you did not specify it in your Binkley.Cfg). Fixed.
  2022.   
  2023.  
  2024. TJW: Removed $xxxxx size information on janus outbound requests
  2025.  
  2026.  
  2027. TJW: Made BTRESCAN.BSY semaphore file more safe
  2028.  
  2029.   This fixed sharing problems under DOS
  2030.  
  2031.  
  2032. TJW: Rescan
  2033.  
  2034.   Initial rescan with BTRESCAN.FLG touched before starting BT-XE should work
  2035.   now.
  2036.  
  2037.  
  2038. TJW: BTRESCAN.DMP
  2039.  
  2040.   Further, btrescan.dmp's timestamp is set to the BEGIN time of the rescan.
  2041.  
  2042.  
  2043. TJW: Added missing "/" into EMSI mailer / version / compiler info
  2044.  
  2045.  
  2046. TJW: Bugfix for deleting old bsy files
  2047.  
  2048.   There was a problem with networked PCs having slightly different times,
  2049.   giving "negative" ages.
  2050.  
  2051.  
  2052. TJW: Fixed dynamical events
  2053.  
  2054.   A real rescan will be forced before a dynamic event can be terminated (and
  2055.   now it will wait for it to *really* happen, even if outbound is temporarily
  2056.   "locked" by btrescan.bsy).
  2057.   
  2058.  
  2059. TS: (TS110409) fossil detection fixes / enhancements
  2060.   
  2061.  
  2062. TJW: Bad Calls
  2063.  
  2064.   Binkley stored an "int" into "bad call" files (2 bytes for DOS and 4 bytes
  2065.   for OS/2) what may have lead to problems when mixing DOS and OS/2 versions
  2066.   using the same outbound. Now 4 byte "long" values are used for both versions.
  2067.   
  2068.  
  2069. TJW: Fixed cosmetical bug with missing blank in IPC file
  2070.  
  2071.  
  2072. TJW: Fixed "powerdialing of a node"
  2073.  
  2074.   BT-XE should honour now your A=xx event setting
  2075.  
  2076.  
  2077. TJW: Fixed cost restriction bug with sized requests
  2078.  
  2079.  
  2080. TS: 2 diffs with display stuff
  2081.  
  2082.  
  2083. CFS: OS/2 only: Replaced DTR raise/lower code.
  2084.  
  2085.   It now works with CFOS's -kx switch.
  2086.  
  2087.  
  2088. TJW: Fixed bug in Send_WaZoo routine
  2089.  
  2090.   That lead to problems with file request at FD/IM systems (or maybe also with
  2091.   other ZedZap mailers) if the file request *.REQ file was sent without other
  2092.   mails or files.
  2093.   
  2094.  
  2095. TJW: Fixed EMSI capability bug
  2096.  
  2097.   If there was no bidirectional session or no BiDi* or Janus* stuff in config,
  2098.   Binkley said that it is able to do Hydra/Janus although it was NOT. Result:
  2099.   "No common session protocol- fallback to FTS-1" on BT's side, Hydra or Janus
  2100.   on other side.
  2101.  
  2102.  
  2103. TS: DOS version only bugs fixed:
  2104.  
  2105.   - if used without vfossil, Binkley/BTXE always used only 25 screen rows,
  2106.     regardless on the real number of screen rows available. now BTXE is
  2107.     able to determine and use the real number of available screen rows
  2108.     without a vfossil being loaded.
  2109.  
  2110.   - if used without a vfossil, the cursor could be seen even if the screen
  2111.     was `blanked'. now the cursor is disabled/enabled exactly as a loaded
  2112.     vfossil would do.
  2113.  
  2114.   - if used without vfossil, only 23 rows where used under certain
  2115.     conditions. hopefully ;-) fixed
  2116.  
  2117.  
  2118. unknown / SIJO / TJW:
  2119.  
  2120.   - there was a problem (access violation because of NULL pointer) if Hydra
  2121.     received [and discarded] a too long packet. Should be fixed.
  2122.     
  2123.     
  2124.   
  2125. New features
  2126. ------------
  2127.  
  2128. CFS: MODEMCID string
  2129.  
  2130.   string=last data coming from the modem before caller-id. If used, caller-id
  2131.   is logged.
  2132.  
  2133.   e.g.:                          MODEMCID ID=
  2134.   for a connect string such as:  CONNECT 64000/ARQ/ID=3782005/EAZ0
  2135.   BT-XE would log:               Got CID: 3782005
  2136.  
  2137.   This keyword is required for the next one.
  2138.  
  2139.  
  2140. CFS: BANNERCID phone banners
  2141.  
  2142.   Sets a custom banner for caller-id calls. * is allowed as wildcard. First
  2143.   match wins:
  2144.  
  2145.   BANNERCID 07492226912951 Hi, Hauke!
  2146.   BANNERCID 0749* Woa! A call from Germany...
  2147.  
  2148.   If no match, the banner specified using BANNER (Tracing your call...) is
  2149.   used.
  2150.  
  2151.  
  2152. CFS: STRINGREP string replacement
  2153.  
  2154.   Replaces a string for any other. Replacement only takes places at screen and
  2155.   log writes. I've written this to change the cryptic cause numbers from CFOS
  2156.   for more appropiate text.
  2157.  
  2158.   e.g.: STRINGREP /CAUSE=34B9 /Out of order
  2159.   so  : NO CARRIER/CAUSE=34B9 becomes NO CARRIER/Out of order
  2160.  
  2161.  
  2162. CFS: New keyword NOHUNDREDTHS per request in the BINKLEY support echo.
  2163.  
  2164.   If used, 1/100s of seconds won't be logged any more.
  2165.  
  2166.  
  2167. TS: C replacement for DOS ASM stuff
  2168.  
  2169.  
  2170. TJW: New, optional event "name" field:
  2171.  
  2172.   You can now specify: Event "Event name up to 32 chars" All 20:00 ...
  2173.   instead of:          Event All 20:00 ...
  2174.  
  2175.   The string will be used in "next event" display and at start of event.
  2176.   
  2177.  
  2178. TJW: Cost vector now may have 32 entries (thanks to german Telekom)
  2179.  
  2180.  
  2181. TJW: Window Titles
  2182.  
  2183.   Changed function for setting OS/2 window title to the more simple and maybe
  2184.   also "more official" function Win16SetTitle
  2185.  
  2186.  
  2187. MR: If a config file could not be found you will get an error message.
  2188.  
  2189.  
  2190. MR: New makefile for Watcom C 10.x for the OS/2 and DOS versions.
  2191.  
  2192.  
  2193. MR: Made some minor changes to be able to compile and use the Watcom exes.
  2194.  
  2195.  
  2196. MR: Increased BINKLEY.BAN buffer to 2K for OS/2
  2197.  
  2198.  
  2199. MR: new xe_user.doc layout
  2200.  
  2201.  
  2202. TS: DOS only: new config statement `NoANSITrash'
  2203.  
  2204.   using this statement makes only sense with dos versions under certain
  2205.   conditions (see below) and will be simply ignored by the os/2 version.
  2206.  
  2207.   if you use the BTXE dos version without a vfossil loaded AND without an
  2208.   ansi-driver loaded AND do not intend to redirect screen output to
  2209.   another com-port (e.g to drive an external ansi terminal additionally
  2210.   hooked to your main machine) then you can use the `NoANSITrash' config
  2211.   statement to suppress some some ansi escape sequences which typically
  2212.   will show up on the last screen row and when exiting the mailer.
  2213.  
  2214.   there is no reason to use this config statement if:
  2215.   -   you use OS/2
  2216.   -   you have either an ansi driver or a vfossil or both installed
  2217.   -   you intend to redirect screen output to an ansi terminal hooked
  2218.         to another comport of your machine
  2219.  
  2220.  
  2221. CFS: OS/2 only: new keyword "SIOmode"
  2222.  
  2223.   Uses an alternate DTR raise/lower code that works with CFOS's -kx switch
  2224.   (SIO emulation).
  2225.     
  2226.   SIOmode    | Method to raise / drop DTR
  2227.   -----------+-----------------------------------------------------
  2228.   used       | DosDevIOCtl / ASYNC_SETMODEMCTRL / DTR_ON | DTR_OFF
  2229.   not used   | MaxComm.DLL / ComSetDCB / MODE_DTR_CONTROL
  2230.     
  2231.  
  2232. TS: updated FTSCPROD list in language.txt
  2233.  
  2234.  
  2235. Known bugs / limitations / things to be done:
  2236. =============================================
  2237.  
  2238. - LocalLog is buggy ? Reason unknown yet. DO NOT USE EXCEPT FOR DEBUGGING.
  2239.  
  2240.  
  2241. - "CacheHold", "CacheHold 1" and "CacheHold 2" are buggy, outbound disappears
  2242.   except MainZone after you do an Alt-P <MyAka> in the mailer and reappears
  2243.   after a rescan on ANOTHER line. DO NOT USE EXCEPT FOR DEBUGGING. "CacheHold
  2244.   0" shows NO erroneous behaviour.
  2245.  
  2246.   
  2247. - Delete outbound *.REQ at end of SUCCESSFUL session (50% implemented yet).
  2248.  
  2249.  
  2250. - After Hydra xfers in terminal mode, there are some hydra protocol sequences
  2251.   trashing the screen. Also not new, but should be fixed.
  2252.  
  2253.  
  2254. - Clean up fsent / f_sent / END_BATCH stuff for ZModem.
  2255.  
  2256.   There are problems with ifcico after a request at BT: END_BATCH isn't sent by
  2257.   BT most probably because fsent stuff is confused ...
  2258.  
  2259.   Also check respond_to_filerequests and invoke_srif and WaZoo_Callback.
  2260.  
  2261.   [TJW961128 Remark: this is maybe partially fixed, Send_Wazoo fix]
  2262.  
  2263.   
  2264. - This one is not a Binkley, but a FastEcho problem (I can't comment on FE, so
  2265.   I just quote some bug reports sent in by FastEcho users):
  2266.  
  2267.   FE (or at least SOME version of FE) deletes BTRESCAN.* - including
  2268.   BTRESCAN.DMP and BTRESCAN.BSY. This problem has to be fixed by FE author
  2269.   (maybe by only deleting BTRESCAN.??).
  2270.  
  2271.  
  2272.