Changes made in BinkleyTerm v2.60XE/Gamma-3


Bug fixes
---------

???: File privilege levels for FREQ

  Changed file privilege levels from "(unsigned) word" to "(signed) short" for
  file requests. So the "level problems" of XR2 should be history now.


???: Last Call Display

  If incoming call failed (connect and nothing more) and last call before was
  e.g. FAX, "last: FAX" was shown. This should be "Inc-Fail" now. This is also
  shown at begin of an incoming call as long as the session state is unknown.


???: Fixed BTCTL/BTUTIL for use without PrivateNet (point fake net)


???: BBSBATCH

  Bugfix for all lines creating BBSBATCH.* at the same place. BBSBATCH.* is now
  renamed to BBSBATxx.* (xx = Tasknumber in Hex)


???: Fixed scheduler bug

  Scheduler was not working correct with events on a specifiy day of (any)
  month like with: Event All 00:00,0,1 00:00 F ...

  But there are yet bugs left...


???: Fixed minor bug in async_os.c ("in" and "out" were swapped in OS call)


???: Fixed wrong month in ShortCostLog output


???: Fixed (?) file sharing for IBM C++


???: Dynamic Events

  Fixed dynamic events - a forced rescan is now done before a dynamic event can
  end - to ensure that there is really no more mail to send.


???: Fix for DOS SpawnInit


???: EMSI bugfix

  If a system sent x:y/z.0 and x:y/z.p EMSI AKA dupe check did not work
  correctly (point addr was not compared and so a "false dupe" was removed from
  AKA list of remote system).


???: Made internal FREQ processor OKFILE parsing more "robust"

  If you had multiple blanks between filespec and password in your OKFile, like
  in
        c:\*.*  !SECRET

  Binkley didn't process this as you intended it to do. Everybody could freq
  out of c.\*.* without using a password.

  This worked correctly:

        c:\*.* !SECRET

  Now Binkley doesn't care about AMOUNT of blanks between filespec and password
  any more.

  This parser part was completely rewritten - be careful and test this !


???: Versions compiled for different CPUs show CPU type in announce string


???: Misc. cosmetical fixes



New features
------------

TJW: BE CAREFUL! Changed [section] statements. See [Expression].


TJW: [Expression]

  [%Task%==1]             use section if environment variable TASK equals 1
  [%ENVVAR1%==%ENVVAR2%]  ...         if env. var. ENVVAR1 equals ENVVAR2
  [%MODEM%==ZYXEL]        ...         if env. var. MODEM equals ZYXEL
  [%PORT%!=2]             ...         if env. var. PORT is not equal to 2
  [Common] or [True]      use section in any case
  [Ignore] or [False]     ignore section

  Obsolete style (not supported any longer): [Task 1]


TJW: New and powerful cost calculation scheme.

  See "CostCPS", "CostTimeCorrection" and "Cost Event" for details.

  Adapt your Binkley.Evt ("L" flag) and your nodelist compiler setup or you
  WILL run into problems !!!


TJW: New keyword "CostCPS"

  This sets the estimated CPS rate for cost calculations related to "L" event
  flag. Default is 1024 CPS.

    CostCPS 1500           ; could be used for lines connecting at 14400bps
    CostCPS 3000           ; could be used for lines connecting at 28800bps
    CostCPS 7000           ; could be used for ISDN X.75 lines with 64000bps

  Additionally, the connect and session overhead is added for cost calculation.


TJW: New keyword "CostTimeCorrection"

  With this you can configure the time in seconds that your modem / adaptor
  needs to connect and also session overhead for cost calculation.

  First value is the time in s (costing money) before you get a "CONNECT".
  Default is 5s. For ISDN you might want to configure a lower value. For very
  bad lines you might want to configure a higher value.

  Second value is the session handshake overhead in s used for calculations for
  "L" event flag (before dialing out). Default is 5s, too. If you connect to
  very fast or slow handshaking mailers, you might want to configure a
  different value.

  You should change the default values to typical ones for your system. The
  defaults are just "better than nothing", but too low for analogue modems and
  too high for ISDN adaptors.

  E.g.: CostTimeCorrection 13 4

        This gives a connect overhead of 13s and a session overhead of 4s
        (analoge connect with V.32bis on good line, BT-XE to BT-XE).

  E.g.: CostTimeCorrection 1 2

        This gives a connect overhead of 1s and a session overhead of 2s (ISDN
        connect with X.75, BT-XE to BT-XE).


