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