TJW: "Cost Event" - a new Event type with flag "!="

  This new event type is used similar to normal "Event", but describes costs
  involved with your outbound calls at different daytime, weekdays etc.

  There can be ONLY such a cost definition in such an event, nothing else! Such
  a "cost event" does NOT interfere with other event definitions.

  The cost vector can include up to 16 comma separated entries, but there MUST
  NOT be any blanks between them. You need not specify all 16 entries, you need
  only to specify the ones you really use (c0,c1,c2 if you only use 3 cost
  indices).

  Event <days> <start time> [<end time>] !=<c1>,<c2>,..,<c16>
        ^------------------------------^   ^----------------^
         meaning as like in other events       cost vector

  The cost index used for a connection is reported after connection as
  "Seconds: ... Tariff: <cost index> ... System: ...".

  Example 1 for Germany (used with EuroCost and CostUnit 12):

    Event All 00:00,12,24 05:00 !=2400,0600,0360,0360,0600,0090,0090,0054

    This means that on December 24. from 00:00 until 05:00 the "cost vector" is
    2400, 600, ... (meaning that cost index 1 (city zone) has unit lengths of
    240 seconds, cost index 2 (50km zone) has unit lengths of 60s etc.). You
    have to compile the "cost index" into V7 nodelist index (cost field).
    Binkley then uses this "cost index" as index into the "cost vector" of the
    active CostEvent. "cost index" is 1-based (!), 0 means no/unknown cost!!!

    You have to define the cost vector in 1/10 seconds (unit length). CostUnit
    is the amount of money a unit costs (12 [Pf] in Germany).

    So if you call somebody on Dec. 24 at 03:00 who has cost index 3 compiled
    into the V7 cost field by your nodelist compiler, Binkley will calculate
    with unit lengths of 36 seconds (360 * 0.1s).


  Example 2 for US (NO "EuroCost" and NO "CostUnit"):

    Event All 00:00 24:00 !=10,20,40,80,160

    [Sorry, I don't have ANY information about US cost structure, so this is
    just an example with not realistic numbers]

    This means that on every day between 0:00 and 24:00 the "cost vector" is
    10,20,...,160 (meaning that a minute shortest distance costs 10 [cents or
    whatever] and a minute longest distance costs 160). You have to compile the
    "cost index" (1 is nearest, 5 is farest in this example, up to 16 is
    possible) into V7 nodelist index (cost field). Binkley then uses this "cost
    index" as index into the "cost vector" of the active CostEvent. "cost
    index" is 1-based (!), 0 means no/unknown cost!!!

    So if you call somebody (on any day, any time) who has cost index 3
    compiled into the V7 cost field by your nodelist compiler, Binkley will
    calculate with costs of 40 [cents, whatever] per minute.

  Here, for interested audience, the calculation method. If you aren't
  interested, you can skip to next feature ...

  Cost calculation algorithm for outbound calls (inbound: cost==0) :

  StartTime = StartTime - CostTimeCorr_Connect   (the modems need some worthy
                                                  time before CONNECT !)

  get CostIndex (1..16) from V7 nodelist RealCost field
  find CostEvent matching StartTime and get ActualCostVector
  set return value Cost = ActualCostVector[CostIndex] !!!

  EuroCost (unit based cost calculation) :

    Time = StartTime                             set Time to StartTime
    Ttimes10 = 0                                 set 1/10s timer to 0
    TotalCost = 0                                set TotalCost to 0
    while Time < EndTime                         do as long as connection was
       TotalCost = TotalCost + CostUnit           spend one CostUnit
       Ttimes10 = Ttimes10                        we get this time for
                  + ActualCostVector[CostIndex]   one CostUnit
       Time = StartTime + Ttimes10/10;            afterwards we have this time
       find CostEvent matching Time and           get tariff information for
       update ActualCostVector                    new Time

    return TotalCost as total cost               this is what we spent

  No EuroCost (minute based cost calculation) :

    Time = StartTime                             set time to StartTime
    TotalCost = 0                                set TotalCost to 0
    while Time < EndTime                         do as long as connection was
       TotalCost = TotalCost                       spend amount of money
                   + ActualCostVector[CostIndex]   one minute costs
       Time = Time + 60s                           we get 1 minute for it
       find CostEvent matching Time                get tariff information for
       and update ActualCostVector                 new Time

    return TotalCost as total cost                this is what we spent

  I hope this is the correct way to do it. If it is NOT correct like this,
  please let me know !!!

  Don't forget to adapt your "L" flags in Binkley.Evt !!!

  With L flag, Binkley will calculate costs before calling out: It will assume
  a 1KB/s transfer rate (default, you may modify this by specifying CostCPS,
  see above) to estimate session length. Then it calculates real cost (in your
  currency) for this session at this time and decides depending on L flag
  condition if it should dial out or not.

  You can use this to send short crash mails immediately and delay crash mails
  with file attaches to some later event with cheaper costs.

  For a cost saving setup in Germany you could use L<13 (meaning L<=12) on most
  of your events - except event at cheapest time 02:00-05:00, for this event
  you should NOT do cost restrictions or BT-XE will not dial out at all if
  costs are too high even at cheapest time. This will cause BT-XE to delay a
  crash mail until cost is <=12 ("Pfennige") or until event with no cost
  restriction or "H" flag.


???: Added '$' as mail status char for mail not matching cost setup (L event flag)


MMP: New format char for ShortCostLog: $r

  $r gives "remote's costs" for inbound calls (like $c gives your own costs for
  outbound calls).


MMP: Changed default ShortCostLog format to include remote costs:

   $02y$02m$02d $02H$02M$02S $# $14A $6B $4s $4c $4r $8i $8o $8C $4Y
  
  This produces log entries like: (removed unnecasary spaces)
                                                                Biggest file
   Date   Time   Task    Node Connect Sec Cost RCst   In    Out   -size -cps
   960328 132222 1    2:238/9  28800   29    0   24 6036   9903    9896 3298
   960328 132539 1   2:238/54  28800  105    0   96    0 230517  223554 3287
  

???: Added optional size parameter to *.REQ entries

  old *.REQ format       new *.REQ format

  file1                  file1 $12345
  file2                  file2 $100000
  file3                  file3 $1000000
  ...                    ...

  The value after $ is the size of the file to request in bytes. This is used
  for cost calculation only, so an approx. value does the job, too. Size value
  is optional, if no size is given, 1 is assumed. In the REQ file transmitted
  to remote side, size information is filtered out, of course.


HR: Changed Alt-G (get files) dialogue to make input of $size possible


???: Changed "Tariff:" to show cost index


???: New ShortCostLog format character $z for Cost Index

    0 = no cost
  1.. = cost index into cost event's cost vector


TJW: Shared outbound

  Files related to that (all located in FlagDir):

  BTRESCAN.FLG

    This global flag for all lines works different from BTRESCAN.nn: Each line
    monitors this flag and if a line notices a change in the modification
    timestamp of this file, the line initiates an outbound rescan. If the file
    did not exist, but suddenly appears, a rescan is done, too. If there is no
    change or the file does not exist, nothing happens. For users of XenObm:
    This behaves very similar to XMRESCAN.FLG, so it should work pretty good
    now with XenObm regarding rescan flag!

  BTRESCAN.BSY

    This global flag is generated at start of an outbound rescan / reread of
    any line and deleted after the line finished rescanning / rereading
    outbound. While this flag is present, no other line will begin an outbound
    rescan/ reread, but a line attempting to begin an outbound rescan / reread
    while this flag is already present will "remember" to do the rescan later
    by creating BTRESCAN.## for itself. BTRESCAN.## will be deleted immediately
    after creation of BTRESCAN.BSY.

  This will lower system load (especially in networks and multiline systems) by
  avoiding multiple lines rescanning / rereading simultaneously.

  BTRESCAN.DMP

    The first binkley task who decides to do a new rescan writes rescanned data
    into BTRESCAN.DMP (saying "Rescanning"). If this file is not older than
    "ReadHoldTime" minutes, the other lines will just read this dump file
    (saying "Reading").


TJW: Language.Txt

  This is a mixed language file with English, Startrek and German language.
  Lines with English text are prefixed by "E", lines with Startrek text are
  prefixed by "S", German is prefixed by "G" and common lines are prefixed by
  "*".


TJW: BTUTIL

  Integrated BTCTL and BTLNG into one new single tool named BTUTIL. This saves
  about 53KB EXE size in total. Invoke BTUTIL without parameters to see usage.


TJW: BTUTIL

  Modified BTUTIL to accept mixed multiple-language language source files.

  BTUTIL LNG key E language.txt english.lng
  BTUTIL LNG key S language.txt startrek.lng
  BTUTIL LNG key G language.txt german.lng

  It is possible to use BTUTIL LNG without "key X" parameter to process old
  language files.

  Note: The language specifier is cAsE-sensitive!


TJW: Language file

  No support for external language file any more as this was a popular problem
  source. You MUST patch your LNG into the EXE using BTLNG patch, if you want
  to have something different as standard english language.


TJW: Merged in BTPE 4.00, 4.01 and 4.02 diff of Paul Edwards

  See btpe_402.txt for details.


TS/TJW: misc. source fixes and cleanups


???: Date and Time

  Changed date / time display to 96/06/24 Mon 23:59 format. This is neither
  european nor US format, but simply logical ;-)


HR: made BT-XE compile for Win32 again using Visual C++

  No hydra support and no timesync support yet.


HR: First implementation of Lookup functions

  Works with ALT-S (Send File), ALT-G (Get File), ALT-P (Poll Node) and ALT-M
  (Manual Poll)

  If you enter a sysopname and the sysop has more than one line, you see a node
  entry select window now and you can choose the node to use for the selected
  function.

  Don't use wildcards as * and or ? - use only part of names - they are working
  as wildcards.

  So "R Heeb" will find "Rudolf Heeb or "Rudi Heeb".

  You can also use the last name only. Waldmann finds all Waldmann, not only
  Thomas. :-)

  If you enter both (firstname AND lastname) lastname is nor interpreted as
  wildcard. If you enter one name only, it is using it as wildcard for
  lastname.

  Examples: "R Heeb" finds Rudi Heeb, Rudolf Heeb, Renate Heeb.
            "R Heeb" does NOT find Rudi Hee, Rudolf Heebermann.
            "Hee" finds Rudi Heeb, Rudolf Heeb, Renate Heeb, Rudi Hee,
                  Rudolf Heebermann, Elke Heess ...
            "T Wald" does NOT find Thomas Waldmann
            "T Waldmann" finds Thomas Waldmann

  Be aware that if you use only one or two characters, there will be many
  entries to be found. Many entrys -> much time and much memory needed! Please
  try it, and report any errors and whishes to Rudolf Heeb.


HR: Enhanced Alt-S (Send) and Alt-G (Get) Dialogs

  Those dialoges now also take addresses not listed in nodelist. So you can put
  files on hold for or do file requests from unlisted nodes/points
  respectively.


TS: Visual progress metering bars

  Implemented visual progress metering bars for Janus/Hydra/Zmodem in
  Wazoo/Emsi sessions.


TS: Visual progress metering bars

  Moved progress meters to new window overlapping outbound window while in
  Wazoo/Emsi sessions.


???: Added magic check for reading Binkley.Axx dump files.

  Should help avoiding crashes with trashed dump files.


???: Recenty Activity Scrolling

  Maybe improved recenty activity scrolling performance a bit by aligning each
  line on a 4 byte boundary for video modes with a column count that is a
  multiple of 4, too (e.g. 80 or 132).


???: Extended timesync to use EMSI addresses


TJW: Hydra chat

  If you have a hydra session, you might use chat mode now (if the other side
  is capable of chat mode, too - some mailers tell you this with a message
  displayed as "HCON: remote has chat capability (bell enabled/disabled)" or
  similar).

  To enter chat mode on your side, hit "Alt-C". Two windows "Local" and
  "Remote" will appear, shrinking "Recent Activity" - I strongly(!) recommend
  80*50 video mode for this (mode co80,50) - with 80*25 you will have only 2
  lines as chat window(s).

  At this moment, your side will transmit a string to the other side notifying
  that you entered chat mode (and also two bell characters to wake up the
  remote sysop).

  If remote sysop is not awake yet, you may send some more bell characters
  using Ctrl-G (the same is possible if remote sysops calls you for chatting
  if you have enabled the chat sound with the "Gong" keyword in Binkley.Cfg).

  To send text to remote side, simply type it in. All text entered on the
  remote side will appear in your "Remote" window.

  To leave chat mode hit Alt-C again. Chat mode will automatically be left at
  end of the session if one side leaves chat mode (or even did not enter chat
  mode). Also, there is an input timeout, so don't sleep while chatting.

  Please report any problems or incompatibilities with chat mode, especially to
  other mailers.


TJW: new keyword "NoHydraChat"

  You can disable Hydra Chat capabilities using this keyword.


JL: Added "Sorted Outbound"

  The 'Pending Outbound Mail' is sorted by Domain / Zone / Net / Node / Point.
  Sendable mail is still on the top. Outbound on HPFS drives was already sorted
  even without this feature - but FAT users [DOS] will now be happier, too.


TJW: "Hydra1st" keyword dropped

  This was dropped after XE2 release and is no longer a valid config verb. For
  explanation see "ProtocolPreference" keyword.


TJW: "ProtocolPreference" keyword

  This made "Hydra1st" keyword obsolete.

  Binkley 2.60, 2.60 XE1 and XE2 were NOT fully FSC-0056 (EMSI specification)
  conform yet (well, it worked, though ;-).

  Old / wrong behaviour:

   1. Caller system sends all protocols (HYD,JAN,ZAP,ZMO) it can do.

   2. Called system (BT) chooses a protocol with fixed preference order
      JAN,HYD,ZAP,ZMO (BT 2.60 orig) or HYD,JAN,ZAP,ZMO (XE and Hydra1st) - no
      matter in which sequence the protocols are transmitted (preferred) by
      caller.

  New and correct behaviour:

   1. Caller system sends all protocols it can do in order of preference: It
      sends e.g. HYD,JAN,ZAP,ZMO if it can do them all and prefers Hydra as 1st
      choice, then Janus as 2nd choice, ZedZap as 3rd choice etc.

   2. Called system chooses the FIRST protocol out of the transmitted protocol
      preference string which it is itself capable of.

      If ZAP,JAN,HYD,ZMO is received and it can do ZAP, it will choose ZAP,
      doing the 1st choice protocol.

      If JAN,HYD,ZAP,ZMO is received and it can't do JAN, but HYD, then HYD
      will be done, doing the 2nd choice protocol.

  With ProtocolPreference you can set what YOUR own Binkley will send in EMSI
  if you call out to another system.

  Default preference sequence (if you don't specify this keyword):

  HYD,JAN,ZAP,ZMO       (if Hydra is implemented in your Binkley version)
   or
  JAN,ZAP,ZMO           (if no Hydra is implemented in your Binkley version)

  With NoJanus, NoHydra, NoZedZap etc. the corresponding protocols will be left
  out of the default ProtocolPreference string, of course.

  If you specify "ProtocolPreference HYD,ZAP,ZMO" your Binkley will tell remote
  side on outgoing calls that it prefers HYDRA as 1st choice, then ZedZap as
  2nd choice and ZMO as last choice and that it can NOT do anything other.

  ATTENTION: Be aware that the user defined ProtocolPreference string is
  =========  nearly transmitted "as is", there are not many checks if it is
             valid or if it does comply with your other settings!
             So DON'T use this keyword if you don't know what you're doing.

  If you call out and the other side does not answer with the first available
  protocol in YOUR ProtocolPreference although remote side is capable of doing
  it and also has not disabled it, the remote side is NOT fully FSC-0056
  compliant and you should notice the software author of that.

  This behaviour is overridden by the new statement "SmartBiDi" (see below).


TS: DOS only: announcement of the fossil in use.


TJW: new keyword "ReadLog"

  If you spawn other programs from Binkley which generate a binkley style log,
  you can read this log into Binkley's screen (and log). The log specified with
  "ReadLog" is DELETED after it is read and incorporated into Binkley's log.

  e.g.: ReadLog  c:\bt\1\bink_add.log
                 ^ redirect all other bink style logs you want to include to
                   that location


MMP: "MaxBusyAge" keyword.

  Followed by a number of minutes, it specifies that Binkley should ignore .BSY
  files older than that. This can be used to automatically make a node dialable
  even if he has an old .BSY file laying around. This can happen if Binkley for
  some reason didn't clean up after a session; i.e. the system is rebooted. It
  will also handle the situation where Binkley (god forbid) traps, and is
  respawned using the "Respawn" command line argument.

  Example: MaxBusyAge      240


MMP: "SpawnNoOK" keyword

  Followed by a command, it specified that the command should be executed if
  the modem does not respond OK to the initialization string in unattended mode
  within half a second. If your modem is too slow to respond OK, you can add a
  number of tildes to the initialization string. This feature is useful for
  detecting if a modem has hung itself, and notify the sysop, or with the right
  software and hardware turn the modem off and on again.


MMP: "Quick" modifier for "AfterMail" keyword

  Using "AfterMail Quick <command>", Binkley does not spend unneccesary time on
  modem initialization. This is useful if the AfterMail command is very
  quickly. On my system i can run the aftermail in about the same time, as it
  take Binkley to initialize the modem. Also, without "Quick" a caller can be
  so unlucky, that the modem is reinitialized when he calls in.


MMP: "CacheHold" keyword

  This enables caching of the outbound, and speeds up rescanning. The usage is:
  CacheHold <level> [Stat]. <level> specifies the amount of caching, and can
  take the following values:

    0  No caching and Binkley scans as usual.

    1  Directories are cached. Using this, Binkley only need to read the
       directories once when scanning the outbound.

    2  Flow files are kept in memory. Using this, Binkley does not need to
       reread flow files that has not been changed.

  On my system CacheHold reduces the average rescan time from approximately
  2.70 seconds to 1.30 using 29 KB cache. However, the memory requirements and
  improvement in speed will differ from system to system.

  Add "Stat" to the line, and it will be logged how the rescanning performs.
  Use "CacheHold 0 Stat" to log the performance without caching.


MMP: Added the ability to freeze Binkley.

  When Binkley sees BTFREEZE.xx (xx is the hexadecimal task number) in the
  flags directory, it deletes the file, and creates BTFROZEN.xx instead. Then
  it lowers the DTR signal, and waits for BTFROZEN.xx to disappear. When it
  disappears, the modem is reinitialized. This feature is useful for freezing
  Binkley when compiling nodelists in the background.


???: New keyword "EMSIbanner" for debugging purposes

  If you put this in your Binkley.Cfg, Binkley will send a banner string (+
  Address ... using ...) *before* sending **EMSI_INQ - this helps with some
  remote COM I/O systems which fail within the first few received bytes.


???: New commandline verb "Debug"

  Does the same as "Debug" in config.


???: Added mailstatus character to zoomed outbound view (-*x>$...).


TJW: new keyword "IPC"

  With this, you define the directory which Binkley will use to write Max 2.x
  compatible IPCxx.BBS (xx = tasknumber in Hex) files into.

  E.g: IPC h:\Max\IPC\

  The IPC files will contain "BinkleyTerm 2.60XE" as user name and some
  information about Binkley's state, e.g. "Waiting for Call or Event".

  If you do not use IPC keyword, Binkley will NOT write IPC files.


MB: Maximus 3.x MCP support (OS/2 version only).

  (Thanks to Mike Burgett for writing and Bob Juge for sending, merged in by
   TJW)

  Just define the same path with MCPpipe statement of Binkley as in MCP
  statement of Maximus, e.g.: MCPpipe \pipe\maximus\mcp If you do NOT want to
  use MCP just do NOT define "MCPpipe" in your config!

  Then use SM (session monitor of Max 3.x) to view line status.

  MCP.EXE *MUST* be running on startup of BT-XE to use this feature. You must
  also have MCP32.DLL in LIBPATH to run this version of BT-XE (even if you
  don't use MCP).

  Both is part of Maximus 3.xx package (but can also be used without having
  Maximus installed).

  Remark of TJW: Due to file handle inheritance problems, automatic start code
                 for MCP.EXE was removed. So you have to start MCP.EXE before
                 BT-XE or MCP will not work.

  You must *NOT* start MCP using SpawnInit - this would cause problems.

  Use this a SINGLE time in your CMD file (startup.cmd e.g.) before you invoke
  any BT-XE task using MCP:

                 MCP.EXE . <pipename> <number of tasks> server

  e.g.:   detach MCP.EXE . \pipe\maximus\mcp 16 server

  Be sure that you have set MAXIMUS environment variable before this command.

  Directly after starting MCP it's a good idea to start SM.EXE to *use* MCP. Do
  NOT start SM.EXE with SpawnInit.


???: Changed janus.c to create JANUSREQ.R%02x in flagdir


TJW: new keyword "TaskPath"

  You can specify a separate directory for BINKLEY.?xx files with this to keep
  your Binkley directory clean. Defaults to Binkley directory.

  e.g.:  TaskPath c:\bt\task\


TJW: Changed order of config file reading

  old: binkley.scd -> binkley.evt -> binkley.cfg
  new: binkley.cfg -> binkley.scd -> binkley.evt

  This was necessary for TaskPath to be known before searching binkley.scd/sxx.


???: Today at a glance

  Changed "Today at a glance" to show Mail/BBS/Fax calls ("M/B/F") - also
  changed alignment and moved it to language.txt


???: Messages

  changed message "File requests declined" to "Remote doesn't allow file
  requests now"


???: Fossil Annoncement

  DOS only: makes fossil announcements configurable by using the language file.
  this is way better than hardcoding them into the executable.

  The language file is readily prepared to detect and announce the following
  fossils:

    ADF (AnDan), BNU, cFos, DrComm, FCI, Opus!Comm, VX00, X00

  To add a new/other fossil, do the following:

  Look in the language file (LANGUAGE.TXT) for a line which reads like this:

    *LVX00:VX00,X00:X00,BNU:BNU,CFOS:cFos,OPUS:Opus!Comm[,...]

  This line is composed of pairs of strings. each pair contains a search string
  and an answer string separated by a colon, e.g.:

    OPUS:Opus!Comm

  Where `OPUS' is the string to look for in the internal fossil signature id
  string, and `Opus!Comm' is the string that will be output to the screen and
  logfiles.

  You simply add the new/other fossil search/answer string pair at the end of
  the line (preceeded by a `,'), but please mind that:

   - The search string has to be in upper case, while the answer string may be
     in upper/lower/mixed case.

   - Search- and answer strings must not contain any of the characters: ` '
     (blank/space), `,' and `:'.

   - You have to use a search string which definitely designates a fossil you
     look for. therefore the search string `VX00' has to come before search
     string `X00', because the other way round (`X00' first, that is) the
     answer string for `X00' would be output for both `X00' _and_ `VX00' ...


???: Include keyword

  Reduced stack space needed for "include", so you can do more "nested"
  includes now.


???: Worked HydraCom 1.09d changes into hydra / hydra chat source

  Alt-C is now used for entering (and exiting) Hydra chat mode. Clearing "Today
  at a glance" is done with Alt-D now.

  Hydra protocol now also works with long fnames correctly (OS/2 only). Long
  filenames are NOT supported in BT yet except in hydra protocol.


TJW: Modem command character translation "." -> "," removed

  So you can specify commands likw AT+FCLASS=2.0 now without having to "escape"
  the dot. You MAY, of course, continue using AT+FCLASS=2\.0 ...

  The only translations happening now are:

    "|"  -> output CR character
    "v^" -> lower/raise DTR
    "~"  -> pause 1s
    "`"  -> pause 0.1s
    "-"  -> don't output anything

  If you don't want them, prefix them by an "escape" character which is: "\".


HR: ShowAlive

  The file I_ALIVE.xx is now generated also in terminal mode while waiting for
  key strokes and while transfering with XModem and ZModem (UPload/DOWNload).
  Also, I_ALIVE.xx is generated while the user does an input (nodenumber,
  systemname, filename and so on). Yes, there are people needing more than 1
  minute to enter a nodenumber. :-)


TJW: OS/2 only: Window Titles

  BT-XE can set the window title of its own window to "BT-XE #<TaskNumber>:
  <Action>" (default). "Action" is the same as in Maximus' session monitor (if
  you use MCP).


TJW: New keyword "WindowTitleFmt"

  This is used for setting the format string of window titles.

  Default is:

    WindowTitleFmt BT-XE #%%d: %%s    (you have to specify %% to get the
                                       single % as result or BT will crash)

  You can use this to set different format, like:

    WindowTitleFmt BT-XE #%%d USR V.34: %%s

  But don't make the title format too long or it maybe won't function
  correctly if it doesn't fit into title area of window.
   
  Further, you HAVE TO use first %%d AND second %%s !

  You can also use WindowTitleFmt with NO format string specified to DISABLE
  "set window title" calls:

    WindowTitleFmt


???: IPC:

  "Snoop"   defines the Snoop pipe - NOT the MCP pipe  (OS/2 only)
  "MCPpipe" defines the Maximus MCP pipe               (OS/2 only)
  "IPC"     defines the directory for IPCxx.BBS        (all platforms)

  You can use ALL now, if you want.

  

Back to What's new in BinkleyTerm XE? or to Index
Maintained by the BTXE-Team last modified: May, 05 2000